获取折线的开始宽度和结束宽度。 支持的平台:仅窗口 签名工 务 局: object.GetWidth Index, StartWidth, EndWidth 返回值(RetVal)无返回值。 言论折线:如果折线属性是 ISOR,则此方法将失败。TypeacCubicSplinePolyacQuadSplinePoly 例子工 务 局: Sub Example_GetWidth()
' The following code prompts you to select a lightweight
' polyline, then displays the width of each segment of the
' selected polyline.
AppActivate ThisDrawing.Application.Caption
Dim returnObj As AcadObject
Dim basePnt As Variant
Dim retCoord As Variant
Dim StartWidth As Double
Dim EndWidth As Double
Dim i, j As Long
Dim nbr_of_segments As Long
Dim nbr_of_vertices As Long
Dim segment As Long
Dim message_string
On Error Resume Next
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select a polyline"
' Make sure the user selected a polyline.
If Err <> 0 Then
If returnObj.EntityName <> "AcDbPolyline" Then
MsgBox "You did not select a polyline"
End If
Exit Sub
End If
' Obtain the coordinates of each vertex of the selected polyline.
' The coordinates are returned in an array of points.
retCoord = returnObj.Coordinates
segment = 0
i = LBound(retCoord) ' Start index of coordinates array
j = UBound(retCoord) ' End index of coordinates array
nbr_of_vertices = ((j - i) \ 2) + 1 ' Number of vertices in the polyline
' Determine the number of segments in the polyline.
' A closed polyline has as many segments as it has vertices.
' An open polyline has one fewer segment than it has vertices.
' Check the Closed property to determine if the polyline is closed.
If returnObj.Closed Then
nbr_of_segments = nbr_of_vertices
Else
nbr_of_segments = nbr_of_vertices - 1
End If
' Get the width of each segment of the polyline
Do While nbr_of_segments > 0
' Get the width of the current segment
returnObj.GetWidth segment, StartWidth, EndWidth
message_string = "The segment that begins at " & retCoord(i) & "," & retCoord(i + 1) _
& " has a start width of " & StartWidth & " and an end width of " & EndWidth
MsgBox message_string, , "GetWidth Example"
' Prepare to obtain width of next segment, if any
i = i + 2
segment = segment + 1
nbr_of_segments = nbr_of_segments - 1
Loop
End Sub
Visual LISP: (vl-load-com)
(defun c:Example_GetWidth()
;; The following code prompts you to select a lightweight
;; polyline, then displays the width of each segment of the
;; selected polyline.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(vla-GetEntity (vla-get-Utility doc) 'returnObj 'basePnt "Select a polyline: ")
;; Make sure the user selected a polyline.
(if (/= returnObj nil)
(progn
(if (= (vla-get-ObjectName returnObj) "AcDbPolyline")
(progn
;; Obtain the coordinates of each vertex of the selected polyline.
;; The coordinates are returned in an array of points.
(setq retCoord (vlax-variant-value (vla-get-Coordinates returnObj)))
(setq segment 0
i (vlax-safearray-get-l-bound retCoord 1) ;; Start index of coordinates array
j (vlax-safearray-get-u-bound retCoord 1) ;; End index of coordinates array
nbr_of_vertices (+ (/ (- j i) 2) 1)) ;; Number of vertices in the polyline
;; Determine the number of segments in the polyline.
;; A closed polyline has as many segments as it has vertices.
;; An open polyline has one fewer segment than it has vertices.
;; Check the Closed property to determine if the polyline is closed.
(if (= (vla-get-Closed returnObj) :vlax-true)
(setq nbr_of_segments nbr_of_vertices)
(setq nbr_of_segments (1- nbr_of_vertices))
)
;; Get the width of each segment of the polyline
(while (>= nbr_of_segments 0)
;; Get the width of the current segment
(vla-GetWidth returnObj segment 'StartWidth 'EndWidth)
(setq message_string (strcat "The segment that begins at " (rtos (vlax-safearray-get-element retCoord i) 2) ","
(rtos (vlax-safearray-get-element retCoord (1+ i)) 2)
" has a start width of " (rtos StartWidth 2) " and an end width of " (rtos EndWidth 2)))
(alert message_string)
;; Prepare to obtain width of next segment, if any
(setq i (+ i 2))
(setq segment (1+ segment))
(setq nbr_of_segments (1- nbr_of_segments))
)
)
(alert "Object selected was not a polyline")
)
)
(alert "No object was selected.")
)
)
|
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-10-29 11:57
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.