CAD VBA 获取多段线任意一点到起点的距离
现在我想做一个剖断面的插件,交点坐标是出来了,但是每个交点坐标距离多段线的起点距离这个无法获取。求教。多段线上任意一点到多段线起点的距离。这个我想知道用vba怎么获取。...
现在我想做一个剖断面的插件,交点坐标是出来了,但是每个交点坐标距离多段线的起点距离这个无法获取。求教。
多段线上任意一点到多段线起点的距离。这个我想知道用vba怎么获取。 展开
多段线上任意一点到多段线起点的距离。这个我想知道用vba怎么获取。 展开
1个回答
2019-03-31 · 知道合伙人软件行家
关注
展开全部
先取得多段线上的点参数;
vlax-curve-getDistAtParam函数求得到起点的距离。
以autolisp为例:
(defun C:tes ();例
函数【w190330】可以直接得到曲线上任意点到起点的距离,试试VBA调用这个函数。
(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看来是不行了
追答
上面是autolisp函数,CAD可以加载,加载后,就可以调用这个命令。
复制代码到记事本,以【.lsp】为后缀命名。加载后就可以得到函数【w190330】了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询