| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
06.05.2020, 10:03 | 1 | | #1 |
Добавление в центр штриховки текстового объекта со значением ее площади
Регистрация: 25.01.2011
Сообщений: 105
|
||
Просмотров: 7835
|
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Есть у Lee Mac'a еще и QuickField. Не могу который день попасть к нему на сайт - это только у меня или у всех?
Вот здесь, под катом я выкладывал этот код. Чтобы вызвать команду для вставки в поле площади, нужна такая конструкция: Код:
|
|||
|
||||
Регистрация: 25.01.2011
Сообщений: 105
|
А попроще нет? Чтобы площадь штриховки сразу прописывал по середине штриховки?
Тут даже ближе к нужному его программа http://www.lee-mac.com/areastofield.html, но нужно автоматическое проставление всех площадей одновременно у всех выбранных штриховок. Последний раз редактировалось Yur.OK_SPb, 06.05.2020 в 12:00. |
|||
|
||||
начинающий инженер-гидротехник Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893
|
|
|||
|
||||
Регистрация: 25.01.2011
Сообщений: 105
|
Цитата:
Но не пойму - почему в стороне текст получается? Хотя в качестве примера рисую прямоугольник, накладываю в него штриховку - текст вставляет корректно, посередине штриховки. Несколько прямоугольников - тоже самое. А в моём примере - всё в стороне. Последний раз редактировалось Yur.OK_SPb, 13.05.2020 в 12:09. |
|||
|
||||
@skkkk,
Код:
|
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844
|
А че не так-то?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
koMon, спасибо. Замечание о необходимости проверки наличия свойства "Area" принимается.
Но Холмс, почему у штриховки внезапно не оказалось площади? Как в том детстве: *опа есть а слова - нет. Или как суслик, которого никто не видит... Причем, я попробовал удалить суслика эту штриховку с ошибкой и построить новую в том же контуре - всё стало хорошо (суслика увидел). Однако, брать центр boundingbox'a в качестве точки вставки для текста я сразу отказался, потому как, к примеру, в треугольном контуре текст появлялся бы за его пределами, что мне не понравилось. В качестве координат мне показалось более разумным брать среднее арифметическое всех координат её вершин. Тоже не самый лучший вариант, понимаю, с учетом возможной "впуклости" многоугольника, дуговых сегментов и прочего неформата, но вникать глубоко не стал, с учетом, что и ТЗ особо-то не было - так просто побаловался. Про вычисление этой пресловутой точки уже был разговор. Простых универсальных решений там, похоже, нет. Одно было там продемонстрировано на видео, но без кода. Попадались разные варианты программ-"центроидайзеров", но почему-то работали они все только с фигурами да полилиниями, переписывать под штриховки не стал. . Вот я тоже не пойму. Точнее, пойму, почему в стороне он получается: в списке вершин оказываются куча координат (0.0 0.0 0.0), что с учетом выбранного алгоритма ожидаемо отбрасывает тексты в сторону а вот откуда у штриховки столько 10-х групп с нулями - вопрос. Есть версии, коллеги? Yur.OK_SPb, эти штриховки в Автокаде сделаны или импортированы откуда-то? В общем, оставил в коде пока алгоритм среднего арифметического координат, только отсеял "нулевые" координаты. Проверил на файле - вроде, более ли менее адекватно ставит. Откорректировал #16. |
|||
|
||||
Регистрация: 25.01.2011
Сообщений: 105
|
Цитата:
Т.е. изначально полилинии имели не нулевую высоту, потом опускалась в уровень 0, и потом наносились штриховки. Но вот не наносились ли штриховки на "не нулевую" полилинию, а потом опускались в 0 - я не уверен. И ещё вопрос - а "ошибку контура" он в какой момент выдает? Последний раз редактировалось Yur.OK_SPb, 14.05.2020 в 09:01. |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Я залез в DXF-reference (знаю, мог бы и не спрашивать раньше и сразу поискать) и нашел, что 10-й код - это не только координаты углов, но и еще и Elevation point (in OCS). Там сказано
Цитата:
Чтоб стало хоть немного понятно человеку, далекому от программирования, о чем я толкую, DXF-коды объекта - это своего рода шифр, в котором хранятся в определенном виде свойства этого объекта, вроде такого: Код:
Так вот 10-е группы могут означать не только координаты угловых точек, но и их уровень (высоту по Z) Цитата:
Цитата:
Когда не может прочитать площадь штриховки. А вот с чем это связано, я пока не понял. Из простого можно пока сделать, чтоб текст "Ошибка контура" был красным (исправил в #16). После этого можно пройтись по ошибочным штриховкам и связать их с контурами. При двойном клике на штриховку запускается (вроде по умолчанию) команда _-HATCHEDIT (-РЕДШТРИХ) и там есть пункт сВязать. На запрос ткнуть мышкой - указать точку в области проблемной штриховки. Штриховка свяжется со своими полилиниями и восстановит свойство площади. Либо можно заново создать эту штриховку. Другого способа мне с наскока найти не удалось. Связать программно, а именно найти точку внутри контура - та еще эпопея, на которую я не готов. Может, кто что-то более дельного посоветует. |
|||
|
||||
Регистрация: 25.01.2011
Сообщений: 105
|
Цитата:
А можно вопрос оформительского характера - как сделать, чтобы стиль текста данных подписей был в соответствии с текущим, а не стандартным? И как задать размер данного шрифта? |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Автокад видит. Visual LISP - нет. Да и почему-то в DXF-кодах штриховок площадь не заложена.
Цитата:
В 61-й строке задается. Там комментарий Код:
|
|||
|
||||
это косяк разрабов, имхо
|
||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Но у меня на этих ошибочных штриховках в свойствах площадь видна. У Yur.OK_SPb - тоже.
Кстати, подумал, что я бы сделал стиль отличным от тех, что уже есть в чертеже. Или высоту. Или слой. Чтобы быстрым выбором можно было потом выбрать эти тексты. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Revit c# Не пойму, что выдает в качестве площади объекта | dvim | Программирование | 4 | 15.01.2017 21:25 |
Как перенести значение площади объекта в таблицу | Libet | AutoCAD | 22 | 05.04.2015 15:15 |
Отрисовка полосы отвода линейного объекта | Агент СмиТ | Программирование | 10 | 06.11.2012 10:05 |
Получение разрешения на строительство объекта капитального строительства | maxummm | Прочее. Архитектура и строительство | 18 | 25.08.2010 20:31 |
Толщина шрифта текстового объекта в пользовательской линии | ffpetrov | AutoCAD | 3 | 04.01.2007 12:17 |