CAD图纸翻译中图层丢失的技术根源与解决方案——以祁木CAD Translator为例

摘要
在CAD图纸翻译过程中,图层丢失是最常见的质量问题之一。翻译后的图纸中,大量文字实体从原本归属的功能图层迁移至默认的0层,导致图纸交付后无法按专业进行审图。本文从DWG文件数据结构的角度,深入分析图层丢失的技术根源,并以祁木CAD Translator的技术方案为例,说明如何通过“原地修改”而非“删了重建”来保持图层完整性。

一、问题的本质:CAD图纸不是一张“画”
要理解图层为什么不能丢,首先要理解DWG文件的本质。

DWG不是一个图像文件。它不存储像素,不存储位图,它存储的是对象。直线是一个对象,圆弧是一个对象,文字是一个对象,标注是一个对象。每个对象都有一组属性:它在哪个图层、它的坐标位置、它的颜色和线型、它的文字内容、它的字体样式。

图层是这些对象最基本的组织方式。一张建筑图纸通常包含数十个图层:A-WALL(建筑-墙体)、S-COLUMN(结构-柱)、E-LIGHT(电气-照明)、M-HVAC(暖通-空调)。审图时,工程师逐层打开、逐层关闭、逐层检查。这是建筑、结构、机电等各专业协同工作的基础语言。

翻译工具要做的,不是“在图纸上把中文改成英文”,而是在这个对象数据库中,找到每一个包含文字的对象,修改它的文字内容,同时保持它的图层归属、坐标、样式不变。

二、图层丢失的技术根源:创建新实体 vs 修改原实体
图层丢失的直接原因,99%的情况是:翻译工具删除了原文字实体,创建了一个新实体来承载译文。

在AutoCAD的DXF/DWG数据结构中,每个实体有一个唯一的句柄(Handle),句柄是实体在数据库中的“身份证号”。一个文字实体TEXT,句柄为2F3,归属于图层A-WALL,坐标位于(100.5, 200.3, 0.0),文本内容为“混凝土强度等级”。

错误的翻译流程是:

读取这个TEXT,提取“混凝土强度等级”

调用翻译引擎,得到“Concrete Strength Grade”

删除句柄为2F3的TEXT实体

在默认图层(通常是0层)创建一个新的TEXT,内容为“Concrete Strength Grade”

问题在第三步和第四步。新创建的TEXT,句柄变了,图层变成了0层,甚至坐标可能因为默认值而偏移。图纸打开后,所有翻译过的文字都跑到了0层,原有的图层结构被彻底破坏。

祁木CAD Translator采用的技术路线是:永远不删除原实体,直接修改原实体的文本内容。

text

伪代码示例:祁木CAD Translator的文字替换逻辑

def translate_entity(entity):
original_text = entity.dxf.text # 读取原始文本
translated_text = translate(original_text) # 调用DeepSeek翻译引擎
entity.dxf.text = translated_text # 直接修改原实体的文本属性
# 实体句柄不变、图层不变、坐标不变、样式不变
这个技术选择看似简单,但需要翻译引擎能够处理DWG文件的完整数据结构,而不是仅仅在表面做文字查找替换。这也是为什么很多通用翻译工具和简单插件,翻完之后图纸图层全乱的原因——它们本质上是“删了重建”,而不是“原地修改”。

三、完整实体类型的遍历策略
TEXT和MTEXT是最基础的文字承载实体,但CAD图纸中的文字远不止这两种。祁木CAD Translator的完整文字遍历方案,覆盖以下实体类型:

  1. TEXT / MTEXT

单行和多行文本。MTEXT内部可能包含格式化标记(如\P表示换行),翻译时保留这些标记,只替换文本内容。

  1. INSERT / ATTRIB

块和块属性。图框标题栏中的项目名称、图号、比例、日期,通常以块属性的形式存在。祁木CAD Translator遇到INSERT实体时,会遍历其attribs集合,逐个处理每个ATTRIB的文字内容。这是很多翻译工具做不到的——它们只遍历模型空间中的TEXT和MTEXT,完全不检查INSERT内部的ATTRIB。

  1. 嵌套块

块里面可以嵌套块。祁木CAD Translator采用递归遍历策略,直到所有嵌套层级都被处理。

  1. ACAD_TABLE

CAD表格。祁木CAD Translator按单元格逐个翻译写回,不会出现整段替换导致的串行问题。

  1. MULTILEADER

多重引线。引线上的文字独立于普通TEXT,祁木CAD Translator专门处理了MULTILEADER的文字提取。

  1. DIMENSION

标注。自动生成的尺寸数字(如<>)保护不翻译,手动输入的覆盖文字(如“现场焊接”)正常翻译。

四、验证方案:如何判断一个翻译工具是否“真的懂”图层
理论讲再多,不如一个测试来得直接。以下是一个可操作的验证方案:

测试用图纸:找一张包含5个以上图层的DWG,确保每个图层上都有文字。

测试步骤:

用翻译工具翻译这张图纸

翻译完成后,用CAD软件打开译文文件,逐个关闭图层

检查文字是否跟随所属图层一起消失

判断标准:

如果关闭图层后译文还在,说明图层丢失

如果译文跟随消失,说明图层归属正确保留

祁木CAD Translator提供了免费试用额度,可以用自己的图纸直接做这个测试。翻译后逐层开关检查一遍,五分钟后你就能自己得出结论。

五、总结
CAD图纸翻译中图层丢失的问题,本质上是一个技术路线选择问题:是“删了重建”,还是“原地修改”。前者实现简单,但破坏了图纸结构;后者实现复杂,但保持了图纸的完整性。

了解这些底层原理后,在选型翻译工具时就能有的放矢——不是看宣传文案写了什么,而是拿一张带多图层的测试图纸,翻完后亲自动手逐层开关验证。五分钟后,答案自明。

作者简介:本文作者为祁木CAD Translator技术团队成员,长期从事CAD图纸解析与翻译技术研究。祁木CAD Translator是一款专业CAD图纸翻译软件,采用源文件直译方案,支持DWG/DXF格式,保留图层、块属性和表格结构。官网:qimoocad.com

posted @ 2026-06-07 21:58  QimooCAD  阅读(15)  评论(0)    收藏  举报