Creating Serial Numbers (VB.NET)
This
sample shows how to generate serial numbers for file data cards using
an add-in written in VB.NET.
NOTES:
-
Because SOLIDWORKS Enterprise PDM cannot force a reload of
add-ins if they are written in .NET, all client machines must be restarted to ensure that the latest version of the add-in is used.
-
SOLIDWORKS
Enterprise PDM recommends that serial numbers be generated using the built-in format strings or lists.
They provide better performance than serial numbers generated by add-ins
or serial numbers from files. Only write an add-in to generate the serial
number if built-in format strings or lists are insufficient.
-
The
differences between serial number generation and other types of hooks
are:
-
Follow
Creating Menu Commands (VB.NET) to
create a basic add-in.
-
Register a hook to
notify
your add-in when a serial
number needs to be generated. Implement IEdmAddIn5::GetAddInInfo as follows:
Public Sub GetAddInInfo(ByRef
poInfo As EdmLib.EdmAddInInfo, ByVal poVault As EdmLib.IEdmVault5,
ByVal poCmdMgr As EdmLib.IEdmCmdMgr5) Implements EdmLib.IEdmAddIn5.GetAddInInfo
'Specify add-in information
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
'Register that a serial number needs to be
generated
poCmdMgr.AddHook(EdmCmdType.EdmCmd_SerialNo)
End Sub
-
Implement IEdmAddIn5::OnCmd as follows:
Public Sub OnCmd(ByRef
poCmd As EdmLib.EdmCmd, ByRef ppoData As System.Array) Implements EdmLib.IEdmAddIn5.OnCmd
'Check the upper and lower bounds of the array
Dim index As Long
index = LBound(ppoData)
Dim last As Long
last = UBound(ppoData)
If index <= last Then
Dim cnt As Integer
cnt = last - index + 1
'Create a temporary array
to which you have full
access
Dim tmpArr(cnt) As EdmCmdData
tmpArr = ppoData
'Generate serial numbers for all of the affected
files
Dim CounterVal As String
While index <= last
CounterVal = tmpArr(index).mlLongData1
Dim s As String
s = "My serno(" + CounterVal +
")"
tmpArr(index).mbsStrData1 = s
index = index + 1
End While
'Return the updated data
ppoData = tmpArr
End If
End Sub
The second argument to
OnCmd
is an array of EdmCmdData structures. There is
one element in the array for each file that is affected by the call.
See EdmCmdData for a complete list
of members and their descriptions.
-
Click Build > Build
Solution to build the add-in.
-
Install
the add-in through the SOLIDWORKS Enterprise PDM
Administration tool:
- Open the SOLIDWORKS
Enterprise PDM Administration tool.
- Expand the vault where
you want to install this add-in and log in as Admin.
- Right-click Add-ins and click New
Add-in.
- Browse to
project_path\project_name\project_name\bin\Debug,
click project_name.dll and Interop.EdmLib.dll.
- Click Open.
- Click OK.
- Click OK.
-
Right-click the Serial Numbers node in the
tree and click
New Serial
Number.
-
Create a new serial number
in the Name field and select
Serial number from add-in
in the Type dropdown.
![](serno.gif)
The name of your add-in is displayed in Name of add-in.
-
After ensuring that your add-in is selected, click
OK.
Now you can connect the add-in serial number to controls in
your file data cards.
-
Click
Cards > File Cards, double-click Text Card, and click the
Title
control.
-
In
the Default value group box on the Edit-box properties panel,
click Serial number and
select the serial number that you created in step 7.
![](defvalserno.gif)
-
Save the card and exit the Card Editor.
-
Create a new text file
by right-clicking in a Windows Explorer vault view and
clicking New
> Text Document.
The file data card displays a serial number in Title of the newly added
file.
![](txtpropserno.gif)