- ;---根据段数等分曲线,返回点表。
- (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);---获取曲线的终点
|