next-ai-draw-io 液压与气动符号库(fluidpower)接入参考:mxgraph.fluid_power 图形风格、247 个形状清单与 AI 生成集成
本指南围绕 fluidpower.md 展开,介绍 next-ai-draw-io 内置的液压/气动工程符号库:它属于 draw.io 的 mxgraph 形状体系,以 mxgraph.fluid_power 为统一前缀,为 AI 自然语言生成液压原理图、气动回路图等工程图提供可直接引用的样式与形状名。读完本文,你将掌握该库的完整用法(XML 语法、247 条形状名称)、在整页 draw.io XML 中的嵌套规则,以及 AI 侧通过 get_shape_library 工具在运行时加载这份参考文档的底层调用链(对应 app/api/chat/route.ts 的实现)。
一、文档定位:fluidpower 是工程图纸素材库之一
在 next-ai-draw-io 中,绘制画布基于 draw.io 的 XML/样式体系,而各类专业符号(云厂商图标、网络设备、电气元件、液压符号等)被组织在 docs/shape-libraries 目录下,作为“可被 AI 查询的形状字典”。总览见 docs/shape-libraries/README.md,其中 fluidpower 被归类在 Engineering(工程) 分组的表格中:
| 库名 | 形状数 | 前缀 | 说明 | 文档 |
|---|---|---|---|---|
| fluidpower | 246 | mxgraph.fluid_power |
Hydraulic/pneumatic engineering symbols | fluidpower.md |
需要特别指出:README 汇总表记录为 246 个形状,而 fluidpower.md 头部标题写的是 Shapes (247)。差异的原因是文档的 247 条列表把“库本身的根入口 mxgraph.fluid_power”也算作第 1 条,其后跟随 246 条形如 x10010、x10020 的实际图形条目(经统计:以 x 开头的条目恰好 246 条,且无重复)。下文统称“246 个具体图形符号 + 1 个库根符号”。
二、基本规格:Type 与 Prefix
fluidpower 库的核心规格如下,它决定了该库所有图形的 style 书写方式:
- Type(形状类型):
mxgraph shapes——即这些图形并非rounded=1、ellipse之类的内置几何形状,而是 draw.io/mxgraph 注册的扩展渲染形状,必须通过shape=mxgraph.xxx.yyy才能触发对应的矢量渲染逻辑。 - Prefix(统一前缀):
mxgraph.fluid_power——库内每个图形的完整样式名 = 前缀 + 具体图形名,如mxgraph.fluid_power.x10010。
也就是说,只要在样式字符串中出现以 mxgraph.fluid_power. 开头的 shape=,draw.io 渲染引擎就会加载流体动力符号的绘制代码来绘制该单元格。
三、XML 用法模板与逐字段拆解
文档给出的标准用法模板如下:
<mxCell value="label" style="shape=mxgraph.fluid_power.{shape};fillColor=strokeColor;" vertex="1" parent="1">
<mxGeometry x="0" y="0" width="60" height="60" as="geometry" />
</mxCell>
把它落地到真实形状(例如 x10010)就是:
<mxCell id="2" value="Pump" style="shape=mxgraph.fluid_power.x10010;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="120" y="80" width="60" height="60" as="geometry" />
</mxCell>
模板中的关键字段作用如下:
value:单元格显示的文字标签(示例中的label是占位,可按需替换为空串或元件描述文字)。style:核心是shape=mxgraph.fluid_power.{shape},其中{shape}用第四节清单中的形状名(如x10010、x12170)替换。文档模板保留了fillColor=strokeColor;的字样,它表示颜色区通常与描边色联动或可统一替换;实际使用时建议像上面的示例一样为fillColor与strokeColor显式指定 draw.io 颜色值,例如以浅色填充区分泵/阀/缸等不同回路元件。vertex="1":声明该mxCell是一个图形顶点(形状)而不是连线。parent="1":父容器为默认图层单元格。<mxGeometry>:x/y为左上角坐标,width/height为宽高。文档示例默认使用60×60的正方形包围盒,这也是多数液压符号的较合适初始尺寸;可按需要调整(例如细长阀件可拉宽为80×40)。
补充说明:
mxCell、mxGeometry的完整语义、连线(edge="1"、source/target)以及style语法可进一步参考项目的 XML 指南。fluidpower 文档本身只给出符号的形状名与基础用法,每个编号对应的图形外观由 draw.io/mxgraph 运行时按mxgraph.fluid_power.*定义解析渲染,仓库中的这份 md 仅作为名称/样式清单供 AI 与开发者检索引用。
四、嵌入整页 draw.io XML 的规范
单独一个符号单元格并不构成可渲染的图纸,还需要外层容器。依据 app/api/chat/xml_guide.md 的约束,一个可用的最小页面结构为:
<mxfile>
<diagram name="Fluid-Power-Circuit">
<mxGraphModel dx="1" dy="1" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- 液压符号从此处开始,id 从 2 起 -->
<mxCell id="2" value="P1" style="shape=mxgraph.fluid_power.x10010;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="120" y="120" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="3" value="V" style="shape=mxgraph.fluid_power.x12160_simplified;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="120" y="240" width="60" height="60" as="geometry" />
</mxCell>
<!-- 用连线把泵与阀连接 -->
<mxCell id="4" style="edgeStyle=orthogonalEdgeStyle;endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="2" target="3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
两条必须遵守的硬性规则(同样来自 app/api/chat/xml_guide.md):
- 只需提供业务
mxCell,根容器id="0"、默认图层id="1"通常由项目自动补全;自定义 id 请从"2"起。 - 所有
mxCell必须是同级兄弟节点,严禁把符号mxCell嵌套进另一个mxCell内部;连线(edge)也不要嵌进符号里。
五、命名规律:从 x10010 到 x12430
文档明确指出 “Shapes are named like x10010, x10020, etc.”。观察全部 246 条名称可得出如下编号特征(属从名称结构得出的推断):
- 名称统一采用
x + 5 位数字,且大多按 +10 步进排列(如x10010 → x10020),说明该库使用“编号段”对液压/气动符号家族做机器可读编码。 - 按“百位段”可自然划分为
x10xxx、x11xxx、x12xxx三大组,大体对应不同的元件功能族。注意:仓库中的这份文档只提供名称,不提供逐条编号与符号图形的对应图例;若需确认某个编号的最终外观,应依据 draw.io 运行时的 mxgraph 渲染结果(或实际拖入画布后预览)。 - 存在个别非规则编号与同名变体:
x10440/x10441/x10442:同组内派生编号,一个组件族含三个相近符号;x12160_detailed与x12160_simplified:同一个组件提供详细版/简化版两套外观,写样式时需带后缀,即shape=mxgraph.fluid_power.x12160_detailed或...x12160_simplified。
六、完整形状清单(247 条,含库根条目)
以下为 fluidpower.md 中的完整清单原文级复刻,供 AI 生成、人工核对与二次开发使用。第 1 条 mxgraph.fluid_power 是库根入口(用于从库中弹出整个符号面板),其余 246 条均可直接作为 shape= 的后缀使用。
6.1 库根条目
mxgraph.fluid_power
6.2 x10xxx 段:x10010 – x11000
x10010
x10020
x10030
x10040
x10050
x10060
x10070
x10080
x10090
x10100
x10110
x10120
x10130
x10140
x10150
x10160
x10170
x10180
x10190
x10200
x10210
x10220
x10230
x10240
x10250
x10260
x10270
x10280
x10290
x10300
x10310
x10320
x10330
x10340
x10350
x10360
x10370
x10380
x10390
x10400
x10410
x10420
x10430
x10440
x10441
x10442
x10450
x10460
x10470
x10480
x10490
x10500
x10510
x10520
x10530
x10540
x10550
x10560
x10570
x10580
x10590
x10600
x10610
x10620
x10630
x10640
x10650
x10660
x10670
x10680
x10690
x10700
x10710
x10720
x10730
x10740
x10750
x10760
x10770
x10780
x10790
x10800
x10810
x10820
x10830
x10840
x10850
x10860
x10870
x10880
x10890
x10900
x10910
x10920
x10930
x10940
x10950
x10960
x10970
x10980
x10990
x11000
6.3 x11xxx 段:x11010 – x11990
x11010
x11020
x11030
x11040
x11050
x11060
x11070
x11080
x11090
x11100
x11110
x11120
x11130
x11140
x11150
x11160
x11170
x11180
x11190
x11200
x11210
x11220
x11230
x11240
x11250
x11260
x11270
x11280
x11290
x11300
x11310
x11320
x11330
x11340
x11350
x11360
x11370
x11380
x11390
x11400
x11410
x11420
x11430
x11440
x11450
x11460
x11470
x11480
x11490
x11500
x11510
x11520
x11530
x11540
x11550
x11560
x11570
x11580
x11590
x11600
x11610
x11620
x11630
x11640
x11650
x11660
x11670
x11680
x11690
x11700
x11710
x11720
x11730
x11740
x11750
x11760
x11770
x11780
x11790
x11800
x11810
x11820
x11830
x11840
x11850
x11860
x11870
x11880
x11890
x11900
x11910
x11920
x11930
x11940
x11950
x11960
x11970
x11980
x11990
6.4 x12xxx 段:x12000 – x12430
x12000
x12010
x12020
x12030
x12040
x12050
x12060
x12070
x12080
x12090
x12100
x12110
x12120
x12130
x12140
x12150
x12160_detailed
x12160_simplified
x12170
x12180
x12190
x12200
x12210
x12220
x12230
x12240
x12250
x12260
x12270
x12280
x12290
x12300
x12310
x12320
x12330
x12340
x12350
x12360
x12370
x12380
x12390
x12400
x12410
x12420
x12430
七、AI 侧调用链:get_shape_library 如何加载 fluidpower.md
这篇参考文档不只是给人看的:在 AI 生成图表时,它会被作为“工具查询”的实时内容注入模型上下文。核心实现在 app/api/chat/route.ts 的 get_shape_library 工具:
- 库的归类:工具描述把 28 个可用库按域分组,其中工程域被声明为
Engineering: fluidpower, electrical, pid, cabinets, floorplan。模型需要液压/气动符号时,会以library: "fluidpower"调用本工具。 - 库名清洗:入参先
toLowerCase(),再用正则/[^a-z0-9_-]/g剔除所有非法字符;若清洗后与原始小写名称不一致,直接返回非法提示,从入口上杜绝路径穿越。 - 路径拼接与二次校验:
baseDir指向docs/shape-libraries,拼接出${library}.md后通过path.resolve+startsWith再次确认解析路径仍落在baseDir内,防止../逃逸读取任意文件。 - 读取并返回:
fs.readFile读出 md 全文返回给模型;若文件不存在(ENOENT),工具会返回可用库清单,其中明确包含fluidpower:Library "fluidpower" not found. Available: ... fluidpower, electrical, pid, ...。
也就是说,模型在回答“帮我画一个液压回路”这类需求时,可先调用 get_shape_library(library="fluidpower") 获得本文所整理的清单与语法,再通过 display_diagram/append_diagram 等工具输出前几节那样的完整 XML,实现“先查字典、再落笔画图”的流程。
八、常见误用排查
- 形状不渲染但普通矩形正常:检查
shape=值是否完整等于mxgraph.fluid_power.+ 第六节清单中的名称(含_detailed/_simplified后缀),漏掉mxgraph.fluid_power.前缀是最常见原因。 - AI 反馈“Library not found”:库名必须是小写
fluidpower(工具端会清洗非法字符并强制小写,传入FluidPower等大小写或空格都会被拦截)。 - 符号方向/比例不对:符号外观由 mxgraph 渲染器按固定矢量绘制,请通过
<mxGeometry>调整尺寸或对单元格做几何翻转,不要试图修改shape=名称来改变方向(名称是符号族编码而非方向参数)。 - 编号与符号对不上:仓库文档只保证名称与编号的存在性,具体图形语义以实际渲染预览为准,编码某个具体元件前建议先在画布上验证一次目标编号。
综上,fluidpower 库为液压/气动类工程图提供了 246 个开箱即用的 draw.io 符号,配合 README 总览、XML 语法指南 与 AI 侧 get_shape_library 工具,即可在 next-ai-draw-io 中稳定、可控地生成专业流体动力图纸。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
video-shotcraftAI宣传片skill,使用 Remotion 制作电影级产品视频:提供106 张镜头配方卡和可复用的视频魔板。适用于 Claude Code 与 Codex以及所有其他智能体Markdown00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00