Анкерные системы Schöck Dorn
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Оптимизация обработки большого числа элементов

Оптимизация обработки большого числа элементов

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 15.09.2013, 04:25 #1
Оптимизация обработки большого числа элементов
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 2,551

АлексЮстасу вне форума Вставить имя

Наверное, есть отработанные и даже общепризнанные способы оптимизировать обработку в программах большого числа элементов dwg-файлов?
Я имею в виду программы, которые решают задачи вроде: найти все пересечения или найти все не пересекающееся, найти все, попадающее в контур или вне его, создать все возможные замкнутые контуры или т.п.
И имею в виду не использование чисто программных способов, а на уровне алгоритмов.
Может быть опытные поделятся, если не оч. большой секрет, конечно
Это нужно мне для общения с моим программистом, а может пригодиться начинающим программистом вообще.
Я сам не программист, но постараюсь в целом понять ответы, да и поспрашиваю, если что, у разбирающихся.

Как непосвещенный, я предполагаю, что в dwg-файле элементы хранятся в целом просто в порядке их поступления, т.е. их взаимные связи (соединение, наложение, пересечение и т.п.) никак не описаны, и их взаимное положение никак не структурировано, не описано. Это правильно? И поэтому, если действовать в лоб, в подобных программах приходится определять отношение всего со всем, и, возможно, не один раз?
Если же как-то ловко описать взаимное положение и/или взаимные связи элементов, то можно будет анализировать не все элементы, а только взаимно связанные или указанным образом расположенные. Что в теории скажется на скорости работы.

И подвопрос: для файлов примерно какого размера (+-полмегабайта) или какого числа элементов (+-1000), или числа вершин элементов (+-1000) подобные ухищрения имеют смысл на не очень мощных и на хороших компьютерах? Эмпирически-экспертно, конечно.
Просмотров: 23908
 
Непрочитано 15.09.2013, 04:39
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 2,431


Один ответ
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 10:22
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Ты можешь итеративно перебрать все элементы базы данных чертежа, получив все ObjectId и попутно (если нужно) группируя результаты по своему усмотрению (всё зависит от твоего алгоритма обработки). Например, итерация чертежа, размером 50Мб, с выборкой всех ObjectId и их группировкой по типам примитивов у меня заняло меньше секунды.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 10:23
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 2,431


