找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4863|回复: 6

[LISP函数]:快速修改文字字体字高

[复制链接]
发表于 2004-7-20 17:29:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
(defun *error*(st)
  (princ (strcat "Error: " st))
  (princ)
)

(defun C:cst(/ test ss len n en1 a oldr newr ent nn)
  (setvar "CMDECHO" 0)
  (setq test T nn 0)
  (while test
    (setq ss (ssadd))
    (setq ss (ssget))
    (if (= nil ss)
      (setq test nil)
      (progn
        (setq len (sslength ss))
        (setq n 1 s 1)
        (while (<= n len)
          (setq en1 (ssname ss (1- n)))
          (setq a (entget en1))
          (if  (= "TEXT" (cdr (assoc 0 a)))
            (progn
              (if (= s 1)
                (progn
                  (setq oldr (cdr (assoc 7 a)))
                  (setq newr (strcase (getstring (strcat "\nNew font <" oldr ">:"))))
                  (if (= newr "") (setq newr oldr))
                  (setq s nil)
                )
              )
              (if (= (tblsearch "style" newr) nil)
                (progn
                  (cond ((= newr "XW")
                          (command "STYLE" "xw" "txt" "0" ".8" "0" "n" "n" "n"))
                        ((= newr "HZ")
                          (command "STYLE" "hz" "txt,hztxt" "0" ".8" "0" "n" "n" "n"))
                        ((= newr "CHINA")
                          (command "STYLE" "china" "txt,china" "0" ".8" "0" "n" "n" "n"))
                        ((= newr "LM")
                          (command "STYLE" "lm" "complex" "0" ".8" "0" "n" "n" "n"))
                        (T (princ (strcat "\nPlease define style " newr " use STYLE command !")))
                  )
                )
              )
              (setq ent (subst (cons 7 newr) (assoc 7 a) a))
              (entmod ent)
              (setq nn (1+ nn))
            )
          )
          (setq n (1+ n))
        )
      )
    )
  )
  (princ (strcat (itoa nn) " changed !"))
  (princ)
)
;修改字高的
(DEFUN changtextheight (EN TCH_ok / th1 aa1)

  (if b
    (progn
      (setq kk 0)
      (setq ss "\n新字高<")
      (SETQ TH (CDR (ASSOC 40 EN)))
      (if tch_ok
(progn
   (setq th1 (rtos (* th scale_47) 2 2))
   (setq th (* th scale_47))
)
(setq th1 (rtos (/ th 1) 2 2))
      )
      (princ (strcat ss th1 "mm>:"))
      (setq aa1 (getreal))
      (if aa1
(setq th (* aa1 1))
      )
      (setq b nil)

    )
  )
  (if TCH_ok
    (progn
      (setq th (/ th scale_47))
      (setq en (subst (cons 40 th) (assoc 40 en) en))
      (setq th (* th scale_47))
    )
    (setq en (subst (cons 40 th) (assoc 40 en) en))
  )
  (entmod en)
  (setq kk (1+ kk))
)
******************************************************

(defun C:CH (/ LL EN k kk th b)
  (setq sse (ssget))
  (if sse
    (progn
      (setq ll (sslength sse)
     b  0
     k  0
     kk 0
      )
      (repeat ll
(SETQ EN (ENTGET (ssname sse k)))
(setq TCH_ok nil)
(if (= (CDR (ASSOC 0 EN)) "TEXT")
   (changtextheight en TCH_ok)
   (if (= (CDR (ASSOC 0 EN)) "TCH_TEXT")
     (progn
       (setq scale_47 (cdr (assoc 47 en)))
     ;(setq en (subst (cons 72 11) (assoc 72 en) en))
       (setq TCH_ok 0)
       (changtextheight en TCH_ok)
     )

   )
)    ;if text_end

(if (= (CDR (ASSOC 0 EN)) "INSERT")
   (progn
     (setq main_B_name (cdr (assoc -1 en)))
     (setq an (tblsearch "block" (cdr (assoc 2 en))))
     (setq an_name (cdr (assoc -2 an)))
     (while (/= an_name nil)
       (setq en (entget an_name))
       (if (= (CDR (ASSOC 0 EN)) "TEXT")
  (progn
    (changtextheight en TCH_ok)

  )
       )
       (setq an_name (entnext an_name))
     )
     (entupd main_B_name)
   )
)    ;if_insert_end

(setq k (1+ k))
      )     ;repeat_end

      (princ (strcat "改了" (rtos kk) "个字符."))
    )
  )
  (PRINC)
)
**************************************************
(defun C:CW (/ p l n nw chm en ow enm e1)
      (setq p (ssget))
      (if p (progn
        (setq l 0 n (sslength p) chm 0)
        (while (< l n)
          (setq enm (cdr (assoc 0 (setq en (entget (ssname p l))))))
          (if(or (= enm "LWPOLYLINE") (= enm "POLYLINE") (= enm "LINE") (= enm "ARC")(= enm "CIRCLE"))
             (progn
               (if (zerop chm) (progn
               (if (and (/= enm "LINE") (/= enm "ARC")) (setq ow (cdr (assoc 40 en)))
                   (setq ow 0))
                (princ "\n新线宽<")
                (princ (rtos (/ ow 1) 2 2))
                (setq nw (getreal "mm>:"))
                (if (null nw) (setq nw ow))
              ))
    (if (= enm "CIRCLE")
      (progn
        ;(setq angle1 (/ pi 2))
        (setq pt1 (polar (CDR(ASSOC 10 EN)) 0 (CDR(ASSOC 40 EN))))
        (setq pt2 (polar (CDR(ASSOC 10 EN)) pi (CDR(ASSOC 40 EN))))
        (command ".BREAK" pt1 pt2)
        (command "pedit" (ssname p l) "y" "w" nw "c" "")
             ))
    (if (or (= enm "LINE") (= enm "ARC"))
        (command "pedit" (ssname p l) "y" "w" nw "")
        
        (if (or(= enm "LWPOLYLINE") (= enm "POLYLINE"))
            (command "pedit" (ssname p l) "w" nw "")
        )  
      )
              (setq  chm (1+ chm))
          ))
          (setq l (1+ l))
        )
      ))
      (princ "改了") (princ chm) (princ "条线.")
      (PRINC)
)


;(command ".BREAK"
  ;       (cons e
  ;          (polar (socas 10) 0 (socas 40))
  ;        )
  ;       (polar (socas 10) 1e-3 (socas 40))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-7-21 09:13:17 | 显示全部楼层
非常不错!
可以修改字型、字高,
尤其修改线宽很方便快捷!不用象pe那样要转换成复合线这么个步骤,很容易把圆的线宽修改!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8644个

财富等级: 富甲天下

发表于 2004-7-21 09:25:55 | 显示全部楼层
好像前一阵有人贴过,一模一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-23 00:18:22 | 显示全部楼层

我是菜鸟

我是菜鸟,能不能做成现成的LISP文件,以供下载啊?谢谢。还要用说明知道用才行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-23 06:44:59 | 显示全部楼层
能否提供下载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-24 11:00:41 | 显示全部楼层
提供下载干嘛,自己从一楼处复制不就成了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-24 11:36:12 | 显示全部楼层
提个小小的建议,楼主如果采用缩进式格式,就好看多了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 10:16 , Processed in 0.177775 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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