Se puede utilizar el método InsertBlock para insertar bloques o dibujos completos en el dibujo actual. El método InsertBlock requiere seis valores como entrada: el punto de inserción, el nombre del bloque o dibuje que se inserta, el factor de escala X, el factor de escala Y, el factor de escala Z, y el ángulo de rotación.
Los dibujos insertados en otros dibujos son considerados por AutoCAD como referencias a bloques. Las siguientes inserciones refieren a la definición de bloque (que contiene la descripción geométrica del bloque) con parámetros de posición, escala y rotación distintos. Si se modifica el dibujo original una vez insertado, las modificaciones no tendrán efecto en el bloque insertado. Si quiere que el bloque insertado refleje las modificaciones realizadas en el dibujo original, puede definir de nuevo el bloque mediante la reinserción del dibujo original. Para ello puede utilizar el método InsertBlock.
Si inserta un dibujo a modo de bloque, el bloque adquiere automáticamente el nombre del archivo. Después de crear el bloque, puede cambiar su nombre mediante la propiedad Name.
Por defecto, el punto base para la inserción de dibujos en AutoCAD tiene las coordenadas (0, 0, 0). Se puede modificar el punto base de un dibujo, si abre el dibujo original especifica un punto base de inserción diferente para la variable de sistema INSBASE con el método SetVariable. AutoCAD empleará el nuevo punto base la próxima vez que inserte el dibujo.
Si el dibujo insertado contiene objetos PaperSpace, dichos objetos no se incluyen en la definición de bloque del dibujo actual. Para usar los objetos dibujados en espacio papel en otros dibujos, abra el dibujo original y defina los objetos del espacio papel como un bloque con el método Add. La inserción de un dibujo en otro se puede realizar tanto en espacio papel como en espacio modelo.
Una referencia a bloque no puede iterarse para encontrar los objetos originales que la componen. Sin embargo, se puede iterar la definición de bloque original, o se puede descomponer la referencia a bloque en sus componentes originales.
También se puede insertar una matriz de bloques con el método AddMInsertBlock. Este método no inserta un bloque en el dibujo, como hace InsertBlock, sino que inserta una matriz del bloque especificado. Este método devuelve un objeto MInsertBlock.
Para obtener más información acerca de la inserción de bloques, véase “Inserción de bloques” en el Manual del usuario.
Definición e inserción de un bloque en un dibujo
Este ejemplo define un bloque y añade un círculo a su definición. Después se inserta el bloque en un dibujo, como referencia de bloque.
Sub Ch10_InsertingABlock()
' Define the block
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "CircleBlock")
' Add a circle to the block
Dim circleObj As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 0
center(1) = 0
center(2) = 0
radius = 1
Set circleObj = blockObj.AddCircle(center, radius)
' Insert the block
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
ZoomAll
MsgBox "The circle belongs to " & blockRefObj.ObjectName
End Sub