这次我们来看一个很直接的参数化 CAD 项目:Arcad。它的重点不是“又造了一个三维建模软件”,而是把整个建模流程放进浏览器,并且标题写得很清楚:免费、无需注册。对很多只想快速验证一个尺寸关系、或者给学生上一节参数化设计课的人来说,这种工具比安装动辄几个 GB 的桌面 CAD 轻太多了。
Arcad 来自 Hacker News 的 Show HN 板块,属于开发者公开分享的作品,它的挂载点是“browser”。判断一个浏览器端参数化 CAD 值不值得试,通常要看三点:第一,启动门槛高不高;第二,参数化建模流程是否完整;第三,数据能不能方便地导出。这篇文章就围绕这三点展开,先梳理它能做什么、适合谁,然后给出一套从浏览器环境自检到参数化建模测试、再到导出和自动化的完整验证流程。
如果你只关心“能不能直接在浏览器里建模、要不要注册、导出方便吗”,可以直接看第 1 节和第 5 节。如果你想把它接到自己的自动化工具链里,重点看第 6 节的 Playwright 示例和第 7 节的性能观察方法。下面我们不聊概念,直接进入正题。
1. Arcad 核心能力速览
在开始部署和测试之前,先把 Arcad 的项目定位、核心能力边界和硬件需求整理成一张表。表中的内容一部分来自标题里给出的公开信息,一部分属于同类浏览器 CAD 工具的通用判断,实际使用时要结合你打开页面后看到的版本界面为准。
| 项目 | 说明 |
|---|---|
| 项目名称 | Arcad |
| 项目类型 | 浏览器端参数化 CAD 工具 |
| 来源 | Hacker News Show HN 公开分享 |
| 价格与注册 | 标题明确:免费,无需注册 |
| 安装方式 | 无需安装,打开浏览器访问项目页面即可 |
| 跨平台能力 | Windows、macOS、Linux 等能用浏览器的平台均可尝试 |
| 核心建模概念 | 参数化建模:通过草图、尺寸约束和参数值驱动模型更新 |
| 硬件要求 | 推荐开启浏览器 GPU 硬件加速;浏览器需支持 WebGL/WebGL2 |
| 数据保存方式 | 需要实测确认:刷新后数据是否保留、是否依赖本地 IndexedDB 或云端存储 |
| 导出格式 | 需要实测确认:常见 CAD 交换格式以页面导出菜单为准 |
| 官方 API | 项目标题未提供接口说明,需查看项目文档 |
| 原生批量任务 | 标题未提供批量能力;可通过浏览器自动化脚本间接实现 |
| 适合场景 | 快速原型、教学演示、轻量化设计、参数化 CAD 工具链评估 |
这张表里,“免费”“无需注册”“浏览器运行”是标题直接给出的信息;“WebGL 依赖”“导出格式待确认”“API 未提供”是更稳妥的判断,避免把没有依据的能力写死。
2. 适用场景与使用边界
Arcad 适合什么人群?我的判断是:它非常适合四类人。第一类是学生和自学者,想理解“参数化建模到底是什么意思”,又不想被大型 CAD 软件的安装和授权流程劝退;第二类是老师,需要在一台公用电脑上打开浏览器就能演示草图、尺寸约束、拉伸模型和参数联动,不需要给每台机器装软件;第三类是快速原型设计的个人用户,只需要验证一个机械结构的基本尺寸关系,不要求做复杂装配和工程出图;第四类是工具链开发者,想在网页里嵌入一个轻量 CAD 前段,或者用自动化脚本批量测试参数改变对模型的影响。
但它也有明确的使用边界。从标题看,Arcad 主打的是浏览器内的参数化 CAD,这种轻量工具通常不适合处理大型装配体、有限元仿真、复杂 CAM 加工等重型工程场景。如果你的项目已经有几十万个面、上千个零件,浏览器端工具大概率会遇到卡顿和交互延迟,这种场景应该交给 SolidWorks 这类专业桌面软件。另外,浏览器 CAD 工具如果是纯前端实现,你的模型数据可能只保存在浏览器本地;如果它调用了云端服务,那么模型文件可能需要上传到服务器解析。使用前必须确认隐私模型,别把未公开的产品图纸直接传上去。
使用边界里还必须强调合规问题。无论 Arcad 是否有导出功能,任何涉及企业设计图纸、专利结构、未公开产品的参数化模型,上传前都需要经过公司合规确认。如果模型里引用了第三方素材,要确认这些素材的使用许可是否允许修改和商用。个人项目也要注意:不要把他人受版权保护的模型直接导入后改名商用。免费无注册不等于没有授权限制,这是使用任何在线 CAD 工具都适用的安全底线。
3. Arcad 环境准备与前置条件
Arcad 只要求浏览器,但“浏览器能用”和“浏览器能流畅跑 3D 建模”是两回事。启动前做一次环境检查,能省掉后面大量排错时间。
3.1 浏览器选择与建议
推荐使用最新版 Chrome 或 Edge。Chromium 系浏览器对 WebGL 的支持最稳定,GPU 加速也很容易开启。Firefox 和 Safari 也能用,但如果你在页面上遇到纹理闪烁或者模型不显示,优先换 Chrome 再测试一次。从现有经验看,浏览器 CAD 工具 80% 的显示问题都出在 WebGL 环境上,先把内核和显卡驱动更新到最新,通常能解决大部分黑屏和白屏。
3.2 WebGL 与 GPU 硬件加速自检
浏览器端 3D 建模工具一般通过 WebGL/WebGPU 渲染。Arcad 具体依赖哪个版本,以页面加载时的提示为准,但提前自检能帮你定位问题。这里给一个最简单的检测页面,保存为 HTML 文件后用浏览器打开即可:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>浏览器 3D 能力自检</title> </head> <body> <h3>WebGL / WebGL2 检测</h3> <p id="result">正在检测...</p> <script> const result = document.getElementById('result'); let text = ''; try { const canvas = document.createElement('canvas'); const gl1 = canvas.getContext('webgl'); const gl2 = canvas.getContext('webgl2'); text += 'WebGL: ' + (gl1 ? '支持' : '不支持') + '<br>'; text += 'WebGL2: ' + (gl2 ? '支持' : '不支持 / 不可用') + '<br>'; } catch (e) { text += '检测异常: ' + e.message + '<br>'; } result.innerHTML = text; </script> </body> </html>如果页面显示 WebGL2 不支持,常见提示是 “this browser supports webgl 2, but it is disabled or unavailable”。这种提示通常不是浏览器版本太老,而是硬件加速被关闭或显卡驱动不兼容。解决路径是:打开浏览器的chrome://gpu(Chrome)或edge://gpu(Edge),查看 WebGL 相关项是否显示 “Hardware accelerated”;然后在浏览器设置里搜索“硬件加速”,确保开关已打开,再重启浏览器。
3.3 网络和账号准备
Arcad 标题写的是 free and no signup,所以正常情况下不需要注册账号。不过在线工具首次打开必须能从网络加载前端资源,如果公司网络有防火墙拦截,或者浏览器无法访问项目页面,就会一直停在加载状态。另外,如果页面内置了在线模型库或者远程存储,访问这些服务时也需要网络能连通。建议在正式使用前先准备好一个干净的测试环境:一台开了硬件加速的电脑、一个最新版 Chrome、一条稳定的网络,这样就足够开始测试了。
4. Arcad 启动方式与服务访问
Arcad 的启动方式和传统软件完全不同:没有安装包,没有注册向导,打开浏览器进入项目页面就能看到界面。这是它最吸引人的地方,也是最大的不确定来源——所有功能都受浏览器环境限制。
4.1 在线访问流程
从标题信息看,Arcad 的入口是浏览器直接访问。正常打开后应该能看到一个 3D 视口,以及用于建草图、拉伸、修改参数的工具栏。界面设计可能因版本调整而不同,这里不写死按钮名称。如果你打开页面后立即出现 WebGL 报错,先回到 3.2 节做环境自检,而不是怀疑项目本身有问题。
4.2 自托管运行(如果项目提供本地版本)
Hacker News 上的 Show HN 项目有时会附带开源仓库。如果 Arcad 开源并提供本地运行方式,那么项目 README 里通常会提供一套基于 Node 的前端启动流程。由于我没有拿到 Arcad 的仓库地址和具体命令,这里只给一套通用的本地前端启动模板,注意替换项目实际路径:
# 通用本地开发启动流程,实际命令以项目 README 为准 git clone <项目仓库地址> cd <项目目录> npm install npm run dev启动后浏览器一般会访问http://localhost:5173或 README 里指定的端口。如果npm install报依赖冲突,优先检查 Node.js 版本是否满足项目要求;如果运行时报端口占用,修改 Vite/Webpack 配置里的端口即可。这套流程只是一个参考模板,不适用于所有项目,但如果你习惯前端工具链,能很快判断 Arcad 能不能在自己机器上跑起来。
4.3 关于“无注册”的实际体验
“no signup”和“完全离线”是两件事。有些在线工具不需要注册,但会把数据保存在浏览器本地存储里;有些则会把计算任务放到后端。从用户角度看,无注册的好处是第一步就能进入建模界面,不需要先准备账号,适合临时性、演示性的快速使用。但代价通常是没有云同步、没有跨设备项目管理。如果你计划长期使用,强烈建议养成手动导出模型文件的习惯,避免浏览器缓存被清理后数据丢失。
5. Arcad 参数化建模功能测试与效果验证
这里给出一套通用验证流程。每一步都明确测试目的、操作步骤、预期结果和失败排查方向,方便你拿到 Arcad 后按顺序跑一遍。
5.1 首次打开与空环境验证
测试目的:确认页面能正常加载,3D 视口能渲染。
操作步骤:打开 Arcad 项目页,等待模型视口加载完成;尝试旋转、缩放、平移视角;打开浏览器控制台,观察有没有红色报错。
预期结果:视口有网格或坐标轴,视角操作流畅,控制台没有影响渲染的异常。
失败排查:如果视口空白,先检查 WebGL2 是否可用;如果页面提示需要激活硬件加速,按 3.2 节处理;如果控制台出现跨域或资源加载失败,通常是网络原因。
5.2 基础草图与拉伸测试
测试目的:验证最基本的建模链路是否存在且可用。
操作步骤:新建一个设计文件,在草图平面里画一个矩形或圆形;尝试给图形标注尺寸;使用拉伸工具把草图变成实体。
预期结果:草图可以绘制和标注尺寸,拉伸后生成三维实体,实体可以在视口中正常显示。
失败排查:如果无法标注尺寸,可能是参数化约束系统还没加载完整,或者当前进入的不是草图模式;如果拉伸后实体不显示,检查图形是否闭合。参数化 CAD 的草图必须闭合才能拉伸成实体,这是通用规则。
5.3 参数驱动与尺寸联动测试
测试目的:验证“参数化”是不是真的有效,而不只是能画图。
操作步骤:给一个拉伸体的宽度或高度添加一个参数名;修改参数值;观察模型是否根据新数值自动重建。
预期结果:修改参数后,模型形状自动更新,不需要重新画草图。这是判断参数化 CAD 核心能力的关键测试。
失败排查:如果修改参数后模型没变化,可能原因有三个:尺寸没有正确绑定到参数;需要手动触发重建;当前版本只支持参数化建模的界面呈现而不支持完整联动。可以重启页面再测一次,如果仍然没有联动,就要降低期待,把它当作轻量 3D 建模工具而不是完整参数化 CAD。
5.4 保存、刷新与恢复测试
测试目的:确认 Arcad 有没有数据持久化能力。
操作步骤:建一个小模型,保存文件或项目;刷新浏览器页面;重新打开项目,观察模型是否还在。
预期结果:模型能被恢复,或者你能通过本地的工程文件重新打开。如果刷新后模型丢失,说明数据只保存在内存里,必须手动导出。
失败排查:如果页面提示保存但找不到保存位置,检查浏览器下载目录;如果是云端保存但需要登录,就会和“no signup”矛盾,此时优先使用导出文件作为备份。这个测试最重要,直接决定你能不能把 Arcad 用于实际项目。
5.5 导出格式与互操作性测试
测试目的:确认模型能否离开 Arcad,进入其他工具链。
操作步骤:完成一个简单拉伸体;打开导出菜单;尝试导出标准交换格式,例如 STEP、STL、DXF、OBJ 等(以实际菜单为准);用其他 CAD 或三维软件打开导出文件。
预期结果:能导出至少一种通用格式,导出文件可以被其他工具打开,模型几何没有明显丢失。
失败排查:如果导出格式单一或导出文件损坏,可以调整模型复杂度再试。注意,不同版本的 Arcad 支持的导出格式可能不同,不能因为当前版本没有某个格式,就认为后续版本也不会有。
6. 自动化验证与批量操作思路
从标题给出的公开信息看,Arcad 没有说明是否提供官方 API 或插件接口。所以如果你想做批量测试,最稳妥的方案是通过浏览器自动化脚本驱动页面操作。这种方案不依赖官方开放接口,通用性很强。
6.1 为什么需要自动化
如果你只是偶尔画一个零件,手工操作完全够用。但如果你是老师,要给学生生成 20 个不同尺寸的案例模型;或者你是结构工程师,需要一个工具批量评估参数变化对模型体积、干涉的影响,手工点击就太慢了。用 Playwright 或 Puppeteer 驱动浏览器,可以批量打开页面、修改参数、截取模型视图、记录导出文件,并通过日志判断每一轮任务是否成功。
6.2 Playwright 通用自动化模板
这里用 Python Playwright 给一个通用示例。它不能直接当成 Arcad 的官方 SDK 使用,但可以作为自动化验证的起点。实际运行时,需要根据 Arcad 页面的按钮文本和输入框结构调整选择器。
import asyncio from playwright.async_api import async_playwright async def check_arcad_page(url: str): async with async_playwright() as p: # 有头模式便于观察;批量验证可以换 headless=True browser = await p.chromium.launch(headless=False) page = await browser.new_page(viewport={"width": 1600, "height": 900}) # 收集控制台日志和页面报错 page.on("console", lambda msg: print("console:", msg.text)) page.on("pageerror", lambda err: print("pageerror:", err)) await page.goto(url, wait_until="domcontentloaded") await page.wait_for_timeout(5000) # 截图存档,用于人工比对渲染结果 await page.screenshot(path="arcad_home.png") # 这里可以继续做参数修改、导出等操作 # 示例:查找输入框并填入参数值(选择器需要按实际页面调整) # width_input = page.locator("input[name='width']") # await width_input.fill("30") # await page.wait_for_timeout(2000) # await page.screenshot(path="arcad_after_change.png") await browser.close() if __name__ == "__main__": asyncio.run(check_arcad_page("https://example.com/arcad"))运行前需要安装库:
pip install playwright playwright install chromium如果页面加载较慢,可以把wait_for_timeout改成等待某个建模按钮出现,这样更稳定。如果你看到控制台频繁输出 WebGL 相关报错,说明测试环境的 GPU 加速没有开启,批量任务的表现会很不稳定。
6.3 批量参数验证思路
批量验证的核心是把参数放入配置文件,循环执行相同操作。比如想验证五组长宽高比例对模型体积的影响,可以把参数集中到一个 JSON 文件,脚本逐组读值、逐组建模截图:
{ "cases": [ {"name": "case_a", "width": 20, "height": 30}, {"name": "case_b", "width": 35, "height": 60}, {"name": "case_c", "width": 50, "height": 40}, {"name": "case_d", "width": 60, "height": 90}, {"name": "case_e", "width": 80, "height": 50} ] }每跑完一组就输出一个结果文件和截图。批量任务最容易出现的问题是页面崩溃或元素选择器失效,所以脚本里必须加异常捕获和失败重试逻辑。对于 30 组以内的参数验证,这个方案足够稳定;超过 100 组时,建议考虑是否真的需要浏览器自动化,还是切换到原生桌面 CAD 的脚本接口效率更高。
6.4 如果 Arcad 提供了官方接口
如果后续 Arcad 公布了自己的 JavaScript SDK 或后端 API,优先使用官方接口,而不是继续操作 DOM。官方接口通常更稳定,能直接读取模型参数、触发重建、导出数据,性能也更好。在这篇文章写作时,我没有从标题和 Show HN 信息里看到明确接口说明,所以只能提供浏览器自动化思路。实际使用前,建议打开项目页面看有没有“开发者”“API”“文档”入口。
7. 资源占用与性能观察
浏览器 CAD 工具的性能表现更容易受环境因素影响。这里不给出具体的显存或内存数字,因为不同模型、不同浏览器、不同显卡的差异很大,以下是一套可以执行的观察方法。
7.1 观察 CPU、内存和 GPU 占用
在 Chrome 中按Shift+Esc打开浏览器自带任务管理器,可以看到每个标签页的 CPU、内存和 GPU 占用。运行 Arcad 建模时,这个数字会随模型复杂度和交互操作明显变化:旋转视角时 GPU 使用率上升,重建参数模型时 CPU 使用率上升。如果看到内存只增不减,说明页面可能存在对象缓存未释放的问题,长时间运行时记得定期重启页面。
7.2 用 GPU 页面确认硬件加速
进入chrome://gpu,重点看 WebGL 和 Rasterization 是否显示 Hardware accelerated。如果显示 Software only,说明浏览器没有使用独立显卡,复杂模型的渲染会很卡。你可以尝试拔掉外接显示器后重插、更新显卡驱动,或者在 Chrome 设置里开启硬件加速并重启浏览器。这个问题在笔记本双显卡配置上尤其常见。
7.3 大模型、高细分对性能的影响
即使是轻量浏览器 CAD,模型面数、草图约束数量、视图数量都会明显影响性能。测试时可以先从 10 个面以内的简单拉伸体开始,再逐步增加细节。如果模型旋转变得卡顿、帧率下降,优先降低视口显示精度,而不是升级显卡。多数浏览器 3D 工具的卡顿问题都来自 GPU 内存不足或浏览器标签页互相抢占资源,关掉其他视频标签页往往比升级硬件更有效。
7.4 如何降低资源占用
把 Arcad 放在独立浏览器窗口里,避免和其他大型应用同时运行。长期编辑复杂模型时,每完成一阶段就导出一次并刷新页面,释放内存。不要在一个页面里同时打开多个大模型,推荐每个模型单独开一个标签页,用完及时关闭。对批量任务,要控制并发数量,一次性开几十个标签页很容易把内存吃满,导致进程崩溃。
8. Arcad 常见问题与排查方法
浏览器工具的大部分问题都集中在渲染、网络和数据保存三个方向。下面列出一张常见问题排查表,按这个顺序定位通常很快。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 页面白屏或黑屏 | WebGL 不可用、硬件加速关闭、显卡驱动问题 | 打开控制台看报错;进入 chrome://gpu 查看状态 | 开启硬件加速、更新显卡驱动、更换 Chrome 浏览器 |
| 提示 webgl2 disabled or unavailable | 浏览器设置问题或驱动不支持 | 用 3.2 节检测页确认 | 更新浏览器和驱动,关闭系统级节能模式 |
| 模型旋转很卡 | GPU 内存不足、当面数过高 | 打开浏览器任务管理器查看占用 | 降低模型细分、关闭多余标签页、刷新页面 |
| 刷新后模型丢失 | 数据仅保存在内存或未触发保存 | 尝试手动保存并导出备份 | 每次完成阶段工作后立即导出文件 |
| 导出格式不满足需求 | 当前版本功能限制 | 查看导出菜单支持的格式 | 考虑导出通用格式后用其他软件转换 |
| 页面无法访问 | 网络问题、域名解析、企业防火墙 | 用其他设备访问同一地址 | 检查网络、切换 DNS、联系网管 |
| 自动化脚本找不到按钮 | 页面加载慢或 DOM 结构变化 | 给脚本增加等待和重试 | 使用稳定的属性选择器,避免按文本定位 |
| 操作卡死后无法恢复 | 浏览器插件或模型内存泄漏 | 关闭无关插件,观察内存增长 | 重启浏览器并减少同时打开的模型数量 |
排查时要记住一个原则:先看浏览器环境,再看网络请求,最后怀疑项目本身。因为浏览器工具的功能是否正常,很大程度取决于运行环境;把环境问题排掉后,发现的问题才是真正需要反馈给开发者的 bug。
9. Arcad 最佳实践与使用建议
结合前面几节的测试流程,这里给出几条可以直接落地的使用建议。
第一,给草图加约束,不要随手画。参数化建模的价值在于“改一个尺寸,所有相关特征跟着变”,如果草图只是随手画没有约束,那它和普通 3D 建模没有区别。无论你用 Arcad 还是其他参数化 CAD,都应该养成先加约束、再拉伸的习惯。
第二,建立一套简单的文件管理结构。不要把所有模型都堆在下载目录里。可以按下面的目录组织本地工程文件:
project/ ├── design/ # Arcad 源文件或原始工程文件 ├── export_step/ # STEP 等交换格式,用于其他 CAD 打开 ├── export_stl/ # STL 等网格格式,用于渲染或 3D 打印 ├── screenshots/ # 自动化截图或视图存档 ├── logs/ # 自动化日志和导出记录 └── scripts/ # Playwright 等自动化脚本第三,批量自动化任务一定要加日志和重试。浏览器自动化脚本的一个特点是“大多数时候稳定,一旦不稳定就很难定位”。每跑一个模型就输出一行日志,记录当前参数、截图路径、导出结果,失败时自动重试两次,重试仍失败就把案例标记为异常,继续下一个。这比一次性跑完 50 个模型然后看最后一屏“成功或失败”可靠得多。
第四,重要项目必须在多个阶段导出备份。第一次是完成草图后,第二次是拉伸完成实体后,第三次是修改参数并验证联动后。导出时优先选择 STEP 这类中立交换格式,因为网格格式只能保存表面,不能保存参数化历史。如果 Arcad 没有导出 STEP,至少导出 STL 并在另一个软件里验证几何没有破面。
第五,涉及公司数据或个人隐私时先确认用途。免费和无注册听起来很轻量,但不要因此忽略数据风险。如果是企业内网项目,不建议把未公开的产品设计直接放到在线工具里。教学场景可以随意,商业场景要严格。
10. 总结与下一步
Arcad 最值得尝试的点是“把参数化建模的启动成本降到了最低”。不需要安装、不需要注册、打开就能看到建模界面,这个体验非常适合教学、演示和快速验证。你拿到的第一时间应该验证两件事:修改参数后模型会不会联动更新,以及刷新页面后数据还在不在。第一件事决定它是真参数化还是伪参数化,第二件事决定它能不能进入你的真实工作流。
最容易踩的坑有三个:WebGL 环境没准备好导致白屏、建模后忘记导出导致数据丢失、自动化脚本没有重试导致批量任务中断。这三个坑都可以通过前文的环境自检、导出习惯和脚本日志来规避。
后续如果你想继续深入,可以关注三类方向:一是看 Arcad 是否会提供官方 API,如果有了接口,就可以把参数化设计流程嵌入你的网页应用;二是用浏览器自动化把它的批量建模能力接入课程设计或结构选型工具;三是如果项目开源,你完全可以在它的基础上扩展自己的零件库和参数模板。
建议先把这篇文章里的环境自检页保存为本地 HTML,等真正打开 Arcad 的时候,先用它确认浏览器 3D 能力,再开始建模测试。这样能省下一半的排错时间。