插件
EPLAN图纸生成器
编辑丨钻石海
承接EPLAN二次开发项目
最近一段时间,我们的EPLAN自动出图配置系统经历了一次从底层到应用层的全面进化。忍不住想和小伙伴们分享一下这段时间的成果——这不是一篇技术文档,而是一份真实的开发记录。
一、缘起:从一张Excel配置表说起
熟悉我们的朋友都知道,这套系统的核心设计思路是用Excel作为配置载体,通过结构化表格驱动EPLAN图纸的自动生成。
每一行配置代表一个完整的回路宏组合,每一列对应一个EPLAN属性ID或自定义占位符。这个设计最初是为了解决一个痛点:在大型项目中,成百上千的回路结构相似但参数不同,手动修改不仅效率低,而且容易出错。
经过这段时间的迭代,这套系统可在不更改当前项目结构的前提下,实现了对图纸的对象化与结构化,已经从一个"能用的工具"进化成了一个"好用且强大的出图引擎"。轻松实现自动出图的高效率转换。
二、核心进化:让Excel表更像对象
1. 继承机制:父行值的自动传递
这是最受关注的功能之一。
在嵌套配置场景中,子表行经常需要继承父表行的页结构信息(如功能代号、位置代号等)。以往需要在每个子表中重复填写,现在通过ParentRow机制自动完成。
一行配置不再是一个孤立的"宏指令",而是一个可以继承、可以被继承的配置对象。
2. 多态取值:有值用自己,无值找父行
如果说继承解决了"从哪里取值"的问题,那么多态则解决了"怎么取值"的问题:
当前行有值 → 使用当前行值(派生行为)
当前行无值 → 自动从父行获取(基类行为)
这就像面向对象中的方法重写——同一行在不同上下文中表现出不同的行为,完全由数据本身驱动。
3. 封装:每行或一个表将是一个完整回路
每行配置可以包含:
页信息属性(决定宏插入到哪一页)
多个宏组(每个组有自己的宏文件、坐标、占位符)
继承自父表的默认值
修改保护标志(用于跳过某些行)
每行或一个表即一个完整的电气回路对象,对象的多少与分配完全由你来控制,最后只需简单封装,即可简单应用。配置简单、直观。
4. 多组支持:通过列后缀实现"宏数组"
在EPLAN中,同一页经常需要插入多个宏。我们采用多行或者“列名后缀_n”的方式实现多组,这种方式保持了配置的二维表格结构,同时实现了"一对多"的宏管理。
三、智能取值:让Excel单元格会"思考"
1. 偏移指令:数字和字母都能偏移
之前:单元格写什么就是什么,无法动态调整。
现在:支持多种偏移指令:
+1 | |
-A | |
++ | |
<PREV>+1 | |
<!>+2 |
这对设备编号、坐标累加等场景特别实用。
2. 占位符引用:一个格子引用另一个格子
通过尖括号语法,单元格可以直接引用其他列的值:
<?GNWB>→ 引用自定义占位符列<23001>→ 引用属性ID列<!>→ 自引用父表值<PREV>→ 引用上一行同列值
支持嵌套引用和多个占位符组合。
3. 表达式计算:不只是一个值
现在单元格可以包含数学表达式:
<?GNWB2>*3+1,当 ?GNWB2=1 时,计算结果为 1*3+1=4。
支持加减乘除、括号、负数,并且可以混合文本:M<?OFFSET_COUNT>+1原理图,当?OFFSET_COUNT=1时结果为:M2原理图
四、批处理能力:一键处理整个目录
新版本将支持:
递归搜索目录中的所有
.xlsx和.xls文件批量替换
<23001>宏名称列中的文件名引用自动重命名源文档
支持取消操作和进度报告
这对于宏库重命名、项目迁移等场景非常实用。
五、技术思考:Excel配置表的面向对象之路
回顾整个设计,有一个有意思的发现:这套基于Excel的配置方式,实际上实现了面向对象的三大特性:
| 封装 | |
| 继承 | ParentRow |
| 多态 |
Excel负责数据存储,插件负责行为逻辑。这种混合模式既保留了Excel的易用性,又获得了代码的灵活性。
六、参与贡献
这套系统目前已经在多个实际项目中落地使用,如果你有兴趣:
关注我们的公众号获取更新
从“电气CAD吧”网站里下载:插件商店加载最新版本
添加微信shb8311反馈使用中的问题
分享你的使用场景和需求
写在最后:这段时间的迭代,让我深刻体会到"数据驱动"和"对象思维"结合的力量。一个好的配置系统,不是让用户填写更多内容,而是让用户用更少的信息表达更多的意图。
有任何问题或想法,欢迎在评论区留言交流!

这里有的你拿走
保留精力用来创造
▼

承接EPLAN二次开发
丨分享丨点赞丨赞赏丨
夜雨聆风