明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4142|回复: 4

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

[复制链接]
发表于 2012-3-21 11:27:06 | 显示全部楼层 |阅读模式
我想把图中的围墙的宽度修改成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层,致命错误,我百思不得其解,也不知道该怎么解决,望高手们帮帮忙!
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 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)
)
 楼主| 发表于 2012-3-22 08:34:52 | 显示全部楼层
VBALISPER 发表于 2012-3-21 17:46
用这个吧
(defun c:wXQ(/ ss1 n m entx list1 olditem );多段线改线宽
        (setq kd (getreal  "\n输入新线宽 ...

你可能理解错我的意思了,我不是单单的改变线宽,我要改的是围墙的宽度,如图,是要改变两个线之间的宽度,因为两条线和方块是一体的,所以一般方法行不通,cass里有个属性匹配命令putp,可以把正确宽度围墙的属性赋给需要改正宽度的围墙,因为手工批量刷不正确,我就想用程序解决,也就出现了上面的问题!谢谢你的关注!
 楼主| 发表于 2012-3-22 08:37:06 | 显示全部楼层
真奇怪,我一个1.23k的文件怎么上传不上去啊,提示不能上传那么大的文件,难道太小也不行吗,郁闷!
发表于 2015-2-2 23:06:43 | 显示全部楼层
解决了吗??????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-23 12:20 , Processed in 0.169775 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表