概要 - ハッチング境界を定義する(VBA/ActiveX)

ハッチング オブジェクトを作成したら、ハッチング境界線を追加することができます。境界線は、線分、円弧、円、2D ポリライン、楕円、スプライン、およびリージョンを組み合わせて構成できます。

追加する最初の境界線は、ハッチングで塗り潰される最も外側の境界を定義する外側境界線です。外側境界線を追加するには、AppendOuterLoop メソッドを使用します。

外側境界線を定義したら、続いて内側境界線を追加できます。内側境界線は、AppendInnerLoop メソッドを使用して追加します。

内側境界線は、ハッチング内の島を定義します。これらの島を Hatch オブジェクトが処理する方法は、HatchStyle プロパティの設定によって異なります。HatchStyle プロパティは、次のいずれかの条件に設定できます。

ハッチング スタイルの定義
ハッチング スタイル 条件 説 明


標準 標準スタイルを指定します。このオプションは、外側境界線の内側をハッチングします。AutoCAD は内側にある境界に達すると、さらに内側の境界を見つけるまでハッチングをオフにします。これは、HatchStyle プロパティの既定の設定です。


外側のみ 外側領域のみを塗り潰します。このスタイルは、領域境界線から内側もハッチングしますが、内部境界線を検出するとハッチングをオフにし、再びオンにすることはありません。


内側含む 内部構造を無視します。このオプションはすべての内部オブジェクトをハッチングします。

ハッチングは、定義後に評価しないと表示できません。評価するには Evaluate メソッドを使用します。

ハッチング オブジェクトを作成する

次の例は、モデル空間に自動調整ハッチングを作成します。作成後は、ハッチングが結合されている円の大きさを変更できます。ハッチングは、現在の円の大きさに適合するよう、自動調整されます。

Sub Ch4_CreateHatch()
  Dim hatchObj As AcadHatch
  Dim patternName As String
  Dim PatternType As Long
  Dim bAssociativity As Boolean

  ' Define the hatch
  patternName = "ANSI31"
  PatternType = 0
  bAssociativity = True

  ' Create the associative Hatch object
  Set hatchObj = ThisDrawing.ModelSpace.AddHatch(PatternType, patternName, bAssociativity)

  ' Create the outer boundary for the hatch. (a circle)
  Dim outerLoop(0 To 0) As AcadEntity
  Dim center(0 To 2) As Double
  Dim radius As Double
  center(0) = 3: center(1) = 3: center(2) = 0
  radius = 1
  Set outerLoop(0) = ThisDrawing.ModelSpace.AddCircle(center, radius)

  ' Append the outer boundary to the hatch
  ' object, and display the hatch
  hatchObj.AppendOuterLoop (outerLoop)
  hatchObj.Evaluate
  ThisDrawing.Regen True
End Sub