PDMS二次开发接口搭建
本帖子用简单案例,详细描述了PDMS二次开发接口的搭建,可以使PDMS二次开发用户快速入门。
PDMS提供了方便的二次开发接口,通过此接口,可以根据用户的需要开发插件。下文对PDMS二次开发功能进行简要介绍。
PDMS二次开发概述
PDMS(PlantDesignManagementSystem)即工厂三维布置设计管理系统,是一个可定制、多用户、多学科的工程师控制设计软件包。自从1977年第一个PDMS商业版本发布以来,PDMS就成为大型、复杂工厂设计项目的首选设计软件系统。此外,它还为用户提供了三种二次开发的方式:DAR(Data Access Routines)、C#、PML(AVEVA Programmable Macro Language)。
把用户设计思想转化为特定的新功能模块需要以下几个基本要素,这些要素构成了PDMS插件开发的基本体系,见图1。
图 1 PDMS开发体系
PDMS二次开发方式
PDMS二次开发方式主要有三种:DAR(Data Access Routines)、C#、PML(AVEVA Programmable Macro Language)。DARs是FORTAN77的一些函数,可用于创建与其它程序的接口。如编写生成材料报表程序、管子应力分析程序、生成轴测图程序等。使用DAR就像在PDMS中的命令中使用命令一样方便,对数据的导航和定位方式相似。C#是AVEVA使用.NET来二次开发的推荐语言,功能是这三种二次开发方式中最强大的。PML是AVEVA内置二次开发语言,简单易学,可以在AVEVA中很快开发出实用的程序。考虑到功能性与官方开发教程指导性,决定基于.NET平台,推荐C#编程方式来完成PDMS插件的开发。
PDMS插件开发
在完整的PDMS操作界面中,加入用户自定义的插件。在完全不影响原PDMS软件功能基础上,开发自定义用户所需功能。如图2。
图 2 插件集成
通过PDMS 自定义功能,新建出菜单按钮选项,通过自定义选项,将编译出的插件程序,关联到相关功能按钮。如图3所示。
图 3 程序嵌入
该示例插件的功能。如图4所示,可提取出所有支架名称、所属管道编号名称、管道温度、管道压力、材料、尺寸信息等用户所需参数。提取出相应所需信息后,可批量导出至txt、excel等其他形式数据。
图 4 插件示例
接口程序源代码解析
插件接口界面代码
namespace PIPE
{
public class PIPE : IAddin
{
#region IAddin Members
public string Description
{
get { return "PIPE"; }
}
public string Name
{
get { return "PIPE"; }
}
public void Start(ServiceManager serviceManager)
{
//窗口管理器windowManager
WindowManager windowManager = (WindowManager)serviceManager.GetService(typeof(WindowManager));
//新建接口
DockedWindow _window = windowManager.CreateDockedWindow("Aveva.PIPE", "PDMS插件", new PIPEUI(), DockedPosition.Right);
_window.Width = 425;
_window.Height = 465;
//attributelistWindow.SaveLayout = true;
//接口指令管理器
CommandManager commandManager = (CommandManager)serviceManager.GetService(typeof(CommandManager));
//新建helloworldcommand指令
PIPECommand showCommand = new PIPECommand(_window);
//将你建的接口指令添加至commandManager
//加到这里面你那个软件才有显示
commandManager.Commands.Add(showCommand);
}
public void Stop()
{
throw new NotImplementedException("The operation is not implemented");
}
}
}
#endregion
插件与Menu菜单关联代码
namespace Aveva.Presentation.Addin
{
class PIPECommand : Command
{
private DockedWindow _window;
public PIPECommand(DockedWindow window)
{
//set the command key
this.Key = "Aveva.PIPECommand";
_window = window;
_window.Closed += new EventHandler(window_close);
WindowManager.Instance.WindowLayoutLoaded += new EventHandler(Instance_WindowLayoutLoaded);
}
void Instance_WindowLayoutLoaded(object sender, EventArgs e)
{
this.Checked = _window.Visible;
}
void window_close(object sender, EventArgs e)
{
this.Checked = true;
}
public override void Execute()
{
_window.Show();
}
}
}
以上就是PDMS二次开发接口程序源代码,基于此接口可根据用户需要,开发相应插件功能。如案例中支架信息提取,相应的管道信息开发,与之类似。如果有此方面需求者,请进一步与我联系。
查看更多评论 >