Чтение чертежей AutoCAD с помощью VB6

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

1 ответ

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

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

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

Найдите мастера для создания шаблона проекта для надстройки Autocad.

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

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

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

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

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

Из тех, кого вы можете получить Itemс, которые имеют тип AcadEntity,

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

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

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

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

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

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

Другие вопросы по тегам