AutoCAD - можно ли проанализировать файл.dwg?
Я хочу проанализировать файл DWG. Является ли это возможным?
Я пытаюсь написать какую-нибудь программу, которая могла бы анализировать содержимое файла.dwg. например, программа может сказать, можно ли открыть дверь в модели здания.
Я нашел эту статью, которая объясняет, как читать файл AutoCAD. Также я видел какую-то программу, которая может открывать и просматривать файлы.dwg, но не для анализа содержимого.
Я хочу знать, есть ли что-то похожее на это, анализировать содержимое файла.dwg, и узнать, есть ли SDK, который может помочь мне проанализировать?
4 ответа
Можно, но это не легко.
Файл 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, такие как стены и двери. Я не верю, что это так, но если это так, проверьте по этой ссылке.
Упомянутые существующие SDK позволят вам изучить сущности и данные AutoCAD в файле DWG. Чтобы признать объекты AutoCAD (линии, дуги, блоки и т. Д.) Интересными для вас (дверь, окно, шкаф и т. Д.), Вам потребуется идентифицировать эти объекты как таковые. Это можно сделать с помощью атрибутов или скрытых данных, встроенных в объекты AutoCAD. Атрибуты являются встроенной функциональностью в AutoCAD. Скрытые внедренные данные потребуют пользовательского программирования.
RealDWG стоит нереальных денег. Но вы можете использовать Teigha. Его стоимость меньше, но его возможности велики. Также вы можете прочитать спецификацию DWG.
Вы можете использовать библиотеку LibreDWG с открытым исходным кодом для запуска ряда собственных команд AutoCAD, таких как DATAEXTRACTION , которые могут анализировать файл и извлекать содержимое.
Mixpeek — один из бесплатных вариантов, который делает именно это:
pip install mixpeek
from mixpeek import Mixpeek
mix = Mixpeek(
api_key="my-api-key"
)
mix.index("design_spec.dwg")
Этот/index
endpoint извлечет содержимое вашего файла DWG, после чего вы сможете выполнить поиск терминов для анализа.
mix.search("retainer", include_context=True)
[
{
"file_id": "6377c98b3c4f239f17663d79",
"filename": "design_spec.dwg",
"context": [
{
"texts": [
{
"type": "text",
"value": "DV-34-"
},
{
"type": "hit",
"value": "RETAINER"
},
{
"type": "text",
"value": "."
}
]
}
],
"importance": "100%",
"static_file_url": "s3://design_spec_1.dwg"
}
]
Дополнительная документация здесь: https://docs.mixpeek.com/ и рецензия: https://medium.com/@mixpeek/search-the-contents-of-dwg-files-with-python-1fd2fc0772af