xichen 发表于 2006-12-24 02:59:00

编程简化pedit命令

<p>; 工作中要把几条直线或圆弧合并成多段线,用pedit时 要先选取一条直线,现转<br/>化为多段线 ,后再按“j” 继续添加 ,比较麻烦,编个程序简化该过程可以直接选择要转多段线的直线或圆弧就可以,省去麻烦</p><p><br/>(defun c:po (\xj ob) <br/>(setvar "cmdecho" 0)<br/>(steq xj (ssget))&nbsp; ;建立选集&nbsp; 赋给变量xj<br/>(steq ob (SSNAME xj 0 ) ) ; 得到选集xj 中首个对象 ,赋给变量ob<br/>(command "pedit" ob "y" "j" xj "" "") ; <br/>(princ)<br/>)</p>

tukuitk 发表于 2006-12-26 12:25:00

楼上的程序不是很完美,当选择集中有多段线时和没有多段线时应该不一样的。
这是我写的,有点繁,呵呵。

(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 "")
)
)

yshf 发表于 2011-3-22 22:28:49

这样岂不是更简单:
(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)
)

zctao1966 发表于 2008-11-2 02:23:00

<p>谢谢分享!!!</p>

zfen 发表于 2011-3-14 10:53:40

谢谢tukuitk分享

ys1986 发表于 2011-6-25 01:36:05

回复 yshf 的帖子

大师哦,呵呵,找好久了,都没合适的,你一出手就KO了

有123 发表于 2013-5-16 21:50:49

多谢了,真的很好用

yanghz1977 发表于 2015-4-26 11:31:41

tukuitk 发表于 2006-12-26 12:25 static/image/common/back.gif
楼上的程序不是很完美,当选择集中有多段线时和没有多段线时应该不一样的。
这是我写的,有点繁,呵呵。

顶一个,很好用,不错,谢谢分享。

yanghz1977 发表于 2015-4-26 11:34:41

yshf 发表于 2011-3-22 22:28 static/image/common/back.gif
这样岂不是更简单:

你的好像更简单,谢谢分享。

yoyoho 发表于 2015-5-5 16:20:40

感谢诸位分享程序!!!
页: [1] 2
查看完整版本: 编程简化pedit命令