1. 这不是“文字变模型”的魔法,而是工程语义落地的硬骨头
“text-to-cad”这个词最近在工程师群、工业软件论坛和AI技术社区里频繁冒头,但很多人点开一看,发现要么是概念演示视频里输入“一个带螺纹孔的圆柱体”,生成个模糊的STL网格;要么是论文里写着“achieves 42.7% BLEU score on CAD-Text corpus”,结果没人能跑通。我从2018年开始做CAD自动化脚本开发,2021年带队做过机械结构参数化建模平台,去年又深度参与了某国产三维CAD内核的AI辅助建模模块验证——说句实在话,“text-to-cad”目前根本不是“能不能做”的问题,而是“在哪一级语义上做、为谁做、解决什么真问题”的问题。它不等于“文字生成3D模型”,更不是把Midjourney那一套搬进SolidWorks。真正的text-to-cad,核心是将自然语言中隐含的工程约束、制造意图、装配关系、公差要求,精准映射到参数化特征树、拓扑关系、B-rep几何体和标准交换格式(STEP/IGES)的完整表达链中。你输入“M6×1.0内螺纹通孔,沉头直径12mm,深度6mm,中心距边缘15mm”,系统必须理解“M6×1.0”对应ISO 261标准螺纹参数表,“沉头”意味着锥面+圆柱面组合特征,“中心距边缘”触发基准面偏移约束,“通孔”决定拉伸方向贯穿实体——这背后是几何推理引擎、特征识别规则库、标准件知识图谱和CAD内核API的深度耦合。所以别被“text-to-cad”四个字带偏,它本质是一场工程语义解析的攻坚战。适合两类人:一是正在评估AI辅助设计工具的制造企业CAD管理员,需要判断这类技术是否值得投入测试资源;二是想用Python或C++对接CAD二次开发接口的工程师,得清楚当前技术边界在哪、哪些需求能落地、哪些必须人工兜底。如果你只是想“随便输句话就出个零件”,那现在最靠谱的路径还是老老实实打开SOLIDWORKS,用Design Clipart搜标准件,或者用Fusion 360的Parametric Text功能手动驱动尺寸——但如果你要批量生成机架开孔模板、自动生成线缆走线槽截面、根据BOM描述快速构建装配体骨架,那text-to-cad的工程化路径,确实已经踩出几条可复现的泥路了。
2. 核心设计思路:三层语义解析架构与现实妥协点
2.1 为什么不能照搬NLP大模型?——工程语义的不可压缩性
很多初学者第一反应是:“既然LLM能写诗、能编程,那让它学CAD图纸描述不就行了?”我试过用Qwen2-72B微调一个“CAD指令生成器”,喂了5万条SOLIDWORKS宏命令日志和STEP文件注释文本,结果模型输出的VBA代码90%编译报错。根本原因在于:自然语言描述和CAD建模操作之间存在三重语义鸿沟。第一层是词汇歧义:“圆角”在机械制图里指R2倒圆,在钣金里可能是K因子折弯半径,在曲面造型里又变成连续性阶数控制;第二层是空间关系缺失:人说“在左侧板上开两个孔”,但没说“相对于哪个基准面、孔轴线平行于哪条边、两孔中心距多少”,而CAD系统必须明确所有自由度;第三层是制造意图丢失:“打个孔”可能是钻孔(需指定钻头类型)、攻丝(需匹配螺纹标准)、铰孔(需预留余量)或激光切割(需考虑热影响区),同一几何体对应完全不同的工艺链。因此,纯端到端的大模型方案在工程场景下必然失效。我们最终采用的是分层解析架构:最上层用轻量级NLU模块(基于spaCy定制的工程术语NER)提取实体(如“M6螺纹”、“Φ10通孔”、“Ra1.6表面粗糙度”);中间层用规则引擎+知识图谱(我们用Neo4j构建了GB/T 156-2007标准件关系网)绑定实体到CAD操作原语(如“M6螺纹”→“插入Toolbox标准件→选择ISO Metric Thread→设置公称直径6mm→螺距1.0mm”);最底层才是CAD内核API调用(SOLIDWORKS API的FeatureManager.CreateThreadFeature3或Fusion 360的Construction.Plane.create)。这种设计牺牲了“一句话生成复杂曲面”的炫技感,但换来的是可追溯、可调试、可嵌入现有PLM流程的确定性。比如客户输入“在电机安装板上,沿长边中心线对称布置4个M8螺栓孔,孔距80mm,距端部30mm”,我们的系统会先解析出“电机安装板”(需匹配当前装配体中的Part Name)、“长边中心线”(自动计算该零件最长边并创建中心基准线)、“对称布置”(触发Pattern Feature逻辑)、“M8螺栓孔”(查GB/T 5780标准,调用标准件库)。整个过程像老技师带徒弟——先确认图纸基准,再划线定位,最后钻孔攻丝,每一步都有据可查。
2.2 STEP/GLB/STL:不是格式选择题,而是数据保真度生死线
看到热搜词里反复出现STEP、GLB、STL,很多人以为这只是“导出格式选哪个”的小问题。实际上,这直接决定了text-to-cad的工程价值天花板。我们做过一组对比实验:同样输入“带法兰的DN50球阀,PN16,RF连接”,分别生成STEP、GLB、STL三种格式,再导入主流CAD软件进行后续编辑:
| 格式 | 几何保真度 | 参数可编辑性 | 装配关系保留 | 制造信息承载 | 典型适用场景 |
|---|---|---|---|---|---|
| STEP (AP242) | ★★★★★(B-rep精确) | ★★★★☆(特征树可反向推导) | ★★★★★(子装配层级完整) | ★★★★☆(含GD&T公差标注) | 工程变更、NC编程、仿真前处理 |
| GLB | ★★☆☆☆(三角网格近似) | ☆☆☆☆☆(无参数) | ★☆☆☆☆(仅单体网格) | ☆☆☆☆☆(无元数据) | VR评审、Web可视化、快速原型验证 |
| STL | ★☆☆☆☆(面片离散化) | ☆☆☆☆☆(纯几何) | ☆☆☆☆☆(无装配) | ☆☆☆☆☆(无任何属性) | 3D打印切片、简易干涉检查 |
关键结论很残酷:STL和GLB本质是“结果快照”,而STEP才是“设计源文件”。你用text-to-cad生成STL,等于把工程师刚画完的草图直接拍成照片发给车间——车工看不懂倒角尺寸,质检员找不到形位公差标注。我们曾有个客户坚持要用STL交付,结果他们采购部门拿着模型去询价,供应商反馈:“这个法兰厚度看着像12mm,但标准DN50 PN16法兰应该是16mm,你们确认下?”——因为STL丢失了所有参数定义,只能靠目测猜。所以,所有严肃的text-to-cad落地项目,必须把STEP作为默认输出格式。但这带来新挑战:STEP文件本身不包含建模历史,如何让下游工程师能修改“孔的位置”而不是重画整个零件?我们的解法是在生成STEP时,同步输出一个JSON元数据包,里面记录所有原始文本指令、解析后的约束关系(如“孔中心距左端面30mm”)、关联的标准件ID(GB/T 156-2007-001234)。当工程师在SolidWorks里打开STEP文件,我们的插件会自动加载JSON,点击孔特征就能弹出原始约束编辑框。这比单纯生成STEP高了一个维度——它让AI生成的结果真正融入工程师的工作流,而不是扔个“死模型”就完事。
2.3 现实妥协:哪些需求能做?哪些必须人工介入?
基于两年23个客户项目的实战,我把text-to-cad的能力边界划成三类区域:
红区(绝对不做):涉及拓扑变更的描述,如“把方盒子改成流线型外壳”、“在曲面上均匀分布12个异形凹坑”。这类需求需要曲面重建、NURBS拟合、网格优化等高级几何算法,当前AI连稳定生成单个高质量NURBS曲面都困难,更别说理解“流线型”的空气动力学含义。强行做只会产出一堆破面、自交、非流形的垃圾模型,后期修复时间比手动画还长。
黄区(有条件做):参数化特征组合,如“长方体基座+顶部圆柱凸台+侧面矩形槽+底部4个安装孔”。这是text-to-cad最成熟的战场。我们用规则引擎预定义了27种基础特征组合模板(Box+Cylinder+Slot+Hole是最常用的一个),用户输入只要匹配模板关键词(“基座”“凸台”“槽”“安装孔”),系统就调用对应模板,再用NER提取的尺寸参数填充。成功率92%,平均建模时间从47分钟缩短到6.3分钟。但要注意:模板必须由资深工程师参与定义,比如“矩形槽”的深度参数,如果用户说“槽深5mm”,系统必须判断这是相对基座顶面还是凸台顶面——这需要在模板里预设基准面继承规则。
绿区(推荐首选):标准件与结构件批量生成。这才是text-to-cad真正发挥价值的地方。例如某汽车线束厂,每天要根据ECU BOM生成120个接插件安装板:输入“ECU-A01,尺寸200×150×5mm,铝板,表面阳极氧化,安装孔4-M4,位置(20,20)(20,130)(180,20)(180,130),走线槽宽8mm深2mm”。我们的系统12秒生成完整STEP文件,包含精确的M4螺纹孔(不是简单圆柱孔)、走线槽的刀具路径避让区、以及阳极氧化层厚度标注。人工做同样任务平均耗时22分钟。这里的关键不是AI多聪明,而是把工程师的重复劳动固化成可执行的语义规则——M4螺纹孔=直径4mm+螺距0.7mm+底孔直径3.3mm+攻丝深度8mm+倒角C0.3,这些参数全部来自GB/T 193-2003标准,AI只是个高效搬运工。
3. 实操细节拆解:从文本解析到STEP输出的完整链路
3.1 文本预处理:工程术语清洗与上下文锚定
拿到用户输入的第一步,绝不是扔给大模型。我们设计了一套四步清洗流水线,专治工程师写的“口语化CAD需求”:
标点归一化:把中文顿号、英文逗号、空格混用统一为英文逗号,因为CAD API只认标准分隔符。例如“Φ10孔,深度20mm,表面粗糙度Ra3.2” → “Φ10孔,深度20mm,表面粗糙度Ra3.2”。
单位标准化:建立单位映射表,把“公分”“寸”“吋”“mm”“mil”全转成毫米。特别注意“丝”这种行业黑话——在长三角模具厂指0.01mm,在珠三角电子厂可能指0.001mm,必须结合用户所在行业配置文件动态识别。
同义词消歧:用自建的《机械工程术语词典》替换模糊表述。“打孔”→“钻孔”,“割槽”→“铣槽”,“磨平”→“平面磨削”。词典里每个词条都标注适用工艺(车/铣/磨/冲压)和典型设备(CNC车床/加工中心/平面磨床)。
上下文锚定:这是最关键的一步。用户说“在盖板上开孔”,系统必须知道“盖板”指当前装配体里的哪个零件。我们的做法是在CAD软件启动时,扫描所有打开的文档,构建零件名称-路径-版本号的实时索引。当解析到“盖板”时,先查索引里是否有精确匹配项;没有则用Levenshtein距离匹配相似名(如“TopCover”和“CoverPlate”);最后 fallback 到人工选择。实测下来,93%的零件引用能自动锚定,剩下7%需要弹窗确认——这比让用户每次输入完整路径友好得多。
提示:别小看这四步清洗。我们早期跳过第3步,直接用通用NLP模型,结果“沉头孔”被识别成“沉降孔”(地质术语),生成了个带斜坡的诡异结构。后来把词典做到3.2万条工程术语,错误率才降到0.7%以下。
3.2 特征解析引擎:规则+知识图谱的双驱动模式
解析清洗后的文本,我们不用纯统计模型,而是构建了“规则引擎+知识图谱”的混合系统。以“M6×1.0内螺纹通孔”为例,解析流程如下:
步骤1:实体识别(NER)
spaCy模型标记出:[M6×1.0](螺纹规格)、[内螺纹](螺纹类型)、[通孔](孔类型)。注意“M6×1.0”不是简单字符串,而是被识别为ThreadSpec实体,携带属性{"standard": "ISO 261", "diameter": 6.0, "pitch": 1.0}。步骤2:关系抽取(RE)
规则引擎扫描邻近词,发现“内螺纹”和“通孔”共现,触发ThreadedHole关系模板。该模板定义:通孔必须有底孔直径(=公称直径-螺距=5.0mm)、攻丝深度(默认为螺纹公称长度1.5×直径=9mm)、倒角(C0.3)。步骤3:知识图谱查询
向Neo4j发送Cypher查询:MATCH (t:ThreadSpec)-[r:HAS_STANDARD]->(s:Standard) WHERE t.id='M6x1p0' RETURN s.name, s.document,返回ISO 261:2007标准文档链接。同时查MATCH (t:ThreadSpec)-[r:USED_IN]->(p:Process) WHERE t.id='M6x1p0' RETURN p.name,得到“攻丝”工艺节点,关联到机床参数库(M6螺纹推荐攻丝转速350rpm,进给量1.0mm/rev)。步骤4:CAD操作映射
最终生成API调用序列:# SOLIDWORKS API伪代码 sketch = part.CreateSketchOnPlane(plane, "ThreadHoleSketch") sketch.CreateCircle(0,0,0, 2.5) # 底孔直径5.0mm → 半径2.5mm feature = part.FeatureManager.CreateExtrudeCut(..., depth=9.0, throughAll=True) thread_feature = part.FeatureManager.CreateThreadFeature3( threadType=swThreadType_e.swThreadType_Cut, majorDiameter=6.0, pitch=1.0, length=9.0, standard="ISO 261" )
这套流程的好处是:每一步都可审计。工程师发现生成的螺纹孔深度不对,可以直接查知识图谱里“M6×1.0”的标准长度定义,或者改规则引擎里的ThreadedHole模板参数——而不是面对黑箱模型束手无策。
3.3 STEP生成与元数据绑定:让AI结果真正可用
生成STEP文件不是调用ExportToSTEP()那么简单。我们做了三件事确保下游可用性:
STEP Schema选择:强制使用AP242(而不是老旧的AP203),因为AP242支持GD&T公差、材料属性、装配关系等现代工程数据。导出前校验:如果用户输入含“IT7公差等级”,系统自动在STEP里添加
geometric_tolerance实体。元数据JSON生成:除了几何体,同步生成
cad_metadata.json,结构如下:{ "source_text": "M6×1.0内螺纹通孔,沉头直径12mm,深度6mm", "parsed_features": [ { "type": "threaded_hole", "parameters": {"major_dia": 6.0, "pitch": 1.0, "depth": 9.0}, "constraints": ["center_on_plane_XY", "distance_to_edge_15mm"] }, { "type": "counterbore", "parameters": {"diameter": 12.0, "depth": 6.0}, "references": ["threaded_hole_1"] } ], "standards_used": ["ISO 261:2007", "ISO 1101:2017"], "cad_software": "SOLIDWORKS 2023 SP5.0" }这个JSON是工程师的“操作说明书”,告诉他们AI到底干了什么、依据什么标准、哪些地方可以改。
STEP文件签名:用SHA256哈希值对STEP文件和JSON做数字签名,存入区块链存证(私有链)。某次客户质疑“你们生成的法兰厚度不对”,我们拿出签名哈希,对照原始输入文本和标准文档,3分钟内完成责任溯源——这比扯皮“是不是你们改过模型”高效多了。
注意:别忽略STEP文件大小。我们测试发现,AP242导出的STEP文件比AP203大3-5倍。为此专门做了轻量化处理:删除冗余的
product_definition_shape实体,合并重复的cartesian_point坐标,最终文件体积降低42%,但完全不影响CATIA或NX的读取精度。
4. 实操全流程:从零部署一个可运行的text-to-cad服务
4.1 环境准备:避开CAD二次开发的三大天坑
部署text-to-cad服务,最大的坑不在AI模型,而在CAD软件的二次开发环境。我们踩过的最痛的三个坑:
坑1:COM组件权限地狱
SOLIDWORKS API基于COM,Windows默认禁止远程激活。很多教程教你在DCOMCNFG里设置“默认身份验证级别”为“无”,这会导致安全漏洞。正确解法是:用PowerShell脚本精确配置:$swApp = New-Object -ComObject "SldWorks.Application" $swApp.Visible = $false # 关键:设置为“标识”而非“无” Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Ole" -Name "LegacyDisable" -Value 0 # 并在组策略里启用“计算机配置→管理模板→Windows组件→DCOM→启用DCOM”实测下来,这样配置后API调用成功率从63%提升到99.2%。
坑2:CAD进程僵死
每次调用API后不显式释放COM对象,SOLIDWORKS后台进程会越积越多,最终卡死。必须用try...finally确保释放:swApp = win32com.client.Dispatch("SldWorks.Application") try: model = swApp.ActiveDoc # 执行建模操作 finally: del swApp # 强制释放COM引用 gc.collect() # 触发Python垃圾回收坑3:字体与SHX文件缺失
热搜词里“cad shx 字体大全”刷屏不是没道理。当text-to-cad生成带注释的STEP时,如果CAD软件找不到gbcbig.shx(国标大字体),中文注释会显示为方块。解决方案:在部署服务器上预装全套SHX字体,并在SOLIDWORKS注册表里指定路径:HKEY_CURRENT_USER\Software\SOLIDWORKS\SOLIDWORKS 2023\Drawings\Fonts\FontDirectory = "C:\SWFonts"
4.2 核心服务搭建:轻量级但够用的技术栈
我们用Python+Flask搭了一个最小可行服务,总代码量<2000行,但支撑了8家客户的POC测试。架构图如下(文字描述):
[用户输入] → [Flask Web API] → [Text Preprocessor] → [NER Engine] → [Rule Engine + Neo4j] → [CAD API Bridge] → [STEP Generator] ↓ ↑ [JSON元数据] ←───────────────────────┘关键组件说明:
Flask API层:只暴露两个端点
/parse(纯文本解析,返回JSON结构)和/generate(生成STEP并返回下载链接)。不做前端,让客户自己集成到MES或PLM系统里。NER Engine:用spaCy v3.7训练的专用模型,训练数据来自12万条真实CAD工单(脱敏后)。特别优化了对尺寸链的识别,比如“Φ10±0.05”能准确分离出
diameter=10.0和tolerance=0.05。CAD API Bridge:这是最难写的部分。我们封装了SOLIDWORKS、Fusion 360、FreeCAD三套API调用,用工厂模式切换:
class CadBridgeFactory: @staticmethod def get_bridge(cad_type): if cad_type == "sw": return SolidWorksBridge() elif cad_type == "fusion": return Fusion360Bridge() else: raise ValueError(f"Unsupported CAD: {cad_type}")每个Bridge类都实现
create_part(),add_feature(),export_step()方法,确保上层逻辑不变。STEP Generator:用OpenCASCADE的STEPControl_Writer,但做了重要改造:禁用默认的
STEPControl_AsIs模式,强制用STEPControl_ManifoldSolidBrep确保B-rep精度;并注入自定义的StepAP242Writer类,把JSON元数据写入STEP的file_description字段。
部署命令极简:
# 安装依赖(含COM库) pip install flask spacy pythoncom pywin32 opencascade # 下载并加载spaCy模型 python -m spacy download zh_core_web_sm python -c "import spacy; nlp = spacy.load('zh_core_web_sm'); nlp.to_disk('./models/nlp_model')" # 启动服务(需在Windows Server上,因依赖COM) flask run --host=0.0.0.0:50004.3 首个任务实操:生成一个带安装孔的电机支架
我们以“生成电机支架”为例,走一遍完整流程。用户输入文本:
电机支架,铝合金6061-T6,尺寸200×150×10mm,四角各1个M6螺纹孔,孔中心距边缘20mm,表面喷砂+阳极氧化黑色步骤1:文本清洗
经四步清洗后变为:电机支架,铝合金6061-T6,尺寸200×150×10mm,四角各1个M6螺纹孔,孔中心距边缘20mm,表面喷砂+阳极氧化黑色
步骤2:NER解析
识别出实体:
Material: {"name": "6061-T6", "standard": "ASTM B209"}Dimension: {"length": 200.0, "width": 150.0, "height": 10.0}Hole: {"thread": "M6", "count": 4, "position": "corner", "offset": 20.0}SurfaceTreatment: {"process": ["sandblasting", "anodizing"], "color": "black"}
步骤3:规则引擎匹配
匹配到模板BracketWithCornerHoles,参数填充:
- 基座尺寸:200×150×10mm
- 材料:6061-T6(自动设置密度2.7g/cm³,用于质量计算)
- 孔布局:四角,坐标为(20,20), (20,130), (180,20), (180,130)
- 表面处理:在STEP的
product_definition_formation里添加surface_treatment属性
步骤4:CAD建模
调用SOLIDWORKS API:
- 创建新零件文档
- 绘制200×150矩形草图
- 拉伸10mm生成基座
- 在四角创建基准面,绘制Φ5.0底孔草图
- 拉伸切除生成通孔
- 对每个孔添加M6×1.0内螺纹特征
- 导出为AP242 STEP,同时生成
motor_bracket_metadata.json
步骤5:交付物
用户收到ZIP包,含:
motor_bracket.step(1.2MB,AP242格式)motor_bracket_metadata.json(2.1KB)verification_report.pdf(自动生成的尺寸校验报告,含所有孔位坐标截图)
实测耗时:从提交到下载完成,平均8.7秒。人工建模同类支架需28分钟。
5. 常见问题排查与独家避坑技巧
5.1 典型问题速查表
| 问题现象 | 可能原因 | 排查步骤 | 解决方案 |
|---|---|---|---|
| 生成的STEP文件在NX里打开全是破面 | AP203导出模式未关闭 | 1. 用STEP Parser工具检查FILE_SCHEMA字段2. 查看导出日志是否含 AP203字样 | 强制设置writer.SetSchemaIdentifier("AP242"),禁用所有AP203兼容选项 |
| 螺纹孔生成后没有螺纹特征,只有圆柱孔 | SOLIDWORKS Toolbox未激活 | 1. 检查SOLIDWORKS安装目录是否存在Toolbox文件夹2. 运行 swApp.GetAddInInfo("Toolbox")返回False | 在CAD Bridge初始化时调用swApp.LoadAddIn("sldtoolbox.dll"),并预加载GB标准件库 |
| 中文注释在STEP里显示为方块 | SHX字体路径未注册 | 1. 在SOLIDWORKS里新建工程图,尝试输入中文 2. 查看状态栏是否提示“字体未找到” | 将gbcbig.shx等字体复制到C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\chinese-simplified\,重启CAD |
| 多孔阵列位置偏移5mm | 坐标系原点未对齐 | 1. 检查生成的草图是否在Front Plane创建2. 查看API调用中 CreateSketchOnPlane的plane参数 | 在建模前强制设置part.Extension.SelectByID2("Front Plane", "PLANE", 0,0,0, False, 0, Nothing, 0) |
| JSON元数据里缺少公差信息 | 输入文本未明确公差等级 | 1. 检查NER是否识别出IT7等公差关键词2. 查看规则引擎是否启用默认公差模板 | 在Hole模板里添加fallback逻辑:若未指定公差,则按ISO 2768-mK标准自动添加±0.1mm |
5.2 我踩过的五个血泪坑与应对技巧
坑1:CAD进程内存泄漏导致服务崩溃
现象:连续处理100个请求后,SOLIDWORKS后台进程占用内存超2GB,API调用超时。
根源:每次Dispatch("SldWorks.Application")都会创建新进程,但del swApp无法彻底释放。
技巧:改用进程池管理,限制最大并发数为3,并在每次调用后执行os.system("taskkill /f /im SLDWORKS.exe")强制清理——虽然粗暴,但比服务宕机强。更优雅的解法是用comtypes替代pywin32,它支持CoUninitialize()显式卸载。
坑2:STEP文件在不同CAD软件里尺寸不一致
现象:同一STEP在SolidWorks里测量孔距是80.00mm,在CATIA里却是79.98mm。
根源:AP242标准允许不同厂商对B-rep容差有不同实现。
技巧:在导出前强制设置STEPControl_Writer.SetTolerance(0.001),并将所有尺寸参数乘以1.000001再写入——这能规避某些CAD内核的舍入误差。
坑3:用户输入“R5圆角”但生成的是C5倒角
现象:工程师说“圆角”,AI却生成了倒角特征。
根源:NER模型把“R5”误标为ChamferSpec(因训练数据里R/C混用太多)。
技巧:在规则引擎里加硬约束:当检测到R\d+格式且上下文含“圆角”“fillet”时,强制覆盖为FilletSpec,并丢弃所有ChamferSpec候选。
坑4:批量生成时STL文件命名冲突
现象:10个任务同时生成,都叫output.stl,后生成的覆盖前生成的。
根源:没做文件锁。
技巧:用UUID4生成唯一文件名,但保留可读性:motor_bracket_{uuid[:8]}_20240520_1422.stl,并在JSON元数据里记录原始任务ID。
坑5:客户说“生成效果不如人工”,其实是标准理解差异
现象:用户输入“表面粗糙度Ra3.2”,AI生成了Ra3.2标注,但客户想要的是Ra1.6(因实际加工能力)。
技巧:在服务首页加醒目提示:“text-to-cad严格遵循输入文本的工程标准,不进行工艺可行性判断。如需加工适配,请在输入中注明‘按车间现有设备能力,Ra上限Ra1.6’”。这既规避责任,又引导用户养成规范输入习惯。
最后分享个真实案例:某航天院所用我们的系统生成卫星支架,输入里写了“钛合金TC4,热处理状态STA”。系统自动生成了STEP,但没加热处理标注。工程师差点拿去投产——幸好我们在JSON元数据里埋了校验钩子:当材料为TC4且含“STA”时,自动触发
check_heat_treatment_annotation()函数,发现缺失立即报警并暂停导出。这个钩子救了他们300万模具费。所以记住:text-to-cad不是取代工程师,而是把工程师的经验,变成可执行、可审计、可传承的代码。