|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
15.01.2004, 03:06 | #1 | |
Задачка для программиста
Инженер-строитель-студент
Петрозаводск
Регистрация: 15.01.2004
Сообщений: 12
|
||
Просмотров: 5042
|
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,260
|
Может это подойдет?
Код:
Учитывается текущий масштаб (переменная dimlfac). Ограничение: Поразумевается, что 1 у.е. Акада = 1 мм. |
|||
|
||||
Инженер-строитель-студент Регистрация: 15.01.2004
Петрозаводск
Сообщений: 12
|
программа хорошая, работает, но изначально идея была другой. Чтобы не выделять каждый угол многоугольника, а тыкнуть мышей в замкнутую область.
Попробуйте это: Цитата:
-в каждом помещении есть дверь, которая по ГОСТ рисуется открытой. boundary это не поймет... -чертеж заполнен всякими линиями типа осей, которые делят искомую область на более мелкие - тоже надо как-то обойти. Как - пока не ясно. |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,186
|
Посмотрите на http://www.apelsi.narod.ru/AREA1.LSP
|
|||
|
||||
Регистрация: 21.08.2003
Штаб
Сообщений: 943
|
Цитата:
А в начало проги добавить отключение этих слоев, в конце проги - включение. |
|||
|
||||
Инженер-строитель-студент Регистрация: 15.01.2004
Петрозаводск
Сообщений: 12
|
2Apelsinov: очень приятно выделяются области оранжевым цветом, красиво. А если внутри области есть объект, площадь которого не следует учитывать?
2Torino: оси уже на слое "ОСИ", а линий зымыкания дверей нет вообще. В таком случае надо оформлять программку отрисовки дверей с заданными условиями (чтобы вспомогательные линии были на отдельном слое). А надо ли это вообще? Потому что есть к примеру ADT2004, с функцией area. В смысле программа уже написана - и зачем изобретать велосипед? Разве что из любви к исскуству... Из любви такой вопрос: мы все (и в теме "Lisp к boundary") пользуемся командой area для определения площади, а затем считываем системную переменную с одноименным названием. А можно ли как-то выцепить площадь (и периметр) из свойств созданного объекта?[/url] |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
(vl-load-com)
(setq vla_obj (vlax-ename->vla-object obj)); преобразование обычного примитива в VLA объект (ActiveX) (setq ar (vla-get-area vla_obj)); извлечение свойства area Перед извлечением свойства area недурно проверить его наличие у объекта функцией (vlax-property-available-p vla_obj "area"). Эта краказябра возвратит T если свойство есть. |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,186
|
Цитата:
Можно еще при отрисовке boundary задать выделение внутренних областей, и затем из внешнего вычитать все внутренние, но тогда как быть, если необходимо получить полную площадь, с учетом внутренних, придется к программе писать еще и настройки, и в них указывать - учитывать внутренние или нет. Но это усложнит прогу и работу с ней. Еще можно, конечно, вставить диалог на обозначение не учитываемых областей. - опять усложнение работы с программой. легче просто вычесть потом площадь внутреннего обьекта. Так какой из способов предпочтительней? Еще, кстати, замечу, что для меня эта задачка чисто академическая, т.к. для проставления площадей я использую СПДС grafics. Единственное, для чего использую эту прогу - это именно подсчет площадей, разница как между DIST и DIMLINEAR. P/S И еще вопрос знающим, почему-то прога некорректно работает при загрузке через startup suite. в остальных случаях нормально. |
|||
|
||||
Инженер-строитель-студент Регистрация: 15.01.2004
Петрозаводск
Сообщений: 12
|
2Apelsinov: при определении площади создается полилиния; можно у нее выцепить координаты вершин, и, если одна область внутри другой, то какая-нибудь координата внутренней области стопудово попадет в промежуток координат внешней (отдельно по X, Y). Ммм?
А вопрос по координатам уже гдето здесь был... P.S Знающие люди, посоветуйте как сдать динамику и устойчивость, второй раз валится! |
|||