raobinhsh 发表于 2006-11-11 21:21:00

批量属性块的值自动修改

<FONT face=宋体 size=2>一个图形中的某个图层有很多带属性的块,同一个属性块有两个属性名,属性名分别为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,,,)等,要改的属性块入图</FONT><BR>

sailorcwx 发表于 2006-11-12 14:56:00

有个问题,你所指的属性块是否同一属性块,也就是他们的块名是否相同?

raobinhsh 发表于 2006-11-12 15:54:00

<P>相同,我记得你,你好象帮我编过程,谢谢你</P>

sailorcwx 发表于 2006-11-13 03:48:00

;;带序号属性块修改 v1.0 by sailorcwx (2006.11)<BR>(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)<BR>&nbsp; (setq YH_rbname (car (entsel "\n选择参考块:"))<BR>&nbsp;YH_rbdata (entget YH_rbname)<BR>&nbsp;YH_rblayer (assoc 8 YH_rbdata)<BR>&nbsp;YH_rblockname (assoc 2 YH_rbdata)<BR>&nbsp;YH_flash T<BR>&nbsp;)<BR>&nbsp; (while (and (setq YH_rbname (entnext YH_rbname)) YH_flash)<BR>&nbsp;&nbsp;&nbsp; (setq YH_rbdata (entget YH_rbname))<BR>&nbsp;&nbsp;&nbsp; (if (= (cdr (assoc 0 YH_rbdata)) "ATTRIB")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<BR>&nbsp;(if (= (cdr (assoc 2 YH_rbdata)) "LX")<BR>&nbsp;&nbsp; (setq YH_RLX (cdr (assoc 1 YH_rbdata)))<BR>&nbsp;&nbsp; )<BR>&nbsp;(if (= (cdr (assoc 2 YH_rbdata)) "BH")<BR>&nbsp;&nbsp; (setq YH_RBH (cdr (assoc 1 YH_rbdata)))<BR>&nbsp;&nbsp; )<BR>&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq YH_flash nil)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; (setq YH_blist (ssget (list '(0 . "INSERT") YH_rblayer YH_rblockname))<BR>&nbsp;YH_index 0<BR>&nbsp;YH_flash T<BR>&nbsp;YH_times (sslength YH_blist)<BR>&nbsp;)<BR>&nbsp; (repeat YH_times<BR>&nbsp;&nbsp;&nbsp; (setq YH_bname (ssname YH_blist YH_index)<BR>&nbsp;&nbsp; YH_bname0 YH_bname<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (while (and (setq YH_bname (entnext YH_bname)) YH_flash)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq YH_bdata (entget YH_bname))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= (cdr (assoc 0 YH_bdata)) "ATTRIB")<BR>&nbsp;(progn<BR>&nbsp;&nbsp; (if (= (cdr (assoc 2 YH_bdata)) "LX")<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq YH_LX (cdr (assoc 1 YH_bdata)))<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp; (if (= (cdr (assoc 2 YH_bdata)) "BH")<BR>&nbsp;&nbsp;&nbsp;&nbsp; (setq YH_BH (cdr (assoc 1 YH_bdata))<BR>&nbsp;&nbsp;&nbsp; YH_BHdata YH_bdata)<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp; )<BR>&nbsp;(setq YH_flash nil)<BR>&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (if (and (= YH_LX YH_RLX) (&gt; (setq YH_BH1 (atoi (substr YH_BH 2))) (atoi (substr YH_RBH 2))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<BR>&nbsp;(setq YH_BH2 (cons 1 (strcat YH_LX (itoa (+ 1 YH_BH1))))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YH_BHdata (subst YH_BH2 (assoc 1 YH_BHdata) YH_BHdata)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;(entmod YH_BHdata)<BR>&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (entupd YH_bname0)<BR>&nbsp;&nbsp;&nbsp; (setq YH_index (+ 1 YH_index)<BR>&nbsp;&nbsp; YH_flash T<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; (princ)<BR>&nbsp; )

raobinhsh 发表于 2006-11-13 17:29:00

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

男人可贵 发表于 2009-1-9 18:59:00

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

tanle2020 发表于 2009-1-14 16:47:00

<p>4楼大哥</p><p>&nbsp;怎么我运行你的程序出现:参数类型错误: stringp nil</p><p>&nbsp;这个程序很好,能帮我解决吗</p>

longer1000 发表于 2009-3-1 23:44:00

tanle2020发表于2009-1-14 16:47:00static/image/common/back.gif4楼大哥&nbsp;怎么我运行你的程序出现:参数类型错误: stringp nil&nbsp;这个程序很好,能帮我解决吗

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

ntyks 发表于 2009-7-28 08:36:00

树点 发表于 2010-10-1 00:15:00

看不懂
页: [1] 2
查看完整版本: 批量属性块的值自动修改