Правила форума гласят, надо создавать новую тему. Так вот писал через WinForm с подключением к AutoCAD прогу, тут советовали что ObjectARX (надеюсь верно написал) это сила, в итоге стал писать плагин (с терминами я ещё плаваю, но по коду ниже будет ясно). Ну так вот бился, я бился и попробовал код из WinForm поместить в плагин, оказалось добавляешь ссылки и всё работает, а в итоге, вот как выглядит список листов чуждом мне языке
' получаю список всех листов
acDoc = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
Dim lays As DBDictionary = acTrans.GetObject(acCurDb.LayoutDictionaryId, OpenMode.ForRead)
grdLayout.Rows.Clear()
For Each item As DBDictionaryEntry In lays
grdLayout.Rows.Add()
grdLayout.Rows(grdLayout.RowCount - 1).HeaderCell.Value = Str(grdLayout.RowCount)
grdLayout.Rows(grdLayout.RowCount - 1).Cells(1).Value = item.Key
grdLayout.Rows(grdLayout.RowCount - 1).Cells(2).Value = "Клик" ' item.Value
Next
acTrans.Abort()
End Using
и вот так в моём родном VB
Dim acApp As Autodesk.AutoCAD.Interop.AcadApplication
Dim CadDoc As Autodesk.AutoCAD.Interop.AcadDocument
acApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
CadDoc = acApp.ActiveDocument
X = 0
grdLayout.Rows.Clear()
Do Until X = CadDoc.Layouts.Count
grdLayout.Rows.Add()
grdLayout.Rows(grdLayout.RowCount - 1).HeaderCell.Value = Str(CadDoc.Layouts.Item(X).TabOrder)
grdLayout.Rows(grdLayout.RowCount - 1).Cells(1).Value = CadDoc.Layouts.Item(X).Name
grdLayout.Rows(grdLayout.RowCount - 1).Cells(2).Value = "Клик"
grdLayout.Rows(grdLayout.RowCount - 1).Cells(3).Value = CadDoc.Layouts.Item(X).StyleSheet
grdLayout.Rows(grdLayout.RowCount - 1).Cells(4).Value = CadDoc.Layouts.Item(X).TabOrder
X = X + 1
Loop
при этом я ещё и могу получить и изменять стиль печати не активного листа.
В данной теме нет вопроса, как оказалось проблема не в языке, а в среде использования, так что VB по сей день живой язык и куча примеров "макросов" и кода намного меньше и полезнее, но в итоге конечно лучше гибрид, правда наверное влияет на производительность.
Конечно если Вы только вступаете в "кодеры" то лучше прислушайтесь к гуру, а если "со стажем" то вполне всё работает, просто надо скачать Wizard (тут не посоветую, у меня из трёх машин стало только на одну) и немного "танцев с бубном" и пойметё что и от куда происходит и как использовать.
P.S. по примеру по Object ARX у меня печать завершается (не понятной мне) ошибкой - код из примера, а вот NET API работает без проблем (конечно когда это плагин) когда это внешняя программа - постоянно сыпется ошибками которые не возможно не отловить, не диагностировать и как следствие исправить.