|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
1 | | #1 |
Добавление в центр штриховки текстового объекта со значением ее площади
Регистрация: 25.01.2011
Сообщений: 105
|
||
Просмотров: 8574
|
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Есть у 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
Санкт-Петербург
Сообщений: 910
|
|
|||
![]() |
|
||||
Регистрация: 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
С.-Петербург
Сообщений: 40,406
|
А че не так-то?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
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,680
|
Я залез в DXF-reference (знаю, мог бы и не спрашивать раньше и сразу поискать) и нашел, что 10-й код - это не только координаты углов, но и еще и Elevation point (in OCS). Там сказано
Цитата:
Чтоб стало хоть немного понятно человеку, далекому от программирования, о чем я толкую, DXF-коды объекта - это своего рода шифр, в котором хранятся в определенном виде свойства этого объекта, вроде такого: Код:
Так вот 10-е группы могут означать не только координаты угловых точек, но и их уровень (высоту по Z) Цитата:
Цитата:
![]() Когда не может прочитать площадь штриховки. А вот с чем это связано, я пока не понял. Из простого можно пока сделать, чтоб текст "Ошибка контура" был красным (исправил в #16). После этого можно пройтись по ошибочным штриховкам и связать их с контурами. При двойном клике на штриховку запускается (вроде по умолчанию) команда _-HATCHEDIT (-РЕДШТРИХ) и там есть пункт сВязать. На запрос ткнуть мышкой - указать точку в области проблемной штриховки. Штриховка свяжется со своими полилиниями и восстановит свойство площади. Либо можно заново создать эту штриховку. Другого способа мне с наскока найти не удалось. Связать программно, а именно найти точку внутри контура - та еще эпопея, на которую я не готов. Может, кто что-то более дельного посоветует. |
|||
![]() |
|
||||
Регистрация: 25.01.2011
Сообщений: 105
|
Цитата:
А можно вопрос оформительского характера - как сделать, чтобы стиль текста данных подписей был в соответствии с текущим, а не стандартным? И как задать размер данного шрифта? |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Автокад видит. Visual LISP - нет. Да и почему-то в DXF-кодах штриховок площадь не заложена.
Цитата:
В 61-й строке задается. Там комментарий Код:
|
|||
![]() |
|
||||
это косяк разрабов, имхо
|
||||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Но у меня на этих ошибочных штриховках в свойствах площадь видна. У Yur.OK_SPb - тоже.
Кстати, подумал, что я бы сделал стиль отличным от тех, что уже есть в чертеже. Или высоту. Или слой. Чтобы быстрым выбором можно было потом выбрать эти тексты. |
|||
![]() |
|
||||
плавающий косяк
|
||||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
koMon, нет мыслей, как побороть? У меня только одна пришла пока из недолго реализуемых: при появлении косяка внутри цикла зумировать на этой штриховке с запросом выбрать точку в заштрихованной области и командным методом подставить эту точку в _-HATCHEDIT. Костыль еще тот, но мысли окончились пока.
Пробовал метод AppendOuterLoop, но это почему-то не сработало Offtop: Спасибо, Алексей. |
|||
![]() |
|
||||
что характерно. если штриховать указанием точки внутри, то ок, а если объект, то не ок.
----- добавлено через ~4 мин. ----- Watson, you are THE perfectionist, ain't you? ----- добавлено через ~10 мин. ----- у них однозначно хромает механизм вычисления площади у косячных плиний. и я как-то даже не вижу как это можно решить малой кровью программно, кроме как найти и обезвредить ручками))) |
||||
![]() |
|
||||
Регистрация: 25.01.2011
Сообщений: 105
|
Там фишка в том, что рядом со штриховками прописываются их номера обычным текстом. А тут Мтекст с их площадью. Больше в слое, кроме полилиний, штриховок, номеров и площадей ничего нет) Поэтому даже через выбор подобных эти значения площадей легко выделить и что-либо с ними сделать.
|
|||
![]() |
|
||||
Регистрация: 09.11.2017
Сообщений: 28
|
Цитата:
Делал проверку на самопересечение контура, если оно имеется - перестраивал штриховку с вычислением внутренней точки контура. Для получения корректных координат внутренней точки (были еще и островки) приходилось повозиться, использовал наложение на контур ортогональной сетки с поиском самых длинных линий. http://https://forums.autodesk.com/t5/autodesk-api-russkiy/geometricheskiy-tsentr-ne-tsentr-tyazhesti-mnogougolnika/m-p/7685147#M822 Последний раз редактировалось Alex.gomel, 14.05.2020 в 21:39. |
|||
![]() |
|
||||
Характерность не в самопересечениях, а в том как механизм обнаружения замкнутой площади коряво работает для разных евохних))) выборов. Ведь казалось бы цель одна, а результат печально разный. Кстати если посмотреть на описание штриховки, то и оно будет почему-то разным для разных выборов. Налицо стратегическая ошибка, имхо.
|
||||
![]() |
|
||||
Регистрация: 12.12.2016
Сообщений: 24
|
Добрый день!
А есть ли возможность лисп из поста №8 переделать, что-бы происходило автоматическое проставление всех площадей одновременно для каждого из выбранных замкнутых контуров (например контуров выполненных поллиниями). Программа Areas2Field от Lee Mac проставляет площади отдельных контуров, вычисляет суммарную площадь выбранных контуров и если нужно все это можно внести в ячейку таблицы. Но может возможно, после выбора (через Selsim например), контуров (на одном слое или одного цвета или по другим характеристикам), получить проставленные мтекстом внутри этих контуров их площади? Спасибо! |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
get boundingbox back!
![]() |
||||
![]() |
|
||||
Регистрация: 28.03.2012
Сообщений: 21
|
Скажите пожалуйста:
1. как в этом коде сделать отображение площади в "метрах" или в единицах, установленных в uNIts? 2. прочитал тему, так и не понял, как модифицировать код для выравнивания значения по центру масс штриховки upd: со вторым вопросом разобрался) Последний раз редактировалось mvartem, 06.04.2023 в 19:42. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |