使用 draw.io(.drawio 格式)和 SVG 生成兼容 Microsoft Visio 的架构图。当用户需要以下任一场景时触发: - 用于 Visio 或技术文档的架构/系统/网络图 - 带连接标注的分层控制系统图 - 将 draw.io XML 转换为稳定、可嵌入的 SVG - 修复 Visio 或 draw.io 无法打开的故障排查类图表 - 任何需专业级布局且文本可编辑的图表
Workbuddy Visio — Visio-兼容架构图是一项面向实际任务的技能,主要用于Overview.;Generated 专业架构图, 采用双格式方法: . drawio 作为可编辑主, 然后为 Visio im 的 SVG。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
采用双格式方式生成专业级架构图:.drawio 作为可编辑的源文件,再转换为可供 Visio 导入的 SVG 格式。该技能源自现有 Codex 技能(visio-drawio-svg-diagrams),此前尝试直接使用原生 SVG 生成器均告失败——Microsoft Visio 对 SVG 输入格式要求极为严苛,而 drawio_to_svg.py 转换器专为满足其特定需求而设计。
核心工作流:
.drawio 文件(未压缩的内联 XML 格式)drawio_to_svg.py 将其转换为 Visio 兼容的 SVG.drawio 文件进行进一步编辑使用 xml.etree.ElementTree 编写 Python 脚本。draw.io 格式基于 元素:
vertex="1" 表示形状/方框edge="1" 表示连接线关键格式规则:
n 实现多行文本(不可使用
标签)
作为换行符实体id="0" 和 id="1" 外,每个 mxCell 均需指定 parent="1"sourcePoint/targetPoint顶点(形状/方框)示例:
边(连接线)示例:
python /scripts/drawio_to_svg.py input.drawio output.svg
该转换器生成的 SVG 具备以下特性:
clipPath,确保文本严格限制在边界内交付前请务必确认以下各项:
.drawio 文件为合法 XML,且包含内联的 结构 元素均使用 as="geometry"(而非 as_="geometry")| 参数 | 取值 | 用途 |
|---|---|---|
rounded=1 |
0/1 | 启用圆角 |
whiteSpace=wrap |
— | 方框内文本自动换行 |
strokeWidth |
1–3 | 轮廓线粗细 |
strokeColor |
#RRGGBB |
线条/轮廓颜色 |
fillColor |
#RRGGBB |
背景填充色 |
fontSize |
9–18 | 文字大小(单位:pt) |
fontColor |
#RRGGBB |
文字颜色 |
fontStyle |
0/1 | 0=常规,1=加粗 |
dashed=1;dashPattern=6 3 |
— | 虚线样式 |
endArrow=block / none |
— | 连线末端箭头样式 |
一种已在工业控制系统图中验证有效的布局模式:
┌──────────────────────────────────────────────────────────┐
│ [Layer 1: Controller] ┌─────┐ ┌─────┐ ┌──────────┐ │
│ ┌─────────────────┐ │HMI │ │IOC │ │ Database │ │
│ │ Main Controller │ └─────┘ └─────┘ └──────────┘ │
│ └─────────────────┘ │
├──────────────────────────────────────────────────────────┤
│ [Layer 2: EtherCAT Bus] │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │AX8206│ │AX8206│ │Safe │ │EL1808│ │EL3124│ │EL2808│ │
│ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ │
├──────────────────────────────────────────────────────────┤
│ [Layer 3: Field Devices] │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ [Notes] │
│ │Motor │ │Encoder│ │Safety│ │Limit │ │PT100 │ │
│ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │
└──────────────────────────────────────────────────────────┘
| 角色 | 填充色 | 边框色 | 用途 |
|---|---|---|---|
| Layer 1(控制器层) | #E8F4FC |
#90C8E8 |
浅蓝色 |
| Layer 2(总线/IO 层) | #EDFAED |
#7ECA7E |
浅绿色 |
| Layer 3(现场设备层) | #FFF6E8 |
#DDB88A |
浅橙色 |
| 安全设备 | #FFEFEF |
#CC3333 |
浅红色强调色 |
| 工程注释 | #FFFFEE |
#CCCC99 |
浅奶油色 |
| EtherCAT 总线 | #F0FFF0 |
#7ECA7E |
清新绿色 |
实现换行 — Python 字符串中始终使用 n(原始 XML 中对应
)。在 draw.io 和 SVG 中,
均会以可见文本形式呈现。parent="1" — 除 id="0" 和 id="1" 外,所有 mxCell 必须显式声明 parent="1",否则 draw.io 将无法显示该元素。.drawio 文件,并通过“文件 → 导出”选择所需格式导出。scripts/drawio_to_svg.py核心转换器:将 draw.io XML 转换为 Visio 兼容 SVG。本脚本改编自 Codex 的 visio-drawio-svg-diagrams 技能,成功解决了标准 SVG 生成器无法处理的 Visio SVG 导入问题。
scripts/example_generator.py用于程序化生成 draw.io 图表的模板脚本。修改坐标、文本和样式即可快速创建新图表。既可作为参考范例,也可直接用作开发起点。
相关专题
热门下载
相关下载
精品课程
共1课时 | 230人学习
共1课时 | 213人学习
共1课时 | 159人学习
最新文章