PDMS二次开发(一)——Hello World for PDMS

零零碎碎地摸索了一个多月,用.net开发出了一个小工具,开发过程基本就是在各种坑和弯路中来回碰撞,做好以后有一些心得体会与大家分享。

1.NET的开发方式

AVEVA提供.Net的二次开发接口,可使有C#编程经验的软件工程师使用Visual Studio来对AVEVA的工厂(Plant)设计和船舶(Marine)设计产品进行二次开发。使用PML二次开发要受限于AVEVA提供的PML对象,可使用的资源有限。[^1]

使用.Net来进行二次开发,不仅可以利用AVEVA提供的类库,还可以利用很多资源,开发效率更高。相比于PML这种脚本类型的语言,.NET优势十分明显,不完全地列举几个方面:

  1. 数据处理能力,特别借助.NET成熟的并发处理方案,使大批量高并发的数据处理成为可能,可以在批量出图、批量数据修改或运算时提高性能;
  2. 连接第三方数据库,根据不同的业务场景可以选用不同类型的数据库,而.NET基本具备了对所有主流数据库的访问能力,使得PDMS的数据与各类数据库系统的交互成为可能,进一步可以对PDMS的工程数据实现数据挖掘,让他们不再是躺在元件库里的一个符号,变为更有价值的数据;
  3. 界面的友好性,不再是pml那种VB或者dephi风格的界面,流行的界面技术都可以被使用,例如ribbon菜单等组件,使工具软件界面更加漂亮友好,功能区域布局更加合理,在强调用户体验的时代,这些特性十分重要。
  4. 报表定制,因为.NET接口的开放,使得PDMS的报表可以通过类似水晶报表这样的工具对模板进行订制,让用户不编写代码即可自主控制报表格式,当然也可用通过Aspose或者NPOI这样的组件直接写好固定格式的报表样式,减少用户的订制工作,直接一键出成品文件;
  5. 高级编程语言特性,.NET开发本身具有一些PML没有的高级特性。真正的面向对象编程、内存控制、借助HashTable等提高数据检索和命中的速度,提高数据遍历等基本动作的速度;
  6. 外部资源广阔,可用引用大量的第三方.NET插件,实现更强大的功能和更好的用户体验。

引入微软的.NET技术来对AVEVA进行二次开发,为AVEVA的二次开发打开了一个全新的世界,也便于其它系统与AVEVA产品的集成。.NET API可以访问产品的各方面,包括图形用户界面(Graphical User Interface),数据库(Database)和几何库(Geometry)。[^2]

模型数据借助.NET的接口可以转换成数据库中的关系型数据,将固化在PDMS软件中的工程数据,转移到更广阔的应用领域。

.NET二次开发的两种方式。一种是使用.NET插件;另一种是使用PML.NET。两种方式的机制都可以使用程序被动态加载到使用的模块中。我采用的是纯.NET开发的方式,熟悉PML的人可能更喜欢PML.NET的方式。

2.开发生态

以下观点仅适用于个人开发者

2.1市场

有不少做这个生意的公司,也有很多成熟的产品,例如出图、支吊架等,整个生态给我感觉就是专业性非常强,但是非常小众,基本就是前AVEVA或者设计院的几个大神。蛋糕很小,个体开发者没有清晰的盈利模式,早期开发者基本都已经完成了技术积累,有一些已经开了公司。

2.2通用性

有些类型的工具不容易开发成通用型的,因为各家的数据格式定制方式不同,比如材料描述DETEXT,很多用户要分列显示,设置了不同分隔符和字段顺序,AVEVA有Sample标准项目,但是有的用户并没有按照官方推荐的数据结构进行订制,数据结构太灵活本来是个优点,在这里变成劣势;开发基本围绕自己的订制方式来进行,要想开发统一的工具插件,必须对数据结构十分熟悉,而且具备灵活的订制功能,对开发者的工程经验和PDMS的掌握程度有很高的要求。

3.技术支持

3.1现状

技术支持基本一片荒芜,只能依靠官方英文手册,海川、马后炮基本查不到二次开发有用的资料,整个论坛都是求破解和免费工具的帖子、百度里搜PDMS二次开发,有效内容第一页都填不满,这可能就是目前国内PDMS开发现状的缩影,印证了PDMS开发在国内的小众与薄弱,虽然有少数大神,但是因为行业因素或开发专业性太强等原因,使得做的很精深的产品和队伍在互联网存在感很低,给人感觉是都在低调地悄悄赚钱,有的可能埋在设计院内部没有暴露出来。

3.2没人扶你上驴

新人基本就是只能自己对着AVEVA官方PDF一点点摸索了,如果有大神带是最好,但现状是首先你要能找到一个大神,其次大神多数已经一骑绝尘,望不到背影。

4.应用场景

4.1自身功能加强

PDMS自身功能加强,借助.NET开发用户体验更好的功能模块,借助第三方数据库,实现设计管理功能,比如公共数据的查找和提取,版本、人员信息的记录,日志管理,设计变更管理等。应用层复杂逻辑管理功能都可以借助自主开发实现,批量数据设置、Element元素的选中、修改、Attribute元素的拾取、赋值等功能,都可以通过二次开发提高用户体验;

4.2扩展

与其它软件的接口、集成甚至是取代,比如PDMS与CAESAR II的接口,解决自动输入条件到CAESAR II的需求,其实我们还可以做的更多,数据输入后的处理和输出借助.NET可以开发出独立的软件或者PDMS插件,CAESAR II作为一个应用软件,理论上完全可以用.NET实现出来,业务领域上会有一些难点,但是从IT角度出发没有任何障碍。类似的软件有很多,只要是输入-运算-输出类型的软件,都可以用这种开发方式进行扩展。
国外有小团队开发Revit的Addin插件,功能强大到取代了专业软件的部分功能,成为具有专业软件功能的原生插件,这是我们值得借鉴的地方。

4.3系统集成

与ERP系统的集成也成为可能,比如材料元件库与材料编码、采购包、费用代码等管理属性从模型库中就做好关联,在材料表数据产生的时候,这些代码全部连带一起产生,为ERP管理系统提供数据源,用于采购和费用管理;材料特性库中的材料尺寸、重心等数据可以发送给物流仓储管理系统,物流运输、仓储等专业需要这些信息。在未来这是一种打通设计协同与ERP管理数据流的方法,通过系统集成,提高数据输入、输出的自动化程度,数据的唯一性、准确性也得到保证。还有更多可以从工程模型库中挖掘的数据,有待我们继续研究。

5.补充思考

5.1未来看思路

对于工程公司来说是这种开发还是属于比较有干货的创新,但是多数停留在解决实际模型布置中遇到的问题和小功能需求上,不能形成真正的商业产品。只有少数嗅到商机的人在静悄悄地持续投入。我觉得PDMS开放.NET接口相当于打开了一座金矿,有大量的功能可以完善或者创新,大量的第三方开发资源可以引用,未来能做什么取决于我们能不能想到好点子,而不再是PML语言的限制。

5.2关于Hello World

我的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》

欢迎关注公众号WHCLGL,一起讨论数字化工厂和全生命周期材料管理知识
PDMS二次开发(一)——Hello World for PDMS_第1张图片

你可能感兴趣的:(PDMS,数字工厂的学习和研究)