明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1764|回复: 4

[求助] 请高手请入

[复制链接]
发表于 2007-1-6 20:58:00 | 显示全部楼层 |阅读模式

在用Pline画线时按提示

指定指定下一个点或 [圆弧(A)/闭合(C)/半宽(H)/长度(L)/放弃(U)/宽度(W)]:指定点 (2) 或输入选项 下一个点或 [圆弧(A)/闭合(C)/半宽(H)/长度(L)/放弃(U)/宽度(W)]:指定点 (2) 或输入选项

如果输入 A  即画的多段线中有的部份是圆弧,请问怎样用程序的方法来分别出带圆弧的多段线和不带圆弧的多段线,有相应的不同属性吗?

 楼主| 发表于 2007-1-6 21:21:00 | 显示全部楼层

刚才在本站找到如下代码应该能实现,可是我不懂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
)

 楼主| 发表于 2007-1-6 21:47:00 | 显示全部楼层
' 按照起点、终点和凸度计算多段线中某一段的长度
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怎样得到其值?
发表于 2007-1-7 14:01:00 | 显示全部楼层

凸度可从多段线的属性中取得,自己看看。

发表于 2013-5-31 16:42:46 | 显示全部楼层
计算多义线的凸度,好东东
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 12:38 , Processed in 0.176634 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表