明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 799|回复: 2

[源码] 由于CAD刷新不彻底导致的字体乱码

[复制链接]
发表于 2023-8-17 10:23:47 | 显示全部楼层 |阅读模式
本帖最后由 jia_jg 于 2023-8-17 10:26 编辑

画图过程中发现某些字体乱码,这些问题编辑一下或换个样式再换回来均能显示正常,基于此写下以下代码解决此问题:

  1. (defun C:RGT ( )
  2.   (setvar "cmdecho" 0)
  3.   (vl-load-com)
  4.   (setq ss (ssget "X" '((0 . "DIMENSION,TEXT,MTEXT"))))
  5.   (if ss
  6.     (progn
  7.       (setq len (sslength ss))
  8.       (setq n 0)
  9.       (repeat len
  10.         (setq ent (ssname ss n))
  11.         (setq entdata (entget ent))
  12.         (if (assoc 1 entdata)
  13.           (progn
  14.             (setq txt (cdr (assoc 1 entdata)))
  15.             (setq entdata (subst '(1 . "") (assoc 1 entdata) entdata))
  16.             (entmod entdata)
  17.             (setq entdata (subst (cons 1 txt) (assoc 1 entdata) entdata))
  18.             (entmod entdata)
  19.           )
  20.         )
  21.         (setq n (+ 1 n))
  22.       )
  23.     )
  24.   )
  25.   (setq acadObj (vlax-get-acad-object))
  26.   (setq doc (vla-get-activedocument acadObj))
  27.   ; (setq mspace (vla-get-mspace doc))
  28.   (setq n 0)
  29.   (setq Blocks (vla-get-blocks doc))
  30.   (vlax-for temptBlock Blocks  ;vla-item Blocks 2
  31.     (if (> n 1)
  32.       (progn         
  33.         (setq blk_name (vla-get-Name temptBlock))
  34.         (setq blkr (tblsearch "block" blk_name)) ;获取 存储块的链表
  35.         (setq blkent (cdr (assoc -2 blkr))) ;获取块的第一个组成实体
  36.         (setq blkentdata (entget blkent))
  37.         (setq datatype (cdr (assoc 0 blkentdata)))
  38.         (if (or (= datatype "MTEXT") (= datatype "TEXT") (= datatype "DIMENSION"))
  39.           (progn
  40.             (setq txt (cdr (assoc 1 blkentdata)))
  41.             (setq blkentdata (subst '(1 . "") (assoc 1 blkentdata) blkentdata))
  42.             (entmod blkentdata)
  43.             (setq blkentdata (subst (cons 1 txt) (assoc 1 blkentdata) blkentdata))
  44.             (entmod blkentdata)
  45.             (print txt)
  46.           )
  47.         )
  48.         (setq blkent (entnext blkent)) ;获取块的第二个组成实体
  49.         (while blkent
  50.           (setq blkentdata (entget blkent))
  51.           (setq datatype (cdr (assoc 0 blkentdata)))
  52.           (if (or (= datatype "MTEXT") (= datatype "TEXT") (= datatype "DIMENSION"))
  53.             (progn        
  54.               (setq txt (cdr (assoc 1 blkentdata)))
  55.               (setq blkentdata (subst '(1 . "") (assoc 1 blkentdata) blkentdata))
  56.               (entmod blkentdata)
  57.               (setq blkentdata (subst (cons 1 txt) (assoc 1 blkentdata) blkentdata))
  58.               (entmod blkentdata)
  59.               (print txt)
  60.             )
  61.           )
  62.           (setq blkent (entnext blkent))         
  63.         )
  64.       )
  65.     )
  66.     (setq n (+ 1 n))      
  67.   )
  68.   (command "REGEN")
  69.   (prin1)
  70. )
请各位老师指点:
发表于 2023-8-17 11:26:00 | 显示全部楼层
没有遇到过这种问题,发个测试图看看呢
发表于 2023-8-17 14:49:29 | 显示全部楼层
以前还发生过字体乱码后无法恢复的情况,换台电脑都打开都是乱码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 03:00 , Processed in 0.181865 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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