| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Инженер САПР Регистрация: 12.11.2004
Тюмень
Сообщений: 36
|
Цитата:
Абсолютно согласен, каждый подход имеет свое предназначение. Просто про вариант с ssget мало кто задумывается, а в большинстве случаев надо "не шашечки, а ехать". Да и объем кода получается на порядок меньше, проще сопровождать потом, в случае надобности. |
|||
|
||||
Инженер САПР Регистрация: 12.11.2004
Тюмень
Сообщений: 36
|
Цитата:
С чего программе работать медленно? Возьмем цифры с потолка - пусть в чертеже 10000 объектов. Если устроить тупой перебор: каждая линия с остальными, можете сами посчитать количество сочетаний (если не ошибаюсь, это будет 10000*9999/2= 49 995 000). А если пользуемся ssget (опять же условно возьмем, что в среднем ssget вернул 10 объектов для каждой анализируемой линии), то количество сочетаний 10000*10 = 100 000. Есть разница между 50 миллионами итераций и сотней тысяч? У меня чертеж с 20 000 объектов обрабатывается в лиспе за пару десятков секунд. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
а 40 тысяч за сколько он обработает - линейная зависимость??
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>Ведь для создания двревовидной структуры нужно время и для эффективного выполнения она создается 1 раз - а ssget'у не известно проходили-ли изменения чертежа между вызовами или нет.
Думаю в автокаде оная структура поддерживается в актуальном состоянии всегда. т.к. она важна не только для поиска чегонибудь, а практически для всех операций с чертежем. но ssget даже в реализации на компилируемом языке всеравно проиграет поиску с прямым доступом к "дереву" - т.к. он вынужден всегда начинать поиск с корня. также свое дерево заглаза себя оправдает для операций не на всем чертеже, а только над частью примитивов - дерево нужно будет строить только для них - операции с ним будут быстрее и сбалансированность лучше |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
Offtop: В этой строке немой намек вопрос главному по ARX А.Ривилису.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Цитата:
Эта ssget выдает набор чего? Примитивов, пересекающих указанный? Примитивов, попадающих в габарит указанного примитива? Или еще что-то? Эта ssget чисто лисповская или у нее есть аналоги в ARX? |
||||
|
||||
|
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Я не про то, что там есть аналог ssget - может из ARX можно разглядеть структуру которую использует эта функция (то есть определяет простым перебором по БД, либо она таки использует пространственное индексирование - на основе например R-tree)?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Алгоритм конечно не виден. Но точно не простой перебор по БД, т.к. эта функция вообще с БД (AcDbDatabase) не работает, а работает с виртуальным экраном, т.е. с проекциями примитивов. Но этот подход имеет свой минус - примитивы должны быть видны и различимы.
|
||||
|
||||
Да. Во всяком случае так было в те времена, когда я это проверял. Возможно что-то изменилось в последних трёх-четырёх версиях, но я сомневаюсь.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
Собственно ничего не мешает автокаду строить "деревъя" не над базой данных, а над хозяйством полученым после worldDraw (или что там для "отрисовки") всех примитивов, так даже проще на уровне примитивов - все сложности уходят в дпугой "слой" программы. Однако теже привязки считаются не над "проекциями" примитивов - иначе они бы сильно врали
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Не совсем так.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Цитата:
Цитата:
Общее соображение: т.к. в общем случае примитивы равнозначны, то привязывать сведения о положении в пространстве примитивов к разным уровням дерева некорректно. Естественно определять их на одном, нижнем уровне. А на уровнях выше, соответственно, определять сведения о положении уже их множеств. Точнее - подпространств, из которых состоит пространство файла. При регулярном разбиении пространства файла есть преимущества. Оно представляет весь файл в виде матрицы или в виде как бы "растра"- кому какой образ больше говорит. На построение и сохранение собственно дерева время тратить не нужно. Но по регулярным ячейкам можно использовать любой подходящий для конкретной задачи алгоритм поиска, в том числе и дерево. Разделяя все множество ячеек (все пространство) на любые подходящие их подмножества: делением на две части, на четыре, сразу на 16, на нужное число уровней и т.п. Т.е. регулярное разбиение уже содержит все возможности дерева, уже есть дерево, причем, допущу, любого типа. Или, при анализе "снизу", можно брать смежные ячейки в нужном количестве. И не обязательно прямоугольниками, но и в наборе произвольной формы. При этом, взаимное положение любых ячеек априори известно без всякого дополнительного структурирования, без обращения к возможностям дерева. Сам оценить O() регулярного разбиения не возьмусь. |
||||
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
|
>>При регулярном разбиении пространства файла есть преимущества. Оно представляет весь файл в виде матрицы или в виде как бы "растра"- кому какой образ больше говорит
Возмите regular.dxf и сдвинте 1 "крестик" коданибудь в сторону например на 10000000 едениц чертежа - все "приемущества" регулярного разбиения на этом сразу закончатся, древовидная структура проглотит это незаметив, просто увеличив глубину на еденицу и сохранив тоже качество разбивки Последний раз редактировалось zamtmn, 29.09.2013 в 11:46. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Документация Проектировщику на Torrents | DEM | Разное | 262 | 24.02.2024 17:19 |
Жилые и общественные здания: краткий справочник инженера-конструктора. Под ред. Ю.А. Дыховичного и В.И. Колчунова. 2011 (Впечатления и отзывы). | Armin | Поиск литературы, чертежей, моделей и прочих материалов | 19 | 22.03.2018 15:41 |
Порекомендуйте литературу для повышения квалификации(грунты, геотехника) | acid | Поиск литературы, чертежей, моделей и прочих материалов | 6 | 13.05.2015 22:14 |
Случайный эксцентриситет | p_sh | Прочее. Архитектура и строительство | 14 | 22.07.2009 11:32 |
Защита от распространения большого числа dwg | E.D. | AutoCAD | 24 | 21.11.2008 09:02 |