[求助] 请高手请入
在用Pline画线时按提示指定指定下一个点或 [圆弧(A)/闭合(C)/半宽(H)/长度(L)/放弃(U)/宽度(W)]:指定点 (2) 或输入选项
下一个点或 [圆弧(A)/闭合(C)/半宽(H)/长度(L)/放弃(U)/宽度(W)]:指定点 (2) 或输入选项
如果输入 A即画的多段线中有的部份是圆弧,请问怎样用程序的方法来分别出带圆弧的多段线和不带圆弧的多段线,有相应的不同属性吗?
刚才在本站找到如下代码应该能实现,可是我不懂lisp,哪位大侠帮忙用vba解释一下
(defun checkarc (ename)
(setq obj (vlax-ename->vla-object ename))
(setq plist (vlax-safearray->list
(vlax-variant-value
(vla-get-coordinates obj))))
(setq n 0 bu nil)
(repeat (/ (length plist) 2)
(if (/= (vla-getbulge obj n) 0)
(setq bu T)
)
(setq n (+ n 1))
)
bu
)
' 按照起点、终点和凸度计算多段线中某一段的长度
Function GetArcLeng(PointS As Variant, PointE As Variant, Bugle As Double) As Double
Dim Angle As Double
Dim Radius As Double
Dim Length As Double
Dim Dist As Double
Dim i As Integer
' 计算起点到终点的长度
For i = LBound(PointS) To UBound(PointS)
Dist = Dist + ((PointS(i) - PointE(i)) ^ 2)
Next
Length = Sqr(Dist)
' 如果凸度为0,则为直线段,所以起点到终点的长度就是需要的长度
If Bugle = 0 Then
GetArcLeng = Length
Else
' 如果凸度不为零,则计算弧段的长度。按照凸度的定义,凸度为包角的1/4的正切值。
Angle = 4 * Atn(Abs(Bugle))
' 计算弧段的半径
Radius = (Length / 2) / Sin(Angle / 2)
' 计算弧段的长度
GetArcLeng = Radius * Angle
End If
End Function中的Bugle怎样得到其值? 凸度可从多段线的属性中取得,自己看看。
计算多义线的凸度,好东东
页:
[1]