概要 - ブロックを再定義する(VBA/ActiveX)

任意の Block オブジェクトのメソッドおよびプロパティを使用して、ブロックを再定義します。

ブロックを再定義すると、図面内のそのブロックへのすべての参照がすぐに更新され、新しい定義を反映します。

再定義は、再定義以前および以降のすべてのブロックの挿入に影響します。定数属性は失われ、新しい定数属性に置き換えられます。変数属性は、新しいブロックに属性がない場合でも変更されません。

ブロック定義中のオブジェクトを再定義する

次の例では、ブロックを定義し、その定義に円を追加します。次に、ブロック参照としてブロックを図面に挿入します。ブロック定義にある円を更新すると、ブロック参照が自動的に更新されます。

Sub Ch10_RedefiningABlock()
 ' 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
 
 ' Redefine the circle in the block,
 ' and update the block reference
 circleObj.radius = 3
 blockRefObj.Update
End Sub