;等分多段线
(defun c:tes ( / d1 d2 ent n n1 p1)
(vl-load-com)
(setq n 1)
(while (
(initget 7)
(setq n (getint "\n请输入大于1的等分数值"))
)
(if (and (setq ent (entsel "\n请选择曲线"))
(setq ent (car ent))
(not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getEndParam (list ent))));确认是曲线
)
(progn
(setq d1 (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)));曲线长度
(if (vlax-curve-isClosed ent) (setq n1 -1) (setq n1 0));判断是否封闭
(setq ss '())
(while (
(setq d2 (/ (* d1 n1) n));点到起点的长度
(setq p1 (vlax-curve-getPointAtDist ent d2));求得坐标
(setq ss (cons (list d2 p1) ss))
(entmake (list '(0 . "POINT") '(100 . "AcDbEntity") '(100 . "AcDbPoint") (cons 10 p1)));绘制等分点
);while
(princ (vl-prin1-to-string (reverse ss)));命令行输出距离及坐标
)
)
(princ)
)