文章

科研作图Skill与可编辑SVG拼装调研

对照开源科研作图仓库,归纳多面板拼装、图层拆分和位图嵌脚手架三类做法。结构线稿真正该抄的是槽位与图层纪律,不是把机械轮廓自动描成曲线。

科研作图Skill与可编辑SVG拼装调研

科研作图Skill与可编辑SVG拼装调研

科研作图类 Agent Skill 常强调「可编辑 SVG」与「多个小图堆叠」。本文对照一批开源仓库,归纳三类出图做法,并说明它们对结构线稿(壳体、卡钩、件号引出)真正有用的部分:抄 拼装纪律(槽位 + 图层),而不是把机械轮廓自动描成贝塞尔曲线。Star 与提交时间为检索时快照,以仓库页面为准。

参考与延伸阅读:


目录


1. 结构线稿的可编辑缺口

实用新型 / 机械结构线稿的常见流水线是:大模型出一张全量轮廓栅格,再按零件清单用 SVG 叠引出线与件号。件号层往往可以改 YAML 锚点;交付后改不了的是壳体、卡钩、倒角——它们糊在一张 PNG 里。

科研作图 Skill 里常说的「多个小 SVG 堆叠」,并不是把机械零件自动描成贝塞尔曲线,而是三类纪律:

  1. 多面板拼装:每个子图先单独成稿,再按毫米坐标贴进总图。
  2. 一张 SVG 里按图层拆开:每个图元一个 <g id>,文字保持 <text>。
  3. 先出位图再切图标嵌进脚手架:模板 SVG 的占位框里塞小图,人在编辑器里拖每一块。

对结构线稿真正有用的是 1 + 3 的拼装纪律,不是期刊栏宽或 SAM 分割产线。


2. 代表仓库与可编辑手段

