Solidwoks PDM Add-ins (C#) 创建菜单命令

news/2024/11/24 6:37:28/

演示如何创建 C# Add-ins :将菜单命令添加到库视图的上下文相关菜单的。

注意:由于 SOLIDWORKS PDM Professional 无法强制重新加载add-ins,因此必须重新启动所有客户端计算机以确保使用最新版本的add-ins。

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

      

    1. 单击 COM 在 左侧面板,单击PDMWorks Enterprise 2019 Type Library,然后单击添加

    2. 如果需要,引入相关的程序集。
    3. 设置Interop.EdmLib的嵌入互操作类型为False。
  4. 在“解决方案资源管理器”中右击项目名称,然后单击“属性”。

    1. “应用程序>程序集信息”。
    2. 取消勾选“使程序集 COM 可见(M)”。
  5. 修改Class1.cs。这里修改类名为MenuDemo。

    1. 添加和创建GUID。
    2. 修改代码
      using System;
      using EdmLib;//添加
      using System.Runtime.InteropServices;//添加namespace Creating_Menu_Commands
      {[Guid("32369E8C-7E73-4E33-BA43-9CCDD485C5CE"), ComVisible(true)]public class MenuDemo{}
      }
  6. 实现 IEdmAddIn5::GetAddInInfo 和IEdmAddIn5::OnCmd                                                                                                                                                       EdmMenuFlags.EdmMenu_MustHaveSelection意味着 second command在用户选择了一个或多个文件或文件夹时生效。
    using System;
    using EdmLib;//添加
    using System.Runtime.InteropServices;//添加namespace Creating_Menu_Commands
    {[Guid("32369E8C-7E73-4E33-BA43-9CCDD485C5CE"), ComVisible(true)]public class MenuDemo: IEdmAddIn5{public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr){//指定要在Add-ins的“属性”对话框中显示的信息 poInfo.mbsAddInName = "Menu command sample";poInfo.mbsCompany = "SOLIDWORKS Corporation";poInfo.mbsDescription = "Adds menu command items";poInfo.mlAddInVersion = 1;//指定 SOLIDWORKS PDM Professional 所需的最低版本poInfo.mlRequiredVersionMajor = 5;poInfo.mlRequiredVersionMinor = 2;//Register menu commands; SOLIDWORKS PDM Professional passes command IDs, 1000 and 1001, to IEdmAddIn5::OnCmd to indicate which command the user selects//注册菜单命令;SOLIDWORKS PDM Professional 将命令 ID 1000 和 1001 传递给 IEdmAddIn5::OnCmd 以指示用户选择哪个命令poCmdMgr.AddCmd(1000, "First command", (int)EdmMenuFlags.EdmMenu_Nothing, "This is the first command", "First command", 0, 99);poCmdMgr.AddCmd(1001, "Second command", (int)EdmMenuFlags.EdmMenu_MustHaveSelection, "This is the second command", "Second command", 1, 99);}public void OnCmd(ref EdmCmd poCmd, ref Array ppoData){//Handle the menu command  处理菜单命令{string CommandName = null;if (poCmd.mlCmdID == 1000){CommandName = "The first command.";}else{CommandName = "The second command.";}//Retrieve the bounds of the array containing the selected files and folders  检索包含所选文件和文件夹的数组的边界int index = 0;int last = 0;index = ppoData.GetLowerBound(0);   //返回数组的指示维度的最小可用下标。index = ppoData.GetLowerBound(0);   //返回数组的指示维度的最大可用下标。string StrID = null;//Create a message showing the names and IDs of all selected files and folders 创建显示所有选定文件和文件夹的名称和 ID 的消息string message = null;message = "You have selected the following files and folders: " + "\r\n";while (index <= last){//GetValue:获取当前 Array 中指定元素的值。//EdmCmdData.mlObjectID1:文件、文件夹、数据卡或控件的 ID,具体取决于命令的类型。if (((EdmCmdData)ppoData.GetValue(index)).mlObjectID1 == 0) {message += "Folder: (ID=";StrID = ((EdmCmdData)ppoData.GetValue(index)).mlObjectID2.ToString();//文件、文件夹、数据卡或控件的 ID,具体取决于命令的类型。message = message + StrID + ") ";}else{message += "File: (ID=";StrID = ((EdmCmdData)ppoData.GetValue(index)).mlObjectID1.ToString();message = message + StrID + ") ";}message = message + ((EdmCmdData)ppoData.GetValue(index)).mbsStrData1 + "\r\n"; //mbsStrData1:变量、配置、标签或路径的名称,具体取决于命令的类型。index++;}//Display the messageEdmVault5 v = default(EdmVault5);v = (EdmVault5)poCmd.mpoVault;v.MsgBox(poCmd.mlParentWnd, message, EdmMBoxType.EdmMbt_OKOnly, CommandName);   //向用户显示一个消息框}}}
    }

  7. 单击“生成”>“生成解决方案” ,生成Add-in。
  8. 安装生成的Add-in。
    1. 打开PDM 管理工作。
    2. 登录。
    3. 在插件中添加调试插件。

  9. 在库视图中单击鼠标右键 ,第一个命令 出现在上下文相关 菜单。

  10. 右键库中的文件夹,出现第二个命令。

打包:https://download.csdn.net/download/hd51cc/87883096


http://www.ppmy.cn/news/283152.html

相关文章

python读写yaml

python读写yaml 1. python读取yaml文件1.1. YAML 简介1.2. YAML 语法1.3. 安装第三方yaml文件处理库PyYAML1.4. yaml文件读取 1. python读取yaml文件 1.1. YAML 简介 YAML&#xff0c;Yet Another Markup Language的简写&#xff0c;通常用来编写项目配置&#xff0c;也可用于…

【剑指 Offer】22,链表中倒数第k个节点。 难度等级:简单。思路:快慢指针

文章目录 1. 题目2. 我的解法&#xff1a;遍历两次链表3. 更优解法&#xff1a;快慢指针&#xff0c;遍历一次链表 1. 题目 输入一个链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表的尾节点是倒数第1个节点…

CPU多核心和单核心的区别在哪?

大家都知道服务器有单核心以及多核心的区别&#xff0c;那么这两个区别大吗&#xff1f;CPU主要功能是解释计算机指令以及处理计算机软件中的数据。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。那么CPU多核心和单核心的区别在哪&#xff1f; …

单核多线程与多核多线程

单核多线程与多核多线程 或许有些同学对于单核多线程和多核多线程有点误区&#xff0c;因为会听到一些同学问为什么单核能处理多线程&#xff0c;总结了一些干货&#xff0c;下面会通俗说明下。 线程和进程是什么 线程是CPU调度和分配的基本单位&#xff08;可以理解为CPU只…

酷睿双核之解析

【酷睿双核名字的由来】 酷睿是英文单词core的音译&#xff0c;意为“核心”&#xff0c;所以酷睿双核就是双核处理器的意思。 英特尔酷睿双核处理器是基于英特尔桌面、移动、WOODCREST服务器架构的处理器&#xff0c;能够提供超强性能和超低功耗。 “酷睿”是一款领先节能的新…

了解身边的超线程、双核、双cpu

一、从三者的工作原理和概念理解:   (1)超线程(HT):   超线程(Hyperthreading Technology)技术就是通过采用特殊的硬件指令&#xff0c;可以把两个逻辑内核模拟成两个物理芯片&#xff0c;在单处理器中实现线程级的并行计算&#xff0c;同时在相应的软硬件的支持下大幅…

CPU多核心和单核心有哪些区别?

最近小编收到蛮多客户在问CPU多核心和单核心的区别大不大&#xff0c;在CPU上该如何做选择&#xff0c;今天简单给大家来说一说&#xff0c;CPU主要功能是解释计算机指令以及处理计算机软件中的数据。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构…

奔腾双核和酷睿双核的区别(转)

对于选择笔记本&#xff0c;CPU是重中之重&#xff0c;直接关系到运算的速度和整个笔记本的性能现在笔记本市场上&#xff0c;主打的也就是AMD和INTEL&#xff0c;由于2006年底到2007年初&#xff0c;AMD连续推出了一系列的双核产品&#xff0c;以其低廉的价格和较好的性价比抢…