Чтение чертежей 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
объекты каждый к каждому, чтобы проверить, параллельны ли они и находятся ли они на расстоянии ниже максимальной толщины, которую может иметь стена.
Эти правила будут очень специфичны для вашего случая и того, как сделаны чертежи.