Creates a Hatch object.
Supported platforms: Windows only
VBA:
RetVal = object.AddHatch(PatternType, PatternName, Associativity [, HatchObjectType])
Type: Block, ModelSpace, PaperSpace
The objects this method applies to.
Access: Input-only
Type: AcPatternType or AcGradientPatternType enum
If the HatchObjectType parameter value is acHatchObject, then use the AcPatternType enum; if the HatchObjectType parameter value is AcGradientObject, then use the AcGradientPatternType enum.
AcPatternType enum
AcGradientPatternType enum
Access: Input-only
Type: String
If the HatchObjectType parameter value is acHatchObject, then PatternName should contain the hatch pattern name. If the HatchObjectType parameter value is acGradientObject, then PatternName should contain one of the gradient pattern names listed in GradientName.
Access: Input-only
Type: Boolean
Access: Input-only
Type: AcHatchObjectType enum
The default value is the AcHatchObjectType enum value of AcHatchObject. If the AcHatchObjectType enum value is AcGradientObject, then PatternType should be of type AcGradientPatternType, and PatternName should contain the gradient pattern name.
After the Hatch object is created, you must add the outer loop using the AppendOuterLoop method. The outer loop must be closed and must be created before any inner loops can be created. Inner loops are created one at a time, using the AppendInnerLoop method.
VBA:
Sub Example_AddHatch()
' This example creates an associative gradient hatch in model space.
Dim hatchObj As AcadHatch
Dim patternName As String
Dim PatternType As Long
Dim bAssociativity As Boolean
' Define the hatch
patternName = "CYLINDER"
PatternType = acPreDefinedGradient '0
bAssociativity = True
' Create the associative Hatch object in model space
Set hatchObj = ThisDrawing.ModelSpace.AddHatch(PatternType, patternName, bAssociativity, acGradientObject)
Dim col1 As AcadAcCmColor, col2 As AcadAcCmColor
Set col1 = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor." & Left(AcadApplication.Version, 2))
Set col2 = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor." & Left(AcadApplication.Version, 2))
Call col1.SetRGB(255, 0, 0)
Call col2.SetRGB(0, 255, 0)
hatchObj.GradientColor1 = col1
hatchObj.GradientColor2 = col2
' 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 outerboundary to the hatch object, and display the hatch
hatchObj.AppendOuterLoop outerLoop
hatchObj.Evaluate
ThisDrawing.Regen True
End Sub
Visual LISP:
(vl-load-com)
(defun c:Example_AddHatch()
;; This example creates an associative gradient hatch in model space.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
;; Define the hatch
(setq patternName "CYLINDER")
(setq patternType acPreDefinedGradient)
(setq bAssociativity :vlax-true)
;; Create the associative Hatch object in model space
(setq modelSpace (vla-get-ModelSpace doc))
(setq hatchObj (vla-AddHatch modelSpace patternType patternName bAssociativity acGradientObject))
(setq col1 (vlax-create-object (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
(setq col2 (vlax-create-object (strcat "AutoCAD.AcCmColor." (substr (getvar "ACADVER") 1 2))))
(vla-SetRGB col1 255 0 0)
(vla-SetRGB col2 0 255 0)
(vla-put-GradientColor1 hatchObj col1)
(vla-put-GradientColor2 hatchObj col2)
;; Create the outer boundary for the hatch (a circle)
(setq center (vlax-3d-point 3 3 0))
(setq radius 1)
(setq circle (vla-AddCircle modelSpace center radius))
(setq outerLoop (vlax-make-safearray vlax-vbObject '(0 . 0)))
(vlax-safearray-put-element outerLoop 0 circle)
;; Append the outerboundary to the hatch object, and display the hatch
(vla-AppendOuterLoop hatchObj outerLoop)
(vla-Evaluate hatchObj)
(vla-Regen doc :vlax-true)
(vlax-release-object col1)
(vlax-release-object col2)
)