Task Add-in Sample (C#)

news2024/11/18 21:42:59
  1. 下例显示了用 C# 编写Task Add-in 的完整源代码。
  • 使用 C# 类库 (.NET Framework) 创建 Visual Studio 中的项目。
  • 实现 IEdmAddIn5。
  • 在“任务属性”对话框中创建自定义页。
  • 自定义任务详细信息页面。

注意: 若要填充下面的 GUID 属性,请在 IDE 中单击“工具”>“创建 GUID”,选择“GUID 格式 5”,单击“复制”,然后单击“退出”。用复制的字符串替换 [Guid("")]。


  1. 启动VS。
  2. 新建项目,选择类库。                                    
  3. 在“解决方案资源管理器”中右键单击项目名称 ,然后单击添加引用。
    1. 在 左侧面板单击 浏览 ,选择EPDM.Interop.epdm,然后单击添加

    2. 如果需要,引入相关的程序集。
  4. 在“解决方案资源管理器”中右击项目名称,然后单击“属性”。
    1. “应用程序>程序集信息”。                         
    2. 取消勾选“使程序集 COM 可见(M)”。                         
  5. 修改Class1.cs。这里修改类名为TaskAddin.cs。
    1.  添加和创建GUID。
    2. 修改代码
using System;
using System.Runtime.InteropServices;//添加
using System.Windows;
using EPDM.Interop.epdm;

namespace Task_Add_in
{
    [Guid("6EC3D9F8-D202-45A5-8F12-3EB5DED97A7E"), ComVisible(true)]
    public class TaskAddin : IEdmAddIn5
    {

    }
}

  1. 对EdmCmdType.EdmCmd_TaskSetup、EdmCmd_TaskSetupButton、EdmCmd_TaskRun、EdmCmd_TaskDetails进行处理 

    using System;
    using System.Runtime.InteropServices;//添加
    using System.Windows;
    using EPDM.Interop.epdm;
    
    namespace Task_Add_in
    {
        [Guid("6EC3D9F8-D202-45A5-8F12-3EB5DED97A7E"), ComVisible(true)]
        public class TaskAddin : IEdmAddIn5
        {
            public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr)
            {
     
                try
                {
                    poInfo.mbsAddInName = "My Text Add-in";
                    poInfo.mbsCompany = "Dassault Systemes";
                    poInfo.mbsDescription = "Example demonstrates a task that finds files that have been in selected workflow states a selected number of days";
                    poInfo.mlAddInVersion = 1;
                    //Minimum SOLIDWORKS PDM Professional version needed for Tasks is 10.0
                    poInfo.mlRequiredVersionMajor = 10;
                    poInfo.mlRequiredVersionMinor = 0;
     
                    //Register to call OnCmd on task-related events
                    poCmdMgr.AddHook(EdmCmdType.EdmCmd_TaskSetup);  //EdmCmd_TaskSetup,40 = Use this hook to add a task setup page to a task properties dialog box wizard,钩子将Task设置页添加到任务属性对话框向导
                    poCmdMgr.AddHook(EdmCmdType.EdmCmd_TaskSetupButton);//EdmCmd_TaskSetupButton,41 = OK or Cancel was clicked in the task properties dialog box wizard,在任务属性对话框向导中单击了“确定”或“取消”
                    poCmdMgr.AddHook(EdmCmdType.EdmCmd_TaskRun);//EdmCmd_TaskRun,43 = This hook is called on the task server; you should perform the actual work there,钩子在任务服务器上调用;你应该在那里执行实际工作
                    poCmdMgr.AddHook(EdmCmdType.EdmCmd_TaskDetails);//EdmCmd_TaskDetails,42 = Use this hook to add your own custom page to the task details dialog box in the task list 钩子将您自己的自定义页面添加到任务列表中的任务详细信息对话框中
                }
                catch (System.Runtime.InteropServices.COMException ex)
                {
                    MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + ex.Message);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            public void OnCmd(ref EdmCmd poCmd, ref EdmCmdData[] ppoData)
            {
                try
                {
                    switch (poCmd.meCmdType)
                    {
                        case EdmCmdType.EdmCmd_TaskSetup:
                            OnTaskSetup(ref poCmd, ref ppoData);
                            break;
    
                        case EdmCmdType.EdmCmd_TaskSetupButton:
                            OnTaskSetupButton(ref poCmd, ref ppoData);
                            break;
    
                        case EdmCmdType.EdmCmd_TaskRun:
                            OnTaskRun(ref poCmd, ref ppoData);
                            break;
    
                        case EdmCmdType.EdmCmd_TaskDetails:
                            OnTaskDetails(ref poCmd, ref ppoData);
                            break;
                    }
                }
                catch (System.Runtime.InteropServices.COMException ex)
                {
                    MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + ex.Message);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            private void OnTaskDetails(ref EdmCmd poCmd, ref EdmCmdData[] ppoData)
            {
                MessageBox.Show("hook type :EdmCmdType.EdmCmd_TaskDetails\n" + "OnTaskDetails is called");
            }
    
    
            private void OnTaskRun(ref EdmCmd poCmd, ref EdmCmdData[] ppoData)
            {
                MessageBox.Show("hook type :EdmCmdType.EdmCmd_TaskRun\n" + "OnTaskRun is called");
            }
    
    
            private void OnTaskSetup(ref EdmCmd poCmd, ref EdmCmdData[] ppoData)
            {
                MessageBox.Show("hook type :EdmCmdType.EdmCmd_TaskSetup\n" + "OnTaskSetup is called");
            }
    
            private void OnTaskSetupButton(ref EdmCmd poCmd, ref EdmCmdData[] ppoData)
            {
                MessageBox.Show("hook type :EdmCmdType.EdmCmd_TaskSetupButton\n" + "OnTaskSetupButton is called");
            }
        }
    }
  2. 安装生成的Add-in。
    1. 打开PDM 管理工作。
    2. 登录。
    3. 在插件中添加新插件。
  3. 管理 -> 任务  ->  新建任务   ->  输入任务名称 
    1. -> 选择 My Task Add-in ,消息类型为EdmCmdType.EdmCmd_TaskSetup
    2. -> 点击确定或取消,消息类型为EdmCmdType.EdmCmd_TaskSetupButton
    3. 任务 -> 任务列表 -> 选择任务 -> 选择细节,消息类型为EdmCmdType.EdmCmd_TaskDetails
    4. 设置任务后启动客户端,设置任务主机,当任务运行时,消息类型为EdmCmdType.EdmCmd_TaskSetupButton             

     

     


    任务 -> 任务列表 -> 选择任务 -> 选择细节,消息类型为EdmCmdType.EdmCmd_TaskDetails  这一步不清楚为什么有时候触发不了函数


https://download.csdn.net/download/hd51cc/87893987

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】登录root账户时报错Sorry, that didn‘t work. Please try again.抱歉,这不管用,请再试一次

一、问题背景 登录其他普通账户的GUI桌面,发现都很正常,但是登录管理员账户root的桌面,重启之后一段时间正常,过一段时间就会出现登录报错Sorry, that didn’t work. Please try again. 二、解决办法——配置文件的解析 下面给出…

由于找不到msvcp120.dll丢失的解决方法,计算机丢失msvcp120.dll修复教程

在打开游戏或者软件的时候,计算机提示由于找不到msvcp120.dll,无法继续执行此代码怎么办呢?msvcp120.dll是一个动态链接库(DLL)文件,其作用是提供一些常用的C函数和类库,以便在Windows操作系统上…

高手都是如何做 Mysql 慢 SQL 优化

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 💕💕 推荐:体系化学习Java(Java面试专题&#…

2017~2018学年《信息安全》考试试题(A2卷)

北京信息科技大学,2017~2018 学年第二学期《信息安全》考试试题(A 卷) 适用专业班级:计科15级 重修课程所在学院:计算机学院 考试形式:闭卷 一、单选题(本题满分20分,共含10 道小题…

《Java从入门到精通》学习笔记

Java从入门到精通学习笔记 第一章 初识java a) Java是一种通过解释方式来执行的语言。 b) Java语言编写的程序既是编译型,又是解释型的。编译只进行一次,而解释在每次运行程序时都会进行。 c) JDK下载安装 i. path:jdk/bin ii. calsspath:jdk/jre/lib ii…

融合动态反向学习的阿奎拉鹰与哈里斯鹰混合优化算法(DAHHO)-附代码

融合动态反向学习的阿奎拉鹰与哈里斯鹰混合优化算法(DAHHO) 文章目录 融合动态反向学习的阿奎拉鹰与哈里斯鹰混合优化算法(DAHHO)1.哈里斯鹰优化算法2.改进哈里斯鹰优化算法2.1 动态反向学习策略2.2 改进混合算法理论分析 3.实验结果4.参考文献5.Matlab代码6.python代码 摘要&a…

融合黄金正弦和随机游走的哈里斯鹰优化算法(GSHHO)-附代码

融合黄金正弦和随机游走的哈里斯鹰优化算法(GSHHO) 文章目录 融合黄金正弦和随机游走的哈里斯鹰优化算法(GSHHO)1.哈里斯鹰优化算法2.改进哈里斯鹰优化算法2.1 黄金正弦算法2.2 非线性能量指数递减策略2.3 高斯随机游走策略 3.实验结果4.参考文献5.Matlab代码6.python代码 摘要…

【软件环境安装部署】华为云服务器下 Docker 安装 MongoDB 以及 SpringBoot 整合 MongoDB 开发使用

文章目录 安装测试 MongoDB拉取镜像创建和启动容器登录mongo容器,并进入到【admin】数据库创建一个用户,mongo 默认没有用户连接mongo数据库测试数据库,插入一条语句测试数据库,查询刚才插入的语句查看所有数据库开放指定端口开放…

(八)CSharp-泛型中的方法结构委托接口(2)

一、泛型方法 泛型方法可以在泛型和非泛型类以及结构和接口中声明。 1、声明泛型方法 泛型方法具有类型参数列表和可选的约束。 泛型方法有两个参数列表。 封闭在圆括号内的方法参数列表。封闭在尖括号内的类型参数列表。 要声明泛型方法,需要: 在方法…

Java程序猿搬砖笔记(十四)

文章目录 MySQL自定义排序用locate本质是数字排序case when then...语法排序field()函数排序 阿里云Maven镜像仓库无法下载spring-cloud-dependencies依赖问题MySQL更新同一个表的同个字段解决方法一(推荐)解决方法二 SpringBoot返回的JSON中的null转换为空字符串Spring的相关注…

OpenGL光照之光照贴图

文章目录 漫反射贴图镜面光贴图放射光贴图代码 每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观,但是这仍不能对一个物体的视觉输出提供足够多的灵活性。 我们将整个物体的材质定义为一个…

Linux命令:lsof

目录 一、理论 1.lsof 二、实验 1.无参数 2.-p 参数 3.-l 参数 4. -u 参数 5.-c 参数 6.-d 参数 7.fileName 8. -i 参数 一、理论 1.lsof (1)概念 命令 lsof ( list opened files )负责列出系统中已经打开的文件,包括普通文件&a…

【uni-app】使用uni-app实现简单的登录注册功能

文章目录 前言一、页面布局二、注册页面1.注册接口使用2.注册成功提示3.注册成功页面跳转4.完整代码 三、登录页面1.登录接口使用2.本地存储使用3.完整代码 总结 前言 大家好,今天和大家分享一下如何在uni-app中实现简单的登录注册功能。 首先你需要掌握一下知识点…

【SQL Server】数据库开发指南(九)详细讲解 MS-SQL 触发器的的创建、修改、应用与适用场景

本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念…

UE特效案例 —— 火堆

一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设置相应的强度和颜色;PostProcessVolume设置曝光,设置Min/Max Brightness为1; 与关闭Game Sett…

03并发进程

文章目录 哲学家进餐问题1.利用结构型信号量解决哲学家进餐问题解决方案1:每次最多允许四位哲学家就餐 2.利用AND型信号量解决哲学家进餐问题 生产者-消费者问题1.利用结构型信号量解决生产者-----消费者问题单缓冲区生产者-消费者问题多缓冲区 2.利用AND型信号量解…

高并发编程:并发容器

一、概述 常见的容器如下图,我们会挑选高并发中常用的容器进行介绍。 二、ConcurrentHashMap 个ConcurrentHashMap提高效率主要提高在读上面,由于它往里插的时候内部又做了各种各样的判断,本来是链表的,到8之后又变成了红黑树&a…

详细讲解!selenium:解决页面元素display:none的方法

目录 前言: 1、具体问题 2、解决方案 代码解析: 结尾: 前言: 在进行 Web 自动化测试时,页面元素的可见性对测试结果的准确性和稳定性至关重要。然而,有些时候页面元素会被设置为 display:none&#x…

亚马逊云科技出海日,助推出海业务全球拓展突飞猛进

出海路漫漫,企业开拓全球市场而孤军奋战,常常会感到力不从心。好的产品有了,渠道有了,供应链有了,还要自己从0-1搭建存储、网络和架构?营销季来了想趁机冲一波销量,还要自己运维本地IDC、大促来…

10.无监督学习之K-means算法

10.1 无监督学习的定义 监督学习:我们有一些列标签,然后用假设函数去拟合它 无监督学习:给出的数据不带任何标签。对于无监督学习来说,需要做的就是将数据输入到算法中,让算法找到一些隐含在数据中的结构,通…