Initial Commit of the PDM project (ready for DWS migration)

This commit is contained in:
will
2026-04-20 08:42:38 -05:00
commit dda7b664e7
2721 changed files with 442772 additions and 0 deletions

View File

@@ -0,0 +1,508 @@
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<title>Creating Add-ins (VB.NET)</title>
<meta http-equiv="Content-Language" content="en-us">
<meta name=MS-HKWD content="VB.NET, add-ins">
<meta name=MS-HKWD content="VB.NET">
<meta name=MS-HKWD content="Add-ins, VB.NET">
<meta name=MS-HKWD content="Add-ins">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" type="text/css" href="ApiHelp.css">
<style type="text/css">
.auto-style3 {
font-size: x-small;
}
.auto-style2 {
color: #2B91AF;
}
</style>
</head>
<h1><span style="font-weight: normal; font-size: 7.5pt;">SOLIDWORKS PDM Professional API Help</span></h1>
<h1>Creating Add-ins (VB.NET)</h1>
<body bgcolor=white lang=SV link=blue vlink=purple style='tab-interval:65.2pt'>
<div class=Section1>
<p><span lang=EN-US style='font-family:Verdana'>This topic shows how to create a
debug add-in using VB.NET in Microsoft Visual Studio. </span></p>
<p><span lang="en-us"><b><span style="font-family: Verdana">NOTE: </span></b></span>
<span lang=EN-US style='font-family:Verdana;
mso-ansi-language:EN-US'>Because SOLIDWORKS PDM Professional cannot force a reload of
add-ins if they are written in VB.NET, all client machines must be restarted to ensure that the latest version of the add-in is used.<o:p></o:p></span></p>
<ol class="kadov-P" style="line-height: 150%; font-family: Verdana; font-size: 8pt; margin-bottom: 15">
<li class="kadov-P"><font face="Verdana" style="font-size: 8pt">
<span lang=EN-US style='mso-ansi-language:EN-US'>Start Microsoft Visual
Studio.<br>
&nbsp;</span></font></li>
<li class="kadov-P"><span lang="en-us"><font face="Verdana">Click <b>File &gt;
New &gt; Project &gt; Visual Basic &gt; <span lang="sv">Windows Desktop &gt;
</span>Class Library</b></span><b> (.NET Framework)</b><span lang="en-us">.<br>
&nbsp;</span></font></li>
<li class="kadov-P"><font face="Verdana" style="font-size: 8pt">
<span lang=EN-US style='mso-ansi-language:EN-US'>Type the name of your
project in <b>Name</b>.<br>
&nbsp;</span></font></li>
<li class="kadov-P"><span lang="en-us"><font face="Verdana">Click <b>
Browse</b> and navigate to the folder where to create your project.<br>
&nbsp;</font></span></li>
<li class="kadov-P"><span lang="en-us"><font face="Verdana">Click <b>OK</b>.<br>
<br>
<b>Class1.vb</b> containing an empty class called Class1 is created.<br>
&nbsp;</font></span></li>
<li class="kadov-P">Right-click the name of your project in the Solution
Explorer to add the SOLIDWORKS PDM Professional type library and the
Systems.Windows.Forms assembly:<br>
&nbsp;<ol class="kadov-P" style="line-height: 150%; font-family: Verdana; font-size: 8pt; margin-bottom: 15">
<li>Select <b>Add Reference</b>.<br>
&nbsp;</li>
<li>Click <strong>Browse</strong> in the left-hand panel, navigate to and select
<strong>EPDM.Interop.epdm.dll</strong>, and click <strong>OK</strong>.<br>
&nbsp;</li>
<li>Select <b>Add Reference</b>.<br>
&nbsp;</li>
<li>Click <strong>Assemblies &gt; Framework</strong> in the left-hand panel, select <b>System.Windows.Forms</b>, and click
<strong>OK</strong>.<br>
&nbsp;</li>
<li>Click <b>Close</b>.</li>
</ol></li>
<li class="kadov-P">Type <b>Imports System.Windows.Forms</b> at the top of
the code window.<br>
&nbsp;</li>
<li class="kadov-P"><span lang="en-us">Ty</span><span lang=EN-US style='mso-ansi-language:EN-US'>pe
<span
style='mso-bidi-font-style:normal; font-weight:700'>Imports </span> </span>
<span
style='mso-bidi-font-style:normal; font-weight:700'>
<span style='mso-ansi-language:EN-US'>EPDM.Interop.epdm</span></span><span lang=EN-US style='mso-ansi-language:EN-US'> </span><span lang=EN-US style='mso-ansi-language:EN-US'>&nbsp;and </span>
<b>Imports&nbsp;System.Runtime.InteropServices </b>
<span lang=EN-US style='mso-ansi-language:EN-US'>below
<b>Imports System.Windows.Forms</b>.<br>
&nbsp;</span></li>
<li class="kadov-P"><span lang="en-us">Type before <b>Public Class Class1</b>:<br>
</span><font face="Courier New" size="2">&lt;<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">&quot;&quot;</span>)&gt;&nbsp;_<br>
&lt;<span style="color:#2b91af;">ComVisible</span>(<span style="color:blue;">True</span>)&gt;&nbsp;_</font><span lang=EN-US style='mso-ansi-language:EN-US'><br>&nbsp;</span></li>
<li class="kadov-P">To populate the GUID
attribute above, click <b>Tools &gt; Create GUID</b> in the IDE, select GUID
Format
6, click <b>Copy</b>, and click <b>Exit</b>. Replace
<font face="Courier New" size="2">&lt;<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">&quot;&quot;</span>)&gt;</font>
with the copied string.<br>
&nbsp;</li>
<li class="kadov-P"><span lang=EN-US style='mso-ansi-language:EN-US'>Type
below <b>Public Class Class1</b>:<br>
<span style='mso-bidi-font-style:normal; font-weight:700'>Implements IEdmAddIn5</span><br>
&nbsp;</span></li>
<li><font face="Verdana"><span style="font-size: 8pt" lang="en-us">Implement</span></font><span lang=EN-US style='mso-ansi-language:EN-US'><span style="font-size: 8pt"><font face="Verdana">
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddin5~GetAddInInfo.html">IEdmAddIn</a></font></span><span
style='mso-bidi-font-style:normal'><font face="Verdana"><span style="font-size: 8pt"><a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddin5~GetAddInInfo.html">5::GetAddInInfo</a>
by pasting the following code between <b>Implements IEdmAddIn5</b> and <b>
End Class</b>:</span></font></span></span></li>
</ol>
<blockquote>
<blockquote>
<p class=MsoNormal>
<span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'>Public Sub GetAddInInfo(ByRef poInfo As
EdmAddInInfo, ByVal poVault As IEdmVault5, ByVal poCmdMgr As IEdmCmdMgr5)
Implements IEdmAddIn5.GetAddInInfo<o:p></o:p></span></p>
</blockquote>
<blockquote>
<p class=MsoNormal>
<span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-US'><span style='mso-spacerun:yes'>      </span></span>
<span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";color:green;
mso-ansi-language:EN-GB'>' </span><span lang="en-gb">
<font size="2" color="#008000">
<span style="font-family: Courier New">Specify add-in
information</span></font></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>     
</span>poInfo.mbsAddInName = &quot;VB.NET Add-in&quot;<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>     
</span>poInfo.mbsCompany = &quot;My Company&quot;<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>     
</span>poInfo.mbsDescription = &quot;Menu add-in that shows a message box.&quot;<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>     
</span>poInfo.mlAddInVersion = 1<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>
<o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>
<span
style='color:green'>' Specify minimum version of SOLIDWORKS PDM Professional</span></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>poInfo.mlRequiredVersionMajor
= 6<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>     
</span>poInfo.mlRequiredVersionMinor = 4<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>
<o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>
<span
style='color:green'>' Register a menu command<o:p></o:p></span></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>     
</span>poCmdMgr.AddCmd(1, &quot;VB.NET Add-in&quot;, EdmMenuFlags.EdmMenu_Nothing)</span></p>
</blockquote>
<p class=MsoNormal>
&nbsp;</p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span></span>
<span
style='font-size:10.0pt;font-family:"Courier New"'>End Sub</span></p>
</blockquote>
<ol style="font-family: Verdana; font-size: 8pt" start="11">
<li><span lang="en-us">Implement
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~OnCmd.html">IEdmAddIn5::</a></span><span lang=EN-US style='mso-ansi-language:EN-US'><span
style='mso-bidi-font-style:normal'><a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~OnCmd.html">OnCmd</a>
by pasting the following code between <b>End Sub</b> and <b>End Class</b>:</span><br><br><b>NOTE</b>:
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmVault8~GetWin32Window.html">IEdmVault8::GetWin32Window</a>
is used to convert the parent window handle to a window handle that .NET can
use</span><span lang="en-us">.</span></li>
</ol>
<blockquote>
<blockquote>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>Public Sub OnCmd(ByRef poCmd As EdmCmd, <font size="1">
<span style="color:blue;" class="auto-style3">ByRef</span><span class="auto-style3">&nbsp;ppoData&nbsp;<span style="color:blue;">As</span>&nbsp;<span class="auto-style2">EdmCmdData</span>[]</span></font>) Implements IEdmAddIn5.OnCmd<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>
<o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>
<span
style='color:green'>' Handle the menu command<o:p></o:p></span></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>If
poCmd.meCmdType = EdmCmdType.EdmCmd_Menu Then<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>         </span>If
poCmd.mlCmdID = 1 Then<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>           
</span>Dim v8 as IEdmVault8<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'>           </span>V8 = poCmd.mpoVault<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>           
</span>System.Windows.Forms.MessageBox.Show(v8.GetWin32Window(poCmd.mlParentWnd),
&quot;VB.NET Add-in&quot;)<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>         </span>End
If<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>End If<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>
<o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span>End Sub</span></p>
</blockquote>
</blockquote>
<ol style="font-family: Verdana; font-size: 8pt" start="12">
<li><span lang="en-us">I</span><span lang=EN-US style='mso-ansi-language:EN-US'>mplement your own window handle wrapper
by right-clicking the name of your project in the Solution Explorer and
selecting <b>Add &gt; New Item &gt; Class</b></span><span lang="en-us">:<br>
&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang="en-us">Type <b>WindowHandle</b> in <b>Name</b>.<br>
&nbsp;</span></li>
<li><span lang="en-us">Click <b>Add</b>.<br>
&nbsp;</span></li>
<li><span lang="en-us">Replace the code in the code window with the
following code.</span></li>
</ol>
</li>
</ol>
<blockquote>
<blockquote>
<p class=MsoNormal>
<span lang="en-gb"><font size="2">
<span style="font-family: Courier New">Imports
System.Windows.Forms<br>
&nbsp;</span></font></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
color:green;mso-ansi-language:EN-GB'>' Wrapper class to use SOLIDWORKS PDM Professional as a parent
window to VB forms<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>Public Class WindowHandle<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span>Implements
IWin32Window<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span>Private
mHwnd As IntPtr<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'>
<o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span>Public Sub
New(ByVal hWnd As Integer)<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>mHwnd =
New IntPtr(hWnd)<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span>End Sub<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span>Public ReadOnly
Property Handle() As IntPtr Implements
System.Windows.Forms.IWin32Window.Handle<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>Get<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>        
</span>Return mHwnd<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>      </span>End Get<o:p></o:p></span></p>
<p class=MsoNormal>
<span lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";
mso-ansi-language:EN-GB'><span style='mso-spacerun:yes'>   </span>End
Property<o:p></o:p></span></p>
<p class=MsoNormal>
<span style='font-size:10.0pt;font-family:"Courier New"'>End
Class<o:p></o:p></span></p>
</blockquote>
</blockquote>
<blockquote>
<p><span lang="en-gb">Your add-in uses the new wrapper in the menu
command handler to
show the message box by calling <font face="Courier New" size="2">
System.Windows.Forms.MessageBox.Show</font> in Class1::OnCmd in Class1.vb.</span><span
lang=EN-GB style='font-size:10.0pt;font-family:"Courier New";mso-ansi-language:
EN-GB'><br>&nbsp;</span></p>
</blockquote>
</img>
<div class=Section1>
<ol style="font-family: Verdana; font-size: 8pt" start="13">
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Right-click the name of
your project in the Solution Explorer and select <b>Properties</b>.<br>
&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang=EN-US style='mso-ansi-language:EN-US'>On the Application tab,
click <b>Assembly Information</b>.<br>&nbsp;</span></li>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>De-select <b>Make assembly COM-Visible</b>.<br>&nbsp;</span></li>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>On the Compile tab,
</span><span style='mso-ansi-language:EN-US'>select <strong>AnyCPU</strong>
for the target CPU, de-select <strong>Prefer 32-bit</strong> and </span><span lang=EN-US style='mso-ansi-language:EN-US'>select <b>Register for COM interop</b>.<br>&nbsp;</span></li>
</ol></li>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Change your add-in to
be a Debug Add-in:<br>&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Right-click the name of
your project in the Solution Explorer and select <b>Properties</b>.<br>&nbsp;</span></li>
<li><span lang="en-us">Click the <b>Debug</b> tab.<br>&nbsp;</span></li>
<li><span lang="en-us">Click </span>
<span lang=EN-US style='mso-ansi-language:EN-US'><b>Start external program
</b>and<b> </b>t</span><span lang=EN-US style='mso-ansi-language:EN-US'>ype
<b>C:\Windows\System32\notepad.exe </b>in the text field.<br><br>&nbsp;</span></li>
</ol></li>
</ol>
</div>
<ol style="font-family: Verdana; font-size: 8pt" start="17">
<li><span lang="en-us">Right-click <b>E</b></span><b>pdm.Interop.epdm</b><span lang="en-us"> in the Solution Explorer,
select <b>Properties</b>, and set <b>Embed Interop Types</b> to <b>False</b>
to handle methods that pass arrays of structures.<br>
&nbsp;</span></li>
<li><span lang="en-us">If creating this add-in on a 64-bit computer, edit
</span><span lang=EN-US style='mso-ansi-language:EN-US'>
<i style='mso-bidi-font-style:
normal'>project_path</i><span style='mso-bidi-font-style:
normal; '><i>\</i></span></span><span style='mso-bidi-font-style:
normal; mso-ansi-language:EN-US' lang="EN-US"><i>project_name\</i></span><span style='mso-bidi-font-style:
normal; mso-ansi-language:EN-US' lang="EN-US"><i>project_name\</i></span><span lang="en-us"><i>project_name</i>.<b>vbproj</b>
in Notepad:<br>
&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang="en-us">Insert the following line below <b>&lt;PropertyGroup
Condition=&quot; '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' &quot;&gt;</b> and
below&nbsp; <b>&lt;PropertyGroup Condition=&quot; '$(Configuration)|$(Platform)' ==
'Release|AnyCPU' &quot;&gt;</b>.<br>
<br>
<font face="Courier New" size="2">&lt;PlatformTarget&gt;AnyCPU&lt;/PlatformTarget&gt;<br>
&nbsp;</font></span></li>
<li><span lang="en-us">Save the file and exit Notepad.<br>
&nbsp;</span></li>
</ol>
</li>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Right-click the name of
your project in the Solution Explorer and select <b>Properties</b>.</span><span lang="en-us"><br>&nbsp;</span></li>
<li>On the Application tab, keep the suggested target framework or s<span lang="en-us">elect <b>.NET Framework </b></span> <b>
4.5</b><span lang="en-us"> in the Target
framework dropdown. <br>
&nbsp;</span></li>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Click <b>Build &gt; Build
Solution</b> to build the add-in.<br>
&nbsp;</span></li>
<li><span lang="en-us">I</span><span lang=EN-US style='mso-ansi-language:EN-US'>nstall
the add-in as a Debug Add-in using the SOLIDWORKS PDM Professional
Administration tool: <br>
&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Start up the SOLIDWORKS
PDM Professional Administration tool.<br>
&nbsp;</span></li>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Expand the vault where
you want to install this add-in. Log in if prompted.<br>
&nbsp;</span></li>
<li><span lang="en-us">Right-click <b>Add-ins</b> and select <b>Debug
Add-ins</b>.<br>
&nbsp;</span></li>
<li><span lang="en-us">Click <b>Add Add-in</b>, browse to </span><span lang=EN-US style='mso-ansi-language:EN-US'>
<i style='mso-bidi-font-style:
normal'>project_path</i><span style='mso-bidi-font-style:
normal; '><i>\</i></span></span><span style='mso-bidi-font-style:
normal; mso-ansi-language:EN-US' lang="EN-US"><i>project_name\project_name</i><b>\bin\Debug</b>,
select <i>project_name</i><b>.dll</b>, and click <b>Open</b>.<br>
<br>
Your add-in's name, path, and class ID should appear in <b>Add-ins installed
for debugging on this machine</b>.<br>
&nbsp;</span></li>
<li><span lang="en-us">Click <b>OK</b>.</span><span lang=EN-US style='mso-ansi-language:EN-US'><br>&nbsp;</span></li>
</ol>
</li>
<li>In Microsoft Visual Studio, click <b>Debug &gt; Start Debugging</b>
or press <b>F5</b>.<br>
&nbsp;</li>
<li>Click <b>File &gt; Open</b> in Notepad.<br>
&nbsp;</li>
<li>Click the name of the vault where you installed your add-in.<br>
&nbsp;</li>
<li>Right-click inside the vault in File Explorer and select <b>VB.NET
Add-in</b>.<br>
<br>
A message box is displayed with the message <b>VB.NET Add-in</b>.<br>
&nbsp;</li>
<li>Click <b>OK</b> to close the message box.</li>
</ol>
<p class=MsoNormal>
<span lang=EN-US style='font-size:10.0pt;font-family:Arial;
mso-ansi-language:EN-US'>
<o:p>&nbsp;</o:p></span></p>
<h2><b style='mso-bidi-font-weight:normal'>
<span lang=EN-US
style='font-family:Verdana;mso-ansi-language:EN-US'>
<span style="font-size: 8pt">Complete
Source Code</span><o:p></o:p></span></b></h2>
<blockquote>
<h4>
<font color="#008000"><span style="font-family: Verdana" lang="en-gb">'</span><span style="font-family: Verdana; font-weight: 700" lang="en-gb">Class1.vb</span></font></h4>
<pre style="font-family: Courier New; font-size: 13; color: black; background: white"><span style="color:blue;">Imports</span>&nbsp;System.Windows.Forms
<span style="color:blue;">Imports</span>&nbsp;System.Runtime.InteropServices
<span style="color:blue;">Imports</span>&nbsp;EPDM.Interop.epdm
</pre>
<pre style="font-family: Courier New; font-size: 13; color: black; background: white">&lt;<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">&quot;&quot;</span>)&gt;&nbsp;_ <font color="#008000">' See step 10 above to create the GUID</font>
&lt;<span style="color:#2b91af;">ComVisible</span>(<span style="color:blue;">True</span>)&gt;&nbsp;_
<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">Class</span>&nbsp;<span style="color:#2b91af;">Class1</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Implements</span>&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">Sub</span>&nbsp;GetAddInInfo(<span style="color:blue;">ByRef</span>&nbsp;poInfo&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmAddInInfo</span>,&nbsp;<span style="color:blue;">ByVal</span>&nbsp;poVault&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmVault5</span>,&nbsp;<span style="color:blue;">ByVal</span>&nbsp;poCmdMgr&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmCmdMgr5</span>)&nbsp;<span style="color:blue;">Implements</span>&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span>.GetAddInInfo
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'&nbsp;Fill&nbsp;in&nbsp;the&nbsp;add-in's&nbsp;description</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsAddInName&nbsp;=&nbsp;<span style="color:#a31515;">&quot;VB.NET&nbsp;Add-in&quot;</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsCompany&nbsp;=&nbsp;<span style="color:#a31515;">&quot;My&nbsp;Company&quot;</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsDescription&nbsp;=&nbsp;<span style="color:#a31515;">&quot;Menu&nbsp;add-in&nbsp;that&nbsp;shows&nbsp;a&nbsp;message&nbsp;box.&quot;</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlAddInVersion&nbsp;=&nbsp;1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'&nbsp;Minimum&nbsp;SOLIDWORKS&nbsp;PDM&nbsp;Professional&nbsp;version&nbsp;needed&nbsp;for&nbsp;VB.NET&nbsp;add-ins&nbsp;is&nbsp;6.4</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlRequiredVersionMajor&nbsp;=&nbsp;6
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlRequiredVersionMinor&nbsp;=&nbsp;4
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'&nbsp;Register&nbsp;a&nbsp;menu&nbsp;command</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poCmdMgr.AddCmd(1,&nbsp;<span style="color:#a31515;">&quot;VB.NET&nbsp;Add-in&quot;</span>,&nbsp;<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_Nothing)
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Sub</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">Sub</span>&nbsp;OnCmd(<span style="color:blue;">ByRef</span>&nbsp;poCmd&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmCmd</span>,&nbsp;<font size="1"><span style="color:blue;" class="auto-style3">ByRef</span><span class="auto-style3">&nbsp;ppoData&nbsp;<span style="color:blue;">As</span>&nbsp;<span class="auto-style2">EdmCmdData</span>[]</span></font>)&nbsp;<span style="color:blue;">Implements</span>&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span>.OnCmd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'&nbsp;Handle&nbsp;the&nbsp;menu&nbsp;command</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">If</span>&nbsp;poCmd.meCmdType&nbsp;=&nbsp;<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_Menu&nbsp;<span style="color:blue;">Then</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">If</span>&nbsp;poCmd.mlCmdID&nbsp;=&nbsp;1&nbsp;<span style="color:blue;">Then</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;v8&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmVault8</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v8&nbsp;=&nbsp;poCmd.mpoVault
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Windows.Forms.<span style="color:#2b91af;">MessageBox</span>.Show(v8.GetWin32Window(poCmd.mlParentWnd),&nbsp;<span style="color:#a31515;">&quot;VB.NET&nbsp;Add-in&quot;</span>)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">If</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">If</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Sub</span>
<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Class</span></pre>
<h4 style="font-family: Courier New; font-size: 13; background: white">
<font color="#008000">'WindowHandle.vb</font></h4>
<pre style="font-family: Courier New; font-size: 13; color: black; background: white"><span style="color:blue;">Imports</span>&nbsp;System.Windows.Forms
<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">Class</span>&nbsp;<span style="color:#2b91af;">WindowHandle</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Implements</span>&nbsp;<span style="color:#2b91af;">IWin32Window</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Private</span>&nbsp;mHwnd&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">Sub</span>&nbsp;<span style="color:blue;">New</span>(<span style="color:blue;">ByVal</span>&nbsp;hWnd&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span>)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mHwnd&nbsp;=&nbsp;<span style="color:blue;">New</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>(hWnd)
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Sub</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">ReadOnly</span>&nbsp;<span style="color:blue;">Property</span>&nbsp;Handle()&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>&nbsp;<span style="color:blue;">Implements</span>&nbsp;System.Windows.Forms.<span style="color:#2b91af;">IWin32Window</span>.Handle
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Get</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Return</span>&nbsp;mHwnd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Get</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Property</span>
<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Class</span></pre>
<p style="font-family: Courier New; font-size: 13; background: white">&nbsp;</p>
</blockquote>
</div>
</body>
</html>