田家凯 发表于 2015-12-12 11:48:10

求助!关于使用pedit命令改线宽时,单线出错的问题

想用代码实现的功能很简单:
1、预选择一条或多条PL线;
2、输入“b7”命令,将选择的PL线线宽改为7。

下面是学着写的代码:

(defun C:b7 (/ p l n nw)
   (setq p (ssget "_P" '((0 . "*POLYLINE,LWPOLYLINE"))))
   (if p (progn
   (setq l 0 n (sslength p) nw 7)
    (while (< l n)
   (command "_.pedit" (ssname p l) "w" nw "")
      (setq l (1+ l))
    )
   )
)
(PRINC)
)





现在代码的问题是,选择的是多条PL线时是可以的,但是选择的是单线时,就会出错,显示下面的错误




不知道这个pedit命令该怎么写了。。求论坛大神们帮忙解决下




































llsheng_73 发表于 2015-12-12 12:10:08

(defun C:b7 (/ p l n nw)
   (if(setq l 0 nw 7 p (ssget'((0 . "*POLYLINE,LWPOLYLINE"))))
   (repeat(sslength p)
       (command "_.pedit" (ssname p l) "w" nw "")
       (setq l (1+ l))))
(PRINC)
)

ivde 发表于 2015-12-12 12:14:15

pedit->m   

田家凯 发表于 2015-12-12 22:06:11

llsheng_73 发表于 2015-12-12 12:10 static/image/common/back.gif


感谢大神的回答,这次单线也可以了
能否讲解下原代码为啥行不通么?是while的问题么

llsheng_73 发表于 2015-12-12 23:36:06

田家凯 发表于 2015-12-12 22:06 http://bbs.mjtd.com/static/image/common/back.gif
感谢大神的回答,这次单线也可以了
能否讲解下原代码为啥行不通么?是while的问题么

不是while的问题,而是(setq p(ssget"_P"'(...)))里边的这个选择模式"_P"好象很有些作怪。。。

田家凯 发表于 2015-12-14 08:34:26

llsheng_73 发表于 2015-12-12 23:36 static/image/common/back.gif
不是while的问题,而是(setq p(ssget"_P"'(...)))里边的这个选择模式"_P"好象很有些作怪。。。

好的,又学习到了,谢谢大神指点
页: [1]
查看完整版本: 求助!关于使用pedit命令改线宽时,单线出错的问题