ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

text-to-cad快照机制深度剖析:无头浏览器如何拍摄三维截图与GIF

text-to-cad快照机制深度剖析:无头浏览器如何拍摄三维截图与GIF text-to-cad快照机制深度剖析无头浏览器如何拍摄三维截图与GIF【免费下载链接】text-to-cadA library of agent skills for CAD, CAE and CAM项目地址: https://gitcode.com/GitHub_Trending/tex/text-to-cadtext-to-cad 是一个面向 CAD、CAE 与 CAM 的 Agent 技能库而它的「快照Snapshot」机制正是让 AI 无需打开任何图形界面就能用无头浏览器headless browser把 STEP、GLB、STL 等三维模型拍成高清 PNG 截图与 360° 旋转 GIF的核心能力。本文带你拆解这套机制的三层架构、拍摄流程与工程细节。什么是快照机制给 AI 的“三维照相机” 在 text-to-cad 的工作流里Agent 用 build123d 写出 Python 几何生成器构建出 STEP 模型后必须“亲眼确认”模型长对了——但它没有显示器。快照机制就解决了这个问题一条命令启动一个看不见的 Chromium 浏览器把模型按指定相机、主题、尺寸渲染出来再把渲染结果编码成 base64 数据交还给 Python 进程落盘最终得到一张 PNG 或一段 GIF。它还承担了「视觉验证」的职责CAD 技能规定每次创建或修改主 STEP 工件后都必须跑快照审查而不是只靠确定性检查。策略细节见 snapshot-review.md。三层架构入口、引擎、浏览器运行时快照功能被清晰地拆成三层各层职责明确、可复用1️⃣ 命令行入口每个技能自带scripts/snapshotCAD 技能的入口只有约 50 行代码main.py它声明两件事本技能接受哪些输入STEP/STP/3MF/GLB/STL见 KINDS 定义本技能的浏览器运行时放在哪runtime/目录而参数解析、任务归一化等重活全部交给共享库。如果给 CAD 技能喂一个它不认的.implicit.js它会明确告知该找 implicit-cad 技能而不是莫名其妙地报错。2️⃣ 共享引擎cadgen里的 CLI 与 Core真正干活的是 cadgen 包中的两个模块snapshot_cli.py负责命令行与「每种输入类型各自是什么」的解析。五种渲染模式定义在 模式说明view每个输出一张静态图默认orbit360° 转台 GIFanimateGIF 扫描模型自带动画section剖切扫掠list输出零件引用 JSON不写文件snapshot_core.py格式无关的核心——无头浏览器驱动、相机/主题/显示/尺寸归一化、输出落盘。它被 CAD、DXF、URDF、SRDF、SDF 等多个技能共用。3️⃣ 浏览器运行时19 行的 HTML 一个渲染模块运行时目录只有两个文件render.html仅 19 行透明背景、无滚动条唯一作用就是加载渲染脚本snapshot-render.js打包了 Three.js、STEP 解析器与 raymarching 后端的单文件模块向页面暴露window.__snapshotRender函数无头浏览器拍摄的完整流程核心流程在 BatchSnapshotRenderer 中可以概括为五步启动 Chromium通过 Playwright 以headlessTrue启动无头浏览器15 秒启动超时兜底拦截一切网络请求页面绑定到虚拟域名http://snapshot.local见 SNAPSHOT_ORIGIN所有请求都不走真实网络而是由 Python 从本地文件系统按路由规则读取——/render.html返回运行时文件/__render_asset/...返回模型文件还带 SHA-256 缓存键防脏读等待就绪轮询直到页面暴露出window.__snapshotRender函数执行渲染任务把归一化好的 job输入 URL、模式、相机、主题、输出尺寸塞给浏览器执行浏览器返回 base64 数据 URL落盘Python 侧把 base64 解码写入 PNG/GIF 文件并用 write_render_outputs 递归处理批量任务整个过程不落地任何中间临时图浏览器即拍即毁。如何拍出一张“会说话”的截图 ✨默认主题为截图而生的snapshot主题快照的默认主题是 snapshot——它源自 Workbench Light但移除了地面网格和坐标轴。原因很微妙在实时视口里它们是帮助定位的参考但在静态图里会变成横穿模型的直线被误认成轮廓边。材料、光照、背景则与查看器完全一致零件所见即所得。尺寸档位不同用途不同分辨率--size-profile对应一组预置分辨率档位分辨率典型用途simple1200×900简单零件diagnostic1600×1200标注/剖切审查assembly / assembly-large1800×1200 / 1920×1440复杂装配presentation / hero2400×1600 / 2800×1800展示级大图orbit960×640转台 GIF防翻车设计GIF 帧预算预警动画渲染的每一帧都要驻留内存直到 GIF 编码完成代价是「帧数 × 像素」。核心代码实测发现超过约 120 Mpx 时无头浏览器会在长时间计算后被系统杀掉TargetClosedError辛苦白干。于是 帧预算预检 会在启动前就发出警告建议降帧率、缩时长或缩小输出。同理非 orbit 模式下指定.gif输出会被直接拒绝——否则会得到一个只有一帧、看似坏掉的 GIF。快速上手一条命令拍出你的第一张图安装技能后npx skills install earthtojake/text-to-cad典型用法非常简洁# 拍一张等轴测静态图 python scripts/snapshot --input models/part.step --output /tmp/part.png # 拍一段 360° 转台 GIF python scripts/snapshot -i models/part.step -o /tmp/part.gif --mode orbit # 批量多视角一个 JSON 作业四个相机 python scripts/snapshot --job views.json每个输出文件会自动加上共享的 UTC 秒级时间戳如part_20260527T163012Z.png便于 Agent 追踪加--json可得到紧凑的机器可读结果。完整选项可用--help查看策略参考 SKILL.md。关键文件路径速查表模块路径CAD 技能快照入口skills/cad/scripts/snapshot/main.py共享快照 CLIskills/cad/scripts/packages/cadgen/src/cadgen/snapshot_cli.py无头浏览器核心skills/cad/scripts/packages/cadgen/src/cadgen/snapshot_core.py浏览器运行时页面skills/cad/scripts/snapshot/runtime/render.html浏览器渲染模块skills/cad/scripts/snapshot/runtime/snapshot-render.js快照审查策略skills/cad/references/snapshot-review.md总结text-to-cad 的快照机制把「打开三维软件、摆相机、截图」这件人类手工活变成了一条可复现、可批量化、可机器读取的命令。三层架构技能入口 / 共享引擎 / 浏览器运行时让同一套无头浏览器拍摄能力被 CAD、DXF、URDF、SRDF、SDF 等多个技能复用而主题设计、尺寸档位、GIF 帧预算等细节则处处体现着「截图主要给 AI 看」这一产品决策。这正是 Agent 技能库把工程经验沉淀成可执行工作流的最佳范例。【免费下载链接】text-to-cadA library of agent skills for CAD, CAE and CAM项目地址: https://gitcode.com/GitHub_Trending/tex/text-to-cad创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表