|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Подскажите алгоритм поиска объектов замкнутого контура
Регистрация: 26.07.2008
Сообщений: 17
|
||
Просмотров: 8571
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Один из самых простых способов - применять _.boundary. Посложнее - поискать на caduser.ru, там вроде было что-то близкое...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.07.2008
Сообщений: 17
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
_.boundary - команда, выполняющая анализ области, внутри которой указана точка. Если возможно, то строит контур, описывающий эту область.
С Delphi не знаком вообще.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.07.2008
Сообщений: 17
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
По идее контур - последний созданный объект. В зависимости от настроек команды может быть полилинией или областью (регионом). Из полилинии получить вершины контуров очень просто, из регионов - сложнее (если честно, я этим почти не занимался).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.07.2008
Сообщений: 17
|
>>zamtmn
Нужно найти средствами моей проги. Из автокада я получаю координаты всех линий и координату щелчка юзера. На основе их, моя прога должна определить контур (тоесть комнату в которой кликнул юзер) и расставить там оборудование (тоесть вставить в нужном месте блоки в автокаде). >>Кулик Алексей aka kpblc Спасиба за "наводку". Буду пробовать. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Если программа работает совместно с автокадом, тогда лучше делать как предлагает kpblc.
Своими средствами универсальный алгоритм - тяжело реализовать. Если все комнаты выпуклые многоугольники можно попробовать так: 1)Ищем ближайшую к точке клика линию, выбираем вершину с учетом направления обхода многоугольника относительно точки клика 2)Находим смежные линии на выбранной вершине, выбираем самую подходящую с учетом направления обхода вершин многоугольника относительно точки клика 3) делаем 2 пока не придем в неиспользованную вершину первой линии. ИМХО. Лучше просить пользователя вручную указывать контур комнаты. для простых прямоугольных комнат - это всего 2 клика вместо 1 |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
На arcada.com.ua на форуме был алгоритм получения точки, гарантированно входящей в указанный контур (по-моему, без учета дуговых сегментов). Автор - VVA. Точную ссылку не помню, а искать тупо некогда
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.07.2008
Сообщений: 17
|
Цитата:
![]() Но всеравно, ВСЕМ СПАСИБА! |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Я вот сам по тихоньку к этому прихожу,-что пользователю быстрее два раза кликать, чем мне реализовать такой алгоритм.
быстрее не быстрее, но в работе могут оказатся планы на которых не сработает ни твой алгоритм, ни boundary - начерченные без привязок, с примитивами не в плоскости и т.д., доводка таких чертежей точно съест выигрыш в кликах |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
Ссылки: теория http://algolist.manual.ru/maths/geom/belong/poly2d.php реализация: http://www.arcada.com.ua/forum/viewt...d290a879d8bd31 http://www.caduser.ru/forum/index.ph...#message205580
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выделение объектов в области контура, AutoCAD | Pain | AutoCAD | 33 | 20.11.2024 19:01 |
FILTER / фильтр | BM60 | Справочник команд | 0 | 08.07.2008 15:35 |