言到參數(shù)化CAD:text-to-cad技術(shù)路徑與實(shí)操避坑指南)
最近圈子里一直在聊 text-to-cad我原本以為又是那種“演示視頻很酷、落地全是坑”的概念但自己花了大半個(gè)月把主流幾條路徑都跑了一遍之后說(shuō)實(shí)話這條鏈路現(xiàn)在已經(jīng)比想象中成熟得多。你給模型一句“一塊 40×40×10 的板四角倒圓 R5中心開一個(gè)直徑 8 的通孔”它能直接給你產(chǎn)出一份參數(shù)化建模腳本再往后走還能導(dǎo)出 STEP 文件丟進(jìn) Fusion、SolidWorks 甚至加工編程軟件里繼續(xù)用。這篇文章就是想把 text-to-cad 背后的技術(shù)邏輯、能落地的工具鏈、還有我實(shí)際踩過(guò)的那些坑一次性講清楚。不管你是機(jī)械工程師、做非標(biāo)自動(dòng)化的還是自己玩 3D 打印的創(chuàng)客下面這套東西應(yīng)該都能直接拿來(lái)用。1. text-to-cad 到底在解決什么問(wèn)題1.1 傳統(tǒng) CAD 建模的三座大山先說(shuō)說(shuō) CAD 建模這行當(dāng)一直以來(lái)的難處。第一是學(xué)習(xí)曲線陡。新手從二維草圖開始要理解約束、尺寸驅(qū)動(dòng)、特征樹、父子關(guān)系這些概念沒有幾個(gè)月時(shí)間根本形成不了肌肉記憶。即便是有經(jīng)驗(yàn)的工程師面對(duì)一個(gè)稍微復(fù)雜的零件也得在草圖、拉伸、切除、倒角、陣列這些操作之間反復(fù)切換時(shí)間不知不覺就過(guò)去了。第二是重復(fù)勞動(dòng)嚴(yán)重。非標(biāo)自動(dòng)化行業(yè)里很多零件其實(shí)就是“底板開幾個(gè)孔、加幾個(gè)沉頭、倒個(gè)角”結(jié)構(gòu)大同小異但每來(lái)一個(gè)新項(xiàng)目就得重新畫一遍純體力活。第三是模型語(yǔ)言和自然語(yǔ)言之間的鴻溝。車間師傅嘴里說(shuō)的“一塊安裝板四角留孔中間讓開電機(jī)”在 CAD 軟件里要翻譯成一大堆幾何操作這個(gè)過(guò)程既依賴經(jīng)驗(yàn)也容易出錯(cuò)。text-to-cad 想解決的就是這三座大山讓“我想做一個(gè)什么樣的零件”這句話直接變成“一個(gè)可編輯、帶特征歷史、能導(dǎo)出標(biāo)準(zhǔn)格式”的 CAD 模型。它解決的不是“快速出一個(gè)好看的三維渲染圖”而是“快速出一個(gè)能進(jìn)下游流程的工程零件”。1.2 為什么強(qiáng)調(diào)是 CAD 而不是 3D很多人會(huì)把 text-to-cad 和 text-to-3D 混為一談但這兩者的目標(biāo)完全不一樣。text-to-3D 類工具比如生成 OBJ、GLB、glTF 模型輸出的是網(wǎng)格 Mesh由一堆三角面片組成看起來(lái)像那么回事但拿去做仿真分析、加工、裝配基本沒用。因?yàn)榫W(wǎng)格模型沒有幾何拓?fù)?、沒有參數(shù)化特征、沒有可編輯的建模歷史工程師拿到手里完全沒法改。text-to-cad 輸出的則是 CAD 原生數(shù)據(jù)參數(shù)化特征樹、B-rep 邊界表示、STEP 文件這些。你可以在軟件里選中一個(gè)“拉伸特征”直接修改尺寸可以重新定義倒角半徑也可以把整個(gè)模型丟進(jìn)有限元分析里劃分網(wǎng)格。這個(gè)區(qū)別是本質(zhì)性的。我見過(guò)不少團(tuán)隊(duì)一上來(lái)就試圖用文生圖式的方法做模型最后導(dǎo)出 STEP 一塌糊涂就是因?yàn)闆]分清這兩個(gè)方向。1.3 誰(shuí)最需要這個(gè)能力我大概梳理了一下下面這幾類人從 text-to-cad 里受益最大機(jī)械工程師做概念驗(yàn)證的時(shí)候需求剛提出不需要精細(xì)建模先出一個(gè)初稿放到裝配里看干涉這個(gè)場(chǎng)景下 text-to-cad 能把一小時(shí)的建模壓縮到幾分鐘。非標(biāo)自動(dòng)化設(shè)計(jì)的“標(biāo)準(zhǔn)底板、支架、法蘭”類零件結(jié)構(gòu)高度重復(fù)描述清楚就能生成。3D 打印創(chuàng)客經(jīng)常需要“一個(gè)能放手機(jī)的手機(jī)支架”不需要懂太多 CAD 命令直接自然語(yǔ)言生成再微調(diào)尺寸就能導(dǎo)出 STL 打印。企業(yè)內(nèi)部想做設(shè)計(jì)知識(shí)沉淀的團(tuán)隊(duì)把老師傅口中的經(jīng)驗(yàn)“翻譯”成參數(shù)化模板text-to-cad 可以作為模板生成的前置環(huán)節(jié)。2. 文本是怎么一步步變成 CAD 模型的2.1 三種三維表示方式先分清再談生成想要理解 text-to-cad 的技術(shù)路徑必須先搞清楚三維模型在計(jì)算機(jī)里常見的幾種表示方式。它們決定了“生成”這件事的難度和最終結(jié)果的可編輯性。第一種是 Mesh 網(wǎng)格。它就是一個(gè)三角形或四邊形面片的集合頂點(diǎn)和法線信息組成。游戲、渲染、3D 掃描都用這種格式。生成起來(lái)相對(duì)容易神經(jīng)網(wǎng)絡(luò)也比較擅長(zhǎng)預(yù)測(cè)這種離散的頂點(diǎn)坐標(biāo)但問(wèn)題是精度有限、沒有拓?fù)潢P(guān)系工業(yè)軟件很難直接操作。第二種是 CSG 構(gòu)造實(shí)體幾何。它用基本幾何體立方體、圓柱、球通過(guò)布爾運(yùn)算并、交、差組合出復(fù)雜形狀。OpenSCAD 就是典型的 CSG 建模工具。這種表示方式規(guī)則性強(qiáng)對(duì)大模型來(lái)說(shuō)生成對(duì)應(yīng)的腳本指令并不難而且結(jié)果天然是“可參數(shù)化”的。第三種是 B-rep 邊界表示也就是 CAD 工業(yè)里真正的“祖宗”。它記錄的是模型的表面、邊、頂點(diǎn)以及它們之間的拓?fù)溥B接關(guān)系STEP 格式的核心就是 B-rep。B-rep 可以直接用于 CAM 加工、CAE 仿真和裝配約束定義。但 B-rep 的生成難度遠(yuǎn)高于網(wǎng)格因?yàn)楸仨毐WC幾何的一致性、閉合性和拓?fù)湔_性這也是為什么真正端到端生成 B-rep 的方案至今還在實(shí)驗(yàn)室階段。2.2 大模型在這里面扮演什么角色大模型在 text-to-cad 里做的事情本質(zhì)上是“需求拆解”和“指令生成”而不是“幾何計(jì)算”。幾何計(jì)算始終是由 CAD 內(nèi)核或參數(shù)化建模庫(kù)去完成。你可以這樣理解大模型像一個(gè)很有經(jīng)驗(yàn)的工程師助理你告訴它“我要一塊安裝板”它嘴上說(shuō)著“好嘞”然后拿起筆寫出一段 CadQuery 腳本、一段 OpenSCAD 代碼或者一整套 FreeCAD 宏命令。真正把腳本執(zhí)行成三維實(shí)體的是這些工具自帶的幾何內(nèi)核。這種分工非常關(guān)鍵。因?yàn)楫?dāng)前大模型對(duì)“代碼生成”這件事的熟練度要遠(yuǎn)高于對(duì)“直接輸出坐標(biāo)和拓?fù)洹钡氖炀毝取W?LLM 寫一段 Python 代碼來(lái)生成一個(gè)長(zhǎng)方體它寫得又快又準(zhǔn)但如果讓它直接輸出一組點(diǎn)云、B-rep 面片關(guān)系錯(cuò)誤率會(huì)飆升。所以業(yè)界現(xiàn)在最務(wù)實(shí)的做法就是把 text-to-cad 問(wèn)題轉(zhuǎn)化成一個(gè)“text-to-code”問(wèn)題。2.3 當(dāng)前三條主流技術(shù)路徑基于上面的分工現(xiàn)在的 text-to-cad 解決方案基本可以分成三類路徑 ALLM 可編程 CAD 庫(kù)。代表是 CadQuery、Build123d 這類用 Python 描述參數(shù)化建模過(guò)程的庫(kù)。LLM 生成 Python 代碼庫(kù)負(fù)責(zé)執(zhí)行幾何運(yùn)算生成的結(jié)果可以直接導(dǎo)出 STEP 文件。這條路最成熟、可控性最強(qiáng)也是我這篇文章里重點(diǎn)推薦大家先嘗試的。路徑 BLLM 腳本化建模軟件。比如讓 LLM 輸出 OpenSCAD 的 .scad 腳本或者 FreeCAD 的 Python 宏然后用軟件的命令行工具批量執(zhí)行。這條路的好處是環(huán)境現(xiàn)成、無(wú)需寫太多膠水代碼壞處是建模能力受限于這些軟件的表達(dá)范圍。路徑 C端到端生成模型。一些研究項(xiàng)目嘗試讓神經(jīng)網(wǎng)絡(luò)直接輸出 CAD 建模操作序列或者 B-rep 數(shù)據(jù)比如把“生成一個(gè)特征樹”當(dāng)作序列生成任務(wù)來(lái)做。這條路的想象空間很大但目前穩(wěn)定性、泛化能力都還不夠一般只出現(xiàn)在論文里。我自己的判斷是路徑 A 是當(dāng)前性價(jià)比最高的落地方案。CadQuery 有完整的 API 文檔、活躍的社區(qū)、可靠的 STEP 導(dǎo)出能力而且它的建模方式本身就是“代碼即特征歷史”非常契合 LLM 的生成模式。3. 三條最實(shí)用的實(shí)操路線我都跑通了3.1 路線一CadQuery / Build123d —— 最推薦新手先跑通CadQuery 是一個(gè)基于 Python 的參數(shù)化建模庫(kù)底層使用 OpenCascade 幾何內(nèi)核。它的核心概念是“鏈?zhǔn)讲僮鳌睆囊粋€(gè)工作平面開始逐步執(zhí)行 box、fillet、hole、cut 這些命令每一步都像一個(gè)特征最后形成完整模型。對(duì) LLM 來(lái)說(shuō)這種鏈?zhǔn)矫畹拇a結(jié)構(gòu)非常容易生成因?yàn)槊恳徊蕉加忻鞔_的幾何語(yǔ)義。先看環(huán)境安裝。我建議用 Python 3.10 以上的環(huán)境直接 pip 安裝pip install cadquery安裝完成后我找一個(gè)非常典型的“底板打孔”需求來(lái)做測(cè)試。需求描述是一塊 40×40×10 的矩形板四角倒圓角 R5中心開一個(gè)直徑 8 的通孔。給 LLM 的提示詞只需要明確說(shuō)出這幾個(gè)尺寸和操作它生成的 CadQuery 代碼大致長(zhǎng)這樣import cadquery as cq plate_w 40.0 plate_d 40.0 plate_h 10.0 corner_r 5.0 hole_d 8.0 result ( cq.Workplane(XY) .box(plate_w, plate_d, plate_h) .edges(|Z) .fillet(corner_r) .faces(Z) .workplane() .hole(hole_d) ) cq.exporters.export(result, plate.step)這段代碼的邏輯非常清晰在 XY 工作平面上建立一個(gè) 40×40×10 的長(zhǎng)方體選中所有垂直方向的邊|Z倒 R5 圓角再選中頂面建立新的工作平面打一個(gè)直徑 8 的通孔最后導(dǎo)出 STEP。整個(gè)過(guò)程跑下來(lái)不到一秒鐘得到的模型完全可以導(dǎo)入到任何主流的 CAD 軟件里繼續(xù)編輯。這里要特別說(shuō)明一下“工作平面”的概念。CadQuery 里絕大多數(shù)操作都發(fā)生在某個(gè)工作平面上而 LLM 容易忽略的是平面的選擇和方向。比如你打算在頂面打孔就必須先用.faces(Z).workplane()切換到頂面否則默認(rèn)會(huì)在底面創(chuàng)建草圖。這類細(xì)節(jié)只能通過(guò)多跑幾次、多報(bào)錯(cuò)來(lái)積累經(jīng)驗(yàn)也是后面要講的提示詞工程的重點(diǎn)。Build123d 是 CadQuery 的進(jìn)化版語(yǔ)法上更貼近現(xiàn)代 Python 的開發(fā)習(xí)慣支持了更多的上下文管理器和更清晰的邊界表示。如果是從零開始學(xué)我建議直接學(xué) Build123d但 CadQuery 的社區(qū)資料更多遇到問(wèn)題更容易搜到答案。兩條路線的底層內(nèi)核一樣學(xué)一個(gè)另一個(gè)也能很快上手。3.2 路線二OpenSCAD —— 最輕量的快速出圖方案第二個(gè)路線是 OpenSCAD。它本身就是一個(gè)編程式建模軟件用類似函數(shù)式語(yǔ)言的語(yǔ)法描述 CSG 模型。LLM 生成 OpenSCAD 腳本的能力非常強(qiáng)因?yàn)樗恍枰幚韽?fù)雜的工作平面切換整個(gè)模型就是一堆基本幾何體的布爾運(yùn)算。還是那個(gè)底板打孔的例子的 OpenSCAD 版本// 一塊 40x40x10 的板四角倒圓 R5中心開直徑 8 通孔 $fn 64; x 40; y 40; z 10; r 5; d 8; difference() { linear_extrude(height z) { offset(r r) square([x - 2*r, y - 2*r], center true); } translate([0, 0, -1]) cylinder(d d, h z 2); }這段代碼的思路是先用offset(rr)把一個(gè)正方形往外擴(kuò) R5 實(shí)現(xiàn)圓角效果再用linear_extrude拉伸出 10 毫米的板子最后用difference()把中心的圓柱孔減掉。OpenSCAD 的建模思路確實(shí)很“程序員風(fēng)格”對(duì)機(jī)械結(jié)構(gòu)規(guī)則不強(qiáng)的用戶來(lái)說(shuō)非常友好。OpenSCAD 最方便的是支持命令行批處理。你把 LLM 生成的 .scad 文件保存下來(lái)可以直接在終端里渲染并導(dǎo)出 STLopenscad -o plate.stl plate.scad如果安裝了 OpenSCAD 的 nightly 版本還可以用-o plate.step直接導(dǎo)出 STEP 格式。不過(guò)從我的實(shí)測(cè)經(jīng)驗(yàn)看OpenSCAD 導(dǎo)出的 STEP 文件兼容性不如 CadQuery 導(dǎo)出的如果后續(xù)要進(jìn)專業(yè) CAD 軟件做復(fù)雜操作還是優(yōu)先選路線一。OpenSCAD 這條路特別適合 3D 打印場(chǎng)景。因?yàn)?STL 對(duì) 3D 打印來(lái)說(shuō)已經(jīng)足夠而且 OpenSCAD 的腳本文件小、執(zhí)行快改參數(shù)也特別直接。我經(jīng)常讓 LLM“把上面這個(gè)模型的壁厚改成 2 毫米加一個(gè)直徑 10 的卡扣孔”改幾個(gè)數(shù)字就能重新編譯導(dǎo)出。3.3 路線三FreeCAD 宏和商業(yè) AI 插件 —— 貼近傳統(tǒng)環(huán)境第三條路是在傳統(tǒng) CAD 軟件內(nèi)部直接做 text-to-cad。FreeCAD 本身有完整的 Python API你可以在 Python 控制臺(tái)里執(zhí)行一段宏代碼來(lái)創(chuàng)建實(shí)體。LLM 完全可以生成這段宏代碼然后在 FreeCAD 里執(zhí)行生成的模型會(huì)直接出現(xiàn)在特征樹里。一個(gè)最小例子是這樣import FreeCAD as App import Part doc App.newDocument() box Part.makeBox(40, 40, 10) hole Part.makeCylinder(4, 12, App.Vector(20, 20, -1)) shape box.cut(hole) obj doc.addObject(Part::Feature, Plate) obj.Shape shape doc.recompute()這個(gè)宏創(chuàng)建了一個(gè) 40×40×10 的方塊然后在中心2020-1位置創(chuàng)建一個(gè)半徑 4、高度 12 的圓柱用布爾差集挖出一個(gè)通孔。FreeCAD 執(zhí)行完這段代碼以后你可以在左側(cè)特征樹里看到這個(gè)“Plate”對(duì)象但是要注意這種純 Part 建模生成的模型在特征樹里并不是“草圖拉伸”那樣的參數(shù)化特征而是一個(gè)布爾運(yùn)算結(jié)果。想要真正可編輯還得在 FreeCAD 里用 Sketcher 和 PartDesign 工作臺(tái)操作復(fù)雜度會(huì)更高。商業(yè) CAD 軟件方面Autodesk Fusion 360 目前也加入了 AI 文本生成建模相關(guān)的探索功能PTC Creo 有一些基于生成式設(shè)計(jì)的 AI 輔助插件。這些商業(yè)工具的優(yōu)勢(shì)是和自家軟件深度集成生成的模型原生就是參數(shù)化特征改起來(lái)非常順。但問(wèn)題是它們大多是云服務(wù)或者封閉模型無(wú)法像 CadQuery 那樣在本地代碼層面做精細(xì)控制也不容易嵌入到你自己的自動(dòng)化流程里。所以我一般把商業(yè)插件定位成“個(gè)人快速嘗鮮”企業(yè)級(jí)的批量自動(dòng)化還是得靠開源工具鏈。4. 踩坑實(shí)錄從文本到可用零件中間隔著很多意外4.1 自然語(yǔ)言里全是“模糊詞”模型容易自由發(fā)揮最常見的坑是用戶描述里帶著大量行業(yè)黑話和隱含知識(shí)。比如“法蘭”“電機(jī)座”“加強(qiáng)筋”這些詞在不同行業(yè)里指代的結(jié)構(gòu)差別很大。LLM 如果不知道你默認(rèn)的是哪個(gè)標(biāo)準(zhǔn)就會(huì)按照訓(xùn)練數(shù)據(jù)里最常見的形態(tài)來(lái)生成結(jié)果往往不是你想要的。我的解決辦法是在提示詞里要求模型“先拆解需求再生成代碼”。具體來(lái)說(shuō)讓 LLM 先把模糊詞翻譯成明確幾何語(yǔ)義法蘭等于“一個(gè)圓盤 中心通孔 圓周陣列螺栓孔”加強(qiáng)筋等于“一個(gè)三角形板狀凸臺(tái)連接兩個(gè)主體面”。這一步非常重要相當(dāng)于把自然語(yǔ)言“翻譯”成工程設(shè)計(jì)語(yǔ)言然后再讓代碼生成準(zhǔn)確率會(huì)高很多。4.2 尺寸與單位的“幻覺”第二個(gè)坑是大模型會(huì)一本正經(jīng)地編造尺寸。你說(shuō)“一塊底板”它可能默認(rèn)給你生成一個(gè) 100×100×10 的板而實(shí)際上你心里想的是 50×30×2。更危險(xiǎn)的是單位CAD 圈有個(gè)老笑話一個(gè)螺絲的直徑到底是 5 毫米還是 5 英寸足以讓你在車間里追悔莫及。LLM 默認(rèn)的訓(xùn)練數(shù)據(jù)里英制公制混用它很可能在同一個(gè)模型里一會(huì)兒毫米一會(huì)兒英寸。我現(xiàn)在的做法是在提示詞里強(qiáng)制要求“所有尺寸必須顯式列出單位統(tǒng)一為毫米并且在代碼開頭用變量定義”。這樣即便模型默認(rèn)了某個(gè)尺寸你也能通過(guò)改代碼頂部的變量一次性修正。還有一個(gè)技巧是讓模型先生成一個(gè)“尺寸清單”像下面這樣根據(jù)需求請(qǐng)先給出一份尺寸方案 - 板長(zhǎng)40 mm - 板寬40 mm - 板厚10 mm - 圓角半徑5 mm - 通孔直徑8 mm 確認(rèn)無(wú)誤后再生成 CAD 代碼。這個(gè)小步驟表面上多了一次交互但實(shí)際能省下你檢查模型尺寸的大量時(shí)間。4.3 建模順序錯(cuò)亂特征樹直接廢掉LLM 生成代碼的時(shí)候經(jīng)常忽略特征順序。舉個(gè)例子“法蘭盤”應(yīng)該是先創(chuàng)建圓柱主體然后加外沿再打中心孔最后做螺栓孔陣列。但模型可能把倒角放到打孔之后導(dǎo)致倒角把孔的入口也一起倒了或者把陣列放在主體還沒完成之前導(dǎo)致特征引用失效。在 CadQuery 這類鏈?zhǔn)?API 里順序錯(cuò)了代碼可能直接報(bào)錯(cuò)也可能不報(bào)錯(cuò)但是結(jié)果跟你想要的不一樣。解決辦法是在提示詞里顯式聲明建模順序比如“請(qǐng)按照以下順序1. 創(chuàng)建主體特征2. 添加次級(jí)特征3. 倒角4. 打孔”。如果生成的代碼結(jié)果仍然不理想我會(huì)把當(dāng)前代碼丟回給模型告訴它“第 3 步的 fillet 應(yīng)該在第 4 步的 hole 之前請(qǐng)重寫”。這種“人機(jī)對(duì)話式修正”其實(shí)是 text-to-cad 最實(shí)用的工作模式不要指望一次生成就完美。4.4 導(dǎo)出兼容性與下游驗(yàn)證代碼能跑通、模型能顯示只是第一步。真正做機(jī)械設(shè)計(jì)的人都知道模型最終要拿去裝配、仿真、加工導(dǎo)出格式的兼容性才是命門。CadQuery 導(dǎo)出的 STEP 文件一般質(zhì)量很高但有時(shí)候倒角或者布爾運(yùn)算生成的邊面結(jié)構(gòu)非常復(fù)雜導(dǎo)入 SolidWorks 會(huì)報(bào)“無(wú)法修復(fù)實(shí)體”。OpenSCAD 生成的模型有時(shí)候是多個(gè)重疊實(shí)體沒有完全合并切片軟件能忍但 CAM 軟件不能忍。所以強(qiáng)烈建議每次生成模型以后不要只看預(yù)覽圖要實(shí)際導(dǎo)出 STEP 文件再導(dǎo)入一個(gè)你常用的 CAD 軟件做一次“實(shí)體檢查”。如果軟件提示“實(shí)體非流形”或“自相交”就回到代碼里檢查布爾運(yùn)算的順序或者嘗試用cq.Workplane.union()把多個(gè)實(shí)體合并成單一實(shí)體。4.5 常見問(wèn)題速查表我把這段時(shí)間反復(fù)遇到的幾個(gè)問(wèn)題整理成一張表方便你對(duì)照排查現(xiàn)象可能原因快速解法代碼直接報(bào)錯(cuò)CadQuery 版本太舊、API 改名升級(jí)到最新版把錯(cuò)誤信息原樣貼回 LLM 讓它自改生成了模型但尺寸離譜提示詞里沒給明確尺寸要求模型先輸出尺寸方案再生成代碼孔位偏了工作平面選錯(cuò)檢查.faces(Z)之類的面選擇表達(dá)式倒角后孔口變形倒角在打孔之后執(zhí)行調(diào)整特征順序先倒角后打孔導(dǎo)出 STEP 后軟件無(wú)法識(shí)別模型存在非流形幾何檢查布爾運(yùn)算是否完整合并必要時(shí)用union()OpenSCAD 導(dǎo)出的 STEP 質(zhì)量差OpenSCAD 內(nèi)核的 STEP 導(dǎo)出支持有限改用 CadQuery 導(dǎo)出或者直接用 STL 走 3D 打印5. 工具選型選對(duì)工具比寫對(duì)提示詞更重要5.1 主流工具橫向?qū)Ρ任矣靡粋€(gè)表格把目前能落地的幾條路線放在一起對(duì)比方便你按需選擇工具底層內(nèi)核輸出格式可編輯性學(xué)習(xí)曲線LLM 生成難度適合場(chǎng)景CadQueryOpenCascadeSTEP, STL, SVG高代碼即特征中低機(jī)械零件、需要進(jìn)專業(yè) CAD 的模型Build123dOpenCascadeSTEP, STL高現(xiàn)代 Python 風(fēng)格中低與 CadQuery 類似更推薦新項(xiàng)目OpenSCADCGALSTL, STEP中參數(shù)化 CSG低極低3D 打印、快速驗(yàn)證、簡(jiǎn)單結(jié)構(gòu)FreeCAD 宏OpenCascadeFCStd, STEP中等特征樹可編輯性一般高中需要留在 FreeCAD 生態(tài)內(nèi)操作商業(yè) CAD AI 插件各家自研原生格式很高完全參數(shù)化低低個(gè)人快速建模、云端協(xié)作從表格里能看出一個(gè)規(guī)律越“工業(yè)標(biāo)準(zhǔn)”的工具鏈LLM 生成起來(lái)的難度越低。因?yàn)橄?CadQuery 這類代碼庫(kù)的語(yǔ)法規(guī)范、API 明確訓(xùn)練語(yǔ)料里也足夠多模型不容易“發(fā)揮失?!?。真正難的是讓模型去操作 FreeCAD 那套龐大的 GUI 對(duì)象模型變量名冗長(zhǎng)、層級(jí)復(fù)雜報(bào)錯(cuò)信息又不友好。5.2 不同場(chǎng)景怎么選我的建議是按“最終交付物”來(lái)決定工具如果你最終要 3D 打印直接走 OpenSCAD。它生成 STL 最快切片軟件也認(rèn)。哪怕零件復(fù)雜一點(diǎn)只要不涉及嚴(yán)格的公差配合OpenSCAD 都?jí)蛴?。如果你要做一個(gè)機(jī)械零件后續(xù)還要進(jìn) SolidWorks 或 Fusion 360 做工程圖、裝配、仿真走 CadQuery 或 Build123d導(dǎo)出 STEP。這樣最穩(wěn)而且留給下游的工程師一個(gè)“干凈”的實(shí)體模型。如果你是個(gè)人愛好者想在自己的電腦上快速試試 text-to-cad 的完整流程又想盡量貼近傳統(tǒng) CAD 操作可以用 FreeCAD 宏。但它只適合“我自己用”的場(chǎng)景不太適合做成自動(dòng)化服務(wù)。如果你所在的公司有 Fusion 360 的云服務(wù)可以試試它自帶的 AI 生成功能但不要對(duì)復(fù)雜零件抱太高期待。商業(yè)插件目前的強(qiáng)項(xiàng)是生成“外觀類似”的概念模型參數(shù)準(zhǔn)確性還得人工復(fù)核。5.3 什么時(shí)候別用 text-to-cad這里說(shuō)點(diǎn)不那么熱門但很重要的判斷——text-to-cad 不是萬(wàn)能鑰匙。如果你要做的是一個(gè)多零件裝配體比如減速器、夾具總成需要嚴(yán)格定義零件間的配合關(guān)系、公差、表面粗糙度這些信息很難用自然語(yǔ)言描述清楚即便描述了 LLM 也很難在幾何上精確實(shí)現(xiàn)。又或者你的零件涉及復(fù)雜曲面比如葉輪、進(jìn)氣歧管這些需要專業(yè)的曲面造型工具和大量 CFD/CAE 驗(yàn)證text-to-cad 目前完全幫不上忙。還有一條紅線如果設(shè)計(jì)涉及強(qiáng)制性的行業(yè)標(biāo)準(zhǔn)比如汽車零部件的 PPAP、壓力容器的 ASME 規(guī)范你只能把 text-to-cad 生成的結(jié)果當(dāng)“靈感草稿”絕對(duì)不能直接進(jìn)正式流程。模型不懂標(biāo)準(zhǔn)的隱含要求也不會(huì)幫你做有限元分析它只負(fù)責(zé)把語(yǔ)言變成幾何。6. 我的工作流從一句話到可用的 STEP 文件最后分享一下我現(xiàn)在實(shí)際跑的完整流程供你參考。第一步我會(huì)把設(shè)計(jì)需求寫成一段“約束式描述”包括材料、大致尺寸、連接方式、需要避讓的空間。第二步把這段描述發(fā)給 LLM要求它先輸出“尺寸方案表”和“建模順序清單”這一步能過(guò)濾掉大量幻覺尺寸。第三步確認(rèn)沒問(wèn)題后讓 LLM 基于尺寸方案生成 CadQuery 代碼并且明確要求每個(gè)特征用中文注釋標(biāo)明對(duì)應(yīng)需求條目。第四步在本地執(zhí)行代碼導(dǎo)出 STEP 文件用 FreeCAD 快速打開檢查實(shí)體完整性和尺寸。第五步如果出現(xiàn)報(bào)錯(cuò)或幾何異常把錯(cuò)誤信息連同一句“請(qǐng)修復(fù)第 X 步的 Y 問(wèn)題”丟回給 LLM通常一輪就能改好。這五步走下來(lái)平均一個(gè)簡(jiǎn)單零件五分鐘以內(nèi)能出可用模型。相比以前打開 CAD 軟件、新建草圖、拉約束、做特征效率提升確實(shí)是數(shù)量級(jí)的。一個(gè)小技巧是讓 LLM 在生成代碼時(shí)給每個(gè)特征命名比如plate_body、corner_fillet、center_hole命名規(guī)范以后你甚至可以用代碼自動(dòng)生成工程圖、生成物料清單或者根據(jù)特征名批量修改設(shè)計(jì)。這個(gè)習(xí)慣一旦養(yǎng)成整個(gè)建模過(guò)程的可維護(hù)性會(huì)好很多。我個(gè)人體驗(yàn)下來(lái)text-to-cad 最有價(jià)值的地方不是幫你“一鍵出圖”而是把工程師從大量低級(jí)的重復(fù)操作里解放出來(lái)讓你把更多精力放在判斷“這個(gè)設(shè)計(jì)合不合理”“這個(gè)結(jié)構(gòu)能不能加工”上。工具永遠(yuǎn)只是在幫你把想法變成一個(gè)能繼續(xù)推敲的起點(diǎn)。