Цитата:
Если же как-то ловко описать взаимное положение и/или взаимные связи элементов
- это называется топология
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 11:13
#5
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,837


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Как непосвещенный, я предполагаю, что в dwg-файле элементы хранятся в целом просто в порядке их поступления, т.е. их взаимные связи (соединение, наложение, пересечение и т.п.) никак не описаны, и их взаимное положение никак не структурировано, не описано. Это правильно? И поэтому, если действовать в лоб, в подобных программах приходится определять отношение всего со всем, и, возможно, не один раз?
То что они храняться росто по порядку создания - это так. По второму вопросу - тут явно у вашего программиста пробелы в численных методах. Способов много - но каждый завистит от ситуации - вот подобная тема, я там излагал пару вариантов (#10,#13). Суть в общем сводиться к предварительному структурированию, либо индексированию данных в зависимости от предполагаемого их использования, в любом случае, даже если стуктура получается очень сложной для группировки - все обращение к автокаду (считывание характеристик объектов) - не более 1 раза - вся обработка должна происходить в памяти (благо с этим ресурсом сейчас в 99% задач проблем нет).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 15.09.2013, 14:23
#6
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,551


Цитата:
Сообщение от trir Посмотреть сообщение
Цитата:
Сообщение от trir Посмотреть сообщение
- это называется топология
Алгоритмы-то какие?

Цитата:
Сообщение от hwd Посмотреть сообщение
попутно (если нужно) группируя результаты по своему усмотрению (всё зависит от твоего алгоритма обработки)
В этом и состоит же, наверное, задача - как лучше группировать, какие самые универсальные и эффективные способы такого группирования?

Цитата:
Сообщение от Дима_ Посмотреть сообщение
вот подобная тема, я там излагал пару вариантов (#10,#13). Суть в общем сводиться к предварительному структурированию, либо индексированию данных в зависимости от предполагаемого их использования
Тему Вашу видел, и нашел еще пару тем об оптимизации, но создал эту, поскольку разбирались в них конкретные задачи.
Я надеялся, что опытные программисты поделятся проверенными, отработанными, более-менее универсальными подходами. Наверняка же такие есть. Пусть их будет не один, а два-три-четыре, чтобы выбрать подходящий под ту или иную частную задачу.

Еще подвопрос: что делается быстрее - получение габаритов элементов или списков их вершин? Габариты получают каким-то специальным методом или как раз просмотром координат вершин?
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 14:31
#7
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,552
Отправить сообщение для gomer с помощью ICQ Отправить сообщение для gomer с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Габариты получают каким-то специальным методом
да.
gomer вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 15.09.2013, 14:44
#8
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,551


Цитата:
Сообщение от gomer Посмотреть сообщение
да.
А что в целом быстрее - получить габариты или просмотреть вершины?
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 14:49
#9
trir


 
Регистрация: 18.12.2010
Сообщений: 2,431


Цитата:
Алгоритмы-то какие?
Много их, а вместе они называются - Вычислительная Геометрия

Читать:
Ф. Препарата, М. Шеймос - Вычислительная Геометрия: Введение
Майкл Ласло - Вычислительная геометрия и компьютерная графика на C++

И все они реализованы в "Пространственных базах данных" - бери и пользуйся, самые лучшие ;=)
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 15:29
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,552
Отправить сообщение для gomer с помощью ICQ Отправить сообщение для gomer с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
А что в целом быстрее - получить габариты или просмотреть вершины?
габариты не всегда определяются положением вершин
gomer вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 15.09.2013, 15:49
#11
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,551


Цитата:
Сообщение от gomer Посмотреть сообщение
габариты не всегда определяются положением вершин
Вы имеете в виду габариты криволинейных элементов, текстовых и блоков?
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 15:52
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
В этом и состоит же, наверное, задача - как лучше группировать, какие самые универсальные и эффективные способы такого группирования?
Всё зависит от того, как эти данные будут использоваться. Как вариант я когда-то показывал вот такую штуку.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 15.09.2013, 16:23
#13
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,551


Цитата:
Сообщение от hwd Посмотреть сообщение
Всё зависит от того, как эти данные будут использоваться. Как вариант я когда-то показывал вот такую штуку.
Вопрос был об оптимизации обработки геометрии данных, для ускорения анализа взаимного положения и взаимосвязи элементов. Например, для поисков пересечений, вложенности в контуры или т.п.
Если я правильно понял Вашу ссылку, то там речь идет об оптимизации обработки свойств элементов, например, текстовых стилей (сужу по "Пример целесообразного использования").
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 16:48
#14
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,552
Отправить сообщение для gomer с помощью ICQ Отправить сообщение для gomer с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Вы имеете в виду габариты криволинейных элементов, текстовых и блоков?
да. но вы до сих пор не раскрыли язык на котором будете обрабатывать данные
gomer вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 15.09.2013, 16:58
#15
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,551


Цитата:
Сообщение от gomer Посмотреть сообщение
да. но вы до сих пор не раскрыли язык на котором будете обрабатывать данные
Я думал, что язык значения для алгоритмов не имеет. Или незначительное. Потому и не упомянул. На ObjectARX.
Я допускаю, что в разных языках одни и те же действия с данными могут быть лучше-хуже обеспечены. Но здесь мне бы хотелось обсуждать больше алгоритмы, чем программистские приемы.
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 17:21
#16
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,632


Оооо
Ты это лисперам расскажи про алгоритмы то....
__________________
Шаг 12й......
Мои публикации
DEM вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 17:36
#17
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,552
Отправить сообщение для gomer с помощью ICQ Отправить сообщение для gomer с помощью Skype™


зависит не только от языка, но и от среды в которой работает алгоритм
gomer вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 17:45
#18
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Если я правильно понял Вашу ссылку, то там речь идет об оптимизации обработки свойств элементов
Нет, это просто элементарный пример на произвольную тему. Основная идея в том, чтобы быстро получать идентификаторы нужных объектов (на основе любых фильтров, соответствующих задаче), затем на основе этих идентификаторов получать сами объекты и выполнять любую их модификацию (при необходимости). В качестве условия фильтрации можно передать любое выражение, возвращающее логическое значение. В качестве операции можно передать любой метод, соответствующий обозначенной в интерфейсе сигнатуре.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 15.09.2013, 18:36
#19
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,551


Цитата:
Сообщение от DEM Посмотреть сообщение
Оооо
Ты это лисперам расскажи про алгоритмы то....
Цитата:
Сообщение от gomer Посмотреть сообщение
зависит не только от языка, но и от среды в которой работает алгоритм
Offtop: ...да, похоже, до обсуждения самих алгоритмов мы не доберемся. Видно, шибко они секретные. Или наоборот.
Цитата:
Сообщение от hwd Посмотреть сообщение
Нет, это просто элементарный пример на произвольную тему. Основная идея в том, чтобы быстро получать идентификаторы нужных объектов (на основе любых фильтров, соответствующих задаче), затем на основе этих идентификаторов получать сами объекты и выполнять любую их модификацию (при необходимости). В качестве условия фильтрации можно передать любое выражение, возвращающее логическое значение. В качестве операции можно передать любой метод, соответствующий обозначенной в интерфейсе сигнатуре.
Т.е. Ваш подход оптимизирует получение всех идентификаторов и всех объектов, и применение к ним каких-то операций. Это поможет программе в целом, но это же не оптимизация определения взаимного положения и отношений элементов друг к другу? Так понимаю, что оптимизация геометрических отношений элементов конечном итоге сводится к уменьшению числа рассматриваемых в каждый момент элементов?
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 15.09.2013, 18:39
#20
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,552
Отправить сообщение для gomer с помощью ICQ Отправить сообщение для gomer с помощью Skype™


так вы давайте задачу и обсудим ее, а так все как-то абстрактно...
gomer вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Оптимизация обработки большого числа элементов

Инженерные консультации
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Жилые и общественные здания: краткий справочник инженера-конструктора. Под ред. Ю.А. Дыховичного и В.И. Колчунова. 2011 (Впечатления и отзывы). Armin Поиск литературы, чертежей, моделей и прочих материалов 17 22.08.2017 16:55
Документация Проектировщику на Torrents DEM Разное 251 23.06.2016 11:59
Порекомендуйте литературу для повышения квалификации(грунты, геотехника) 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

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы