CAD VBA 获取多段线任意一点到起点的距离

现在我想做一个剖断面的插件,交点坐标是出来了,但是每个交点坐标距离多段线的起点距离这个无法获取。求教。多段线上任意一点到多段线起点的距离。这个我想知道用vba怎么获取。... 现在我想做一个剖断面的插件,交点坐标是出来了,但是每个交点坐标距离多段线的起点距离这个无法获取。求教。
多段线上任意一点到多段线起点的距离。这个我想知道用vba怎么获取。
展开
 我来答
朱06CAD
2019-03-31 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18070
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
  1. 先取得多段线上的点参数;

  2. vlax-curve-getDistAtParam函数求得到起点的距离。

  3. 以autolisp为例:

  4. (defun C:tes ();例
     (setq ent (car (entsel "\n请选择曲线")))
     (setq p1 (getpoint "\n请选择曲线上一点"))
     (w190330 ent p1);多段线任意点到起点的距离
    )

    (defun w190330 (ent p1 / d1 d2 ent n p1 p2)
     (setq p1 (vlax-curve-getclosestpointto ent p1));最近点
     (if (setq n (vlax-curve-getParamAtPoint ent p1));提取参数
      (vlax-curve-getDistAtParam ent n)
      (progn;如果没有办法取得参数,就逼近法计算
       (setq p2 (vlax-curve-getStartPoint ent))
       (setq d1 (distance p1 p2) p2 (vlax-curve-getPointAtDist ent d1))
       (while (> (setq d2 (distance p1 p2)) 0.00001)
        (setq d1 (+ d1 d2) p2 (vlax-curve-getPointAtDist ent d1))
       );while
       d1
      )
     )
    )
    函数【w190330】可以直接得到曲线上任意点到起点的距离,试试VBA调用这个函数。
更多追问追答
追问
函数【w190330】?有这个函数?
vba看来是不行了
追答
上面是autolisp函数,CAD可以加载,加载后,就可以调用这个命令。
复制代码到记事本,以【.lsp】为后缀命名。加载后就可以得到函数【w190330】了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式