SmartPlant 3D管道自动命名系统开发
2016-03-04王钰铭杨昌南中国石油集团东北炼化工程有限公司吉林设计院吉林132002
王钰铭 陈 龙 杨昌南 中国石油集团东北炼化工程有限公司吉林设计院 吉林 132002
SmartPlant 3D管道自动命名系统开发
王钰铭*陈龙杨昌南中国石油集团东北炼化工程有限公司吉林设计院吉林132002
摘要SmartPlant3D软件管线号手动输入过程中经常出现各种错误,通过利用编程手段实现管线号的自动生成,从而提高输入效率,规范输入格式。
关键词SP3D管道命名系统
*王钰铭:工程师。2011年毕业于长春工业大学高分子化学与物理专业。主要从事配管设计与计算机辅助设计研究工作。
联系电话:(0432)63958445,E-mail: jly_wym5195@petrochina.com.cn。
近年来除了使用成熟的PDS、PDMS软件进行三维设计外,开始逐步实施了Intergraph公司的SmartPlant3D(简称SP3D)软件的使用与推广工作,该软件以数据为中心,规则驱动,微软公司Microsoft Office形式的友好界面,包括公共环境、设备、管道、支吊架、电仪、暖通、成品与报告多个模块,接口开发,与同是SP系列软件的工艺、仪表、电气系统软件、材料管理软件在信息管理平台下进行数据传输与校验,并能够渗透到施工、采购、工厂运维中,是近年来最先进的工厂设计软件[1]。
1问题提出
SP3D软件在国外得到了广泛的应用,而在国内工程公司的应用过程中并不是十分顺利,该软件前台简单,这就意味着后台需要大量的复杂设置,国内用户均经历了这个过程,推广时只考虑了应用,忽略了软件的定制与开发,很多智能化的功能并没有很好的体现,其中管道模块中的管线号pipeline与管段号pipe run的命名就是其中一项,见图1。
图1 Pipe run自定义名称输入过程
手动输入过程繁琐,很容易在输入过程中产生错误,管道专业在项目中配置人员较多,难免会造成名称的五花八门,直接影响到管道轴测图与平面布置图的质量,该问题成了管道专业SP3D使用过程中亟待解决的问题。
2解决措施
SP3D软件拥有开放的接口,研究与编制自动命名程序,不难解决管道命名管理问题。以南京某项目为例,Pipeline为物料号-单元流水号,例P-1001,共6位字符;Pipe run物料号-单元流水号-管径-管道材料等级-保温代号-厚度,例P-1001-4″-E3P0-IC40,共19位字符。如果实现只输入流水号即可生成完整Pipeline与Pipe Run号,那么Pipeline输入效率可以提高1倍,Pipe Run输入效率至少可以提高4倍,如果将以往的项目进行分类汇总,编制成命名子项集到自动命名系统中将大幅提高今后项目的复用性。
3程序编制准备
3.1开发程序选择
开发程序选择对目标软件的兼容行、操控性都有着至关重要的影响,本程序选择了当今比较主流的四种编程软件进行分析选择,优缺点见表1。
命名子项属于SP3D补丁文件,需要加载到SP3D后台中,应首先保证编程语言具有较高的安全性,以免对整个平台造成干扰,其次编程工具应与我院现在所使用的操作系统有良好的兼容性,这样有利于系统平稳运行。从表中不难看出,利用Microsoft Visual Studio 2010开发目标软件优势明显,我院现在有的64位PC客户端可有效弥补该开发软件的弊端。
表1 编程软件优缺点
3.2逻辑方案设计
就SP3D软件建立Pipeline与Pipe run而言都存在号码中所包含的物料号、管道等级、管径等属性信息,SP3D的这些属性信息与命名并没有直接关系,除单元与流水号,只需要将其调用并按照一定规则关联即可实现命名的自动生成,单元信息只有Workspace Explorer System树状结构中可以调取,但是树状结构宜改、层级太多,不是稳定的参数,管道属性对话框里虽然也可以增加单元选项,但是毕竟修改了软件的底层程序,需要动用Intergraph公司美国总部力量,不仅耗资巨大,而且容易引起连锁反应,所以单元信息最终按流水号处理,手动进行输入。自动命名逻辑方案见图2。
图2 自动命名逻辑设计方案
3.3命名插件格式选择与调用方案
命名插件一般有静态链接库.lib和动态链接库.dll两种格式选择,.lib文件安装完毕后即可使用,装载速度比较快,但是有错误时需重新编制新的版本,而.dll文件程序相对独立,更换程序时不会对主软件本身造成影响,但是运行起来要比.lib文件慢,SP3D属于大型的工厂设计软件,有着极其复杂的数据结构,应保证系统的稳定与可维护性,二次开发时应尽量保证插件与其应用程序的相互独立,这一点.dll文件更有优势,所以最终选择了.dll文件插件格式。
SP3D软件与多数软件一样,为用户封装好的执行文件,虽然为用户提供了开放的接口,但是鉴于开发者的安全保密性,不会让用户二次开发后进行再次封装,一般需要利用Win7操作系统的命令提示符(command)中运行regsv32注册工具,将编制动态链接库(dll文件)注册到系统中供SP3D软件调用,使其具有可执行性,此过程一般需要应用者具有DOS系统操作经验,对普通设计人员有一定的难度,开发过程充分考虑这些客观需求,将这事件优化为“只要应用者单击平台相应的执行按钮,后台即启动上述过程,并做出是否安装成功的提示”,为应用者提供了非常人性化的操作体验。
3.4架构选择
SP3D管道自动命名系统,属于SP3D的附属软件,主要起着管理命名插件的功能,编制过程中分析了B/S浏览器/服务器架构与C/S客户端服务器端架构的优缺点,认为B/S架构虽然可以挂到公司主页上,但是没有与SP3D软件保持一致,界面丰富友好、安全的C/S架构更适合本附属软件的开发。
4程序编制
经过开发程序选择、逻辑方案设计、命名插件格式、架构选择等准备工作后,对程序进行了开发,分为自动命名子项说明区、安装自动命名子项区、换肤、推出等辅助功能区,编制出5套命名插件,10个dll文件,经过测试后,镶嵌到平台中,最终封装为.exe文件,使用者可根据需求安装加载,管道自动命名系统操作界面见图3。
图3 管道自动命名系统操作界面
这只列出部分事件代码程序:
private void iClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
System.Windows.Forms.Form[] mdiForm = this.MdiChildren;
bool openFlage = false;
foreach (Form find in mdiForm)
{
//MessageBox.Show(find.Name);
if (find.Name == "Chajian1")
{
//已打开一个窗体则激活并显示出来
find.Activate();
openFlage = true;
break;
}
}
if (!openFlage)
{
Chajian1 c1 = new Chajian1();
c1.MdiParent = this;
c1.Show();
}
}
DLL注册代码
[DllImport("RouteRunNameRules.dll")]
public static extern int DllRegisterServer();//注册时用
DLL判断代码
int i = DllRegisterServer();
if (i >= 0)
{
RegistryKey CLSID = Registry.ClassesRoot.OpenSubKey("CLSID");
RegistryKey RRNR = CLSID.OpenSubKey("{0396C4FF-1558-4856-9A85-59738AD89E54}");
if (RRNR != null)
{
MessageBox.Show("恭喜你,安装成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("抱歉,安装失败,请联系开发者解决!","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
命名子项加载后,新建pipeline和新建pipe run时Name Rule选项可选择加载过的自动命名的插件,如将命名系统中的5套命名子项全部加载后,新建pipeline和新建pipe run时Name Rule会有5套命名规则供使用者选择,选择对应的子项后,如管线号P-50001的pipeline在500单元环境下只需要输入流水号01,选择P这个物料属性即可自动生成,3″-P-50001-A1B-J40的pipe run只需要在P-50001的环境下选择管径、等级、保温即可自动生成,皆无需在Name中输入,手动输入Name时,管径、等级、保温等参数也是必须选择的,见图4。
5套命名是近10年所设计项目的提炼,今后多数项目直接从工具上安装就可以直接使用了,解决了每个项目都去编制命名插件的周期问题,另外一方面,由于SP3D属于C/S客户端服务器端架构,每个参与项目的客户端都需要安装插件,多用户安装时难度较大,该工具实现了一键安装,最后一方面是,SP3D里看这个命名规则的时候只
图4 管道自动命名过程
能看到名称,看不到具体的规则,平台里点击查看即可。
5效果验证
抽取以往3个手动输入Pipeline与Pipe Run的项目来验证,抽取100条管线进行准确率进行调查,并根据利用自动命名的方法对这3个项目的100条管线进行命名,两者进行对比,见表2。
表2 命名准确率对比情况
从表1可见,管线名称的准确率提高明显,自动命名的前提也是需要输入管线参数的,所以仍然会有一些错误的发生,但是有助于设计水平的提高。
以表2中某石化MTBE项目抽取的100根Pipeline为例,其中共含有546个Pipe Run,手动输入共9982个字符,自动输入共1938个字符,设定每分钟输入6个字符,所需1333分钟((9982-1938)÷6),每个工日8小时,可以节约2.3个工日。
6结语
通过对管道模块自动命名系统的编制,对SP3D软件起到了辅助作用, 一方面提高了Pipeline与Pipe Run的名称输入效率,另外一方面规范了输入格式,提高了模型质量,进而提升了管道轴侧图、管道布置图、管道绝热一览表等与管道名称相关成品的质量。
参考文献
1韩超,靳国峰. SmartPlant在油田地面三维工程设计中的应用 [J]. 油汽田地面工程.2011,30(6):73-74.
(收稿日期2015-12-02)