aws 发表于 2024-7-13 14:16:24

定距等分和定数等分曲线

;---根据段数等分曲线,返回点表。
(defun div-n-curve(obj n / d end palst pts)
(setq end(vlax-curve-getEndParam obj));---端点参数值
(setq d(/ end n));---求出每段的参数递进值
(setq palst nil)
(setq palst(cons end palst))
(while
    (>(setq end(- end d))0)
    (setq palst(cons end palst))
)
(if(not(vlax-curve-isClosed obj));---如果不是封闭曲线,就把起点参数值也加进去
    (setq palst(cons 0 palst))
)
(setq pts(mapcar '(lambda(x)(vlax-curve-getPointAtParam obj x))palst))
)
;---根据距离等分曲线,返回点表。
(defun div-mm-curve(obj mm / len n pts sum)
(setq len(vlax-curve-getdistatparam obj(vlax-curve-getendparam obj)))
(setq n(fix(/ len mm)));---求出段数
(setq pts nil)
(setq pts(cons(vlax-curve-getStartPoint obj)pts));---起点加入到点表
(setq sum mm)
(repeat n
    (setq pts(cons(vlax-curve-getPointAtDist obj sum)pts))
    (setq sum(+ sum mm))
)
(if(not(vlax-curve-isClosed obj))
    (setq pts(cons(vlax-curve-getEndPoint obj)pts));---如果不是封闭曲线,就把终点加入到点表
)
(reverse pts)
)因为不想用command命令,所以就临时写了个等分曲线的函数,分享给大家



另外,我本来想用这个方法获取属性,结果报错了
(setq len(vlax-get obj 'length));---获取曲线的长度

原因:ActiveX 服务器返回错误: 未知名称: "LENGTH"

是哪里用错了吗?类似的还有
(vlax-get obj 'startpoint);---获取曲线的起点
(vlax-get obj 'endpoint);---获取曲线的终点

aws 发表于 2024-7-15 09:36:13

本帖最后由 aws 于 2024-7-15 09:38 编辑

tryhi 发表于 2024-7-15 09:24
一般曲线转折线不是看切线角度决定疏密的吗?比如半径很大拐弯很缓加点较疏,半径小拐弯急加点较密
你说的这种情况,我觉得不是用角度来判断,而是用弦高来判断,这种方式可以更加准确的把样条曲线转换成多段线。且容差值等于弦高

tryhi 发表于 2024-7-15 19:18:35

aws 发表于 2024-7-15 09:36
你说的这种情况,我觉得不是用角度来判断,而是用弦高来判断,这种方式可以更加准确的把样条曲线转换成多 ...

好像有点道理,不知道CAD转SHP是不是用的弦高

tryhi 发表于 2024-7-15 09:24:09

aws 发表于 2024-7-14 21:41
没有呢,没遇到这种场景

一般曲线转折线不是看切线角度决定疏密的吗?比如半径很大拐弯很缓加点较疏,半径小拐弯急加点较密

bai2000 发表于 2024-7-13 17:01:37

(setq obj (vlax-ename->vla-object en))?
(setq OBJ(vla-get-activeselectionset DOC))?哪个obj

qazxswk 发表于 2024-7-13 21:34:21

怎么用?举个栗子。

你有种再说一遍 发表于 2024-7-13 22:09:32

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=22181&highlight=%BB%F1%C8%A1%C7%FA%CF%DF%B3%A4%B6%C8

善用搜索

tryhi 发表于 2024-7-14 13:56:58

有没有定角度分的?

glcsq 发表于 2024-7-14 15:37:28

谢谢分享。

aws 发表于 2024-7-14 21:41:20

tryhi 发表于 2024-7-14 13:56
有没有定角度分的?

没有呢,没遇到这种场景

aws 发表于 2024-7-14 21:42:28

qazxswk 发表于 2024-7-13 21:34
怎么用?举个栗子。

我是用来(setq ss(ssget “cp” pts))

czb203 发表于 2024-7-14 22:24:43

aws 发表于 2024-7-14 21:42
我是用来(setq ss(ssget “cp” pts))

:lo节点精度不够吗,搞这么密的点集
页: [1] 2
查看完整版本: 定距等分和定数等分曲线