请教高手,如附件图纸,应该是在保存为2004的文件格式后,出现了这样的乱码,是否有办法解决。

好像是编码出错了,记得之前看到过专门处理这个乱码问题的小程序,但找不见了。
有哪位朋友能有解决办法,感谢 !


网友答: 20年前的dwg文件版本,不理解为什么你们非要用 AutoCAD 2004版本的dwg?这不是自己找来的事么...

AutoCAD 2007 的dwg版本开始采用了 Unicode 存储,再也不会出现这种乱码问题了。

网友答: 本帖最后由 尘缘一生 于 2024-10-31 07:03 编辑

贴一下三领的部分,这个事还不能叫开图自动,因为,有的人安装有很多插件,他们要的就是那种字体,批量换了,我们满足,对方不满足了。如果图不再外协交流,哪可以。我这个还是换字库的。


    • ;;文字替代(解决文字乱码用)(一级)------------
    • (defun sl-nx (/ ss a b c d e date1 e_lst)
    •   (setq e_lst (sysvar '("TEXTSTYLE" "CMDECHO" "REGENMODE")))
    •   (setvar "CMDECHO" 0)
    •   (setvar "REGENMODE" 0);禁止重生成
    •   (setq date1 (getvar "MILLISECS"))
    •   (vlax-for x (vla-get-textstyles *AcDocument*)
    •     (vla-getfont x 'a 'b 'c 'd 'e)
    •     (if (= a "")
    •       (progn
    •         (if (and
    •               (not (findfile (vla-get-fontfile x)))
    •               (not (findfile (strcat (vla-get-fontfile x) ".shx")))
    •             )
    •           (vla-put-fontfile x "txt.shx")
    •         )
    •         (if (and
    •               (/= (vla-get-bigfontfile x) "")
    •               (not (findfile (vla-get-bigfontfile x)))
    •               (not (findfile (strcat (vla-get-bigfontfile x) ".shx")))
    •             )
    •           (vla-put-bigfontfile x "hztxt.shx")
    •         )
    •       )
    •       (progn
    •         (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-setfont (list x a b c d e)))
    •           (vla-setfont x "fan" b c d e)
    •         )
    •       )
    •     )
    •   )
    •   (prompt
    •     (strcat
    •       "\n 字体替换--耗时"
    •       (rtos (/ (- (getvar "MILLISECS") date1) 1000.000) 2 3)
    •       (slmsg "秒" "" "seconds")
    •     )
    •   )
    •   (setvar "REGENMODE" 1)
    •   ;(if (setq ss (ssget "X" '((0 . "TEXT") (-4 . "<OR") (1 . "**,**,**,**,*\U+0082*") (-4 . "OR>"))));;探索者、特殊符号转换
    •   ;  (tss2gj ss)
    •   ;)
    •   ;(if (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 66 0))))
    •   ;  (blktss2gj ss) ;;块选择集探索者钢筋转换
    •   ;)
    •   (vla-regen *AcDocument* AcAllViewPorts)
    •   (mapcar 'eval e_lst)
    •   (princ)
    • )


网友答: 本帖最后由 wudechao 于 2026-1-17 13:16 编辑
e2002 发表于 2024-10-31 10:11
20年前的dwg文件版本,不理解为什么你们非要用 AutoCAD 2004版本的dwg?这不是自己找来的事么...

AutoCA ...

不理解了吧?这问题是居然天正惹的祸!!!!!天正建筑有个默认的天正专门的自己格式,其它行业看不到这个格式,所以天正自带了转换格式命令,这个转换t3的默认是2004格式。。。。。。。。大家都懒得选,就默认吧。。。。。2004格式从此之后成为了多行文字的恶梦。。。。。。

网友答:
e2002 发表于 2024-10-31 10:11
20年前的dwg文件版本,不理解为什么你们非要用 AutoCAD 2004版本的dwg?这不是自己找来的事么...

AutoCA ...

高版本也会出错的,有时候文件致命错误之后就会出现这种乱码,非常头痛,好像无解

网友答:
e2002 发表于 2024-10-31 10:11
20年前的dwg文件版本,不理解为什么你们非要用 AutoCAD 2004版本的dwg?这不是自己找来的事么...

AutoCA ...

都怪自己当年年少无知,存成了2004版本。
2007后的版本格式还是很OK的

网友答:
960322 发表于 2024-10-31 19:17
高版本也会出错的,有时候文件致命错误之后就会出现这种乱码,非常头痛,好像无解

应该是可以解决的,我之前见到过解决这个问题的程序,忘记名字,找不见了

网友答: 有什么比较完美得办法


网友答: 可以试试这个存DXF的方式https://www.gstarcad.com/cmsDetail/2263/

网友答: 你这版本是CAD2007的


网友答: 本帖最后由 null. 于 2025-2-5 18:18 编辑

这个问题一直都有的,无解的,如果有解,网上高手早就搞出来了。出问题的文字都是MTEXT图元,2007版前,中文文字是多字节字符串,之后中文是双字节字符串,Mtext图元的开始半角和多字节导致的,多字节的编码又是cAD自己搞的,不是通用多字节。不清楚规则,所以无法转换,属CAD的BUG。
以后做图习惯,不要保存低于2007版本。
  • 上一篇:分享H型钢绘制
  • 下一篇:没有了