明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1902|回复: 5

块替换entmod为何不能更新层

[复制链接]
发表于 2010-6-9 12:50:00 | 显示全部楼层 |阅读模式

(defun c:rb(/ en name old_name new_name %tt i ssdata new_la old_la  ssdata1)
(cmdf)
(defun *error* (msg)
  (princ msg)
  (princ)
)
(while (= en nil) (setq en (entget (CAR (entsel "\n 请选择源块: ")))))
(setq name (cdr (assoc 0 en)))
    (if (/= name "INSERT")
       (progn
       (princ "\n 你选择的不是块,只对块!!!")
       (exit)
       )
    )

(if (= name "INSERT")
(progn
(setq new_name (assoc 2 en))
(setq new_la (assoc 8 en))
(prompt "\n 请选择要替换的块: ")
(setq %TT (ssget '((0 . "INSERT"))))
   (setq i 0)
   (repeat (sslength %TT)
    (progn
    (setq ssdata (entget (ssname %tt i)))
    (setq old_name  (assoc 2 ssdata))
    (setq ssdata1 (subst new_name old_name ssdata))
    ;(setq old_la    (assoc 8 ssdata))
    ;(setq ssdata1 (subst new_la   old_la ssdata))

    (entmod ssdata1)
    (setq i (1+ i))
    )
   )

))
(princ)
)

 

 

替换的块的层要和源块为同一个层,为何加入下面这段代码后不能更新

    (setq old_la    (assoc 8 ssdata))
    (setq ssdata1 (subst new_la   old_la ssdata))

 

    (entmod ......)是可以更新多个的,不知语法要怎么写

 

 

发表于 2010-6-9 14:28:00 | 显示全部楼层

可以直接(entmod (subst .....))

 楼主| 发表于 2010-6-9 15:01:00 | 显示全部楼层

    (entmod (subst new_name old_name ssdata))
    (entmod (subst new_la   old_la ssdata))

    块名与图层还是不能同时更新

 楼主| 发表于 2010-6-9 18:28:00 | 显示全部楼层
高手出来解答一下
发表于 2010-6-9 18:45:00 | 显示全部楼层
您只要关切追踪 ssdata的变量值
那么您就会知其所以然了
发表于 2011-1-6 16:00:56 | 显示全部楼层
学了一下,支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 18:24 , Processed in 0.170332 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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