|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
26.08.2013, 10:01 | #1 | |
Объединение большого количества отрезков
Инженер САПР
Тюмень
Регистрация: 12.11.2004
Сообщений: 36
|
||
Просмотров: 8129
|
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588
|
1. Насколько большая куча?
2. Это http://www.debalance.com/optimization/polyline.html пробовали? |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Да не шибко и много - выложи пример такого слоя, попробую что-нибудь сворганить (если только отрезки, то по моему, на первый взгляд, не сложно), на всякий случай - какой автокад (может на .Net подускорить).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Инженер САПР Регистрация: 12.11.2004
Тюмень
Сообщений: 36
|
Выдрал один слой, если кому интересно попробовать порешать задачку: http://bit.ly/144AEkt
Многие линии между собой не стыкуются. Думаю, что особенно короткие сегменты есть смысл подтягивать к более длинным, а примерно одинаковые - двигать друг к другу. P.S. Только сейчас дошло, что еще надо учитывать минимальный угол между отрезками - т.к. в силу специфики задачи есть куча линий штриховки откосов, которые надо игнорировать. Последний раз редактировалось Мансур, 27.08.2013 в 08:56. |
|||
|
||||
Инженер САПР Регистрация: 12.11.2004
Тюмень
Сообщений: 36
|
|
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Ихмо на Автолиспе быстро не получиться, и тут даже не в том беда, что сам лисп медленней, а то что он умеет работать только со списками (ни хешей, ни деревьев он не знает), а в данной задаче это критично (не беда в том, что допустим, он читает данные в 10 раз медленне - 1 и 10 секунд разница конечно есть, но не смертельная - а вот перебрать какие примитивы есть в списке - это последовательный перебор "пока не совпало" (а если не совпало - то весь список) и на каждую полилинию весь список отрезков прогонять - долго) - можно ограничиться фильтром поиска из координат примитива - будет быстрее, но все равно эта операция (фильтрация) очень долгая, а ее надо опять-таки прогнать к каждому примитиву. Я вижу только 1 вариант - создавать индексированную или "двоичную" коллекцию (Dictionary<>,Hashtable<>,Map<>,Set<>... - не суть кому что привычней) - типо ключевая_точка*список_точек (причем на каждую точку будет как ключевое поле, так и она 100% будет входить в какой(ие),либо значения), настраиваешь интерфес используемый для быстрого поиска (сортировки или хеширования) на учет допуска (то есть, чтоб при занесении он 0.999:0.999 и 1.0:1.0 за одно и тоже считал), либо предварительно "подгоняешь" близкие точки под существующие, либо - самый простой вариант - просто округляешь их и вот в такой коллекции уже можно поискать контуры за разумное время - а по ним уже соответственно и построить примитивы.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Похоже на экспорт из Civil3D. То есть, там взрываем, потом в простом Автокаде снова собираем... Если есть исходный чертеж в Civil 3D (ну и сама программа, разумеется), задачу можно сильно упростить.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
||||
Инженер САПР Регистрация: 12.11.2004
Тюмень
Сообщений: 36
|
после двухдневного ковыряния и отлавливания багов в трех соснах вышло следующее:
150 строк лиспа (всё еще сырой прототип), (без никаких ActiveX-ов, если что) время выполнения (вместе с отрисовкой 1619ти получившихся полилиний) - 35 сек. Машинка - Core2Duo 2.6Гц, Win7x64, AutoCAD 2012, ядро задействуется только одно, я так понимаю, раз автокад Наверно можно еще немного побаловаться оптимизацией Код пока не выкладываю |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Ну уже не "колом встает", подумал тут на досуге - а ведь и в автолиспе ничего не мешает реализовать структуру двоичного дерева поиска - типо список '(ключ-значение все_ключи_меньше все_больше). И при правильной предварительной "рассортировки" время доступа к элементу по ключу будет логарифмическое.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Цитата:
Есть еще одна частная программка. Она сшивает только соответствующие друг другу свойствами элементы. Синий отрезок из одного слоя с красным из другого не сошьет - как все остальные программы. Если хотите, то давайте файл, я попробую запустить. У Вас чертежи из какой сферы деятельности? |
||||
|
||||
Инженер САПР Регистрация: 12.11.2004
Тюмень
Сообщений: 36
|
Цитата:
Очень сомневаюсь, что экспорт из Civil-a, как предположил Do$, уж очень коряво стыкуются отдельные отрезки. |
|||
|
||||
Больше похоже совсем не на Civil, а на отечественного производителя - Геоникс. После него все рассыпается.
И там есть сплайны, штриховки и т.п. Есть ряд элементов на какой-то высоте. Я на всякий случай вынес надписи из слоя Съемка в слой Съемка_текст. Взял на себя смелость поставить рабочие единицы метры вместо миллиметров. Но пока та частная программа вышибает Автокад )) Плохо, что там один слой, один цвет. Штрихи откосов не отделить от бровок и т.п., и они все мешают друг другу при сшивании бровок и т.п. То, что в исходных данных было разными пунктирами - вообще автоматами не сошьешь. Такое нужно обводить полилиниями вручную. Последний раз редактировалось АлексЮстасу, 28.08.2013 в 21:21. |
||||
|
||||
Offtop: В чертеже только от Civil "следы", вот поэтому и предположил. В чертежах после Геоникса, которые ко мне попадали, сложно было не заметить его "следов".
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
||||
Offtop: Почему-то никто не вспомнил про PlTools с его PL-JOIN.
Как мог посшивал с разными допусками. Красные круги - места противоречивые, где не сшивалось. Но эти маркеры остались только от последнего запуска, и их много больше. И там видно, что многое сшилось неправильно по сути. Но слой-цвет и пр. один, и автомату не объяснишь. Offtop: Если не оч. большой секрет, то шепните, кто такие шедевры топографического черчения выдает? Я сам топограф. Последний раз редактировалось АлексЮстасу, 29.08.2013 в 03:34. |
||||
|
||||
Offtop: Есть в первом сообщении.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение отрезков, дуг, линий в полилинию. Как объединить? | noorgoosh | AutoCAD | 92 | 22.11.2017 08:35 |
Печать большого количества чертежей | Александр79 | AutoCAD | 26 | 20.04.2013 10:59 |
Как приручить радиочастоты, или проблемы связанные с обменом большого количества данных по сети WI-FI??? | Pavel Samofalov | Разное | 20 | 15.08.2011 15:16 |
Нужна программа для автоматического получения и "склеивания" большого количества последовательных скриншотов | kp+ | Прочее. Программное обеспечение | 6 | 18.03.2011 11:18 |
Экспорт параметров большого количества окружностей в файл .txt | Манасыпов Р.Ф. | Программирование | 24 | 25.06.2010 16:52 |