项目链接功能简介可编辑手段可抄点
academic-figuressai-tv/academic-figuresAgent 按期刊规范写机制图 / 多面板 / Graphical Abstract纯矢量 SVG;每个元素独立 <g id>;Inkscape groupmode=layer;文字必须是 <text>;禁止嵌栅格图层命名纪律、活字、坐标收成一位小数。不负责机械真外形
scientific-svg-figuresThalesGroup/agilab 内 .claude/skills/scientific-svg-figures/固定 viewBox,先容器后箭头后字,一个 SVG 当源稿单文件矢量源画布合同稳定,叠层顺序固定
scientific-figure + svgutilsneuromechanist/research-skillsmatplotlib 等先出小 SVG,再用 svgutils.compose 按 mm 拼多面板子图文件仍在,总图可重拼按件 / 按视拼装的正统做法
fig_gen_templateclaysmyth/fig_gen_template各子图先存 SVG,notebook 再拼大图中间产物可替换单块与上类似,流程更实验室向
polish-sci-figureszhoy0409-debug/polish-sci-figures数据图 / 显微图 / 终拼;自检「是不是真可编辑」明确:栅格不得标成 fully editable和线稿痛点同一句话:底图像素不是可编结构
AutoFigure-EditResearAI/AutoFigure-Edit · 论文方法文本 → 模型出 PNG → SAM3 切图标 → RMBG 去底 → LLM 画 template.svg 占位框 → 把 icons/*.png 嵌进框 → 浏览器 svg-edit 拖拽脚手架 SVG + 一堆可拖小图;图标层常仍是透明 PNG,不是真 path最像「小图堆叠」。不必抄 SAM / 去底依赖,只抄「占位框 + 按 id 注入」
AutoFigure(前代)ResearAI/AutoFigure文生图;可出 SVG 或 draw.io mxGraph源稿可进 draw.io与 .drawio 方向一致,但是方法示意图
scientific-diagram-skillKkkakania/scientific-diagram-skillMermaid → draw.io + SVG 预览流程 / 架构可编适合模块关系,不适合注塑件描图
tikz-scientific-figuresPM-Shawn/tikz-scientific-figuresTikZ 源 + PDF,可再导出 SVG源稿在 TeX过重,结构线稿不必引入
academic-figure-refinerKLOSYX/academic-figure-refinerHTML/CSS/SVG 为源 + 人机微调源稿可改微调回路可参考,栈不同
academic-figure-skillTingxiYu/academic-figure-skill29 类统计图脚本 + 期刊栏宽 PDF 主稿数据图矢量导出统计图,不是结构线稿
LiveFigurearXiv 2605.23527VLM → 可编辑 PPTX 再导出矢量源定在幻灯片「源稿可拆」与拼装同类,不必把主路径改成 PPT

「小 SVG 堆叠」在科研圈的主流实现就是:svgutils 式多 panel,以及 AutoFigure 式占位框嵌小图。academic-figures 看起来像一张图,实际是 同文件内多层 <g>,编辑体验等价于堆叠。


3. 三类做法对照

1
2
3
4
5
6
7
8
9
10
11
12
13
14
A. 纯矢量写稿(academic-figures)
   Agent 直接写 <rect>/<path>/<text>  →  Inkscape 图层
   适合:框图、流程、爆炸示意里的方盒子
   不适合:自由曲面机械轮廓

B. 多文件拼装(svgutils / fig_gen_template)
   子图1.svg + 子图2.svg + …  →  总图.svg
   适合:总装 / 局部 / 剖视分视;每零件一张小图再组装
   改细节只换一块,不必重出整页

C. 栅格切片再嵌(AutoFigure-Edit)
   整图 PNG → 切 icons → template.svg 占位 → 注入
   适合:已经有一张总装线稿,要拆成可挪图层
   切片质量依赖分割模型;结构线稿默认不必上 SAM

polish-sci-figures 的纪律应写进自检:入文 PNG 只是预览;可编辑源必须是带图层的 SVG。 把一张模型大图标成「可手改结构」是错的。


4. 对结构线稿的评估

层常见现状科研图那套缺口
轮廓一张全量 PNG / JPG框图:原生几何;方法图:多 icon 再嵌轮廓不可拆
件号引出SVG 叠在底图上,锚点 YAML 可改标签层独立已接近,可保留
交付入文仍是「底图像素 + 矢量号」源稿 SVG;PNG 只是导出人无法只改某一件

提升空间大,但是分层的:

  • 件号层已经可编,再换生图模型也解决不了「改卡扣弧度」。
  • 科研 Skill 不能把复杂注塑件变成可拖的原生 path。
  • 真正有跃迁的是把「一张锁死大图」改成「按零件 id 分槽位的装配 SVG」。人改的是挪零件、换某一件的小图、改线宽和件号,不是在像素里涂整张 PNG。

明确不必抄:SAM3、RMBG、期刊字号、matplotlib 拼版、svgutils 依赖。结构线稿可以继续零额外重依赖,用 YAML 槽位 + 标准库拼 SVG。


5. 优先抄拼装的落地形态

推荐把「画布合同 / 拼装脚本 / 件号注入」拆开,而不是和门禁、叠层挤在同一文件。概念上三类产物即可:

角色说明
Agent 提示按零件清单写槽位;按件出小图,或从总装裁槽
画布合同画布尺寸 + 每件 slot / source
拼装脚本校验后输出带 <g id="part-N"> 的总装 SVG
件号叠层把引出线注入已有拼装 SVG,不把零件层压扁

推荐流水线:

1
2
3
4
5
6
轮廓(已有合格线稿 或 图/文生图)
    → 每件一个槽位的拼装 YAML
    → 拼装脚本  →  *_composed.svg(零件层可单独挪/换)
    → 锚点 YAML(坐标仍 0..1,相对画布)
    → 件号注入 structure-callouts 组
    → 截图脚本只出预览 PNG 入文

source 三种(按场景选,不必上分割模型):

source何时编辑时发生什么
crop总装视:已有一张轮廓同一底图用 clipPath 按件成组;可隐藏 / 平移该组
image爆炸 / 单件:每件单独生小图槽位里嵌该件 PNG;换文件再跑拼装即可
placeholder还没图、或 uncertain虚线框占位,保持图层和件号槽,禁止冒充已绘结构

诚实边界:crop 在零件重叠处仍会带上邻件像素;自由曲面不会变成可改 path。那是拼装能达到的上限,也是科研 Skill 的上限。


6. 小结

要点结论
「可编辑」的含义入文 PNG 只是预览;源稿必须是带图层 / 槽位的 SVG
科研圈主流svgutils 式多面板,或 AutoFigure 式占位框嵌小图;同文件多层 <g> 也算堆叠
结构线稿该抄什么拼装纪律(按件槽位、按 id 注入),不是 SAM 切图或期刊栏宽
结构线稿不该指望什么复杂注塑件变成可拖的原生 path;件号可改 ≠ 轮廓可改
落地上限crop / image / placeholder 三档诚实标注;重叠处仍会带邻件像素
本文由作者按照 CC BY 4.0 进行授权