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

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

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

  1. 启动VS。
  2. 新建项目,选择类库。Solidwoks PDM Add-ins (C#) 创建菜单命令_第1张图片Solidwoks PDM Add-ins (C#) 创建菜单命令_第2张图片
  3. 在“解决方案资源管理器”中右键单击项目名称 ,然后单击添加引用。

      

    1. 单击 COM 在 左侧面板,单击PDMWorks Enterprise 2019 Type Library,然后单击添加Solidwoks PDM Add-ins (C#) 创建菜单命令_第3张图片

    2. 如果需要,引入相关的程序集。
    3. 设置Interop.EdmLib的嵌入互操作类型为False。Solidwoks PDM Add-ins (C#) 创建菜单命令_第4张图片
  4. 在“解决方案资源管理器”中右击项目名称,然后单击“属性”。

    1. “应用程序>程序集信息”。Solidwoks PDM Add-ins (C#) 创建菜单命令_第5张图片
    2. 取消勾选“使程序集 COM 可见(M)”。Solidwoks PDM Add-ins (C#) 创建菜单命令_第6张图片
  5. 修改Class1.cs。这里修改类名为MenuDemo。

    1. 添加和创建GUID。Solidwoks PDM Add-ins (C#) 创建菜单命令_第7张图片Solidwoks PDM Add-ins (C#) 创建菜单命令_第8张图片
    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在用户选择了一个或多个文件或文件夹时生效。Solidwoks PDM Add-ins (C#) 创建菜单命令_第9张图片Solidwoks PDM Add-ins (C#) 创建菜单命令_第10张图片
    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 message
                    EdmVault5 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. 在插件中添加调试插件。Solidwoks PDM Add-ins (C#) 创建菜单命令_第11张图片

  9. 在库视图中单击鼠标右键 ,第一个命令 出现在上下文相关 菜单。Solidwoks PDM Add-ins (C#) 创建菜单命令_第12张图片

  10. 右键库中的文件夹,出现第二个命令。Solidwoks PDM Add-ins (C#) 创建菜单命令_第13张图片Solidwoks PDM Add-ins (C#) 创建菜单命令_第14张图片Solidwoks PDM Add-ins (C#) 创建菜单命令_第15张图片

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

你可能感兴趣的:(c#,开发语言)