changyiran 发表于 2012-3-21 11:27:06

命令嵌套深度不能超过4层,致命错误

我想把图中的围墙的宽度修改成0.5,但是在图中如果一个一个的刷可以刷成0.5,如果选中所以需要刷的一块刷,就还是0.25,刷不了,所以我就想编程序实现,下面是代码:(defun c:wq()
(setq ss(ssget"x"'((-3 ("SOUTH" (1000 . "144301")))))j -1)
(setq wqen(car(entsel"\n请选择正确围墙线:")))
(repeat (sslength ss)
    (setq en (ssname ss (setq j(1+ j))))
    (command"putp"wqen en"""")
)
(alert"运行完毕")
(princ)
)
但是到运行到第四次的时候出现:命令嵌套深度不能超过4层,致命错误,我百思不得其解,也不知道该怎么解决,望高手们帮帮忙!

VBALISPER 发表于 2012-3-21 17:46:52

用这个吧
(defun c:wXQ(/ ss1 n m entx list1 olditem );多段线改线宽
        (setq kd (getreal"\n输入新线宽:"))
        (setq ss1 (ssget '((0 . "LWPOLYLINE"))));过滤,得到多段线的选择集
        (setq n (sslength ss1));得到选择集的图元数目
        (setq m 0);循环变量m置0,从选择集中的第1个改起

    (while (< m n);循环,可以一次改多个图元的线宽       
        (setq entx (ssname ss1 m));得到图元名
        (setq list1 (entget entx));注意最后一个参数需要图元名,返回的是码表
        (setq olditem (assoc 43 list1));查找旧的组码43,多段线的组码43是控制固定线宽的
        ;(setq str(cdr olditem));去除点表中的第一个元素,即去掉43 .
       
        (entmod(subst (cons 43 kd) olditem list1));修改组码,并更新组码
        (setq m (+ 1 m));变量加1,循环下一个图元       
    );while

(princ)
)

changyiran 发表于 2012-3-22 08:34:52

VBALISPER 发表于 2012-3-21 17:46 static/image/common/back.gif
用这个吧
(defun c:wXQ(/ ss1 n m entx list1 olditem );多段线改线宽
        (setq kd (getreal"\n输入新线宽 ...

你可能理解错我的意思了,我不是单单的改变线宽,我要改的是围墙的宽度,如图,是要改变两个线之间的宽度,因为两条线和方块是一体的,所以一般方法行不通,cass里有个属性匹配命令putp,可以把正确宽度围墙的属性赋给需要改正宽度的围墙,因为手工批量刷不正确,我就想用程序解决,也就出现了上面的问题!谢谢你的关注!

changyiran 发表于 2012-3-22 08:37:06

真奇怪,我一个1.23k的文件怎么上传不上去啊,提示不能上传那么大的文件,难道太小也不行吗,郁闷!

chbddzx12 发表于 2015-2-2 23:06:43

解决了吗??????
页: [1]
查看完整版本: 命令嵌套深度不能超过4层,致命错误