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

ハッチング境界には、ループを追加または挿入できます。境界に対する変更に合うように、自動調整ハッチングは更新されます。非自動調整ハッチングは更新されません。

ハッチング境界を編集するには、次のメソッドを使用します。

AppendInnerLoop
ハッチングにループを追加します。
AppendOuterLoop
ハッチングに外側境界線を追加します。
InsertLoopAt
ハッチングのインデックスを指定して、ループを挿入します。

ハッチングに内部ループを追加する

次の例は、自動調整ハッチングを作成します。次に円を作成し、その円を内部ループとしてハッチングに追加します。

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

  ' Define and create the hatch
  patternName = "ANSI31"
  PatternType = 0
  bAssociativity = True
  Set hatchObj = ThisDrawing.ModelSpace.AddHatch(PatternType, patternName, bAssociativity)

  ' Create the outer loop for the hatch.
  Dim outerLoop(0 To 1) As AcadEntity
  Dim center(0 To 2) As Double
  Dim radius As Double
  Dim startAngle As Double
  Dim endAngle As Double
  center(0) = 5: center(1) = 3: center(2) = 0
  radius = 3
  startAngle = 0
  endAngle = 3.141592
  Set outerLoop(0) = ThisDrawing.ModelSpace.AddArc(center, radius, startAngle, endAngle)
  Set outerLoop(1) = ThisDrawing.ModelSpace.AddLine(outerLoop(0).startPoint, outerLoop(0).endPoint)

  ' Append the outer loop to the hatch object
  hatchObj.AppendOuterLoop (outerLoop)

  ' Create a circle as the inner loop for the hatch.
  Dim innerLoop(0) As AcadEntity
  center(0) = 5: center(1) = 4.5: center(2) = 0
  radius = 1
  Set innerLoop(0) = ThisDrawing.ModelSpace.AddCircle(center, radius)

  ' Append the circle as an inner loop to the hatch
  hatchObj.AppendInnerLoop (innerLoop)

  ' Evaluate and display the hatch
  hatchObj.Evaluate
  ThisDrawing.Regen True
End Sub