明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3671|回复: 15

文字替代(解决文字乱码用)

    [复制链接]
发表于 2011-12-11 10:10 | 显示全部楼层 |阅读模式
本帖最后由 【KAIXIN】 于 2012-4-18 18:22 编辑
  1. ;文字替代(解决文字乱码用)
  2. (defun c:KK( / lb_eng lb_chn lb_sech lb_tt1 lb_tt2 lb_a1 lb_a2 lb_hh)
  3.   (setvar "REGENMODE" 0)
  4.   (setq lb_eng (getstring "英文替代<Simplex>:") lb_chn (getstring "中文替代<Hztxt>:"))
  5.   (if (= "" lb_eng)(setq lb_eng "simplex"))
  6.   (if (= "" lb_chn)(setq lb_chn "hztxt"))
  7.   (setq lb_sech (tblnext "style" t))
  8.   (while lb_sech
  9.     (setq lb_tt1 (cdr(assoc 3 lb_sech)) lb_tt2 (cdr(assoc 4 lb_sech)))
  10.     (if (or (<= (strlen lb_tt1) 4)
  11.             (/= "." (strcase(substr lb_tt1 (- (strlen lb_tt1) 3) 1)))        
  12.         )
  13.         (setq lb_tt1 (strcat lb_tt1 ".shx"))
  14.     )
  15.     (if (or (<= (strlen lb_tt2) 4)
  16.             (/= "." (strcase(substr lb_tt2 (- (strlen lb_tt2) 3) 1)))
  17.         )
  18.         (if (/= "" lb_tt2)(setq lb_tt2 (strcat lb_tt2 ".shx")))
  19.     )
  20.     (if (/= ".TTF" (strcase(substr lb_tt1 (- (strlen lb_tt1) 3) 4)))
  21.       (progn
  22.         (if (null (findfile lb_tt1))(setq lb_a1 lb_eng)(setq lb_a1 lb_tt1))
  23.         (if (= "" lb_tt2)
  24.           (setq lb_a2 "")
  25.           (if (null (findfile lb_tt2))(setq lb_a2 lb_chn)(setq lb_a2 lb_tt2))
  26.         )
  27.         (setq lb_hh (strcat lb_a1 "," lb_a2))
  28.         (command "-style" (cdr(assoc 2 lb_sech)) lb_hh "" "" "" "" "" "")
  29.       )
  30.       (if (null (findfile lb_tt1))(command "-style" (cdr(assoc 2 lb_sech)) (strcat lb_eng "," lb_chn) "" "" "" "" "" ""))
  31.     )
  32.     (setq lb_sech (tblnext "style"))
  33.   )
  34. (setvar "REGENMODE" 1)
  35. (command "regen")
  36. )
该贴已经同步到 【KAIXIN】的微博

评分

参与人数 3明经币 +3 收起 理由
自贡黄明儒 + 1 赞一个!
MaKaiJin + 1
cabinsummer + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-9-27 10:43 | 显示全部楼层
顶起来,,谢谢楼主及评论区大神的分享
发表于 2011-12-11 10:27 | 显示全部楼层
好程序啊,顶一个。
发表于 2011-12-11 13:12 | 显示全部楼层
好程序,谢谢。
发表于 2011-12-12 03:13 | 显示全部楼层
;修改版本
(defun c:ql (/ lb_eng lb_chn lb_sech lb_tt1 lb_tt2 lb_a1 lb_a2 lb_hh tst)
  (setvar "cmdecho" 0)
  (setvar "REGENMODE" 0)
  (setq lb_eng (getstring "英文替代<Simplex>:")
lb_chn (getstring "中文替代<Hztxt>:")
  )
  (if (= "" lb_eng)
    (setq lb_eng "Simplex")
  )
  (if (= "" lb_chn)
    (setq lb_chn "hztxt")
  )
  (setq lb_sech (tblnext "style" t))
  (while lb_sech
    (setq lb_tt1 (cdr (assoc 3 lb_sech))
   lb_tt2 (cdr (assoc 4 lb_sech))
   tst nil
    )
    (if (not (wcmatch lb_tt1 "*`.*"))
      (setq lb_tt1 (strcat lb_tt1 ".shx"))
    )
    (if (and
   (not (wcmatch lb_tt2 "*`.*"))
   (/= "" lb_tt2)
)
      (setq lb_tt2 (strcat lb_tt2 ".shx"))
    )
    (if (not (wcmatch (strcase lb_tt1) "*`.TTF"))
      (progn
(if (null (findfile lb_tt1))
   (progn
     (setq lb_a1 lb_eng
    tst t
     )
   )
   (setq lb_a1 lb_tt1)
)
(if (/= "" lb_tt2)
   (progn
     (if (null (findfile lb_tt2))
       (progn
  (setq lb_a2 lb_chn
        tst t
  )
       )
       (setq lb_a2 lb_tt2)
     )
   )
)
(if (= "" lb_tt2)
   (setq lb_hh lb_a1)
   (setq lb_hh (strcat lb_a1 "," lb_a2))
)
(if tst
   (command "-style" (cdr (assoc 2 lb_sech)) lb_hh "0" "" "" "" "" "")
)
      )
    )
    (setq lb_sech (tblnext "style"))
  )
  (setvar "REGENMODE" 1)
  (command "regen")
  (setvar "cmdecho" 1)
  (princ)
)
发表于 2011-12-12 10:18 | 显示全部楼层
真是个高手啊
 楼主| 发表于 2012-4-11 19:27 | 显示全部楼层
