属性参照を作成するには、まず AddAttribute メソッドを使用してブロックの属性定義を作成する必要があります。
このメソッドでは、属性文字の高さ、Attribute モード、プロンプト文字列、挿入点、タグ文字列、既定の属性値の 6 つの値を指定する必要があります。モードの指定は省略可能です。属性モードは、次の 5 つの定数を入力して指定することができます。
上記のモードは、指定を省略することも、任意の組み合わせ、またはすべてを指定することもできます。モードを組み合わせて指定するには、定数の加算で入力します。たとえば、acAttributeModeInvisible + acAttributeModeConstant と入力することができます。
プロンプト文字列は、属性を含むブロックが挿入された際に表示されます。既定の文字列はタグ文字列です。モードとして acAttributeModeConstant を入力すると、プロンプト文字列は無効になります。
タグ文字列は、属性の各対象を識別します。スペースと感嘆符以外の任意の文字を使用することができます。小文字は自動的に大文字に変更されます。
ブロック内の属性定義の作成後は、InsertBlock メソッドを使用してブロックを挿入するたびに、異なる属性参照の値を指定できます。
属性定義は、作成対象のブロックに関連付けられています。モデル空間またはペーパー空間に関して作成された属性定義は、ブロックには関連付けられません。
次の例では、ブロックを作成し、そのブロックに属性を追加します。次に、ブロックを図面に挿入します。
Sub Ch10_CreatingAnAttribute() ' 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, "BlockWithAttribute") ' Add an attribute to the block Dim attributeObj As AcadAttribute Dim height As Double Dim mode As Long Dim prompt As String Dim insertionPoint(0 To 2) As Double Dim tag As String Dim value As String height = 1 mode = acAttributeModeVerify prompt = "New Prompt" insertionPoint(0) = 5 insertionPoint(1) = 5 insertionPoint(2) = 0 tag = "New Tag" value = "New Value" Set attributeObj = blockObj.AddAttribute(height, mode, _ prompt, insertionPoint, tag, value) ' Insert the block, creating a block reference ' and an attribute reference Dim blockRefObj As AcadBlockReference insertionPnt(0) = 2 insertionPnt(1) = 2 insertionPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _ (insertionPnt, "BlockWithAttribute", 1#, 1#, 1#, 0) End Sub