ISOPenWidth 属性 (ActiveX)
指定 ISO 填充图案的 ISO 笔宽度。 支持的平台:仅限 Windows 属性值只读:不 类型:枚举acISOPenWidth
言论前 10 个值表示以百分之一毫米为单位的笔宽度。 该值标识未知或非标准笔宽。当您查询填充线并收到值 时,请使用该属性获取非标准值。将任何填充的笔宽度设置为无效。acPenWidthUnkacPenWidthUnkPatternScaleacPenWidthUnk 此属性与属性共享关系。使用 ISO 填充图案时,可以通过属性或此属性输入标准比例值。只能使用属性输入非标准笔宽。PatternScalePatternScalePatternScale 例子VBA: Sub Example_ISOPenWidth()
' This example creates an associative hatch in model space.
' The ISOPenWidth of the hatch pattern is then returned and changed.
Dim hatchObj As AcadHatch
Dim patternName As String, PatternType As Long
Dim bAssociativity As Boolean
Dim outerLoop(0 To 1) As Object
Dim center(0 To 2) As Double
Dim radius As Double, startAngle As Double, endAngle As Double
Dim innerLoop1(0) As Object, innerLoop2(0) As Object
Dim PatternScale As Double
' 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.
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
center(0) = 5: center(1) = 4.5: center(2) = 0
radius = 1
Set innerLoop1(0) = ThisDrawing.ModelSpace.AddCircle(center, radius)
hatchObj.AppendInnerLoop (innerLoop1)
' Append the second circle as the other inner loop
radius = 0.5
Set innerLoop2(0) = ThisDrawing.ModelSpace.AddCircle(center, radius)
hatchObj.AppendInnerLoop (innerLoop2)
' Evaluate and display the hatch
hatchObj.Evaluate
ThisDrawing.Regen True
' Find the ISO pen width of the hatch pattern
MsgBox "The ISO pen width of the hatch pattern is: " & hatchObj.ISOPenWidth, vbInformation
' Change the ISO pen width of the hatch pattern
hatchObj.ISOPenWidth = acPenWidth050
hatchObj.Evaluate
ThisDrawing.Regen True
' Display new pen width for this hatch
If hatchObj.ISOPenWidth = acPenWidthUnk Then
' Non-Standard pen widths
MsgBox "The ISO pen width of the hatch pattern is now: " & hatchObj.PatternScale, vbInformation
Else
' Standard pen widths
MsgBox "The ISO pen width of the hatch pattern is now: " & hatchObj.ISOPenWidth, vbInformation
End If
End Sub
可视化 LISP: (vl-load-com)
(defun c:Example_ISOPenWidth()
;; This example creates an associative hatch in model space.
;; The ISOPenWidth of the hatch pattern is then returned and changed.
(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)
;; Append the second circle as the other inner loop
(setq radius 0.5)
(setq innerLoop2 (vlax-make-safearray vlax-vbObject '(0 . 0)))
(setq circle2 (vla-AddCircle modelSpace center radius))
(vlax-safearray-put-element innerLoop2 0 circle2)
(vla-AppendInnerLoop hatchObj innerLoop2)
;; Evaluate and display the hatch
(vla-Evaluate hatchObj)
(vla-Regen doc :vlax-true)
;; Find the ISO pen width of the hatch pattern
(alert (strcat "The ISO pen width of the hatch pattern is: " (itoa (vla-get-ISOPenWidth hatchObj))))
;; Change the ISO pen width of the hatch pattern
(vla-put-ISOPenWidth hatchObj acPenWidth050)
(vla-Evaluate hatchObj)
(vla-Regen doc :vlax-true)
;; Display new pen width for this hatch
(if (= (vla-get-ISOPenWidth hatchObj) acPenWidthUnk)
;; Non-Standard pen widths
(alert (strcat "The ISO pen width of the hatch pattern is now: " (rtos (vla-get-PatternScale hatchObj) 2)))
;; Standard pen widths
(alert (strcat "The ISO pen width of the hatch pattern is now: " (itoa (vla-get-ISOPenWidth hatchObj))))
)
)
|
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-10-30 23:41
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.