明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7907|回复: 12

批量属性块的值自动修改

  [复制链接]
发表于 2006-11-11 21:21:00 | 显示全部楼层 |阅读模式
一个图形中的某个图层有很多带属性的块,同一个属性块有两个属性名,属性名分别为LX(类型),BH(编号),LX的值只有几个,如:M,J,W,Y,T,D等,而BH的值有很多,如LX值为W时,其编号可以为,W1,W2,W3,,,,,,,W500,,,,W10000。等,要求输入一个命令,能把图中所有属性值LX相同(例如都是W)而BH不同,的值按设计人员要求,在某个值(如W25)以后的其他值自动将其中的数字部分加一,(即W26改成W27,改成W28,,,,,W500改成W501,,,)等,要改的属性块入图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2006-11-12 14:56:00 | 显示全部楼层
有个问题,你所指的属性块是否同一属性块,也就是他们的块名是否相同?
 楼主| 发表于 2006-11-12 15:54:00 | 显示全部楼层

相同,我记得你,你好象帮我编过程,谢谢你

发表于 2006-11-13 03:48:00 | 显示全部楼层
;;带序号属性块修改 v1.0 by sailorcwx (2006.11)
(defun c:cblock( / YH_BDATA YH_BH YH_BH1 YH_BH2 YH_BHDATA YH_BLIST YH_BNAME YH_BNAME0 YH_FLASH YH_INDEX YH_LX YH_RBDATA YH_RBH YH_RBLAYER YH_RBLOCKNAME YH_RBNAME YH_RLX YH_TIMES)
  (setq YH_rbname (car (entsel "\n选择参考块:"))
 YH_rbdata (entget YH_rbname)
 YH_rblayer (assoc 8 YH_rbdata)
 YH_rblockname (assoc 2 YH_rbdata)
 YH_flash T
 )
  (while (and (setq YH_rbname (entnext YH_rbname)) YH_flash)
    (setq YH_rbdata (entget YH_rbname))
    (if (= (cdr (assoc 0 YH_rbdata)) "ATTRIB")
      (progn
 (if (= (cdr (assoc 2 YH_rbdata)) "LX")
   (setq YH_RLX (cdr (assoc 1 YH_rbdata)))
   )
 (if (= (cdr (assoc 2 YH_rbdata)) "BH")
   (setq YH_RBH (cdr (assoc 1 YH_rbdata)))
   )
 )
      (setq YH_flash nil)
      )
    )
  (setq YH_blist (ssget (list '(0 . "INSERT") YH_rblayer YH_rblockname))
 YH_index 0
 YH_flash T
 YH_times (sslength YH_blist)
 )
  (repeat YH_times
    (setq YH_bname (ssname YH_blist YH_index)
   YH_bname0 YH_bname
   )
    (while (and (setq YH_bname (entnext YH_bname)) YH_flash)
      (setq YH_bdata (entget YH_bname))
      (if (= (cdr (assoc 0 YH_bdata)) "ATTRIB")
 (progn
   (if (= (cdr (assoc 2 YH_bdata)) "LX")
     (setq YH_LX (cdr (assoc 1 YH_bdata)))
     )
   (if (= (cdr (assoc 2 YH_bdata)) "BH")
     (setq YH_BH (cdr (assoc 1 YH_bdata))
    YH_BHdata YH_bdata)
     )
   )
 (setq YH_flash nil)
 )
      )
    (if (and (= YH_LX YH_RLX) (> (setq YH_BH1 (atoi (substr YH_BH 2))) (atoi (substr YH_RBH 2))))
      (progn
 (setq YH_BH2 (cons 1 (strcat YH_LX (itoa (+ 1 YH_BH1))))
       YH_BHdata (subst YH_BH2 (assoc 1 YH_BHdata) YH_BHdata)
       )
 (entmod YH_BHdata)
 )
      )
    (entupd YH_bname0)
    (setq YH_index (+ 1 YH_index)
   YH_flash T
   )
    )
  (princ)
  )
 楼主| 发表于 2006-11-13 17:29:00 | 显示全部楼层

成功了,非常感谢你,希望能认识你,请加我QQ,明经气氛都没有原来那么热烈了,

发表于 2009-1-9 18:59:00 | 显示全部楼层

我还没弄明白啊,是不是有两个属性值的属性块,且属性名非要LX和BH才能用这个程序啊,如果只有一个属性值,且属性值是带字母前缀或后缀的编号能用这个程序吗?

发表于 2009-1-14 16:47:00 | 显示全部楼层

4楼大哥

 怎么我运行你的程序出现:参数类型错误: stringp nil

 这个程序很好,能帮我解决吗

发表于 2009-3-1 23:44:00 | 显示全部楼层
tanle2020发表于2009-1-14 16:47:004楼大哥 怎么我运行你的程序出现:参数类型错误: stringp nil 这个程序很好,能帮我解决吗

对啊,我用了怎么也出现相同的错误提示

发表于 2009-7-28 08:36:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2010-10-1 00:15:00 | 显示全部楼层
看不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-27 17:14 , Processed in 0.273886 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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