Creating Serial Numbers (C#)

此示例展示如何使用Visual C#编写的Add-ins为文件数据卡生成序列号。

注意事项:

SOLIDWORKS PDM Professional无法强制重新加载用.NET编写的Add-ins,必须重新启动所有客户端计算机,以确保使用Add-ins的最新版本。

SOLIDWORKS PDM Professional建议使用内置格式字符串或列表生成序列号。它们提供了比Add-ins生成的序列号或文件序列号更好的性能。仅当内置格式字符串或列表不足时,才编写Add-ins以生成序列号。

序列号编码器与其他类型挂钩的区别在于:

  • 在IEdmAddIn5::GetAddInInfo方法中注册你的钩子。
  • 在IEdmAddIn5::OnCmd方法中编写内容。

  1.  启动VS。
  2. 新建项目,选择类库。Creating Serial Numbers (C#)_第1张图片
  3. 在“解决方案资源管理器”中右键单击项目名称 ,然后单击添加引用。
    1. 单击 COM 在 左侧面板,单击PDMWorks Enterprise 2019 Type Library,然后单击添加

    2. 如果需要,引入相关的程序集。
    3. 设置Interop.EdmLib的嵌入互操作类型为False。
  4. 在“解决方案资源管理器”中右击项目名称,然后单击“属性”。
    1. “应用程序>程序集信息”。
    2. 取消勾选“使程序集 COM 可见(M)”。
  5. 修改Class1.cs。这里修改类名为MySerial.cs。
    1. 添加和创建GUID。
    2. 修改代码
      using System;
      using System.Runtime.InteropServices;//添加
      using EdmLib;//添加
      
      namespace Creating_Serial_Numbers​​
      {
          [Guid("90C81B4A-560D-4FBF-9F08-E670D4ABB892"), ComVisible(true)]
          public class MySerial:IEdmAddIn5
          {
      
          }
      }

  1. 实现 IEdmAddIn5::GetAddInInfo 和IEdmAddIn5::OnCmd         
    using System;
    using System.Runtime.InteropServices;//添加
    using EdmLib;//添加
    
    
    namespace Creating_Serial_Numbers​​
    {
        [Guid("90C81B4A-560D-4FBF-9F08-E670D4ABB892"), ComVisible(true)]
        public class MySerial:IEdmAddIn5
        {
            public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr)
            {
                //Return information about this add-in to the Administrate Add-ins dialog           
                poInfo.mbsAddInName = "My serial number generator";
                poInfo.mbsCompany = "The name of my company";
                poInfo.mbsDescription = "Implements serial numbers";
                poInfo.mlAddInVersion = 1;
                poInfo.mlRequiredVersionMajor = 5;
                poInfo.mlRequiredVersionMinor = 2;
    
                //Notify that a serial number needs to be generated
                poCmdMgr.AddHook(EdmCmdType.EdmCmd_SerialNo); ​​
            }
    
            public void OnCmd(ref EdmCmd poCmd, ref Array ppoData)
            {
                //Check the upper and lower bounds of the array 
                int Index = ppoData.GetLowerBound(0);//获取数组中指定维度第一个元素的索引。
                int last = ppoData.GetUpperBound(0);//获取数组中指定维度最后一个元素的索引。
    
                if (Index <= last)
                {
                    int cnt;
                    cnt = last - Index + 1;//ppoData的总数
    
                    //Create a temporary array to which you have full access
                    //创建一个您可以完全访问的临时阵列
                    EdmCmdData[] tmpArr;
                    tmpArr = (EdmCmdData[])ppoData;
    
                    //Generate serial numbers for all of the affected files 
                    //为所选的文件生成序列号
                    String CounterVal;
    
                    while (Index <= last)
                    {
                        //https://help.solidworks.com/2019/english/api/epdmapi/EPDM.Interop.epdm~EPDM.Interop.epdm.EdmCmdData.html
                        //EdmCmdData Structure :Contains command data.
                        //OnCmd的第二个参数是EdmCmdData结构的数组。数组中每个受调用影响的文件都有一个元素。有关成员的完整列表及其说明,请参阅EdmCmdData
                        CounterVal = tmpArr[Index].mlLongData1.ToString();  //mlLongData1这里是Serial number counter value
                        String s;
                        s = "My serno(" + CounterVal + ")";
                        tmpArr[Index].mbsStrData1 = s;
                        Index++;
                    }
    
                    //Return the updated data 
                    ppoData = tmpArr;
                }
            }
        }
    }

  2. 单击“生成”>“生成解决方案” ,生成Add-in。
  3. 安装生成的Add-in。

    1. 打开PDM 管理工作。
    2. 登录。
    3. 在插件中添加新插件。 Creating Serial Numbers (C#)_第2张图片 
  4. 右键序列号,选择新序列号 Creating Serial Numbers (C#)_第3张图片 Creating Serial Numbers (C#)_第4张图片  

  5. 选择卡-> 文件卡 -> Text Card,选择Title后面的Textbox,在右侧窗口选择序列号,我的序列号,保存数据卡。 Creating Serial Numbers (C#)_第5张图片 Creating Serial Numbers (C#)_第6张图片  

  6. 在库中新建text文件。 Creating Serial Numbers (C#)_第7张图片 Creating Serial Numbers (C#)_第8张图片  

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

你可能感兴趣的:(solidworks,PDM,c#,solidworks,pdm)