资讯动态

30分钟零基础用AI搭出三维CAD软件原型,工业软件的护城河正在被拆解?

发布时间:2026/9/16 3:19:50 来源:尧图企业网站定制
最近我干了一件挺疯狂的事用GPT-6就是这次带Astra交互模式的版本逼自己在30分钟里从零搭出一个能用的三维CAD软件原型。不是画个立方体那种教学demo而是带参数修改、布尔运算、正交与透视切换、还能导出STL文件的完整小工具。整个过程有惊喜也有翻车但最终桌面上的那个模型能转、能改、能导出的时候我自己都有点恍惚。先说背景。我所在的行当和工业软件打交道特别多平时接触的更多是工业相机镜头选型、设备参数计算这类“小而专”的工具链三维CAD是天天被它包围却很少有机会自己上手写。过去工业软件是个让人望而生畏的领域几何内核、约束求解、参数化建模、历史树随便一个词都够写几本书更别说一个人去碰。但这次用AI辅助开发我明显感觉到门槛在被某种力量一点点拆掉。我把整个过程、踩过的坑和思考都记在下面如果你是开发者、产品或者工业软件从业者这篇应该能给你一些不一样的启发。先放结论30分钟做出来的不是SolidWorks也不是CATIA它只是一个能在浏览器里跑起来的最小可行原型。但它证明了另一件事——一个人只要有清晰的架构意识配上足够强的AI辅助就能在半小时内撕开工业软件最外层的那道墙。1. 工业软件的护城河到底护住了什么1.1 CAD软件真实的核心壁垒是什么很多人以为三维CAD的难点在“画图”这是个巨大的误解。一个正经的CAD软件核心组件至少包括四层几何内核负责描述点、线、面、体的拓扑关系和数学表达。商用的Parasolid、ACIS开源的OpenCASCADE都是经过三十年算法迭代积累下来的“硬骨头”。约束求解器草图中的尺寸标注、平行、垂直、相切这些约束最后都要落到一个非线性方程组的求解上。参数化特征树每一个拉伸、倒角、阵列都不是只改网格顶点而是记录成一条操作历史改一个参数就要自动重建整条链。数据交换与兼容STEP、IGES、STL、原生格式以及大量下游CAM/CAE系统的集成都是靠几十年用户反馈堆出来的。这四层里随便拎出一层过去都够一个博士团队啃五年。再加上工业软件的用户对稳定性极其苛刻——制造现场的一个面倒圆算错可能直接报废一套模具——所以这个行业的护城河本质上是“数学功底 工程经验 用户场景数据”的三重叠加。1.2 为什么说“一个人”过去是个悖论我见过不少年轻的开发者想挑战工业软件第一反应都是“我要写一个几何内核”。结果通常是学了半年B-rep数据结构写了两千行代码最后连一个带圆角的盒子都显示不出来。问题不在于他们不聪明而在于工业软件是典型的“寒武纪式”复杂度。但这次实验让我意识到AI辅助开发改变了“入门成本”的分布。过去最贵的是“从零到能跑通一个最小闭环”这段路而现在这段路被压到了半小时。真正的分水岭从“会不会写代码”移向了“知不知道要什么、怎么拆解验证”。这也是我这次实验最想验证的东西。2. 动手之前我只给自己设了三个前提2.1 功能范围怎么划才不会30分钟翻车如果我说“用GPT做CAD”大概率会得到一个“做不了范围太大”的回答。所以第一步是狠狠裁剪需求。我把目标定义为不比功能比链路。只要能证明“建模-参数化-布尔运算-渲染交互-导出”这条基础链路是通的就算达成。最终锁定的功能清单只有六项创建三种基础实体长方体、圆柱体、球体支持对尺寸参数进行修改长宽高、半径、分段数支持布尔运算并集、差集支持鼠标旋转/平移/缩放以及正交透视切换支持STL文件导出有一个简单可视的侧边栏和属性面板这套范围说好听点叫“儿童CAD”说难听点就是个玩具。但它已经覆盖了一个三维CAD最小闭环的所有关键环节足够拿来做技术验证。2.2 技术栈为什么选Web而不是桌面我几乎没犹豫就决定了用Web技术栈TypeScript Vite Three.js。原因很现实Three.js帮我省掉了最底层的渲染矩阵、相机投影这些数学这正好是AI生成的强项不容易跑偏。TypeScript的类型约束对AI生成代码非常友好结构化错误信息可以快速反馈给AI修Bug。浏览器端的演示成本最低不用考虑安装和许可证30分钟实验的每一秒都很宝贵。工业软件正在加速Web化这个方向本身也不跑偏。2.3 时间切片是怎么排的30分钟必须切得极其细致。我给自己定的节奏是前5分钟环境骨架中间20分钟核心功能最后5分钟用来导出和修补交互问题。实际操作下来会有几分钟偏差但整体节奏是有效的。关键是每一分钟都不要浪费在“想”上所有决策在动手前就定完剩下的事交给“提示词生成→跑一下→报错再修”的循环。3. 30分钟实操我到底让GPT-6做了什么3.1 前5分钟初始化项目骨架不做多余动作实验开始时我从空目录出发直接在终端敲下初始化命令然后把需求丢给GPT-6要求它帮我生成一个支持Vite的TypeScript项目骨架装好Three.js及相关依赖并保证npm run dev能打开一个空白的3D场景页面。我的提示词是请帮我搭建一个TypeScriptVite项目使用Three.js作为渲染引擎入口页面显示一个带坐标轴的空白3D场景。依赖尽量精简只装three、vite、typescript这些必要的包。生成package.json、vite.config.ts、tsconfig.json、index.html和src/main.ts确保npm install和npm run dev后浏览器能直接看到场景。这步几乎没有难度GPT-6生成的代码一次跑通。值得说的是我想让AI顺带加上轨道控制器OrbitControls结果发现它默认用的是最新版本的导入路径好在我扫了一眼主文件顺手纠正了依赖路径。这里也提个醒不要盲目相信AI给你装的依赖版本尤其Three.js这种API变化比较频繁的库。3.2 中段15分钟Octahedra里的几何核心也是最容易出现分歧的地方接下来是整场实验最关键的环节——几何核心。我对GPT-6的约束是先不要碰B-rep这种重型数据结构用一个“轻量级CSG 三角形网格”的组合把布尔运算跑通。3.2.1 为什么我要用CSG而不是B-rep这地方需要一点点领域概念。计算机表示三维形体有两大流派B-rep边界表示用面、边、顶点以及它们之间的拓扑关系来描述实体精确、可参数化但实现复杂。CSG构造实体几何把基本体元通过布尔运算组合成复杂形状一棵树就能表达整个模型实现简单但直接编辑单个圆角或者斜切非常痛苦。成年人当然想要B-rep但30分钟实验里我明确要求GPT用CSG。原因是CSG的布尔运算有现成的Three.js CSG库能直接用而B-rep内核从零写压根不可能半小时跑通。如果你真想做生产级CAD后续可以把几何内核替换成OpenCASCADE的WASM版本但原型阶段CSG完全够用。3.2.2 核心提示词与生成结果我给GPT-6的这一段提示词是实现一个CSG工具类支持Box、Sphere、Cylinder三种基本体元提供union和subtract两个布尔操作。输入输出类型都用Three.js的BufferGeometry代码中设置容差为0.001用于判定两个面是否共面。请把代码放在src/csg.ts并附上每个函数的单测思路。这里我刻意提到了“容差”而且要求直接写在代码注释里。布尔运算在共面、相切这些边界情况下特别容易出现缝和破洞容差调太大会吞掉细节调太小又容易出数值问题。我让AI默认用0.001先跑后面再根据实际模型尺寸微调。GPT-6生成的代码效率不错直接用了three-bvh-csg这个库细看核心逻辑是BVH加速的体素化裁剪和我期望的经典CSG流程有差异但跑出来的效果没问题——我决定不纠结内部实现先让链路通起来。3.2.3 这段代码的真实面貌实际生成的核心代码大约两百行我抽一段示意import { BufferGeometry, Mesh, MeshStandardMaterial, BoxGeometry, SphereGeometry, CylinderGeometry, } from three; import { CSG } from three-bvh-csg; export type PrimitiveType box | sphere | cylinder; export function createPrimitive( type: PrimitiveType, params: Recordstring, number ): BufferGeometry { switch (type) { case box: return new BoxGeometry( params.width ?? 1, params.height ?? 1, params.depth ?? 1 ); case sphere: return new SphereGeometry( params.radius ?? 0.5, params.segments ?? 32, params.segments ?? 16 ); case cylinder: return new CylinderGeometry( params.radiusTop ?? 0.5, params.radiusBottom ?? 0.5, params.height ?? 1, params.segments ?? 32 ); default: throw new Error(unknown primitive type: ${type}); } } export function booleanUnion(a: BufferGeometry, b: BufferGeometry): BufferGeometry { const meshA new Mesh(a, new MeshStandardMaterial()); const meshB new Mesh(b, new MeshStandardMaterial()); const result CSG.union(meshA, meshB); return result.geometry; } export function booleanSubtract(a: BufferGeometry, b: BufferGeometry): BufferGeometry { const meshA new Mesh(a, new MeshStandardMaterial()); const meshB new Mesh(b, new MeshStandardMaterial()); const result CSG.subtract(meshA, meshB); return result.geometry; }这段代码能跑但有个隐患每次布尔运算都创建了新的Mesh和Material如果之后做的特征很多内存会涨得很快。我当时心里记下这个点但30分钟实验不允许我立刻优化所以先留着后面在避坑部分专门说。3.3 中段5分钟参数化特征树这个词才是“配叫CAD”的门槛如果只是能创建和布尔运算那和Three.js官方示例里的CSG demo没区别。这次实验里我最看重的一个模块其实是“参数化特征树”。我向GPT-6提的需求是我需要一个FeatureManager类每个Feature包含类型、参数和操作顺序修改参数时自动重建整棵特征树。支持addFeature、removeFeature、updateFeature这几个方法并提供getMesh来拿到最终合并后的BufferGeometry。请用TypeScript实现放到src/featureManager.ts。这一步的意义在于它模拟了真实CAD软件的“历史记录”机制。只要用户改了第一个长方体的宽度后面的布尔结果就会自动跟着重建。这不像直接改网格顶点而是往“建模逻辑”层面走了一步。GPT-6生成了一个树形结构每个节点保存基元参数和布尔运算类型根节点保存结果。它用递归方式实现rebuild先求叶子节点对应的几何然后按树的顺序做布尔并或差。思路是对的唯一的问题是它对“相减顺序”处理得比较笨——A减去B和B减去A结果完全不同它最初默认的是后加入的特征减先加入的特征和直觉相反。我看了一眼测试输出让AI把“减法顺序”改成按用户期望“原始实体-刀具实体”它很快修正了。3.4 交互和视图比想象中顺利交互这块我让AI把OrbitControls接入场景然后用Raycaster实现点击选中物体再在旁边加一个gizmo工具条支持切换旋转、平移。视图方面就是透视相机和正交相机的切换。提示词在main.ts中集成OrbitControls实现鼠标旋转、平移、缩放。另加一个“点击选中”功能鼠标点击3D场景中的物体物体高亮并显示在右侧属性面板中。面板提供宽、高、深、半径等字段修改后实时更新FeatureManager参数并重建模型。这段生成起来很顺因为Three.js生态里OrbitControls和Raycaster都是成熟APIAI训练语料充足。不过有两个小坑一是Raycaster需要传入相机的投影矩阵和屏幕坐标二是在正交相机和透视相机之间切换时如果不重新计算相机的宽高比画面会拉伸变形。这两处都是我自己扫代码时发现的GPT-6并没有主动暴露。3.5 最后5分钟导出STL和应急Bug修复STL导出没有悬念Three.js的STLExporter直接可以用。我让AI加了一个“导出STL”按钮调用导出器并把结果下载到本地。真正需要应急处理的是两个Bug第一个是布尔差运算在特定角度下会产生破面。排查后发现是因为圆柱体默认分段数只有16曲面逼近精度不够。我在创建圆柱时把分段数参数暴露出来并提醒AI把默认值调到48。第二个是参数面板修改值时重建了整棵树导致选中状态丢失。AI最初的方案是重建后重新执行一次Raycaster射线检测但这个方案依赖鼠标位置结果不稳定。我改让它用“物体名称特征ID”的映射关系重建后直接按ID重新绑定选中状态。这个修复花了大概一分半正好在30分钟的最后阶段完成。4. 不只是生成代码真正的掌控力还是在自己手里4.1 我的角色不是“打字员”而是“总建筑师”这次实验里有一个特别重要的感受GPT-6确实很强但它本身没有判断力。它不知道“先做CSG而不是B-rep”是合理的工程折中也不知道“特征树要能支持参数回退”才是CAD的核心价值。这些决策全部来自我作为人的领域判断。如果把这次开发比作盖房子AI是施工队我至少需要扮演“总建筑师”和“监理”两个角色。建筑师负责画总体蓝图、定结构体系监理负责抽查那些“看起来很美好”的代码是否真的满足验收标准。提示词写得再花哨如果架构本身是坏的最后得到的只是更高效的错误实现。4.2 提示词的本质是“需求规格说明书”很多人管提示词叫“咒语”我不同意。它更像你写给外包公司的需求规格说明书。写得越精确对方的交付越接近预期。我自己在实践里总结了一套模板告诉AI“你是什么组件”角色与边界告诉AI“输入输出是什么”接口契约告诉AI“验收标准是什么”测试条件或性能预期告诉AI“你不需要做什么”避免AI自作聪明加上一堆额外功能在这次实验里每次我给出非常明确的接口和验收标准GPT-6的“一次通过率”会高一大截。相反如果我写“做一个三维CAD”它给出的东西肯定是空中楼阁。4.3 AI对工业软件生态的真实冲击不在代码而在试错成本这次实验让我强烈意识到AI释放的并不是“人人能写工业软件”的幻象而是“低成本试错”的真实能力。做一个对标SolidWorks的完整商业软件依然需要大团队和长周期。但做一个“给特定产线做参数化选型小工具”或者“针对某种异形夹具做快速布尔建模”的垂直应用以前需要至少一个月的原型验证现在一两天就能跑通。就像工业相机镜头选型软件这种细分工具过去只有大厂愿意做因为研发成本收不回来现在一个懂光学、懂产线的人配上AI辅助完全有动力自己去写一套。这才是护城河真正被“撕开”的位置。5. 一个人做工业软件还需要提前躲开哪些坑5.1 第一个大坑盲目信任AI生成的三维几何数学AI生成的几何算法最常见的毛病就是“边界情况没处理”。比如两个体完全共面时布尔运算会失败旋转角度算到接近180度时方向可能突变相机near/far平面距离设置不当会引发深度裁剪。这些问题都不属于“语法错误”AI自己也很难发现。我的经验是在所有几何计算相关模块里优先写单元测试。测试不要求覆盖全部边界但至少要覆盖“正常情况”“退化情况”“超大数值情况”三种。比如布尔运算就测“两个圆柱完全不相交”“完全包含”“部分相交”三个用例能让AI自己暴露大量隐性Bug。5.2 第二个大坑性能来得快去得也快原型跑一个小时没问题不代表模型复杂后还能流畅运行。我在实验里用了一个20x20的球体做布尔测试结果一次布尔差运算吃掉了几百兆内存。排查发现Three.js CSG库在处理大量三角形时做了体素化的预处理这类库在小模型场景很爽但到了工业级动辄几十万面的模型就吃不消了。如果你的目标真的朝生产级走建议第一优先考虑WASM版的OpenCASCADE或者在更底层用C写几何内核再通过WebAssembly落到浏览器里。CSG库只适合做最小验证不适合做产品底座。5.3 第三个大坑提示词中的“隐性上下文”往往决定成败有一次我给GPT-6说“加一个圆角”结果它在我预期之外的地方处理了一堆方案改几何体、加材质、加灯光甚至试图把圆角做成一个独立的实体。事后复盘是因为我没有交代“圆角”在CSG表达里属于高级特征目前系统不支持。AI只能从字面理解它并不知道“当前系统能力边界”。所以我现在习惯在提示词里加一句“不要做什么”把当前架构不允许的功能提前划掉。这一招能省下大量来回沟通的时间。5.4 常见问题速查表我把这次实验以及平时用AI写工程软件时最常遇到的现象、原因和处理方式整理成了一张表方便你直接参考现象真正的原因我的处理经验布尔运算后模型有破洞或裂缝容差设置不合理或网格分段数太低把默认分段数调高到48以上容差按模型尺寸的千分之一设置修改参数后模型位置乱跳特征树重建顺序不对或变换矩阵被重复叠加检查每个Feature是否保存了独立的Transform禁止在重建时修改全局矩阵相机切换后画面拉伸变形正交相机没有同步aspect比例和视野每次切相机时都重新设置aspect、left、right、top、bottomRaycaster选中不准确没有把鼠标坐标转换为NDC坐标使用(mouseX / width) * 2 - 1这类标准转换公式AI生成代码“语法全对但逻辑不对”缺少明确的验收标准提示词里给出单测输入和期望输出让AI按测试写代码性能下降得很诡异每个布尔操作都在堆上创建新Mesh引入对象池或复用临时Mesh操作完及时释放6. 实验之后我对“撕开护城河”的真实看法我很难说这次30分钟实验已经把工业软件的护城河“完全摧毁”了。它还是一个非常初级的原型既没有尺寸标定也没有装配约束更不用说工程图、制造工艺这些下游环节。市场里的商业软件几十年积累下来的稳定性、兼容性和生态真不是半小时能追上的。但撕开它一层外皮我觉得是做到的了。过去想验证一个CAD产品想法可能要花三个月写一个原型结果发现方向错了三个月白费。现在这个周期被压缩到30分钟意味着那些原本因为试错成本太高而不敢做的尝试都变得可以做了。这件事对行业的影响远比“AI能写代码”本身要大。如果你也想做类似的实验我最后送你一个小技巧用“验收驱动”的方式写提示词。每次让AI做某个功能不要只说“帮我做一个导出按钮”而是说“帮我加一个导出STL的按钮点击后下载文件文件名以当前时间戳命名且导出后的文件能通过CAD软件重新打开”。当验收标准物理存在时AI生成的东西会扎实得多你也才能保住自己作为建筑师的节奏感。等到我真的把那个“能转、能改、能导出”的模型端到端跑通的那几秒还是忍不住激动了一下。虽然它离工业级还差着十万八千里但那种一个人也敢伸手摸一摸护城河的感觉确实和以前不一样了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价