Подробный ответ:
1. Visual Studio 2013 / Целевая платформа .NET Framework 4 / Конфигурация - Release / AutoCAD 2014 x64 / Windows 8.1 x64
2. Подключаемые библиотеки:
- AcCoreMgd.dll
- AcDbMgd.dll
- AcMgd.dll
- Autodesk.AutoCAD.Interop.dll
- Autodesk.AutoCAD.Interop.Common.dll
3. Код:
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Runtime
Public Class CopyOBJECTS
<CommandMethod("GALMODELOBJ", CommandFlags.Session)>
Public Sub GALMODELOBJ()
Dim acApp As AcadApplication
Dim acDoc As AcadDocument
acApp = Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication
acDoc = acApp.ActiveDocument
'Создание выборки объектов
Dim selSet As Autodesk.AutoCAD.Interop.AcadSelectionSet
selSet = acDoc.SelectionSets.Add("MySS")
Dim ptLL(2) As Double, ptUR(2) As Double
ptLL(0) = -9999.0# : ptLL(1) = -9999.0#
ptUR(0) = 9999.0# : ptUR(1) = 9999.0#
'Добавление объектов в выборку (выделение объектов рамкой, заданной координатами)
Call selSet.Select(Common.AcSelect.acSelectionSetWindow, ptLL, ptUR)
MsgBox("Entities selected using Window selection : " & selSet.Count)
' Создаем массив объектов из выборки
Dim obj() As Autodesk.AutoCAD.Interop.Common.AcadEntity
ReDim obj(selSet.Count - 1)
For i = 0 To selSet.Count - 1
obj(i) = selSet.Item(i)
Next
' Каждому листу присваиваем массив объектов из выборки
Dim Layout As Autodesk.AutoCAD.Interop.Common.AcadLayout
For Each Layout In acDoc.Layouts
Call acDoc.CopyObjects(obj, Layout.Block)
Next
' Очищаем выборку
selSet.Delete()
End Sub
End Class
4. Запустите AutoCAD
5. Введите команду
_NETLOAD6. Укажите сборку (*.dll) из папки построения.
7. Нарисуйте в пространстве модели, к примеру, круг с координатами 0,0,0 и радиусом 50!
8. Введите команду GALMODELOBJ
9. В результате на всех листах (и даже MODEL) должны появиться все объекты, которые вместились в рамку [-9999,-9999;9999,9999] из пространства модели!
Огромное спасибо, Александру Ривилису!