返回上一页

工程设计CAD及自动化1997年第3期

  一个批量修改文字参数的程序 黄 昆 江汉石油规划设计研究院  

  在AutoCAD R12.0以上版本中,关于文字内容、字型、比例等参数的修改,可以通过系统提供的(ddmodity)对话框来完成,但遗憾的是它只能对单个字符串的参数进行修改,如果一幅图中有大量的文字要修改,那么用这个工具就十分麻烦,能不能对图中的文字进行一次处理,就完成修改呢,经过反复分析研究,用lisp语言编程可以解决这个问题。 

  程序清单及功能

  程序功能:批量修改文字参数

    (defun enttb()

    (setq entb())

    (setq k (getstring"\n 1.全部修改 2.选择修改<1>:"))

    (cond ( (or( = k "1")(= k ""))

    (setq ss(ssget "x" (list (cons 0 "text"))));"\n请选择文字:"

    )

    ( (= k "2")

    (setq ss(ssget)) ;选择文字实体

    )

    )

    (setq n (sslength ss))

    (setq j 0)

    (repeat n 

    (setq entt (entget(ssname ss j)))

    (setq entb (cons entt entb))

    (setq j (+ j 1))

    )

    );end defun;entb=(entt1 entt2 ...)

    ;;

     ;;* *********** MAIN PROGRAM **********

    (defun c:zx()

    (enttb)

    (setq str(getstring"\n 请选择--字型Zx/比例Bl/高度Gd/层c<z>:"))

    (setq i 0)

      (cond ( (or (= str "z")(= str "Z") )

     (setq szx (getstring"\n 请输入修改字型:"))

     )

     ( (OR(= str "b")(= STR "B") )

     (setq sbl (getREAL"\n 请输入修改比例:"))

     )

      ( (OR(= str "g")(= STR "G") )

     (setq sgd (getREAL"\n 请输入修改高度:"))

     )

      ( (OR(= str "c")(= STR "C") )

     (setq sc (getstring"\n 请输入修改层名:"))

     )

     )

    (while

    (setq entt (nth i entb))

    (cond ( (or (= str "z")(= str "Z") )

    (setq entt(subst (cons 7 szx)(assoc 7 entt)entt))

    ) 

    ( (OR(= str "b")(= STR "B") )

    (setq entt(subst (cons 41 sbl)(assoc 41 entt)entt))

    ) 

    ( (OR(= str "g")(= STR "G") )

    (setq entt(subst (cons 40 sgd)(assoc 40 entt)entt))

    )

    ( (OR(= str "c")(= STR "C") )

    (setq entt(subst (cons 8 sc)(assoc 8 entt)entt))

    )

    );end cond

    (entmod entt)

    (setq i (1+ i))

    );end while

    );end defun 

    ;;

    ;;* ************THE END***********

  程序的使用十分简便,首先,将以上程序WZXG.LSP拷贝到CAD可找到的目录下(如\ACAD\SUPPORT),然后操作如下:

 command (load"wzxg"),回车,这时产生一个新命令ZX,接着在命令符后,输入ZX: co

mmand zx ,中文显示如下:

    "请选择->字型Zx/比例Bl/高度Gd/层c<z>:"

  输入b,进行字型修改,并要求输入字型; 输入g,进行比例修改,输入y ,进行高度改,输入c,进行层修改.按提示输入参数即可实现相应的功能。

  本程序就文字实体的四个参数作了讨论,并在AUTOCAD R12.0版,奔腾586机上运行通过,用户还可以按此方法对其他实体的参数进行修改,以及别的实体参数修改上,效果一定不错。