编程简化pedit命令
<p>; 工作中要把几条直线或圆弧合并成多段线,用pedit时 要先选取一条直线,现转<br/>化为多段线 ,后再按“j” 继续添加 ,比较麻烦,编个程序简化该过程可以直接选择要转多段线的直线或圆弧就可以,省去麻烦</p><p><br/>(defun c:po (\xj ob) <br/>(setvar "cmdecho" 0)<br/>(steq xj (ssget)) ;建立选集 赋给变量xj<br/>(steq ob (SSNAME xj 0 ) ) ; 得到选集xj 中首个对象 ,赋给变量ob<br/>(command "pedit" ob "y" "j" xj "" "") ; <br/>(princ)<br/>)</p> 楼上的程序不是很完美,当选择集中有多段线时和没有多段线时应该不一样的。这是我写的,有点繁,呵呵。
(defun c:krPE (/ HASNOPLINE I OBJ SS TJ)
(setq ss (while (not ss) (setq ss (ssget '((0 . "ARC,*LINE"))))))
(setq i -1)
(setq tj t)
(while (and tj (> (sslength ss) (1+ i)))
(setq i (1+ i))
(setq tj (vl-string-search
"Polyline"
(vla-get-ObjectName
(setq obj (vlax-ename->vla-object (ssname ss i)))
)
)
)
(if (= tj nil)
(setq hasNoPLine t)
)
)
(if hasNoPLine
(vl-cmdf "pedit" "m" ss "" "y" "j" 1 "")
(vl-cmdf "pedit" "m" ss "" "j" 1 "")
)
)
这样岂不是更简单:
(defun c:ppp( / pet ss)
(setq pet (getvar "PEDITACCEPT"))
(setvar "PEDITACCEPT" 1)
(while (setq ss (ssget '((0 . "ARC,*LINE"))))
(command "_pedit" (ssname ss 0) "j" ss "" "")
)
(setvar "PEDITACCEPT" pet)
(princ)
)
<p>谢谢分享!!!</p> 谢谢tukuitk分享 回复 yshf 的帖子
大师哦,呵呵,找好久了,都没合适的,你一出手就KO了 多谢了,真的很好用 tukuitk 发表于 2006-12-26 12:25 static/image/common/back.gif
楼上的程序不是很完美,当选择集中有多段线时和没有多段线时应该不一样的。
这是我写的,有点繁,呵呵。
顶一个,很好用,不错,谢谢分享。 yshf 发表于 2011-3-22 22:28 static/image/common/back.gif
这样岂不是更简单:
你的好像更简单,谢谢分享。 感谢诸位分享程序!!!
页:
[1]
2