InsertLoopAt Method (ActiveX)

Inserts a loop at a given index of a hatch.

Supported platforms: Windows only

Signature

VBA:

object.InsertLoopAt Index, LoopType, Loop
object

Type: Hatch

The object this method applies to.

Index

Access: Input-only

Type: Long

The index location in the array of vertices that make up the hatch boundary. The index must be a positive integer beginning with 0.

LoopType

Access: Input-only

Type: AcLoopType enum

  • acHatchLoopTypeDefault
  • acHatchLoopTypeExternal
  • acHatchLoopTypePolyline
  • acHatchLoopTypeDerived
  • acHatchLoopTypeTextbox
Loop

Access: Input-only

Type: Variant (object or array of objects)

An object or array of objects forming a closed boundary. If an array of objects is used, their endpoints must coincide for the loop to be created properly. The loop, or the array defining the loop, can consist of the following types of objects: Arc, Circle, Ellipse, Line, Polyline, Region, Spline

Return Value (RetVal)

No return value.

Remarks

No additional remarks.

Examples

VBA:

Sub Example_InsertLoopAt()
    ' This example creates an associative hatch in model space.
    ' A Loop is then inserted into the hatch.
    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 loop for the hatch.
    ' An arc and a line are used to create a closed loop.
    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)
    
    ' Append the first circle as one inner loop
    Dim innerLoop1(0) As AcadEntity
    center(0) = 5: center(1) = 4.5: center(2) = 0
    radius = 1
    Set innerLoop1(0) = ThisDrawing.ModelSpace.AddCircle(center, radius)
    hatchObj.AppendInnerLoop (innerLoop1)
    
    ' Evaluate and display the hatch
    hatchObj.Evaluate
    ThisDrawing.Regen True
    
    MsgBox "Insert another loop.", , "InsertLoopAt Example"
    
    ' Insert the second circle as the other inner loop
    Dim LoopObj(0) As AcadEntity
    radius = 0.5
    Set LoopObj(0) = ThisDrawing.ModelSpace.AddCircle(center, radius)
    hatchObj.InsertLoopAt hatchObj.NumberOfLoops, acHatchLoopTypeDefault, LoopObj
    
    ' Evaluate and display the hatch
    hatchObj.Evaluate
    ThisDrawing.Regen True
    
    MsgBox "Loop inserted.", , "InsertLoopAt Example"
                       
End Sub

Visual LISP:

(vl-load-com)
(defun c:Example_InsertLoopAt()
    ;; This example creates an associative hatch in model space.
    ;; A Loop is then inserted into the hatch.
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; Define the hatch
    (setq patternName "ANSI31"
          patternType 0
          bAssociativity :vlax-true)
    
    ;; Create the associative Hatch object
    (setq modelSpace (vla-get-ModelSpace doc))  
    (setq hatchObj (vla-AddHatch modelSpace patternType patternName bAssociativity acHatchObject))
    
    ;; Create the outer loop for the hatch.
    ;; An arc and a line are used to create a closed loop.
    (setq center (vlax-3d-point 5 3 0)
          radius 3
          startAngle 0
          endAngle 3.141592)

    (setq arc (vla-AddArc modelSpace center radius startAngle endAngle))
    (setq line (vla-AddLine modelSpace (vla-get-StartPoint arc) (vla-get-EndPoint arc)))
  
    (setq outerLoop (vlax-make-safearray vlax-vbObject '(0 . 1)))
    (vlax-safearray-put-element outerLoop 0 arc)
    (vlax-safearray-put-element outerLoop 1 line)
        
    ;; Append the outer loop to the hatch object
    (vla-AppendOuterLoop hatchObj outerLoop)
    
    ;; Append the first circle as one inner loop
    (setq center (vlax-3d-point 5 4.5 0)
          radius 1)
    (setq circle1 (vla-AddCircle modelSpace center radius))

    (setq innerLoop1 (vlax-make-safearray vlax-vbObject '(0 . 0)))
    (vlax-safearray-put-element innerLoop1 0 circle1)

    (vla-AppendInnerLoop hatchObj innerLoop1)
    
    ;; Evaluate and display the hatch
    (vla-Evaluate hatchObj)
    (vla-Regen doc :vlax-true)
    
    (alert "Insert another loop.")
    
    ;; Insert the second circle as the other inner loop
    (setq radius 0.5)
    (setq LoopObj (vlax-make-safearray vlax-vbObject '(0 . 0)))
    (setq circle2 (vla-AddCircle modelSpace center radius))
    (vlax-safearray-put-element LoopObj 0 circle2)
  
    (vla-InsertLoopAt hatchObj (vla-get-NumberOfLoops hatchObj) acHatchLoopTypeDefault LoopObj)
    
    ;; Evaluate and display the hatch
    (vla-Evaluate hatchObj)
    (vla-Regen doc :vlax-true)
    
    (alert "Loop inserted.")
)