2013-06-17 2 views
0

Мне нужно открыть и прочитать содержимое файла Autocad, содержащего информацию о стенах здания, окнах и т. Д., А также прочитать и классифицировать эту информацию. Поскольку эти файлы Autocad меняются, мне нужен кто-то с опытом, чтобы сообщить мне, как я могу определить, есть ли окно, например. Кроме того, будет полезно использовать информацию для внутренней, внешней и т. Д. ...Прочитайте чертеж AutoCAD с помощью VB6

+0

check: http://forums.autodesk.com/t5/Visual-Basic-Customization/run-VB6-application-with-different-Autocad-Version/td-p/2691063 – rags

ответ

2

Сначала вам нужно загрузить пакет ObjectArx из Autodesk. Установите его и создайте новый Autocad Addin.

Есть два способа работы я знаю:

Использование Arx или Interop. Я переживаю только с interop, но Arx работает совершенно так же. (Я выбрал Interop, потому что он использует те же библиотеки ActiveX, что и VBA для Autocad. Так что все, что вы можете сделать с Interop, которое вы можете делать с VBA)

Найдите мастера, чтобы создать шаблон проекта для Autocad Add- В.

Затем обратитесь к библиотеке Autodesk.Autocad.Interop.

В дополнение вы можете получить приложение autocad от Autodesk.AutoCAD.ApplicationServices.Application.

Чтобы использовать версию приложения Interop, получите Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication как AcadApplication.

Из приложения вы можете получить коллекцию Documents, а также ActiveDocument.

Из документа вы можете получить ModelSpace и PaperSpace.

Из них вы можете получить Item s, тип которых AcadEntity.

AcadEntity - это базовый тип для всех объектов Autocad, которые отображаются на чертеже. Таким образом, все стены и окна будут образованы группой объектов AcadEntity.

Но AcadEntity могут быть получены виды, такие как AcadLine (линии), AcadLWPolyline (ломаные 2d с высоты), AcadCircle и так далее.

Теперь вам нужно знать, как окна и стены сделаны на чертеже, чтобы найти их. Если это блоки, это будет довольно легко. Просто выберите в пространстве моделей или в каком-либо пространстве (или любом блоке autocad, поскольку пространство для документов и пространство моделей считаются блоками) все AcadEntity объектов, которые являются AcadBlockReference.

Каждый AcadBlockReference представляет собой вставку блока на чертеже и содержит его параметры.

Но если стены и окна ручные с линиями, то вам придется стабилизировать некоторые правила для их поиска, например, сравнивать объекты AcadLine каждый, чтобы проверить, параллельны ли они и на расстоянии ниже максимального толщина стены может иметь.

Эти правила будут очень конкретными для вашего случая и как сделаны чертежи.

Смежные вопросы