好东西,顶上去!
发表于 2012-4-29 08:50 来自手机 | 显示全部楼层
好东西,一定要顶上去。
发表于 2012-4-29 09:25 | 显示全部楼层
(defun c:nx
            (/ thisdrawing acaddocument txtstyles txtlayer fontfile)
  (setq thisdrawing (vla-get-activedocument (vlax-get-acad-object)))
  (setq acaddocument (vla-get-activedocument (vlax-get-acad-object)))
  (setq txtstyles (vla-get-textstyles thisdrawing))
  (vlax-for txtstyle txtstyles
    (progn
      (setq fontfile (vla-get-fontfile txtstyle))
      (setq bigfile (vla-get-bigfontfile txtstyle))
      (if (not (wcmatch fontfile "*.ttf,*TTF"))
        (progn
          (vla-put-fontfile txtstyle "gbenor.shx")
          (vla-put-bigfontfile txtstyle "GBCBIG.shx")
          (vla-put-width txtstyle 1.0)
        )
      )
    )
  )
  (vla-regen acadDocument acActiveViewport)
  (princ)
)

(defun c:tx (/ acaddocument tstyle textitem textcont seltext i textsel             texti)  (vl-load-com)  (setq acaddocument (vla-get-activedocument (vlax-get-acad-object)))  (setq tstyle (vla-get-textstyles acaddocument))
  (vla-add tstyle "CXB_txt")  (setq textitem (vla-item tstyle "CXB_txt"))  (vla-put-fontfile textitem "gbenor.shx")   (vla-put-bigfontfile textitem "GBCBIG.shx")  (vla-put-width textitem 1)  (vla-put-height textitem 0.0)  (prompt "\n点选需转换的字体:")  (setq seltext (vlax-ename->vla-object (car (entsel))))  (setq selstyle (vla-get-stylename seltext))  (setq        textsel         (ssget "_x" (list (cons 0 "TEXT,ATTDEF") (cons 7 selstyle)))  )  (setq i 0)  (repeat (sslength textsel)    (setq texti (vlax-ename->vla-object (ssname textsel i)))    (vla-put-stylename texti "CXB_txt")    (vla-put-scalefactor texti 1)    (setq i (1+ i))  )  (vla-regen acadDocument acActiveViewport)  (princ))
试试这个

点评

nx 这个不可取,它会把原图纸采用的字体给i替换,要把没有字库得字体替代即可了。  发表于 2019-9-5 17:00
发表于 2012-11-5 14:07 | 显示全部楼层
K版,你的是不是有点问题,提示未知命令,是不是哪里多了一个括号?

点评

自行测试下,好久没去弄这个了...  发表于 2012-11-5 14:52
发表于 2012-11-6 12:53 | 显示全部楼层
能不能解释一下程序的原理?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 01:39 , Processed in 0.685914 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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