ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

text-to-cad 实战:从自然语言到 STEP/STL 参数化建模全流程

text-to-cad 实战:从自然语言到 STEP/STL 参数化建模全流程 1. 从一段文字到三维实体text-to-cad 到底在解决什么问题第一次听到 text-to-cad 这个词很多人会下意识觉得它离自己很远像是实验室里的概念演示。但如果你真正在机械设计、建筑建模或者工业零件开发的一线待过就会明白这个方向戳中的是一个极其现实的痛点从需求描述到可用的三维模型之间横着一条又长又费力的手工链路。传统流程是什么样的客户或者产品经理给你一段文字需求比如“一个外径 80mm、内径 40mm、厚度 12mm 的带四个安装孔的圆盘法兰”你需要打开 CAD 软件手动画草图、拉伸、打孔、倒角再导出成 STEP 或者 STL 交给下游。整个过程熟练工也要十几分钟复杂一点的零件动辄半小时起步。而 text-to-cad 想做的事情就是把这段文字直接变成可用的 CAD 文件跳过中间所有手工建模步骤。这件事的价值不在于“炫技”而在于它把重复性极高的参数化建模工作自动化了。你想想一个项目里可能有几十上百个标准件、连接件、支架类零件它们的几何结构高度相似只是尺寸参数不同。如果每次都要手动建模那纯粹是在消耗工程师的时间。text-to-cad 的核心逻辑就是用自然语言描述几何特征和尺寸约束由程序解析后生成对应的三维模型最终输出 STEP、GLB、STL 等通用格式。适合关注这个方向的人其实比想象中多。做机械设计的工程师可以用它快速生成标准件库做 3D 打印的玩家可以用它把脑子里的想法快速变成 STL 文件做工业软件开发的人可以把它集成到自己的产品里作为参数化建模的底层能力甚至做建筑和室内设计的人也能用它快速生成一些规则几何体的初步模型。关键词里出现的 STEP、GLB、STL 这三个格式恰好覆盖了工业制造、Web 展示和 3D 打印三个主要应用场景这也说明 text-to-cad 的定位是通用的不是只服务于某一个垂直领域。但这里要先泼一盆冷水text-to-cad 不是万能的。它擅长的是规则几何体、参数化零件、标准结构对于自由曲面、复杂有机形态、需要大量艺术判断的模型目前的技术水平还远远不够。所以你在评估这个方向的时候首先要搞清楚自己的需求落在哪个区间。如果你要做的是一个带复杂曲面的汽车外形那 text-to-cad 暂时帮不了你但如果你要做的是一个带孔、带槽、带倒角的机械零件那它就能派上大用场。2. 拆解 text-to-cad 的技术链路文字是怎么变成三维模型的2.1 自然语言解析从“人话”到结构化参数整个 text-to-cad 流程的第一步是把一段自然语言描述解析成结构化的几何参数。这一步听起来简单实际上是最容易出问题的环节。因为人说话是模糊的而 CAD 建模需要精确的数值和明确的几何关系。举个例子你说“一个长方形的板子上面有几个孔”这句话对人来说很容易理解但对程序来说“几个”是几个“孔”是通孔还是盲孔孔径多大分布在什么位置这些信息如果缺失程序就没法生成准确的模型。所以实际可用的 text-to-cad 系统通常要求输入描述具备一定的规范性或者通过多轮交互来补全缺失参数。目前主流的技术方案有两种。一种是基于规则模板的解析也就是预先定义好一套描述语法比如“生成一个[形状]长[数值]mm宽[数值]mm高[数值]mm在[位置]打[数量]个直径[数值]mm的孔”。用户按照这个模板填写程序用正则表达式或者简单的语法分析器提取参数。这种方案的好处是稳定可控坏处是灵活性差用户必须学会这套“机器能听懂的话”。另一种是基于大语言模型的解析。把用户的自然语言描述丢给语言模型让它输出结构化的 JSON 或者类似格式的参数列表。这种方案灵活度高用户可以用日常语言描述但稳定性是个大问题。语言模型可能会理解错尺寸单位可能会漏掉关键约束甚至可能“幻觉”出用户根本没提到的特征。所以在实际工程中通常会把两种方案结合起来用语言模型做初步解析再用规则引擎做校验和补全。注意如果你打算自己搭建 text-to-cad 流程不要一上来就追求“完全自然语言”。先从结构化模板开始把生成链路跑通再逐步引入语言模型来提升灵活性。这样出问题的时候你能快速定位是解析环节的问题还是建模环节的问题。2.2 几何建模引擎参数怎么变成实体参数解析出来之后下一步是调用几何建模引擎来生成三维实体。这一步是整个链路里技术门槛最高的部分因为它涉及到实体建模、布尔运算、网格生成等一系列计算几何的核心算法。目前可选的建模引擎大致分两类。一类是工业级的 B-rep 建模内核比如 OpenCASCADE、Parasolid、ACIS。这类引擎的特点是精度高、支持复杂的布尔运算和倒角圆角操作生成的模型可以直接导出 STEP 格式用于工业生产。另一类是网格建模方案比如用 OpenSCAD 的思路做 CSG构造实体几何运算或者用 trimesh 这类库直接操作三角网格。这类方案的好处是轻量、开源、容易集成但精度和功能上不如工业级内核。选择哪种方案取决于你的目标输出格式。如果你最终要的是 STL 文件用于 3D 打印那网格建模方案就足够了因为 STL 本身就是三角网格格式。但如果你要的是 STEP 文件用于后续的 CNC 加工或者装配设计那就必须用 B-rep 内核因为 STEP 格式需要精确的边界表示网格模型转 STEP 会丢失大量几何信息。这里有一个很多人踩过的坑用 OpenSCAD 生成模型后直接导出 STEP。OpenSCAD 本身只支持网格输出导出的 STEP 实际上是三角网格的封装虽然文件扩展名是 .step但里面的几何信息是网格而不是精确曲面。这种文件在后续的 CAD 软件里打开时可能会出现无法编辑、无法做布尔运算的问题。正确的做法是如果你需要 STEP 输出从一开始就用 OpenCASCADE 或者类似的 B-rep 内核来建模。2.3 格式导出STEP、GLB、STL 各自的使用场景text-to-cad 的输出格式选择直接决定了生成模型能用在什么地方。这三个格式不是随便选的它们各自对应不同的下游需求。STEP 是工业制造领域的通用交换格式全称是 Standard for the Exchange of Product Data。它的核心优势是保留了精确的几何信息包括曲面、边界、拓扑关系。你用 text-to-cad 生成一个 STEP 文件可以直接导入 SolidWorks、UG、CATIA 等主流 CAD 软件继续做装配、出工程图、生成加工代码。但 STEP 的缺点是文件体积大而且不同软件对 STEP 的兼容性有差异有时候会出现破面或者丢失特征的问题。GLB 是 glTF 格式的二进制版本主要用于 Web 展示和实时渲染。它的优势是文件小、加载快、支持材质和动画。如果你想把生成的模型嵌入到网页里做在线预览或者放到 AR/VR 场景里展示GLB 是最合适的选择。但 GLB 不保留精确的几何信息它本质上是一个三角网格加上材质贴图不能用于后续的工程编辑。STL 是 3D 打印领域的事实标准全称是 Stereolithography。它只包含三角网格的顶点和法向量信息不包含颜色、材质、单位。STL 的优点是几乎所有 3D 打印机和切片软件都支持缺点是精度受网格密度影响而且不同软件对 STL 的单位理解不一致有时候会出现模型尺寸差 10 倍的情况。格式核心用途几何精度文件体积可编辑性STEP工业制造、CAD 交换精确 B-rep大高GLBWeb 展示、AR/VR三角网格小低STL3D 打印三角网格中等低提示在实际项目中建议同时输出多种格式。比如生成一个零件后同时导出 STEP 给工程师、GLB 给市场部做展示、STL 给 3D 打印验证。这样一份输入可以服务多个环节效率提升非常明显。3. 动手搭建一个最小可用的 text-to-cad 流程3.1 环境准备选对工具链比写代码更重要在动手之前先把工具链选清楚。这一步看起来是准备工作实际上决定了后面开发效率的高低。我见过太多人一上来就闷头写代码写到一半发现选的开源库不支持某个关键功能不得不推倒重来。如果你用 Python 做开发核心的几何处理库推荐这几个。OpenCASCADE 的 Python 绑定是 pythonocc-core功能最全支持 B-rep 建模和 STEP 导出但安装比较麻烦在 Windows 上需要 conda 环境。trimesh 是纯 Python 的网格处理库安装简单支持 STL、GLB、OBJ 等格式的读写适合做轻量级的网格建模。numpy-stl 更轻量只做 STL 读写适合只需要 STL 输出的场景。cadquery 是基于 OpenCASCADE 的高层封装API 设计得很优雅用起来像写脚本一样自然非常适合做参数化建模。如果你用 JavaScript 或者 TypeScript可以考虑 opencascade.js它是 OpenCASCADE 的 WebAssembly 版本可以在浏览器里直接做 B-rep 建模。还有 three.js 配合 CSG 库可以做简单的网格布尔运算适合做 Web 端的轻量级应用。我的建议是如果你要做的是工业级应用需要 STEP 输出那就用 Python cadquery pythonocc-core 的组合。如果你要做的是 Web 端的快速原型只需要 GLB 或者 STL 输出那就用 JavaScript opencascade.js 或者 three.js。不要试图用一种方案解决所有问题根据你的目标输出格式来选工具。3.2 从一句描述到第一个模型完整代码走一遍下面用一个具体的例子把整个流程走一遍。假设我们要生成一个带四个安装孔的圆盘法兰外径 80mm内径 40mm厚度 12mm安装孔直径 8mm分布在直径 60mm 的圆周上。首先安装依赖。用 cadquery 的话直接 pip 安装就行pip install cadquery然后写生成脚本import cadquery as cq import math # 参数定义 outer_dia 80.0 inner_dia 40.0 thickness 12.0 hole_dia 8.0 hole_pcd 60.0 hole_count 4 # 创建基础圆环 flange ( cq.Workplane(XY) .circle(outer_dia / 2) .circle(inner_dia / 2) .extrude(thickness) ) # 在圆周上打安装孔 for i in range(hole_count): angle 2 * math.pi * i / hole_count x (hole_pcd / 2) * math.cos(angle) y (hole_pcd / 2) * math.sin(angle) flange ( flange.faces(Z) .workplane() .center(x, y) .hole(hole_dia) ) # 导出 STEP flange.val().exportStep(flange.step) # 导出 STL flange.val().exportStl(flange.stl)这段代码的逻辑很直接先用两个圆做差集得到圆环截面拉伸成实体然后在顶面上按圆周分布打孔。cadquery 的 API 设计让整个过程读起来几乎就是建模步骤的自然描述。跑完这段代码你会得到两个文件flange.step 和 flange.stl。STEP 文件可以导入 SolidWorks 或者 FreeCAD 继续编辑STL 文件可以直接丢进切片软件做 3D 打印。3.3 把自然语言接进来用大模型做参数提取上面的例子里参数是硬编码的。要让它变成真正的 text-to-cad需要把自然语言描述解析成这些参数。这里用一个简单的方案调用大语言模型的 API让它输出 JSON 格式的参数。import json import openai def parse_description(description): prompt f 从下面的描述中提取几何参数输出 JSON 格式。 需要的字段outer_dia, inner_dia, thickness, hole_dia, hole_pcd, hole_count。 如果某个字段没有提到设为 null。 描述{description} response openai.ChatCompletion.create( modelgpt-4, messages[{role: user, content: prompt}] ) return json.loads(response.choices[0].message.content) # 测试 desc 一个外径80mm、内径40mm、厚度12mm的圆盘法兰四个直径8mm的安装孔分布在直径60mm的圆周上 params parse_description(desc) print(params)这个方案的关键在于 prompt 的设计。你需要明确告诉模型输出哪些字段、什么格式、缺失值怎么处理。实际使用中还要加一层校验检查数值是否在合理范围内检查孔的数量和分布是否冲突检查内外径关系是否合理。这些校验逻辑看起来繁琐但能避免大量“模型生成了一个内径大于外径的圆环”这种低级错误。注意大语言模型输出的数值单位可能不统一。有时候它会输出“80”而不是“80mm”有时候会把毫米和厘米搞混。所以在解析之后一定要做单位归一化处理统一转换成毫米。这个坑我踩过不止一次生成的模型尺寸差了 10 倍打印出来才发现。4. 实测中暴露的问题与应对策略4.1 几何有效性校验生成的模型为什么打不开text-to-cad 生成模型后最常见的问题不是模型形状不对而是模型文件本身无效。具体表现包括STEP 文件导入 CAD 软件后报错、STL 文件切片时出现破面、GLB 文件在浏览器里显示为空白。这些问题的根源通常在于几何有效性。布尔运算之后可能产生自相交的面、零厚度的壁、重复的顶点这些在数学上都是无效的几何体。虽然建模引擎在生成时会尽量保证有效性但在参数极端或者运算复杂的情况下仍然会出问题。应对策略是在导出之前做一次几何校验。cadquery 和 pythonocc-core 都提供了有效性检查的方法# 检查实体是否有效 if not flange.val().isValid(): # 尝试修复 flange flange.clean() if not flange.val().isValid(): raise ValueError(生成的几何体无效请检查参数)clean()方法会尝试合并重复顶点、修复微小面片、移除退化边。实测下来大部分布尔运算产生的几何问题都能被clean()修复。但如果参数本身就不合理比如孔径大于外径那clean()也救不了必须在参数校验阶段就拦截掉。另一个常见的坑是 STL 导出的精度设置。默认的线性偏差和角度偏差可能太大导致曲面看起来像多边形。对于 3D 打印来说这会导致打印出来的圆柱面有明显的棱角。解决办法是在导出时指定更小的偏差值flange.val().exportStl(flange.stl, tolerance0.01, angularTolerance0.1)tolerance控制线性偏差单位是毫米angularTolerance控制角度偏差单位是弧度。这两个值越小网格越密文件越大。对于一般的 3D 打印tolerance0.01和angularTolerance0.1是一个比较平衡的选择。4.2 参数冲突与边界情况那些让程序崩溃的输入自然语言描述里经常出现参数冲突或者边界情况如果不做处理程序要么崩溃要么生成一个完全错误的模型。举几个我实际遇到过的例子。有人说“一个壁厚 2mm 的管子外径 4mm”这算下来内径就是 0mm实际上是一个实心圆柱但描述里说的是“管子”。程序如果直接按外径减壁厚算内径会得到一个零半径的圆布尔运算直接报错。正确的做法是检测到内径小于等于零时自动调整为实心圆柱并给出提示。还有人说“在直径 100mm 的圆盘上打 20 个直径 10mm 的孔均匀分布”。算一下20 个孔分布在直径 100mm 的圆周上相邻孔的中心距大约是 15.7mm而孔径是 10mm孔与孔之间的壁厚只有 5.7mm。如果孔径再大一点孔就会相交布尔运算会产生复杂的自相交几何体。这种情况下程序应该检测到孔间距过小给出警告或者自动调整孔径。边界情况的处理没有通用方案需要根据你的具体应用场景来定。但有一条原则是通用的在参数解析之后、建模之前加一层参数校验和自动修正逻辑。校验规则包括尺寸是否为正数、内外径关系是否合理、孔间距是否大于最小壁厚、长宽高比例是否在合理范围内。这些规则看起来简单但能拦截掉 80% 以上的异常输入。4.3 从 STL 到 STEP 的格式转换陷阱关键词里有一个“sw中stl转stp”这恰好是 text-to-cad 流程中一个高频需求。很多人用 text-to-cad 生成了 STL 文件但下游需要 STEP 格式于是想直接把 STL 转成 STEP。这里有一个必须说清楚的事实STL 转 STEP 不是格式转换而是逆向工程。STL 是三角网格STEP 是精确 B-rep两者之间的信息量差距巨大。把 STL 转成 STEP本质上是从网格重建曲面这个过程叫做“逆向建模”或者“曲面重建”。SolidWorks 确实提供了 STL 转 STEP 的功能但它的原理是先导入 STL 网格然后用曲面拟合算法重建曲面最后导出 STEP。这个过程有几个问题。第一重建的曲面精度取决于网格密度和拟合算法对于复杂曲面重建结果可能和原始设计有偏差。第二重建后的 STEP 文件里曲面是拟合出来的不是原始设计参数后续编辑会很困难。第三对于包含大量平面和圆柱面的机械零件重建效果通常不错但对于自由曲面重建效果可能很差。所以正确的做法是如果你需要 STEP 输出从一开始就用 B-rep 建模引擎生成 STEP不要先生成 STL 再转换。text-to-cad 流程里如果你用 cadquery 或者 pythonocc-core直接导出 STEP 就行不需要经过 STL 中转。只有当你拿到的是一个已有的 STL 文件没有原始参数时才需要考虑逆向转换。提示如果你手头有一个 STL 文件需要转成 STEP可以试试 FreeCAD 的“Part”工作台里的“创建形状从网格”功能或者用 MeshLab 做网格清理后再导入 CAD 软件做曲面重建。但要做好心理准备这个过程可能需要大量手动调整。5. 把 text-to-cad 用在实际项目里的经验5.1 批量生成标准件效率提升最明显的场景text-to-cad 最直接的价值体现在批量生成标准件上。我做过一个项目需要生成一套包含 50 多个不同规格的法兰、支架、连接件的模型库。如果手动建模一个人至少需要两三天。用 text-to-cad 流程把参数整理成表格写一个循环批量生成半小时就跑完了。具体做法是把每个零件的参数写在一行 CSV 里然后用脚本读取 CSV逐行调用建模函数导出对应的 STEP 和 STL 文件。文件名按照“零件类型_规格”的格式自动命名方便后续检索。import csv with open(parts.csv, r) as f: reader csv.DictReader(f) for row in reader: # 根据 row 里的参数生成模型 model generate_part(row) # 导出文件 filename f{row[type]}_{row[spec]} model.val().exportStep(foutput/{filename}.step) model.val().exportStl(foutput/{filename}.stl)这个流程的关键在于参数表的整理。你需要把每个零件的几何特征抽象成一组参数确保不同规格之间只有数值差异没有结构差异。如果某个零件的结构和其他不一样那就需要单独处理不能硬塞进同一个模板里。实测下来批量生成标准件的效率提升在 10 倍以上。而且因为参数是表格管理的修改规格只需要改表格里的数字重新跑一遍脚本就行不需要手动调整模型。这对于需要频繁修改规格的项目来说价值非常大。5.2 和现有 CAD 工作流的衔接text-to-cad 生成的模型最终要融入到现有的 CAD 工作流里。这里有几个衔接点需要注意。第一个衔接点是坐标系和单位。text-to-cad 生成的模型默认在原点单位是毫米。但不同的 CAD 软件默认单位可能不同SolidWorks 默认是毫米UG 默认是毫米但有些软件默认是英寸。导入的时候一定要确认单位设置否则会出现模型尺寸差 25.4 倍的情况。第二个衔接点是特征树的保留。用 B-rep 内核生成的 STEP 文件导入 SolidWorks 后通常会变成一个“输入实体”没有特征树不能直接编辑草图或者拉伸参数。如果你需要后续编辑要么在 text-to-cad 阶段就保留参数化脚本需要修改时重新生成要么在导入后手动识别特征重建特征树。前者适合参数经常变的场景后者适合只需要微调的场景。第三个衔接点是装配关系。text-to-cad 生成的是单个零件如果你需要做装配需要在 CAD 软件里手动添加配合关系。目前 text-to-cad 还很难自动生成装配约束因为这涉及到零件之间的空间关系和运动学约束比单个零件的几何生成复杂得多。5.3 性能优化当参数规模上去之后text-to-cad 流程在参数规模小的时候跑得很顺畅但当参数规模上去之后性能问题就会暴露出来。我遇到过的情况是生成一个包含 200 个孔的板子布尔运算跑了将近 10 分钟最后还因为内存不足崩溃了。性能瓶颈通常出现在布尔运算环节。每次打孔都是一次布尔减运算200 个孔就是 200 次布尔运算。OpenCASCADE 的布尔运算虽然功能强大但性能不是它的强项。优化思路有几个。第一个思路是合并布尔运算。不要逐个打孔而是把所有孔的形状合并成一个复合形状然后一次性做布尔减运算。cadquery 支持这种操作# 不推荐逐个打孔 for x, y in hole_positions: plate plate.faces(Z).workplane().center(x, y).hole(hole_dia) # 推荐合并后一次性打孔 holes cq.Workplane(XY) for x, y in hole_positions: holes holes.union(cq.Workplane(XY).center(x, y).circle(hole_dia / 2)) plate plate.cut(holes)第二个思路是降低网格精度。如果最终输出是 STL不需要太高的精度可以在建模阶段就用较粗的网格设置减少计算量。第三个思路是分块处理。如果零件特别大可以把它拆成几个部分分别生成最后再合并。这样每次布尔运算的规模都控制在可接受的范围内。注意性能优化要在功能正确的前提下进行。我见过有人为了提速把布尔运算的容差调大结果生成的模型出现了肉眼可见的缝隙。这种优化得不偿失宁可多等几分钟也不要生成一个有缺陷的模型。6. 关于 text-to-cad 的几个常见误解6.1 它不是“万能建模器”很多人对 text-to-cad 的期待是随便说一句话就能生成任何想要的模型。这个期待目前不现实。text-to-cad 擅长的是规则几何体、参数化零件、标准结构。对于自由曲面、有机形态、艺术造型它目前的能力非常有限。你让它生成一个“带四个孔的圆盘”它能做得很好。你让它生成一个“流线型的汽车外壳”它基本上无能为力。这不是技术不够先进的问题而是自然语言本身就不适合描述复杂曲面。你很难用文字精确描述一个自由曲面的形状因为曲面的信息量太大了文字的信息密度远远不够。所以正确的定位是text-to-cad 是一个参数化建模的自动化工具不是替代 CAD 工程师的万能工具。它解决的是重复性劳动的问题不是创造性的问题。6.2 它和“AI 建模”不是一回事市面上有些产品宣传“AI 建模”听起来和 text-to-cad 很像但实际上是两回事。AI 建模通常指的是用深度学习模型从图像或者点云重建三维模型比如用多视角照片生成网格模型。这种技术的输出通常是三角网格精度有限主要用于视觉展示和游戏资产。text-to-cad 的核心是参数化建模输出的是精确的几何体可以用于工业生产。两者的技术路线完全不同应用场景也不同。AI 建模适合做视觉资产text-to-cad 适合做工程零件。不要把它们混为一谈。6.3 它不会取代 CAD 工程师每次聊到 text-to-cad总有人问这是不是意味着 CAD 工程师要失业了我的判断是不会。text-to-cad 取代的是重复性的建模操作不是工程师的判断力和创造力。一个 CAD 工程师的核心价值不在于会画图而在于知道该画什么、为什么这样画、怎么画最合理。这些判断需要工程经验、材料知识、加工工艺知识不是一段文字描述能替代的。text-to-cad 把工程师从重复劳动中解放出来让他们有更多时间做真正需要思考的事情。而且 text-to-cad 生成的模型最终还是要由工程师来审核、修改、优化。一个没有工程背景的人即使能用 text-to-cad 生成模型也不知道这个模型能不能加工、强度够不够、装配有没有干涉。所以 text-to-cad 是工程师的工具不是工程师的替代品。7. 我在这条路上踩过的几个坑第一个坑是单位问题。早期做 text-to-cad 的时候没有做单位归一化结果用户输入“直径 8 厘米”程序按 8 毫米处理生成的模型小了 10 倍。3D 打印出来才发现一个本该拳头大的零件变成了指甲盖大小。后来在参数解析之后加了一层单位识别和转换逻辑支持毫米、厘米、米、英寸的自动识别和转换这个问题才解决。第二个坑是浮点数精度。布尔运算对浮点数精度很敏感有时候两个面明明应该重合但因为浮点误差差了 0.0001mm导致布尔运算失败。解决办法是在建模时设置合理的容差并且在布尔运算之前做一次“吸附”操作把距离小于容差的顶点合并。OpenCASCADE 提供了ShapeUpgrade_UnifySameDomain工具来做这件事效果很好。第三个坑是文件命名。批量生成的时候如果文件名没有规范化生成几百个文件之后根本分不清哪个是哪个。后来统一用“类型_规格_版本”的格式命名比如“flange_D80_d40_t12_v1.step”一眼就能看出是什么零件、什么规格。这个习惯看起来小但在实际项目中能省大量时间。第四个坑是异常处理。早期脚本没有做异常捕获遇到一个参数错误的零件整个批量生成就中断了。后来在循环里加了 try-except把出错的零件记录下来继续生成后面的最后统一输出错误报告。这样即使有个别零件参数有问题也不会影响整体进度。8. 后续可以继续深挖的方向text-to-cad 目前还处于早期阶段有很多可以继续探索的方向。一个方向是多轮交互式建模。用户先给一个粗略描述程序生成初步模型然后用户通过对话逐步细化参数程序实时更新模型。这种方式比一次性输入所有参数更符合人的思维习惯。另一个方向是和约束求解器结合。现在的 text-to-cad 主要处理尺寸参数还很少涉及几何约束和装配约束。如果能引入约束求解器让用户用自然语言描述“这个孔和那个边对齐”“这两个面平行”那就能处理更复杂的建模需求。还有一个方向是和加工工艺结合。生成的模型不仅要几何正确还要可加工。比如检测到孔径太小、深径比太大就提示用户这个孔无法用标准钻头加工。这种工艺知识如果能集成到 text-to-cad 流程里对工程师的帮助会更大。我个人在实际操作中的体会是text-to-cad 的价值不在于完全自动化而在于把建模的门槛降低、效率提高。它让不熟悉 CAD 的人也能快速得到可用的三维模型让熟悉 CAD 的人从重复劳动中解放出来。这个方向值得持续关注但也不要期待它一夜之间改变一切。踏踏实实把参数解析、几何生成、格式导出这三个环节做好就已经能解决很多实际问题了。
返回列表