Para copiar varios objetos, utilice el método CopyObjects o bien cree una matriz de objetos para utilizarla con el método Copy. (para copiar los objetos de un conjunto de selección, itere en el conjunto de selección y guarde los objetos en una matriz). Itere en la matriz, copiando cada objeto por separado, y reúna en una segunda matriz los objetos recién creados.
Para copiar varios objetos en un dibujo distinto, utilice el método CopyObjects y ajuste el parámetro Owner en el espacio modelo del dibujo.
Copia de dos objetos circulares
En este ejemplo, se crean dos objetos de círculo y se utiliza el método CopyObjects para crear una copia de los mismos.
Sub Ch4_CopyCircleObjects()
Dim DOC1 As AcadDocument
Dim circleObj1 As AcadCircle
Dim circleObj2 As AcadCircle
Dim circleObj1Copy As AcadCircle
Dim circleObj2Copy As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius1 As Double
Dim radius2 As Double
Dim radius1Copy As Double
Dim radius2Copy As Double
Dim objCollection(0 To 1) As Object
Dim retObjects As Variant
' Define the Circle objectcenterPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0radius1 = 5#: radius2 = 7#radius1Copy = 1#: radius2Copy = 2#' Create a new drawingSet DOC1 = ThisDrawing.Application.Documents.Add' Add two circles to the drawingSet circleObj1 = DOC1.ModelSpace.AddCircle _(centerPoint, radius1)Set circleObj2 = DOC1.ModelSpace.AddCircle _(centerPoint, radius2)ZoomAll' Put the objects to be copied into a form' compatible with CopyObjectsSet objCollection(0) = circleObj1Set objCollection(1) = circleObj2' Copy object and get back a collection of' the new objects (copies)retObjects = DOC1.CopyObjects(objCollection)' Get newly created object and apply' new properties to the copiesSet circleObj1Copy = retObjects(0)Set circleObj2Copy = retObjects(1)circleObj1Copy.radius = radius1CopycircleObj1Copy.Color = acRedcircleObj2Copy.radius = radius2CopycircleObj2Copy.Color = acRedZoomAllEnd Sub
Copia de objetos en un dibujo distinto
Este ejemplo crea objetos Circle y después utiliza el método CopyObjects para copiar los círculos en un dibujo nuevo.
Sub Ch4_Copy_to_New_Drawing()
Dim DOC0 As AcadDocument
Dim circleObj1 As AcadCircle, circleObj2 As AcadCircle
Dim centerPoint(0 To 2) As Double
Dim radius1 As Double, radius2 As Double
Dim radius1Copy As Double, radius2Copy As Double
Dim objCollection(0 To 1) As Object
Dim retObjects As Variant
' Define the Circle objectcenterPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0radius1 = 5#: radius2 = 7#radius1Copy = 1#: radius2Copy = 2#' Add two circles to the current drawingSet circleObj1 = ThisDrawing.ModelSpace.AddCircle _(centerPoint, radius1)Set circleObj2 = ThisDrawing.ModelSpace.AddCircle _(centerPoint, radius2)ThisDrawing.Application.ZoomAll' Save pointer to the current drawingSet DOC0 = ThisDrawing.Application.ActiveDocument' Copy objects'' First put the objects to be copied into a form compatible' with CopyObjectsSet objCollection(0) = circleObj1Set objCollection(1) = circleObj2' Create a new drawing and point to its model spaceDim Doc1MSpace As AcadModelSpaceDim DOC1 As AcadDocumentSet DOC1 = Documents.AddSet Doc1MSpace = DOC1.ModelSpace' Copy the objects into the model space of the new drawing. A' collection of the new (copied) objects is returned.retObjects = DOC0.CopyObjects(objCollection, Doc1MSpace)Dim circleObj1Copy As AcadCircle, circleObj2Copy As AcadCircle' Get the newly created object collection and apply new' properties to the copies.Set circleObj1Copy = retObjects(0)Set circleObj2Copy = retObjects(1)circleObj1Copy.radius = radius1CopycircleObj1Copy.Color = acRedcircleObj2Copy.radius = radius2CopycircleObj2Copy.Color = acRedThisDrawing.Application.ZoomAllMsgBox "Circles copied."End Sub