(中国五环工程有限公司,湖北 武汉 430223)
目前,三维设计已成为化工设计的主流设计方式,PDMS是通用的三维设计平台之一。尽管如此,二维图纸作为重要的图纸信息载体,仍不可或缺,如设备装配图、化工厂平面总图等仍采用二维设计。在工程设计中,经常需要将二维图纸中的信息录入到三维平台中,对于这项工作,现在还是采用人力居多,本篇讨论如何将CAD格式二维图纸信息载入三维平台并实现CAD和PDMS的联动操作。
大多工程设计软件都是采用Windows操作系统,其进程非常复杂,在此只讨论进程间的数据共享问题。打开PDMS软件和CAD软件,二者分属两个进程,拥有各自独立的内存空间,彼此的内存空间是受保护的。如果需要实现进程间的通讯,一般有3种方式。
(1)调用同一个DLL(动态连接库),DLL中的全局数据可以被调用DLL的所有进程共享,虽然可以通过DLL进行进程间数据共享,但从数据安全的角度考虑,并不提倡这种方法,而且在实际应用中,采用这种方式实现软件之间联动的难度较大,稳定性较差。
(2)采用套接字(Sockets)实现通讯。套接字是TCP/IP网络通信的基本操作单元,成对出现,分别是客户端套接字和服务端套接字,可实现不同主机之间的进程进行双向通信,是使用非常广泛的通讯方式,几乎所有的网络通讯都使用套接字作为通讯底层。如果采用这种方式进行CAD和PDMS联动操作,相当于客户端套接字和服务端套接字都在本机。
(3)采用管道(Pipe)实现通讯。管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信,对于两个进程之间的通讯我们采用命名管道(Named Pipe),其具有简单高效的特点,非常适合作为CAD和PDMS联动操作的通讯方式。
PDMS有两种常用的二次开发方式,即PML和.NET。PML(Programmable Macro Language)是一种面向对象的脚本语言,只能在PDMS软件内执行。PDMS软件自带的很多程序就是使用PML开发的。使用PML二次开发的优势是运行前不需要编译,可提高开发效率;不足之处是相对于.NET,其功能较少,不能进行内存、指针和通讯操作。.NET存在两种实现方法,即.NET Addin和PML.NET,主要是在VisualStudio环境下使用C#进行二次开发。通过PDMS提供的接口,利用C#可读取/修改PDMS数据库内容。使用C#进行二次开发的优势是可借用微软.NET内丰富的类库,进而大大扩增程序功能。不足之处是程序调试不方便,C#编译好的dll文件被PDMS加载后,不能卸载,因此不能对程序源码实时修改。
常见的CAD二次开发方式有AutoLISP、ObjectARX/ObjectDBX、AutoCAD.NET等。自AutoCAD 2006开始,Autodesk为CAD二次开发提供了.NET API支持。AutoCAD.NET API是ObjectARX库在.NET平台的封装,可被任何支持.NET的语言(VB,C#,C++等)访问。
AutoCAD.NET API内有许多不同类型的对象。每个CAD组件(直线,文字,标注,线型,图层,块等)均在AutoCAD.NET API中对应一个对象。
本文采用AutoCAD.NET方式进行二次开发。开发语言为C#。在CAD命令行中输入NETLOAD,选择需要载入(编译通过)的dll,就可以完成二次开发的应用。
打开CAD程序,命令行输入NETLOAD,选择PDMSCADAddin.dll文件并打开,然后在命令行输入自定义命令“PDMS”,开始监听来自PDMS的指令(见图1)。
图1 加载自定义命令集
使用自主开发(PML)的设备建模工具与CAD图纸内设备管嘴数据进行联动,在PDMS内批量创建管嘴,操作流程如下。
(1)打开设备图纸,加载PDMSCADAddin.dll,开始监听PDMS指令。
(2)在PDMS内设备建模工具面板上单击“CAD pick”按钮,向CAD发送指令(见图2)。
图2 设备建模工具面板
(3)CAD接收指令后执行联动操作,本例为框选管口表,然后回车确认(见图3)。
图3 CAD设备详图中的管口表
(4)返回PDMS,各管口创建完毕,效果见图4和图5。
图4 PDMS中设备管口目录树
图5 PDMS中创建的管口
(5)利用设备建模工具的调整管口方位及标高功能,实现精确定位即可。
(1)打开总图图纸,加载PDMSCADAddin.dll,开始监听PDMS指令。
(2)在PDMS内总图辅助工具面板上单击“CAD Draw”按钮,向CAD发送指令(见图6)。
图6 PDMS总图辅助工具面板
(3)CAD接收指令后执行联动操作,本例为选择多条直线,然后回车确认(见图7)。
图7 某项目总图
(4)返回PDMS,总图道路创建完毕,效果见图8。
图8 PDMS中创建的总图道路及图框
经过对Windows操作系统和CAD、PDMS的研究以及实际编程操作,证明采用管道这种方式实现Windows系统中两个独立进程通讯的可行性,验证了CAD和PDMS联动操作的可行性。进一步推广使用,可以在实际工作中节省大量时间,并提高效率和准确性。