About Editing Hatch Boundaries (VBA/ActiveX)

You can append or insert loops into the hatch boundaries. Associative hatches are updated to match any changes made to their boundaries. Non-associative hatches are not updated.

To edit a hatch boundary, use one of the following methods:

AppendInnerLoop
Appends an inner loop to the hatch.
AppendOuterLoop
Appends an outer loop to the hatch.
InsertLoopAt
Inserts a loop at a given index of a hatch.

Append an inner loop to a hatch

This example creates an associative hatch. It then creates a circle and appends the circle as an inner loop to the hatch.

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