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二次開發接口程序源代碼,基于此接口可根據用戶需要,開發相應插件功能。如案例中支架信息提取,相應的管道信息開發,與之類似。如果有此方面需求者,請進一步與我聯系。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















