网站页尾的作用wordpress推荐新用户
此示例展示如何使用Visual C#编写的Add-ins为文件数据卡生成序列号。
注意事项:
SOLIDWORKS PDM Professional无法强制重新加载用.NET编写的Add-ins,必须重新启动所有客户端计算机,以确保使用Add-ins的最新版本。
SOLIDWORKS PDM Professional建议使用内置格式字符串或列表生成序列号。它们提供了比Add-ins生成的序列号或文件序列号更好的性能。仅当内置格式字符串或列表不足时,才编写Add-ins以生成序列号。
序列号编码器与其他类型挂钩的区别在于:
- 在IEdmAddIn5::GetAddInInfo方法中注册你的钩子。
 - 在IEdmAddIn5::OnCmd方法中编写内容。
 
- 启动VS。
 - 新建项目,选择类库。


 - 在“解决方案资源管理器”中右键单击项目名称 ,然后单击添加引用。 
-  
单击 COM 在 左侧面板,单击PDMWorks Enterprise 2019 Type Library,然后单击添加。

 - 如果需要,引入相关的程序集。
 - 设置Interop.EdmLib的嵌入互操作类型为False。

 
 -  
 - 在“解决方案资源管理器”中右击项目名称,然后单击“属性”。 
- “应用程序>程序集信息”。

 - 取消勾选“使程序集 COM 可见(M)”。

 
 - “应用程序>程序集信息”。
 - 修改Class1.cs。这里修改类名为MySerial.cs。 
- 添加和创建GUID。


 - 修改代码 
using System; using System.Runtime.InteropServices;//添加 using EdmLib;//添加namespace Creating_Serial_Numbers {[Guid("90C81B4A-560D-4FBF-9F08-E670D4ABB892"), ComVisible(true)]public class MySerial:IEdmAddIn5{} } 
 - 添加和创建GUID。
 
- 实现 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 generatedpoCmdMgr.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结构的数组。数组中每个受调用影响的文件都有一个元素。有关成员的完整列表及其说明,请参阅EdmCmdDataCounterVal = tmpArr[Index].mlLongData1.ToString(); //mlLongData1这里是Serial number counter valueString s;s = "My serno(" + CounterVal + ")";tmpArr[Index].mbsStrData1 = s;Index++;}//Return the updated data ppoData = tmpArr;}}} } - 单击“生成”>“生成解决方案” ,生成Add-in。
 - 安装生成的Add-in。  
- 打开PDM 管理工作。
 - 登录。
 - 在插件中添加新插件。 
  
 -  
右键序列号,选择新序列号
 
   -  
选择卡-> 文件卡 -> Text Card,选择Title后面的Textbox,在右侧窗口选择序列号,我的序列号,保存数据卡。
 
   -  
在库中新建text文件。
 
   
打包:https://download.csdn.net/download/hd51cc/87887157
