怎样快速的在多义线上增加节点?
大家好!多义线一般由多条线段或弧线组成。在工作中我常碰到在多义线的某线段上要增加节点,但这过程有点繁琐:PEDIT-->Edit vertex-->多次空格键或回车键(要起始点到目标线段)-->Insert vertex-->Esc键结束
我的想法是:键入快捷键J-->出现选择光标-->点击目标线段结束(要增加节点位置),这样就很省时间了。哪位朋友能帮帮忙写个lisp,在R14实现该功能?谢谢! 本帖最后由 作者 于 2005-3-25 13:55:59 编辑 <br /><br /> R2004可以,R14不行(对有圆弧的PL线不支持)
(defun c:test ()<BR> (setq ent (entsel "\n 选择一条多义线: "))<BR> (setq p0 (cadr ent))<BR> (setq p0 (osnap p0 "nea"))<BR> (setq obj (vlax-ename->vla-object<BR> (car ent)<BR> )<BR> )<BR> (setq point (vla-get-Coordinates obj))<BR> (setq point1 (vlax-safearray->list (vlax-variant-value point)))<BR> (setq len (length point1))<BR> (setq p1 (list (nth 0 point1) (nth 1 point1)))<BR> (setq i 2 k 0) <BR> (repeat (1- (/ len 2))<BR> (setq p2 (list (nth i point1) (nth (1+ i) point1)))<BR> (setq dis0 (distance p1 p2)<BR> dis1 (distance p1 p0)<BR> dis2 (distance p2 p0)<BR> )<BR> (if (equal (+ dis1 dis2) dis0 0.00001)<BR> (setq n k)<BR> )<BR> (setq p1 p2)<BR> (setq i (+ i 2) k (1+ k))<BR> )<BR> (command "pedit" ent "e") <BR> (repeat n<BR> (command "n") <BR> )<BR> (command "i" p0 "x" "") <BR>)<BR> 仅适合没有圆弧的PLINE:(defun c:j( / ent pt ents i n npt item lstNew)
(setq ent (entsel))
(setq pt (cadr ent))
(setq ents (entget (car ent)))
(setq i 0
npt 0
n (length ents))
(while (< i n)
(setq item (nth i ents))
(cond
((= npt 0)
(if (= (car item) 10) (setq npt (1+ npt)))
(setq lstNew (append lstNew (list item)))
)
((= npt 1)
(if (and (= (car item) 10)
(equal (angle (cdr (nth (- i 4) ents)) pt)
(angle pt (cdr item)) 0.1))
(progn
(setq lstNew (append lstNew (list (cons 10 pt) '(40 . 0) '(41 . 0) '(42 . 0) item (nth (1+ i) ents) (nth (+ i 2) ents))))
(setq i (+ i 3))
(setq npt (1+ npt))
)
(setq lstNew (append lstNew (list item)))
)
)
((= npt 2)
(setq lstNew (append lstNew (list item)))
)
);cond
(setq i (1+ i))
);repeat
(entmod lstNew)
(princ)
) 谢谢二位的帮忙!特别是<A name=17817><FONT color=#990000><B>meflying</B></FONT></A>,妙!妙!真是太好了! 学习了楼上可否实现多义线按任意距离增加节点(即像CAD的里“点”按距离平分线段) 用2012就非常简单了,只要鼠标停留在一个节点上就有提示出来了!
为什么都喜欢停留在很久以前?适应吧,大家伙!要捣鼓程序就去捣鼓2013没有的吧 本帖最后由 raimo 于 2011-9-20 23:27 编辑
这个思路似乎更方便..参见Gu_xl做的这个程序
http://bbs.mjtd.com/forum.php?mo ... 88&page=1#pid482808 还是喜欢用低版本的CAD,安装起来方便而且很小 要是能批量加点就好了
页:
[1]