关于solidworksPDM插件的制作

关于SOLIDWORKS PDM插件的制作

PDM插件用到的主要分两种

通过插件命令管理接口IEdmCmdMgr5 的方法来实现(注册)
生成的类需继承 IEdmAddIn5接口的 addcmd和oncmd方法

AddCmd

添加菜单类的方法:

void AddCmd( 
   System.int lCmdID,
   System.string bsMenuString,
   System.int lEdmMenuFlags,
   System.string bsStatusBarHelp,
   System.string bsToolbarToolTip,
   System.int lToolbarButtonIndex,
   System.int lToolbarImageID
)

对应的参数介绍如下:
lCmdID
本命令的ID
bsMenuString
命令上显示的文本(相当到buttom里的.txt)
lEdmMenuFlags
菜单的适合范围(如可以设为仅仅选择是文件时,菜单才有效)【可选】
菜单适用范围

bsStatusBarHelp
用户在右键单击上下文菜单中突出显示菜单项时在Windows资源管理器状态栏中显示的可选文本【可选】
bsToolbarToolTip
光标位于命令工具栏按钮上方时显示的可选消息【可选】
lToolbarButtonIndex
资源图像中工具栏按钮的可选索引【可选】
lToolbarImageID
用作工具栏按钮的图像的可选ID【可选】

AddHook方法

添加一个挂钩,当指定事件发生时,该挂钩使SOLIDWORKS PDM Professional将该插件的IEdmAddIn5插件下对应的方法;类似于一个事件触发机制
钩子参见如下

https://blog.csdn.net/weixin_34294649/article/details/90157515

该方法主要用一个参数

 void AddHook( 
   EdmCmdType eCmdType,
   System.object poReserved
)

eCmdType
事件的类型触发见一表
事件触发类型

poReserved
空值; 保留以备将来使用

例事件触发类:

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;
using EdmLib;
 
public class ChangeStateNotification : IEdmAddIn5
{
 
    public void GetAddInInfo(ref EdmLib.EdmAddInInfo poInfo, EdmLib.IEdmVault5 poVault, EdmLib.IEdmCmdMgr5 poCmdMgr)
    {
 
        try
        {
            poInfo.mbsAddInName = "插件名称";
            poInfo.mbsCompany = "公司名称";
            poInfo.mbsDescription = "插件说明";
            poInfo.mlAddInVersion = 1;
 
            //PDM的最低版本要求
             poInfo.mlRequiredVersionMajor = 6;//PDM的版本如2006
            poInfo.mlRequiredVersionMinor = 4;//PDM版本如 2006 V5
 
            //PDM注册钩子事件
            //参数代表文件状态改变事件
            poCmdMgr.AddHook(EdmCmdType.EdmCmd_PostState);
        }
        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 EdmLib.EdmCmd poCmd, ref System.Array ppoData)
    {
      try {

            string AffectedFileNames = "";
            Boolean topNode;
            IEdmCmdNode cmdNode;


            switch (poCmd.meCmdType) {
                //当有事件发生-状态改变
                case EdmCmdType.EdmCmd_PostState:
                   foreach ( EdmCmdData AffectedFile in ppoData) {
						//对具体的事件执行动作,即产生事件的文件或文件夹
						//ppoData为对应每个文件的结构体组成的数组,可获取文件ID路径等信息
						//AffectedFile实例化后的结构体,对应不同的文件类型属性也不一样
						//如mbsStrData1 为文件的路径信息
                      if (AffectedFile.mbsStrData2 == "通过") {
                         AffectedFileNames += AffectedFile.mbsStrData1 + "";
                      }

                      cmdNode = (IEdmCmdNode)AffectedFile.mpoExtra;
                      //返回的接口类型取决于命令或挂钩的类型
                      //指向包含命令特定信息的对象(object)
                      //当插件命令执行时可通过如上方法获取文件的转变状态
                      topNode = (Boolean)cmdNode.GetProperty(EdmCmdNodeProp.EdmCmdNode_IsTopNode);
                      //True 代表文件到了最后的节点
                      ((EdmVault5)(poCmd.mpoVault)).MsgBox(poCmd.mlParentWnd, "文件是否到了最后审核环节? " + topNode);
                   }
 
                  if (AffectedFileNames.Length > 0) {
                    ((EdmVault5)(poCmd.mpoVault)).MsgBox(poCmd.mlParentWnd, AffectedFileNames + " 已通过");
                  }
 
                  break;
               //事件注册失败时
               default:
                  ((EdmVault5)(poCmd.mpoVault)).MsgBox(poCmd.mlParentWnd, "未知命令类型");
                  break;
            }
        } catch (System.Runtime.InteropServices.COMException ex) {
              MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + ex.Message);
        } catch (Exception ex) {
              MessageBox.Show(ex.Message);
        }
     }
  }

注意:
需设置COM可见
引用dll文件PDMWorks Enterprise nnnn Type Library(nnnn代表年份)
完成后通过PDM管理端那个添加插件
程序设置
例二菜单点击类

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Windows.Forms;
using EdmLib;
 
 
public class Class1 : IEdmAddIn5
{
 
    public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr)
    {
        
        poInfo.mbsAddInName = "插件名;
        poInfo.mbsCompany = "公司名";
        poInfo.mbsDescription = "插件说明";
        poInfo.mlAddInVersion = 1;

        poInfo.mlRequiredVersionMajor = 6;
        poInfo.mlRequiredVersionMinor = 4;
 
        poCmdMgr.AddCmd(1, "第一个菜单插件", (int)EdmMenuFlags.EdmMenu_Nothing);
 
    }
 

public void OnCmd(ref EdmCmd poCmd, ref System.Array ppoData)
    {
        
        if (poCmd.meCmdType == EdmCmdType.EdmCmd_Menu)
        {
            if (poCmd.mlCmdID == 1)
            {
                System.Windows.Forms.MessageBox.Show("这是制作的第一个插件");
            }
        }
    }
}


SolidWorks PDM是一款用于管理和控制SolidWorks设计数据的软件。在安装SolidWorks PDM之前,需要满足一些基本的硬件和软件要求。 首先,确保计算机系统满足安装SolidWorks PDM的最低要求。这包括操作系统、处理器、内存和磁盘空间等方面。查阅SolidWorks PDM的系统要求,以确保你的计算机能够顺利运行该软件。 接下来,下载SolidWorks PDM安装程序。你可以从SolidWorks官方网站或经销商处获取安装包。在下载之前,确保你有权利访问该软件。 一旦下载完成,双击安装程序并按照屏幕上的指示进行安装。你需要提供一个有效的序列号或许可证来完成安装过程。确保你已经保存了这些信息,并确保计算机能够连接到互联网以进行注册和激活。 在安装过程中,你将需要选择安装类型和安装位置。根据你的实际需求选择相应的选项。如果你有其他SolidWorks产品已经安装在计算机上,你可能还需要与这些产品进行集成。 完成安装后,你可以打开SolidWorks PDM并设置相关参数。这包括连接到数据库、配置用户权限和文件夹结构等。根据你的实际需求进行设置,并确保你有足够的知识来配置和管理SolidWorks PDM。 总结而言,安装SolidWorks PDM需要满足系统要求,下载安装程序并按照指示进行安装。在安装完成后,进行相关配置并开始使用该软件来管理和控制SolidWorks设计数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值