|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
09.12.2010, 09:02 | #1 | |
Создание внешнего контура на основе выделенного набора примитивов
отдел открытых горных работ
Новокузнецк
Регистрация: 06.05.2009
Сообщений: 124
|
||
Просмотров: 13700
|
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
Это в моём случае негодиться совсем! Т.к. самые крайние границы придется сводить в замкнутый контур. В таком случае проще обвести вручную (как я и делаю), а так как таких контуров мне приходиться делать много и регулярно, то я хотел бы уйти от данной ручной работы Отнимающей приличную кучу времени!
|
|||
|
||||
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
VVA, Огромное Вам спасибо!
Но увы ваша программа выдает непредсказуемый результат. Я пробовал создать контур в файле примера (который выложил в 1 посте). Получается весьма причудливо. Ps Код был взять из шапки той темы, ссылку на которую вы мне дали. |
|||
|
||||
Внутри ECO использует тот же самый _boundary. Поэтому если _boubdary не подходит, то и ECO не подойдет. Чтобы получить общий контур объекты должны пересекаться.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Ну вкратце так (если все объекты - полилинии):
Находим крайнюю полилинии и обходим вдоль нее в каком-нибудь направлении. Полилиния заканчивается - переходим на следующую по какому-нибудь правилу... и до тех пор, пока контур не замкнется. Shaft, есть какие-нибудь правила, по которым вручную контур строится? |
||||
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
Do$, когда строиться вручную, то просто строиться полилиния по крайним полилиниям. Чтобы даже вершины совпадали. Т.е. если посмотреть в файле-примере, то там видно что вершины контура совпадают с вершинами карйних полилиний. Переход от крайней полилинии к внутренней производиться перпендикулярно к последней. Это желательно, но не объязательно.
Зы Если я не совсем понятно объяснил (вы скажите) Тогда я попробую изобразить это в файле-примере. Последний раз редактировалось Shaft, 09.12.2010 в 14:16. |
|||
|
||||
Цитата:
1. Для всех линейных объектов (не обязательно полилиний) находим общий габаритный контейнер (boundingbox). LISP. LIB. Получение габаритов для списка объектов. В результате имеем некий прямоугольник, описывающий все выбранные примитивы. Это первое грубое приближение контура 2. Обходим прямоугольник с неким шагом. Для текущей точки ищем ближайшую точку из всех выбранных примитивов и берем ее. Если не понятно, то попробую нарисовать. Мне кажется, что алгоритм рабочий.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
|
|||
|
||||
Это библиотечная ф-ция для выполнения п.1 алгоритма.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Первый вариант на основе алгоритма, изложенного в #13
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 11.12.2010 в 14:07. Причина: новая версия |
||||
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
VVA, супер!
На и раз это тестовая версия, то хочу высказать парочку замеченных неточностей: На скриншотах я постарался выделить проблемные места. Красная линия это результат работы программы Зеленая линия это желаемый/требуемый рузультат Для дотягивания до идеала, хотелось бы чтобы были поправленны следующие моменты: 1 - совпадение вершин контура с вершинами обводимых линий 2 - корректно "обводить" дуговые сегменты 3 - отучить программу пропускать некоторые участки (рис 1 и 3) впринципе тоже что и п.1 4 - или недоводит (рис 2)тоже можно отнести к п.1 |
|||
|
||||
Обновил код в #17
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
отдел открытых горных работ Регистрация: 06.05.2009
Новокузнецк
Сообщений: 124
|
VVA, проверил обновленный код из #17, все ошибки описаные мною в #18 остались. Только обрисовка внешних границ улучшлась лишь в некоторых местах маленькие расхождения. А в 95% идет полное совпадение по вершинам.
P.s. Но если удастся избавиться от проблемок из #18, то это будет бесценный инструмент!!! Надеюсь не только для меня Последний раз редактировалось Shaft, 13.12.2010 в 06:54. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание графика в AutoCAD на основе txt или xls файла | Red Nova | Программирование | 116 | 06.04.2017 09:20 |
Создание блоков из примитивов | gest | AutoCAD | 11 | 26.11.2009 10:57 |
создание набора с помощью activeX | Composter | Программирование | 3 | 15.05.2009 00:11 |
Лисп присадки мебельной фурнитуры | Скулачёв А. | LISP | 18 | 20.08.2008 13:59 |