演示如何创建 C# Add-ins :将菜单命令添加到库视图的上下文相关菜单的。
注意:由于 SOLIDWORKS PDM Professional 无法强制重新加载add-ins,因此必须重新启动所有客户端计算机以确保使用最新版本的add-ins。
- 启动VS。
- 新建项目,选择类库。
- 在“解决方案资源管理器”中右键单击项目名称 ,然后单击添加引用。
-
单击 COM 在 左侧面板,单击PDMWorks Enterprise 2019 Type Library,然后单击添加。
- 如果需要,引入相关的程序集。
- 设置Interop.EdmLib的嵌入互操作类型为False。
-
- 在“解决方案资源管理器”中右击项目名称,然后单击“属性”。
- “应用程序>程序集信息”。
- 取消勾选“使程序集 COM 可见(M)”。
- 修改Class1.cs。这里修改类名为MenuDemo。
- 添加和创建GUID。
- 修改代码
using System; using EdmLib;//添加 using System.Runtime.InteropServices;//添加namespace Creating_Menu_Commands {[Guid("32369E8C-7E73-4E33-BA43-9CCDD485C5CE"), ComVisible(true)]public class MenuDemo{} }
- 实现 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); //向用户显示一个消息框}}} }
- 单击“生成”>“生成解决方案” ,生成Add-in。
- 安装生成的Add-in。
- 打开PDM 管理工作。
- 登录。
- 在插件中添加调试插件。
-
在库视图中单击鼠标右键 ,第一个命令 出现在上下文相关 菜单。
- 右键库中的文件夹,出现第二个命令。
打包:https://download.csdn.net/download/hd51cc/87883096