Приветствую на форуме! Начни с того, что посмотри документацию AutoCAD ActiveX/COM:
http://adn-cis.org/forum/index.php?topic=909.0Теперь перейдем непосредственно к тому, что тебе нужно:
1) Открываешь чертеж
'.........................................................
Dim db As Object
Set db = GetAcDbxDoc()
db.Open dwgPath ' полный путь к dwg-файлу
'.........................................................
Function GetAcDbxDoc() As Object
Dim strAcadVersion As String
With AcadApp
strAcadVersion = Mid(.Version, 1, 2)
If CInt(strAcadVersion) < 16 Then
Set GetAcDbxDoc = .GetInterfaceObject("ObjectDBX.AxDbDocument")
Else
Set GetAcDbxDoc = .GetInterfaceObject("ObjectDBX.AxDbDocument." & strAcadVersion)
End If
End With
End Function
2) Следующий этап - нужно пройтись по всем листам чертежа, при этом, как я понимаю вкладку Модель/Model, тебе нужно будет пропустить.
Коллекция листов - это db.Layouts.
3) Для каждого листа layout в этой коллекции проверяешь его свойство layout.ModelType и если оно True, то пропускаешь этот лист, т.к. это Модель.
4) Теперь получаешь для листа layout свойство layout.Block. Это коллекция примитивов находящихся на этом листе. Проходишь по всем всем этим примитивам и отбираешь только размеры. Я не знаю все ли типы размеров тебе нужны. Поэтому на всякий случай указываю что их несколько:
5) У каждого размера dim есть свойство dim.Measurement, которое даёт значение размера (почитай в документации). Следует только помнить, что пользователь может вручную исправить это значение. И еще это значение возможно нужно будет сконвертировать из другой системы единиц. Но с этим уже будешь экспериментировать сам.
6) После всего этого чертеж нужно будет закрыть. Если мне не изменяет память, то это:
Ну для начала всё. На VBA я не пишу. Так что только на уровне идей.