零零碎碎地摸索了一个多月,用.net开发出了一个小工具,开发过程基本就是在各种坑和弯路中来回碰撞,做好以后有一些心得体会与大家分享。
AVEVA提供.Net的二次开发接口,可使有C#编程经验的软件工程师使用Visual Studio来对AVEVA的工厂(Plant)设计和船舶(Marine)设计产品进行二次开发。使用PML二次开发要受限于AVEVA提供的PML对象,可使用的资源有限。[^1]
使用.Net来进行二次开发,不仅可以利用AVEVA提供的类库,还可以利用很多资源,开发效率更高。相比于PML这种脚本类型的语言,.NET优势十分明显,不完全地列举几个方面:
引入微软的.NET技术来对AVEVA进行二次开发,为AVEVA的二次开发打开了一个全新的世界,也便于其它系统与AVEVA产品的集成。.NET API可以访问产品的各方面,包括图形用户界面(Graphical User Interface),数据库(Database)和几何库(Geometry)。[^2]
模型数据借助.NET的接口可以转换成数据库中的关系型数据,将固化在PDMS软件中的工程数据,转移到更广阔的应用领域。
.NET二次开发的两种方式。一种是使用.NET插件;另一种是使用PML.NET。两种方式的机制都可以使用程序被动态加载到使用的模块中。我采用的是纯.NET开发的方式,熟悉PML的人可能更喜欢PML.NET的方式。
以下观点仅适用于个人开发者。
有不少做这个生意的公司,也有很多成熟的产品,例如出图、支吊架等,整个生态给我感觉就是专业性非常强,但是非常小众,基本就是前AVEVA或者设计院的几个大神。蛋糕很小,个体开发者没有清晰的盈利模式,早期开发者基本都已经完成了技术积累,有一些已经开了公司。
有些类型的工具不容易开发成通用型的,因为各家的数据格式定制方式不同,比如材料描述DETEXT,很多用户要分列显示,设置了不同分隔符和字段顺序,AVEVA有Sample标准项目,但是有的用户并没有按照官方推荐的数据结构进行订制,数据结构太灵活本来是个优点,在这里变成劣势;开发基本围绕自己的订制方式来进行,要想开发统一的工具插件,必须对数据结构十分熟悉,而且具备灵活的订制功能,对开发者的工程经验和PDMS的掌握程度有很高的要求。
技术支持基本一片荒芜,只能依靠官方英文手册,海川、马后炮基本查不到二次开发有用的资料,整个论坛都是求破解和免费工具的帖子、百度里搜PDMS二次开发,有效内容第一页都填不满,这可能就是目前国内PDMS开发现状的缩影,印证了PDMS开发在国内的小众与薄弱,虽然有少数大神,但是因为行业因素或开发专业性太强等原因,使得做的很精深的产品和队伍在互联网存在感很低,给人感觉是都在低调地悄悄赚钱,有的可能埋在设计院内部没有暴露出来。
新人基本就是只能自己对着AVEVA官方PDF一点点摸索了,如果有大神带是最好,但现状是首先你要能找到一个大神,其次大神多数已经一骑绝尘,望不到背影。
PDMS自身功能加强,借助.NET开发用户体验更好的功能模块,借助第三方数据库,实现设计管理功能,比如公共数据的查找和提取,版本、人员信息的记录,日志管理,设计变更管理等。应用层复杂逻辑管理功能都可以借助自主开发实现,批量数据设置、Element元素的选中、修改、Attribute元素的拾取、赋值等功能,都可以通过二次开发提高用户体验;
与其它软件的接口、集成甚至是取代,比如PDMS与CAESAR II的接口,解决自动输入条件到CAESAR II的需求,其实我们还可以做的更多,数据输入后的处理和输出借助.NET可以开发出独立的软件或者PDMS插件,CAESAR II作为一个应用软件,理论上完全可以用.NET实现出来,业务领域上会有一些难点,但是从IT角度出发没有任何障碍。类似的软件有很多,只要是输入-运算-输出类型的软件,都可以用这种开发方式进行扩展。
国外有小团队开发Revit的Addin插件,功能强大到取代了专业软件的部分功能,成为具有专业软件功能的原生插件,这是我们值得借鉴的地方。
与ERP系统的集成也成为可能,比如材料元件库与材料编码、采购包、费用代码等管理属性从模型库中就做好关联,在材料表数据产生的时候,这些代码全部连带一起产生,为ERP管理系统提供数据源,用于采购和费用管理;材料特性库中的材料尺寸、重心等数据可以发送给物流仓储管理系统,物流运输、仓储等专业需要这些信息。在未来这是一种打通设计协同与ERP管理数据流的方法,通过系统集成,提高数据输入、输出的自动化程度,数据的唯一性、准确性也得到保证。还有更多可以从工程模型库中挖掘的数据,有待我们继续研究。
对于工程公司来说是这种开发还是属于比较有干货的创新,但是多数停留在解决实际模型布置中遇到的问题和小功能需求上,不能形成真正的商业产品。只有少数嗅到商机的人在静悄悄地持续投入。我觉得PDMS开放.NET接口相当于打开了一座金矿,有大量的功能可以完善或者创新,大量的第三方开发资源可以引用,未来能做什么取决于我们能不能想到好点子,而不再是PML语言的限制。
我的HelloWorld是一个根据AEVEA-Sample项目数据结构生成MTO的小工具集,只是体现了一下我们能做什么,有大量的细节可以打磨,比如计算一个管子的直管段有多长,每个元件带有一堆跟管段长度有关的属性(见下表)。
Attribute Name | Data Type | Description |
---|---|---|
ATLE | real | Length of arrive implied tube. |
LTLE | real | Length of leave implied tube. |
MTCL | real | Material tube centreline length. |
STLE | real | Length of leave straight tube. |
STAP | real | Length of arrive straight tube. |
哪个是我们需要的,问了一圈也没有人能解答。再比如螺栓的计算,对夹的法兰面怎么避免把螺栓重复计算两次,如果直接总数减半的话,管线起点或者终点的端部法兰螺栓就少了一半,这样的涉及工程经验问题实在是太多了,无形中抬高了开发的门槛。
最后,给作品录了一个视频,为了提高逼格,增加了五毛特效和音乐。
https://v.qq.com/x/page/l0894tdgcy8.html
引用:
[1][2]:AVEVA官方文档《Net Customisation User Guide.pdf》