PDMS二次开发介绍-基于.Net(C#)平台
一个PDMS中的PML二次开发程序—结构平台委托的自动生成工具

一个PDMS中的PML二次开发程序—结构平台委托的自动
生成工具
李书剑
【期刊名称】《数字技术与应用》
【年(卷),期】2017(000)009
【摘要】本文介绍了一个化工设计中用于结构平台委托的程序的开发思路与应用.【总页数】2页(P174-175)
【作者】李书剑
【作者单位】中石化广州工程公司,广东广州 510620
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.PDMS二次开发在海洋石油平台电缆模块设计中的应用 [J], 王晶;李震;关迪
2.PDMS二次开发在海洋石油平台电缆模块设计中的应用 [J], 王晶;李震;关迪;
3.利用PML程序实现PDMS管道支架的编号 [J], 王可
4.一个PDMS中的PML二次开发程序-结构平台委托的自动生成工具 [J], 李书剑
5.PDMS二次开发语言PML与.NET(C#)的对比 [J], 魏恒
因版权原因,仅展示原文概要,查看原文内容请购买。
pdms二次开发

基本调试方法
• 跟踪代码 • 跟踪变量 • 手工断点 • 日志文件
编码规范
• 缩进 • 变量/方法命名 • 空格/间距 • 注释 • 方法的长度 • 全局变量
PML实例2: 属性批量编辑器
设计基本界面
• member • List节点列表 • 属性列表 • 属性编辑框
属性列表
• 遍历属性 • 去掉不能修改的属性 • 筛选: 类型/名字相同 • 进一步筛选: 值相同
字符串(String)的常用方法
• 字符串长度 Length() • 类型转换 Real(),Position(),Boolean() • 大小写转换 LowCase(),UpCase() • 两端截取 After(str2),Before(str2),Substring(index) • 中间截取 Substring(index,nchars) • 替换 Replace(str2,str3) • 匹配 Match(str2),MatchWild(str2) • 分割(返回数组) Split() • 修剪 Trim()
• 内容
name: tempMenu directory: tempMenu showOnMenu: TRUE object: tempMenuObject title: tempMenu
常用控件
• Button 按钮 • Text 文本框 • option下拉列表 • List 列表框 • rgroup 单选框 • toggle 复选框
更新位置信息
• Position类型 • 相对位置/绝对位置 • 修改位置信息 • 负实体(相对父节点调整)
基本体缩放
• 如何遍历属性 • 生成修改属性的代码
封装为函数
• 定义Function • 文件存放位置 • 调用方式 • 提取参数 • 封装缩放的代码
01.PDMS介绍

5
Database层次结构
▪ PDMS 数据库是一个树状结构数据库 ▪ 元素(Element) - 层次结构中的节点
Element
Database
Element
Element
Element
Member List
设计DB World /*
Site Zone Equipment Nozzle
所有这些 都是元素 (Element)
选选择择模模块块
点点击击进进入入
选选择择工工程程项项 目目 选选择择 用用户户 输输入入用用户户口口 令令
调调用用 缺缺省省值值
设计模块图形界面(GUI)
工具条 操作提示
主菜单区域
工具条 状态提示区
Member List
PDMS数据库元素列表, 所有数据库组(MDB)内的 元素都可在此列表显示
Graphic View 三维模型显示区
课程结束后 ...
▪ 您应有以下知识 …
– PDMS概念 – PDMS数据库(Databases) – PDMS模块(Modules) – PDMS图形界面(GUI )
请示意我暂停课程 ,如果...
▪ 您有问题要问 ▪ 您觉得我讲得太快
PDMS 概念
▪ P D M S 的含义是什么?
Plant Design Management System
对话框
Radio Buttons Text Box
7
不知道如何操作时 ...
▪ Help…(按F1激活)
– 关于内容的帮助(On Text) – 关于当前窗口的帮助(On Window) – 帮助索引(Index) – 如何使用帮助(On Help) – 关于版本的帮助(On Versions)
基于PDMS三维设计平台的小管二次设计研究与应用

基于PDMS三维设计平台的小管二次设计研究与应用摘要:CPR1000系列核电机组常规岛管道工程量大,阀门数量多,二次设计难度较大。
本文基于PDMS三维设计平台,对小管二次设计进行研究,并在某核电厂常规岛安装中予以应用,实现了二次设计水平与安装管理水平的双提升。
关键词:核电;常规岛;PDMS;小管;二次设计1 引言CPR1000系列机型常规岛管道工程量大,阀门数量多,二次设计难度较大。
采用静态三维模型或CAD平面设计等方式设计,主要存在以下不足:(1)静态三维模型设计,由施工单位自行根据土建图纸建模后开展设计,厂房结构绘制粗略,准确性、实时性、全面性不足。
(2)采用CAD平面设计,需现场测绘,无法提前开展小管二次设计及安装,对系统安装连续性造成影响。
(3)布置美观性存在不足,各区域、系统小管设计缺乏统一技术指导,设计差异性大;设计兼顾性差,碰撞严重,返工修改量大。
(4)阀门布置合理性存在不足,操作、检修空间不足,各功能性管线间距不足。
综上所述,传统的小管二次设计方式存在诸多不足,难以满足小管设计水平提升,安装规范性、美观性等进一步提升的需求。
应用三维设计平台后,传统的管理模式已不再适用,如何充分利用PDMS设计平台优势,创建新的设计方案,落实前期经验反馈,提升设计水平,提升安装工艺,成为亟待解决的问题。
2 论文内容2.1总述:本文主要针对现场搭建PDMS设计平台后,与设计院后台开展联动,实时动态开展二次设计。
创建新的设计方案,利用现场安装人员技术优势,最大化的发挥三维设计平台的功效,提升二次设计水平,拓展三维平台应用价值,对管道安装工艺提升、创建精品工程具有积极意义。
2.2总体设计方案PDMS平台在设计院有其严格的出图校审流程,作为现场应用方,在借鉴设计院基础上,经过相关设计、技术、管理人员的研讨,规范了基于PDMS平台的二次设计流程,编制了现场管道及支架二次设计程序:2.3在线三维图纸会审2.3.1会审小组组成:图纸设计均由有资质的设计单位、人员执行,为发挥现场各单位经验优势,落实经验反馈,在图纸会审人员组成上,强化了现场人员的参与。
一个PDMS中的PML二次开发程序-结构平台委托的自动生成工具

i 痔 母 嚣 稚薅 辘 审 蝴葡 磁 堂 静 菱 鞲 糍 普扭 舞 煮 稚
i j
一 { …… … ~ …
}
}
根据管径判断开洞太小
… … … … …
鼍
撮摇智控判断开洞替载
…
霉 熟 礁 。
% 舄| 祷毒≥ 蔫霉罄
豳描
*
{ ——————————————— l _ … 一~ 一~ … … 一… 一 龟 找到范围内平台荷载点
’ _
—
¥ - H _
— —
q I q Ⅷ _ 目 口
— — — —
-
{ j ;
{
。
—
—
—
—
—
—
—
~
…一…~ 一 …’ …
蔷 噶 蔷
情况, 校审及后期会签 的工 作量 大 , 且修改不便。 针对 以上 问题 , 我们考虑开发一 个应用程序从P DMS 工厂三维
薷
一
蔫
三
肄
曼 … … 曼 … …… 一 … …~… 鐾 一
褒 蓥掀壤
麓
謦
Hale Waihona Puke 模型 中直接生成给结构专业 的平 台委 托资料 , 通过进一 步的开发 , 将 来也可生成其他专、 I J , 委托资料 。
中 图 分类 号 : TP 3 1 1 1 文献标识 ̄ B - : A 文章 编 号 : 1 0 0 7 — 9 4 l 6 ( 2 0 l 7 } 0 9 — 0 1 7 4 一 ( ) 2
1引言
( 1 ) 如何判断管道是 否穿洞 : 解决 方 ’ 案: 利用P M1 找 所 仃平台 范 闻内直管段( TUB I ) , 然后判断直管段 , 如果直管段 - j . 分别 化工 及炼 油设 计中 , 管道设计专业 的工作 主要 包括 两部分 , 一 位于 平台上下两侧 , 则判断其为穿洞。 ( 2 ) 如何判断管道”洲 人小: 解 是搭建工厂三维模型 , 生成施工 图纸和材料报表 , 二是 向各专业提 决方案: 首先判断管道外径( a b o r ) , 然J f 『 彳 判断管道保温厚馊 , 史 足否伴 交委托资料。 在委托资料 中, 工作量最大的是 向结构专业提交 的平 由于不同工艺包 中埘伴热及保 温的描述不问 , 所 以增加 r单独 台委托资料 。 目前 , 同内绝大多数设计院管道设计专业 向结构专业 热 , 判断保温的 白选命令。 ( 3 ) 如何判断荷载点 他置 : 解决方 案: 搜_ j . 所有 的委托还停 留在纯 一 : 维规划阶段 , 不仅要在模型 中对平台上存在 的 在平 台上方2 米范围 内的 的承重 支架( 按照逻辑支架的类 进行设 大量 管道穿洞及简载点进行测量 , 还要在C A D中进行大量重复 的绘 , 并 记录其坐标 , _ 判断为荷载点 , 增 加 门定 义_ 茼 载点功能 , 对未能 编辑工作 , 以 ・ 个冷 换构架为例 , 二维绘 图往往需要一 周甚至更 置) 罐 饔 蔓 判断的荷 载点 , 可手动 毒 蓦 龉 一 击模型添加。 ( 4 ) 如何 门动 ’ 台 f ‘ 洞: 解 长时间 , 而且 由于 人 r 输入量较大 , 常存在漏掉荷载点或者开洞 的
[原创]PDMS软件的二次开发及应用
![[原创]PDMS软件的二次开发及应用](https://img.taocdn.com/s3/m/0db3ecfa915f804d2a16c141.png)
[原创]PDMS软件的二次开发及应用PDMS软件的二次开发及应用姓名:王晶指导老师:郭琳实习单位:建造公司技术部电议室毕业院校:哈尔滨工业大学所学专业:软件工程2010 年 12 月摘要PDMS软件在许多行业中流行,适应多种行业建模,具有一定的普遍性。
PDMS软件能够进行的三维建模可直接生成自动标注的分专业或多专业布置图、单管图、配管图、结构图、支吊架安装图,并抽取材料等。
PDMS软件的引进为公司带来了更多的方便提高了效率和准确度,但由于该软件的普及性特点注定了对本公司所涉及的工程项目不具备针对性,虽然带来了巨大的效益,同时对于具体项目而言仍然不可避免的存在着某些繁琐复杂的手工工作程序。
本课题使用PML语言对PDMS软件进行了二次开发,提供了多个扩展功能,通过与原软件风格相融合的图形化形式展示给用户,操作方便,不但解决了工作中存在的许多重复、耗时的工作,提高工作效率,增强计算准确率,也成为PDMS的二次开发的真实实践,掌握一种新的技术。
对PDMS软件新增功能的使用将为公司带来更高效、更省时的收益,并将随着该技术的不断完善、熟练,成为公司的一种商品为公司带来新的效益。
关键词:PDMS;PML语言;文件存储;Add-ins;目录摘要.................................................I 目录................................................II 一概述..............................................1 1.1 课题背景及研究目的 . (1)1.1.1 与课题相关的研究综述 (1)1.1.2 课题研究目的与意义 ...........................2 1.2 课题研究的创新点 ................................. 2 二研究方案............................................52.1 技术方案 (5)2.1.1 PDMS运行机制及二次开发技术 (5)2.1.2 PML功能及构成 ..............................7 2.2 技术关键 (7)2.2.1 PML 中Add-ins的应用 (8)2.2.2 PML文件存储机制 (8)2.2.3 PML对象的应用 .............................10 三 PDMS扩展功能介绍及应用 ............................113.1 PDMS扩展功能界面展示 .......................... 11 3.2 电缆路径自动敷设及电缆长度统计功能 .............. 12 3.3 托架上某截面电缆信息的展示功能 .................. 15 3.4 填充率计算及护管选型功能 ........................ 16 3.5 错误路径删除及打印单个路径图纸功能 .............. 18 3.6 相关联的其它扩展功能 ............................ 19 四总结.............................................20 五参考文献...........................................21 六致谢 (22)一概述1.1 课题背景及研究目的PDMS软件作为一个三维工厂设计系统应用于五十多个国家,其中石油、化工、制药行业用户占42%。
一个PDMS中的PML二次开发程序—结构平台委托的自动生成工具

一个PDMS中的PML二次开发程序—结构平台委托的自动生成工具李书剑【摘要】本文介绍了一个化工设计中用于结构平台委托的程序的开发思路与应用.【期刊名称】《数字技术与应用》【年(卷),期】2017(000)009【总页数】2页(P174-175)【关键词】PDMS;PML;二次开发;结构平台委托【作者】李书剑【作者单位】中石化广州工程公司,广东广州 510620【正文语种】中文【中图分类】TP311.1化工及炼油设计中,管道设计专业的工作主要包括两部分,一是搭建工厂三维模型,生成施工图纸和材料报表,二是向各专业提交委托资料。
在委托资料中,工作量最大的是向结构专业提交的平台委托资料。
目前,国内绝大多数设计院管道设计专业向结构专业的委托还停留在纯二维规划阶段,不仅要在模型中对平台上存在的大量管道穿洞及荷载点进行测量,还要在CAD中进行大量重复的绘图编辑工作,以一个冷换构架为例,二维绘图往往需要一周甚至更长时间,而且由于人工输入量较大,常存在漏掉荷载点或者开洞的情况,校审及后期会签的工作量大,且修改不便。
针对以上问题,我们考虑开发一个应用程序从PDMS工厂三维模型中直接生成给结构专业的平台委托资料,通过进一步的开发,将来也可生成其他专业委托资料。
(1)程序原理分析。
平台委托自动生成的内容包括:判断荷载点的位置及大小,开洞的尺寸及定位,后期的自动标注和分图等,具体实现路径如表1。
(2)程序应用范围。
本程序适用于包括PDMS11.5, PDMS12.0,E3D在内的主要版本PDMS客户端。
(3)主要设计理念。
设计时的主要理念与难点如下:(1)如何判断管道是否穿洞:解决方案:利用PML找出所有平台范围内直管段(TUBI),然后判断直管段头尾,如果直管段头尾分别位于平台上下两侧,则判断其为穿洞。
(2)如何判断管道开洞大小:解决方案:首先判断管道外径(abor),然后判断管道保温厚度及是否伴热,由于不同工艺包中对伴热及保温的描述不同,所以增加了单独判断保温的自选命令。
PDMS二次开发介绍-基于.Net(C#)平台

创建工具条按钮,调用新写的命令
撤销机制
UndoTransaction trans = UndoTransaction.GetUndoTransaction(); trans.StartTransaction("My Transaction");
// 模拟修改 String s1 = Example.Instance.mEqui.GetString(DbAttributeInstance.DESC); String s2 = String.Concat(s1, "x"); Example.Instance.mEqui.SetAttribute(DbAttributeInstance.DESC, s2); trans.EndTransaction(); // 撤销操作,回到原来值 UndoTransaction.PerformUndo(); // 设置撤销标记
HelloWord插件
• 可加载插件必须从这个接口类派生:Iaddin,有几个虚函数可以重写。 启动PDMS加载时调用Start(),关闭PDMS时,调用Stop()。
• 添加引用DLL,及命名空间。Pdms安装主目录中提供了各类需引用的dll。 Aveva.ApplicationFramework.dll
通过代码与配置文件结合的方式,代码获取工具条管理 类,加载相应的Ur commandBarManager
= (CommandBarManager)serviceManager.GetSer vice(typeof(CommandBarManager)); commandBarManager.AddUICustomizationFile ("AttributeBrowser.uic", "AttributeBrowser");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
配置文件中定义了按钮名字、命令ID,及停靠属性等。 UIC文件没有指定目录,则默认在PDMS主目录中。 除了支持工具条,菜单也可以在UIC文件里定义。
创建菜单、工具条示意
创建元素
DbElement dbCE = CurrentElement.Element; // 当前选择的元素 DbElementType dbType = dbCE.GetElementType();
PML开发方式- Hello World示意
1.编写hello.pmlfrm代码文件,放到该目录下: D:\AVEVA\Plant\PDMS12.0.SP6\PMLLIB\design\forms\ hello.pmlfrm 2.D:\AVEVA\Plant\PDMS12.0.SP6\PMLLIB\pml.index 文件中添加 hello.pmlfrm,即可自动加载该代码。 3.进入PDMS后,命令行敲入调用命令显示对话框:show !!hello,即可弹出对话框,如右图:Βιβλιοθήκη 迭代元素,按树结构方式迭代
// 先定义过滤器 TypeFilter filt = new TypeFilter(); filt.Add(DbElementTypeInstance.SITE); filt.Add(DbElementTypeInstance.PIPE); filt.Add(DbElementTypeInstance.NOZZLE); filt.Add(DbElementTypeInstance.TEE); CompoundFilter filtComp = new CompoundFilter(); filtComp.AddShow(filt); // 通过树浏览器扫描节点下所有指定类型的元素 ElementTreeNavigator navi = new ElementTreeNavigator(DbElement.GetElement("/*"), filtComp); DbElement[] tees = navi.MembersInScan(dbCE); string outResult = “ElementTreeNavigator()方式迭代元素:\n"; foreach (DbElement db in tees) { string subName = db.ToString(); string subType = db.GetElementType().ToString(); outResult += "名称:" + subName + ", 类型:" + subType + newLine; }
支持全路径,及环境变量。 修改插件配置文件,添加我们的插件: 启动后,就会加载插件,并调用入口函数。 D:\AVEVA\Plant\PDMS12.0.SP6\DesignAddins.xml:
创建主命令
• 重写命令类,并在类构造函数中,设置命令ID,
• 重写虚函数,用以点击命令后,需要做的工作 public virtual void Execute();
HelloWord插件
• 可加载插件必须从这个接口类派生:Iaddin,有几个虚函数可以重写。 启动PDMS加载时调用Start(),关闭PDMS时,调用Stop()。
• 添加引用DLL,及命名空间。Pdms安装主目录中提供了各类需引用的dll。 Aveva.ApplicationFramework.dll
PDMS二次开发简介
基于.Net(C#)平台
二次开发方式综述
• AVEVA PDMS提供了三种二次开发的方式:DARs, PML和AVEVA .Net(C#)。 • DARs是Fortran的函数库,也可以用C/C++来开发,依赖的库少,但是只能用于控制台的程序,没 有用户界面(GUI),所以对于提取PDMS数据,然后进行简单处理的小程序比较试用。 • PML:ProgrammableMacroLanguage 可编程宏语言,是一种解释型的脚本语言,其只能在PDMS 软件中被解释执行。PDMS自带的很多程序就是用PML开发的。脚本语言的显著优势就是将常用的命 令封装出来,这样在测试程序新功能时,不需要编译源码,只需要编写脚本,提高软件开发效率;使 用脚本时需要将功能暴露出来,这样会对接口的合理性做更多考虑,使软件架构更清晰等。缺点就是 对于复杂算法,执行效率较低,相对.Net方式功能少。
try { if (dbType == DbElementTypeInstance.WORLD) // 不同类型节点下,创建不同类型的元素 { DbElement dbSite = dbCE.Create(0, DbElementTypeInstance.SITE); dbSite.SetAttribute(, "/NewSite"); } eslse if( SITE、ZONE、PIPE) else if( dbType == DbElementTypeInstance.BRANCH) { DbElement dbElement = dbCE.Create(0, DbElementTypeInstance.ELBOW); // 弯头 dbElement.SetAttribute(, "/NewElbow"); dbElement = dbCE.Create(0, DbElementTypeInstance.PIPE); dbElement.SetAttribute(, "/NewPipe"); dbElement.SetAttribute(DbAttributeInstance.DESC, "/NewAdded Pipe");
撤销机制
UndoTransaction trans = UndoTransaction.GetUndoTransaction(); trans.StartTransaction("My Transaction");
// 模拟修改 String s1 = Example.Instance.mEqui.GetString(DbAttributeInstance.DESC); String s2 = String.Concat(s1, "x"); Example.Instance.mEqui.SetAttribute(DbAttributeInstance.DESC, s2); trans.EndTransaction(); // 撤销操作,回到原来值 UndoTransaction.PerformUndo(); // 设置撤销标记
System.Windows.Forms.MessageBox.Show(outResult);
迭代元素2,通过前后、从属关系迭代元素
// 获取当前元素 DbElement dbCE = CurrentElement.Element; string curName = dbCE.ToString(); string curType = dbCE.GetElementType().ToString(); // 前面的元素 DbElement preDb = dbCE.Previous; if (!preDb.IsNull && preDb.GetElementType() == DbElementTypeInstance.TUBING) preDb = preDb.Previous; // 大部分情况下第一pre是 ileave tube,而不是真正的下一个元素 // 后面的元素 DbElement nxtDb = dbCE.Next(); // 该节点下所有的元素,比如一个节点下所有的管件、设备等 DbElement[] dbMembs = dbCE.Members(); foreach(DbElement db in dbMembs) { string subName = db.ToString(); string subType = db.GetElementType().ToString(); …… }
基于.Net(c#)方式开发
工程、数据库、元素概念
• 项目(Project),为数据根节点,对应实际工程项目的概念。 一个项目包括多个数据库(MDB)。 • 登陆时,可以选择进入不同模块(Module),设计模块 (Design)还是轴测图、或元件库视图。 • 每个数据库(MDB)下对应如下元素: 树状数据库中每一个节点叫做一个元素,每个元素都有属性保存 他的特征信息,不同类型的元素属性类型也不同 当前元素可以是一个有元素,也可以是元素的结合。
• AVEVA .Net是AVEVA推出的一种更方便的开发方式。结合C#丰富的库及相对于PML而言更加高效, 使用C#在AVEVA上可以快速地开发出应用程序。且使得在PML中调用C#的库成为可能,使 用C#对PDMS进行开发优势明显,但也有不足之处,那就是程序调试不方便,当C#的库DLL被 PDMS加载后,不能卸载,不能对源码实时修改,开发效率有所影响。
注册新写的命令类
• Iaddin派生类入口函数中注册新写的命令类
public void Start(ServiceManager serviceManager) { // 注册命令 CommandManager commandManager = (CommandManager)serviceManager.GetService(typeof(CommandManager));
基于.Net(c#)方式开发
• VS中通过引用PDMS提供的DLL,编译出DLL类库,在PDMS中以插件方式 加载,实现PDMS二次开发。PDMS12.0 Sp6需要用.Net2.0版本. • 主要可实现的功能: 程序框架、设置相关,比如:添加工具条按钮及相应命令、 数据库(工程)访问、元素(实体)获取参数、修改、删除等 几何库、图形库等 • 一些事件的响应处理,比如元素创建、修改、或选中时等