PDMS二次開發接口搭建

本帖子用簡單案例,詳細描述了PDMS二次開發接口的搭建,可以使PDMS二次開發用戶快速入門。


PDMS提供了方便的二次開發接口,通過此接口,可以根據用戶的需要開發插件。下文對PDMS二次開發功能進行簡要介紹。


PDMS二次開發概述

PDMS(PlantDesignManagementSystem)即工廠三維布置設計管理系統,是一個可定制、多用戶、多學科的工程師控制設計軟件包。自從1977年第一個PDMS商業版本發布以來,PDMS就成為大型、復雜工廠設計項目的首選設計軟件系統。此外,它還為用戶提供了三種二次開發的方式:DAR(Data Access Routines)、C#、PML(AVEVA Programmable Macro Language)。


把用戶設計思想轉化為特定的新功能模塊需要以下幾個基本要素,這些要素構成了PDMS插件開發的基本體系,見圖1。

圖1.jpg

圖 1 PDMS開發體系


PDMS二次開發方式

PDMS二次開發方式主要有三種:DARData Access Routines)、C#PMLAVEVA Programmable Macro Language)。DARsFORTAN77的一些函數,可用于創建與其它程序的接口。如編寫生成材料報表程序、管子應力分析程序、生成軸測圖程序等。使用DAR就像在PDMS中的命令中使用命令一樣方便,對數據的導航和定位方式相似。C#AVEVA使用.NET來二次開發的推薦語言,功能是這三種二次開發方式中最強大的。PMLAVEVA內置二次開發語言,簡單易學,可以在AVEVA中很快開發出實用的程序。考慮到功能性與官方開發教程指導性,決定基于.NET平臺,推薦C#編程方式來完成PDMS插件的開發。


PDMS插件開發

在完整的PDMS操作界面中,加入用戶自定義的插件。在完全不影響原PDMS軟件功能基礎上,開發自定義用戶所需功能。如圖2。

QQ截圖20160711145613.jpg

圖 2 插件集成

通過PDMS 自定義功能,新建出菜單按鈕選項,通過自定義選項,將編譯出的插件程序,關聯到相關功能按鈕。如圖3所示。

QQ截圖20160711145905.jpg

圖 3 程序嵌入

該示例插件的功能。如圖4所示,可提取出所有支架名稱、所屬管道編號名稱、管道溫度、管道壓力、材料、尺寸信息等用戶所需參數。提取出相應所需信息后,可批量導出至txtexcel等其他形式數據。

QQ截圖20160711150343.jpg

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

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

30
18