Files
pdm/documentation/api_extracted/DotNetAddIns.htm

509 lines
30 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>