AutoCAD - Можно ли анализировать файл .dwg?

Я хочу проанализировать файл dwg. Является ли это возможным?

Я пытаюсь написать программу, которая могла бы анализировать содержимое файла .dwg. например, программа может сказать, можно ли открыть дверь в модели здания.

Я нашел эту статью, в которой объясняется, как читать файл AutoCAD. также я видел какую-то программу, которая может открывать и просматривать файлы .dwg, но ничего для анализа содержимого.

Я хочу знать, есть ли что-то подобное, что анализирует содержимое файла .dwg, и знать, есть ли SDK, которые могут помочь мне проанализировать?


person No Idea For Name    schedule 14.05.2016    source источник
comment
Вы можете написать программное обеспечение для работы в AutoCAD (требуется AutoCAD — AutoLisp и др.) или программное обеспечение, которое работает без AutoCAD (лицензия Autodesk RealDWG, C++/C#). Единственными другими вариантами являются сторонние программные библиотеки. Как бы то ни было, это слишком широко и / или требует ресурсов за пределами сайта.   -  person crashmstr    schedule 16.05.2016
comment
у вас есть 2D или 3D модель этого здания?   -  person Augusto Goncalves    schedule 17.05.2016
comment
@AugustoGoncalves 2D модель   -  person No Idea For Name    schedule 17.05.2016
comment
В принципе, нет. Дверность объекта не является явной в объекте DWG. Вам понадобится какой-то алгоритм, чтобы распознавать формы по их характеристикам, т. е. научить программное обеспечение тому, что дверь является. И если тот факт, что ее можно открыть, является частью определения (например, наличие просвета идентифицирует дверь), вы больше не можете спрашивать, можно ли открыть дверь: двери, которые не могут быть открыты, не будут распознаваться как двери. на первом месте. Вы можете сделать это, если у вас есть стандарт, например. вы говорите, что дверь должна быть ДВЕРЬЮ с тегом GROUP (а не группой базовых сущностей LINE, расположенных в форме двери).   -  person LSerni    schedule 19.05.2016
comment
@NoIdeaForName действительно для 2D мой ответ ниже будет таким же ... на тот случай, если у вас есть 3D-модели (с Solids), это может быть менее сложно с Intersects   -  person Augusto Goncalves    schedule 23.05.2016


Ответы (3)


Вы могли бы, но это непросто.

Файл AutoCAD .DWG — это просто геометрия (линии и дуги). У вас могут быть хорошо организованные файлы с блоком, скажем, блок «Дверь», но это не на 100% достоверно: например, у вас могут быть «Дверь1» и «Дверь патио» в качестве имени блока.

В обоих случаях основная проблема заключается в том, чтобы понять геометрию и как-то ее интерпретировать. Предполагая, что вы можете, у вас есть несколько вариантов путей:

  • Запустите встроенный плагин в AutoCAD: это можно сделать на C++, .NET (C#, VB.NET), LISP или VBA. Существует множество ресурсов, таких как DevCenter, блог и блог.
  • Используйте в качестве библиотеки для доступа к объектам, например RealDWG или другим открытый источник. Это может быть сложно и требует программирования (как указано выше).
  • Используйте веб-службу, например AutoCAD I/O, для загрузки .DWG и .DLL ( .NET) код, который будет анализировать ваш рисунок.

Для интерпретации геометрии (с любым из вышеперечисленных) BRep API — лучший способ анализа геометрии, такой как точки пересечения и другие отношения. В блоге вы найдете несколько примеров, но я не думаю, что там что-то есть. эта зона. Проверьте это и это.

Наконец, подведем итог: в .NET вам потребуется пространство имен Autodesk.AutoCAD.DatabaseServices с Line, Arc, BlockReference и соответствующими методами IntersectWith для выполнения базового анализа.

Теперь, если у вас есть чертеж AutoCAD Architecture .DWG, это может быть проще, чем некоторые основные объекты доступны как часть API, такие как стены и двери. Я не думаю, что это так, но если это так, проверьте эту ссылку. .

person Augusto Goncalves    schedule 16.05.2016

RealDWG стоит нереальных денег. Но вы можете использовать Teigha. Его стоимость меньше, но возможности велики. Также вы можете прочитать спецификацию DWG.

person Andrey Bushman    schedule 23.05.2016

Упомянутые существующие SDK позволят вам исследовать объекты AutoCAD и данные в файле dwg. Распознавание объектов AutoCAD (линий, дуг, блоков и т. д.) как представляющих интерес для вас (дверь, окно, шкаф и т. д.) потребует, чтобы вы идентифицировали эти объекты как таковые. Это можно сделать с помощью атрибутов или скрытых данных, встроенных в объекты AutoCAD. Атрибуты — это встроенная функция AutoCAD. Скрытые встроенные данные потребуют специального программирования.

person mohnston    schedule 05.07.2016