wei209 发表于 2007-2-14 22:59:00

把图内所有的块名都改为大写

本帖最后由 作者 于 2007-2-14 23:00:45 编辑

把图内所有的块名都改为大写,后来发现这个功能太局限了,我想把指定的几个块名如 Gtjh Duant acfgw hhK不改请问又改怎么处理呢?
(DEFUN C:kdx(/ BName1 BName2 ENT I i0 BName ENT ss)
   (setq ss (ssget "x"(list (cons 0"INSERT"))));
   (IF(/= SS NIL)
    (PROGN
    (SETQ I -1)
    (setq n (if ss (sslength ss) 0))
    (REPEAT n            
         (SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I)))))
         (setq BName (cdr (assoc 2 ENT)))
         (setq BName1 (strcase BName))
         (setq BName2 (strcat BName1 "d"))
         (command "rename" "b" BName BName2)
         (command "rename" "b" BName2 BName1)
         (ENTMOD ENT)
         (setq i0 (+ i 1))
         (print i0)
    )
   )
    (PRINC "\n 图形内没有块!")
   )
   (PRINC)
)

龙龙仔 发表于 2007-2-16 12:49:00

;;By LUCAS<br/>(defun C:KDX (/ BLOCKS NAME)<br/>&nbsp; (setq&nbsp;BLOCKS (vla-get-blocks<br/>&nbsp;&nbsp; (vla-get-activedocument (vlax-get-acad-object))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (vlax-for BLK&nbsp;BLOCKS<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(not (wcmatch (setq NAME (strcase (vla-get-name BLK)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "*'**,*|*,GTJH,DUANT,ACFGW,HHK"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-name BLK NAME)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)<br/>

wei209 发表于 2007-2-16 13:53:00

谢谢<strong><font face="Verdana" color="#da2549">龙龙仔,新年快乐!</font></strong>

toproc 发表于 2012-11-11 16:49:20

龙龙仔 发表于 2007-2-16 12:49 static/image/common/back.gif
;;By LUCAS(defun C:KDX (/ BLOCKS NAME)&nbsp; (setq&nbsp;BLOCKS (vla-get-blocks&nbsp;&nbsp; (vla-get- ...

这个程序有个问题,就是经常在当前图形里面会有外部参照的文件,外部参照文件没卸载的话,用这个程序会出现错误。错误提示是:“Automation 错误。 输入无效”

toproc 发表于 2012-11-11 20:45:27

本帖最后由 toproc 于 2012-11-11 20:50 编辑

(defun C:KDX ()
(setq        BLOCKS (vla-get-blocks
               (vla-get-activedocument (vlax-get-acad-object))
             )
)
(vlax-for BLK        BLOCKS
    (if        (and (not (wcmatch (setq NAME (strcase (vla-get-name BLK)))
                           "*'**,*|*"
                  )
             )
             (/= (vla-get-IsXRef BLK) :vlax-true)
        )
      (vla-put-name BLK NAME)
    )
)
(princ)
)
代码修改了下,增加判断块是否是外部参照块。
页: [1]
查看完整版本: 把图内所有的块名都改为大写