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二次开发接口程序源代码,基于此接口可根据用户需要,开发相应插件功能。如案例中支架信息提取,相应的管道信息开发,与之类似。如果有此方面需求者,请进一步与我联系。

登录后免费查看全文
立即登录
(17条)
默认 最新
评论 点赞
辛苦了
评论 点赞

查看更多评论 >

点赞 30 评论 23 收藏
关注