403 lines
36 KiB
HTML
403 lines
36 KiB
HTML
<html>
|
|
|
|
<head>
|
|
<title>Creating Menu Commands (C#)</title>
|
|
<meta name=MS-HKWD content="C# add-ins, menu items">
|
|
<meta name=MS-HKWD content="Add-ins, C#">
|
|
<meta http-equiv="Content-Language" content="en-us">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
|
<link rel="stylesheet" type="text/css" href="ApiHelp.css">
|
|
<style>
|
|
<!--
|
|
div.Section1
|
|
{page:Section1;}
|
|
.auto-style2 {
|
|
color: #2B91AF;
|
|
}
|
|
-->
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<h1><span style="font-weight: normal; font-size: 7.5pt;">SOLIDWORKS PDM Professional API Help</span></h1>
|
|
<h1>Creating Menu Commands (C#)</h1>
|
|
|
|
<div class=Section1>
|
|
|
|
<p style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang=EN-US style='font-family:Verdana'>This topic shows how to create a C#
|
|
add-in that adds menu commands to the context-sensitive menus of
|
|
File Explorer vault views. <br>
|
|
<br>
|
|
</span><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 .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>
|
|
|
|
<p style='margin:0in;margin-bottom:.0001pt'> </p>
|
|
<ol style="font-family: Verdana; font-size: 8pt">
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>Start Microsoft Visual Studio.<br>
|
|
</span></p></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>Click <b>File ></b> <strong>New ></strong><span style="font-family: Arial">
|
|
</span></span><font face="Verdana">
|
|
<strong>
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>Project > Visual C# > Windows<span lang="en-us">
|
|
Desktop</span> > Class Library</span><span
|
|
style='mso-ansi-language:EN-GB'> (.NET Framework)</span></strong><span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>.
|
|
<br>
|
|
</span></font></p>
|
|
</li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang="en-gb"><font face="Verdana">In the <b>.NET Framework</b> dropdown at the top of the
|
|
New Project dialog, keep the default version (recommended) or select another
|
|
version. See <a href="Using_NET_Framework_in_Addins.htm">Using .NET
|
|
Framework for Add-in Applications</a> for more information.<br>
|
|
</font></span></p>
|
|
</li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><font face="Verdana">
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>Type a project name in <b>Name.<br>
|
|
</b></span></font></p></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><span lang="en-gb">
|
|
<font face="Verdana">Click <b>Browse</b> and navigate to the folder where to
|
|
create the project.<br>
|
|
</font></span></p></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><span lang="en-gb">
|
|
<font face="Verdana">C</font></span><font face="Verdana"><span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>lick <b>OK</b>.<br>
|
|
</span></font></p></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><span lang="en-gb">
|
|
<font face="Verdana">Right-click the project name in the Solution Explorer
|
|
and click <b>Add Reference</b>.<br>
|
|
</font></span></p>
|
|
<ol style="font-family: Verdana; font-size: 8pt">
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'>
|
|
<font face="Verdana">
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>Click <b><span lang="en-us">Browse</span> </b>in
|
|
the left-side panel, <span lang="en-us">navigate to and select</span><b> </b></span>
|
|
<span
|
|
style='mso-ansi-language:EN-GB'><strong>EPDM.Interop.epdm.dll</strong></span><span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'>, and click
|
|
<span lang="en-us"><strong>OK</strong></span>.<br></span></font></p>
|
|
</li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'>
|
|
<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.</span><font face="Verdana"><span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'><br>
|
|
</span></font></p></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'><font face="Verdana">Click <b>Assemblies > Framework</b> in the left-hand panel,
|
|
select
|
|
<b>System.Windows.Forms</b>, and click <strong>OK</strong>. <br>
|
|
</font></span></p></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><span lang="en-gb">
|
|
<font face="Verdana">Click <b>Close</b>.<br>
|
|
</font></span></p></li>
|
|
</ol></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><span lang="en-gb">
|
|
<font face="Verdana">Right-click the project name in the Solution Explorer
|
|
and click <b>Properties</b>.<br>
|
|
</font></span></p>
|
|
<ol style="font-family: Verdana; font-size: 8pt">
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><span lang="en-gb">
|
|
<font face="Verdana">On the Application tab, click <b>Assembly Information</b>.
|
|
<br>
|
|
</font></span></p></li>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt'><span lang="en-gb">
|
|
<font face="Verdana">De-select </font></span>
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'><font face="Verdana"><strong>Make assembly COM-Visible</strong><b>.<br>
|
|
</b></font></span></p></li>
|
|
<li>
|
|
<h4 style='margin:0in;margin-bottom:.0001pt' align="left">
|
|
<span style="font-weight: 400" lang="en-gb">On the
|
|
</span>
|
|
<span style="font-weight: 400">Build</span><span style="font-weight: 400" lang="en-gb"> tab,
|
|
</span>
|
|
<span style="font-weight: 400">select <strong>Any CPU</strong> for
|
|
Platform target, de-select <strong>Prefer 32-bit</strong>, and
|
|
</span>
|
|
<span style="font-weight: 400" lang="en-gb">select
|
|
</span><span lang="en-gb">Register for COM interop</span><span style="font-weight: 400" lang="en-gb">.<br>
|
|
</span></h4></li>
|
|
</ol>
|
|
<li>
|
|
<p style='margin:0in;margin-bottom:.0001pt' align="left">Save the project.</p></li>
|
|
|
|
<p style='margin:0in;margin-bottom:.0001pt'> </p>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<font face="Verdana">Double-click <b>Class1.cs</b> in the Solution Explorer
|
|
to open the code window.<br> </font></p></li>
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<font face="Verdana">At the top of the code window, type:<br> </font></p>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<font face="Courier New"><span style="color:blue;">using</span> EPDM.Interop.epdm;<br>
|
|
<span style="color:blue;"><font size="2">using</font></span><font size="2"> System.Runtime.InteropServices;<br>
|
|
<font color="#0000FF" size="2" face="Courier New">using</font> System.Windows.Forms;</font></font><br><br> </li>
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<font face="Verdana">Replace<b>: </b></font></p>
|
|
<pre style="font-family: Courier New; font-size: 13; color: black; background: white"><span style="color:blue;">public</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">Class1</span></pre>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<font face="Verdana"><b> </b>with:<br> </font></p>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
[<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">""</span>),
|
|
<span style="color:#2b91af;">ComVisible</span>(<span style="color: #0000FF">t</span><span style="color:blue;">rue</span>)]<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<font face="Courier New"><span style="color:blue;">public</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">Class1</span> : <span style="color:#2b91af;">IEdmAddIn5</span></font><br> </li>
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>To populate the GUID
|
|
attribute above, click <b>Tools > Create GUID</b> in the IDE, select GUID
|
|
Format 5, click <b>Copy</b>, and click <b>Exit</b>. Populate [<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">""</span>),
|
|
...] with the copied string.<br> </p>
|
|
</li>
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>Implement
|
|
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~GetAddInInfo.html">IEdmAddIn5::GetAddInInfo</a>
|
|
<span style='font-family:Verdana;mso-ansi-language:
|
|
SV'>by adding the following code to Class1</span><span lang=SV style='font-family:Verdana;mso-ansi-language:
|
|
SV'>:</span><span
|
|
lang=SV style='mso-ansi-language:SV'><o:p></o:p></span></p></li>
|
|
|
|
|
|
<blockquote>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<span style="color:blue;"><font face="Courier New">public</font></span><font face="Courier New"> <span style="color:blue;">void</span> GetAddInInfo(<span style="color:blue;">ref</span> <span style="color:#2b91af;">EdmAddInInfo</span> poInfo, <span style="color:#2b91af;">IEdmVault5</span> poVault, <span style="color:#2b91af;">IEdmCmdMgr5</span> poCmdMgr)<br>{<br> <span style="color:green;">//Specify
|
|
information to
|
|
display in the add-in's Properties dialog box </span><br> poInfo.mbsAddInName = <span style="color:#a31515;">"Menu command sample"</span>;<br> poInfo.mbsCompany = <span style="color:#a31515;">"SOLIDWORKS Corporation"</span>;<br> poInfo.mbsDescription = <span style="color:#a31515;">"Adds menu command items"</span>;<br> poInfo.mlAddInVersion = 1;<br>
|
|
<br>
|
|
|
|
<span style="color: #008000; background-position: 0 0">//Specify the
|
|
minimum required version of SOLIDWORKS</span><span style="color: green"> PDM
|
|
Professional</span><br> poInfo.mlRequiredVersionMajor = 5;<br> poInfo.mlRequiredVersionMinor = 2;<br> <br> <span style="color:green;">//Register
|
|
menu commands; SOLIDWORKS PDM Professional passes command IDs, 1000 and 1001, </span><br> <span style="color:green;">//to </span><span style="color:green;">IEdmAddIn5::OnCmd to indicate which command the
|
|
user selects</span><br> poCmdMgr.AddCmd(1000, <span style="color:#a31515;">"First command"</span>, (<span style="color:blue;">int</span>)<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_Nothing, <span style="color:#a31515;">"This is the first command"</span>, <span style="color:#a31515;">"First command"</span>, 0, 99);<br> poCmdMgr.AddCmd(1001, <span style="color:#a31515;">"Second command"</span>, (<span style="color:blue;">int</span>)<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_MustHaveSelection, <span style="color:#a31515;">"This is the second command"</span>, <span style="color:#a31515;">"Second command"</span>, 1, 99);<br>}</font></p>
|
|
<p class=MsoNormal>
|
|
<span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>The flag</span><font face="Verdana"><span lang=EN-GB style='mso-ansi-language:EN-GB'>
|
|
</span></font>
|
|
<span
|
|
lang=EN-GB style='font-family:Verdana;mso-ansi-language:EN-GB'>
|
|
<a style="text-decoration: underline" href="EPDM.Interop.epdm~EPDM.Interop.epdm.EdmMenuFlags.html">EdmMenuFlags.EdmMenu_MustHaveSelection</a></span><font face="Verdana"><span
|
|
lang=SV style='mso-ansi-language:EN-GB'> </span></font>
|
|
<span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>means that
|
|
the second command is only available if the user has selected one or more
|
|
files or folders.</span></p>
|
|
</blockquote>
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>
|
|
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~OnCmd.html">IEdmAddIn5::OnCmd</a>
|
|
is called when a menu command is selected by the user. </span>
|
|
<span
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>
|
|
Implement </span>
|
|
<span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>
|
|
IEdmAddIn5::OnCmd </span>
|
|
<span
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>
|
|
by adding</span><span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>
|
|
the following code</span><span
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'> to Class1</span><span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'>:</span>
|
|
<br> </li>
|
|
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<span style="color:blue;">
|
|
<font face="Courier New">public</font></span><font face="Courier New"> <span style="color:blue;">void</span> OnCmd(<span style="color:blue;">ref</span> <span style="color:#2b91af;">EdmCmd</span> poCmd, <span style="color:blue;">ref</span> <span class="auto-style2">EdmCmdData</span>[] ppoData)<br> {<br> <span style="color:green;">//Handle
|
|
the menu command</span><br> {<br> <span style="color:blue;">string</span> CommandName = <span style="color:blue;">null</span>;<br> <span style="color:blue;">if</span> (poCmd.mlCmdID == 1000)<br> {<br> CommandName = <span style="color:#a31515;">"The first command."</span>;<br> }<br> <span style="color:blue;">else</span><br> {<br> CommandName = <span style="color:#a31515;">"The second command."</span>;<br> }<br> <span style="color:green;">//Retrieve the bounds of the array containing the selected files and folders </span><br> <span style="color:blue;">int</span> index = 0;<br> <span style="color:blue;">int</span> last = 0;<br> index = ppoData.GetLowerBound(0);<br> last = ppoData.GetUpperBound(0);<br> <span style="color:blue;">string</span> StrID = <span style="color:blue;">null</span>;<br> <br> <span style="color:green;">//Create a message showing the names and IDs of all selected files and folders </span><br> <span style="color:blue;">string</span> message = <span style="color:blue;">null</span>;<br> message = <span style="color:#a31515;">"You have selected the following files and folders: "</span> + "\r\n";<br> <span style="color:blue;">while</span> (index <= last)<br> {<br> <span style="color:blue;">if</span> (((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mlObjectID1 == 0)<br> {<br> message = message + <span style="color:#a31515;">"Folder: (ID="</span>;<br> StrID = ((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mlObjectID2.ToString();<br> message = message + StrID + <span style="color:#a31515;">") "</span>;<br> }<br> <span style="color:blue;">else</span><br> {<br> message = message + <span style="color:#a31515;">"File: (ID="</span>;<br> StrID = ((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mlObjectID1.ToString();<br> message = message + StrID + <span style="color:#a31515;">") "</span>;<br> }<br> <br> message = message + ((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mbsStrData1 + "\r\n";<br> index = index + 1;<br> }<br> <br> <span style="color:green;">//Display the message</span><br> <span style="color:#2b91af;">EdmVault5</span> v = <span style="color:blue;">default</span>(<span style="color:#2b91af;">EdmVault5</span>);<br> v = (<span style="color:#2b91af;">EdmVault5</span>)poCmd.mpoVault;<br> v.MsgBox(poCmd.mlParentWnd, message, <span style="color:#2b91af;">EdmMBoxType</span>.EdmMbt_OKOnly, CommandName);<br> }<br> }</font></p>
|
|
<blockquote><span
|
|
style='font-size:10.0pt;font-family:Arial'>
|
|
<o:p></o:p></span></p>
|
|
</blockquote>
|
|
<li>
|
|
<p class=MsoNormal style='line-height:11.3pt'>
|
|
<span lang=EN-US style='mso-ansi-language:EN-US'>Click <b>Build > Build
|
|
Solution</b> to build the add-in.</span></p></li>
|
|
<li><span lang="en-us">I</span><span lang=EN-US style='mso-ansi-language:EN-US'>nstall
|
|
the add-in through the SOLIDWORKS PDM Professional
|
|
Administration tool: <br> </span><ol style="font-family: Verdana; font-size: 8pt">
|
|
<li><span lang="en-us">Open</span><span lang=EN-US style='mso-ansi-language:EN-US'> the SOLIDWORKS
|
|
PDM Professional Administration tool.<br> </span></li>
|
|
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Expand the vault where
|
|
you want to install this add-in and log in as Admin.<br> </span></li>
|
|
<li><span lang="en-us">Right-click <b>Add-ins</b> and click <b>New
|
|
Add-in</b>.<b><br>
|
|
</b></span></li>
|
|
<li>B<span lang="en-us">rowse 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>,
|
|
click <i>project_name</i><b>.dll</b> and <strong>EPDM.Interop.</strong>e<b>pdm.dll</b>.<br> </span></li>
|
|
<li><span lang="en-us">Click <b>Open</b>.<br>
|
|
</span></li>
|
|
<li>Click <b>OK</b>.<br>
|
|
</li>
|
|
<li>Click <b>OK</b>.</li>
|
|
</ol>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'><br></span>
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'> </span><span style='font-size:10.0pt;
|
|
font-family:Arial'><o:p></o:p></span></p></li>
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang="en-gb"><font face="Verdana">Right-click inside a vault view in
|
|
File Explorer. <b>First command</b></font></span><font face="Verdana"><span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'> appears in the context-sensitive
|
|
menu. <br>
|
|
</span></font></p>
|
|
</li>
|
|
<li>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<span style="font-family: Verdana" lang="en-gb">Right-click a file in
|
|
the</span><span lang=EN-GB
|
|
style='font-family:Verdana;mso-ansi-language:EN-GB'> vault view and click <b>Second
|
|
command</b>. The add-in displays a dialog similar to the following:</span></p>
|
|
</li>
|
|
</ol>
|
|
<blockquote>
|
|
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
|
|
<span lang=EN-GB
|
|
style='mso-ansi-language:EN-GB'> <img border="0" src="SecondCommand.gif" width="326" height="169"><br>
|
|
<br>
|
|
</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><span style="font-family: Verdana; font-weight: 700" lang="en-gb">
|
|
<font color="#008000">// Class1.cs</font><br>
|
|
</span></h4>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<span style="color:blue;">using</span> System;<br>
|
|
<span style="color:blue;">using</span> System.Collections.Generic;<br>
|
|
<span style="color:blue;">using</span> System.Text;<br>
|
|
<span style="color:blue;">using</span> EPDM.Interop.epdm;<br>
|
|
<font face="Courier New">
|
|
<span style="color:blue;"><font size="2">using</font></span><font size="2"> System.Runtime.InteropServices;</font></font><br>
|
|
<br>
|
|
<br>
|
|
<span style="color:blue;">namespace</span> CreateMenuCommand_CSharp<br>
|
|
{</p>
|
|
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
|
<font face="Courier New" size="2"> </font>[<font face="Courier New" size="2"><span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">""</span>),
|
|
<span style="color:#2b91af;">ComVisible</span>(<span style="color: #0000FF">t</span><span style="color:blue;">rue</span>)]
|
|
<font color="#008000">// See step 13 above to create the GUID</font></font><br>
|
|
<span style="color:blue;">public</span> <span style="color:blue;">class</span> <span style="color:#2b91af;">Class1</span> : <span style="color:#2b91af;">IEdmAddIn5</span><br>
|
|
{<br>
|
|
<span style="color:blue;"> #region</span> IEdmAddIn5 Members<br>
|
|
<br>
|
|
<span style="color:blue;">public</span> <span style="color:blue;">void</span> GetAddInInfo(<span style="color:blue;">ref</span> <span style="color:#2b91af;">EdmAddInInfo</span> poInfo, <span style="color:#2b91af;">IEdmVault5</span> poVault, <span style="color:#2b91af;">IEdmCmdMgr5</span> poCmdMgr)<br>
|
|
{<br>
|
|
<span style="color:green;"> </span><br>
|
|
poInfo.mbsAddInName = <span style="color:#a31515;">"Menu command sample"</span>;<br>
|
|
poInfo.mbsCompany = <span style="color:#a31515;">"SOLIDWORKS Corporation"</span>;<br>
|
|
poInfo.mbsDescription = <span style="color:#a31515;">"Adds menu command items"</span>;<br>
|
|
poInfo.mlAddInVersion = 1;<br>
|
|
poInfo.mlRequiredVersionMajor = 5;<br>
|
|
poInfo.mlRequiredVersionMinor = 2;<br>
|
|
<br>
|
|
<br>
|
|
poCmdMgr.AddCmd(1000, <span style="color:#a31515;">"First command"</span>, (<span style="color:blue;">int</span>)<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_Nothing, <span style="color:#a31515;">"This is the first command"</span>, <span style="color:#a31515;">"First command"</span>, 0, 99);<br>
|
|
poCmdMgr.AddCmd(1001, <span style="color:#a31515;">"Second command"</span>, (<span style="color:blue;">int</span>)<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_MustHaveSelection, <span style="color:#a31515;">"This is the second command"</span>, <span style="color:#a31515;">"Second command"</span>, 1, 99);<br>
|
|
}<br>
|
|
<br>
|
|
<span style="color:blue;">public</span> <span style="color:blue;">void</span> OnCmd(<span style="color:blue;">ref</span> <span style="color:#2b91af;">EdmCmd</span> poCmd, <span style="color:blue;">ref</span> <span class="auto-style2">EdmCmdData</span>[] ppoData)<br>
|
|
{<br>
|
|
<br>
|
|
{<br>
|
|
<span style="color:blue;">string</span> CommandName = <span style="color:blue;">null</span>;<br>
|
|
<span style="color:blue;">if</span> (poCmd.mlCmdID == 1000)<br>
|
|
{<br>
|
|
CommandName = <span style="color:#a31515;">"The first command."</span>;<br>
|
|
}<br>
|
|
<span style="color:blue;">else</span><br>
|
|
{<br>
|
|
CommandName = <span style="color:#a31515;">"The second command."</span>;<br>
|
|
}<br>
|
|
<span style="color:green;"> </span><br>
|
|
<span style="color:blue;">int</span> index = 0;<br>
|
|
<span style="color:blue;">int</span> last = 0;<br>
|
|
<font face="Courier New">index = ppoData.GetLowerBound(0);<br> last = ppoData.GetUpperBound(0);</font><br>
|
|
<span style="color:blue;">string</span> StrID = <span style="color:blue;">null</span>;<br>
|
|
<br>
|
|
<span style="color:green;"> </span><br>
|
|
<span style="color:blue;">string</span> message = <span style="color:blue;">null</span>;<br>
|
|
message = <span style="color:#a31515;">"You have selected the following files and folders: "</span> + <font face="Courier New">"\r\n"</font>;<br>
|
|
<span style="color:blue;">while</span> (index <= last)<br>
|
|
{<br>
|
|
<span style="color:blue;">if</span> (((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mlObjectID1 == 0)<br>
|
|
{<br>
|
|
message = message + <span style="color:#a31515;">"Folder: (ID="</span>;<br>
|
|
StrID = ((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mlObjectID2.ToString();<br>
|
|
message = message + StrID + <span style="color:#a31515;">") "</span>;<br>
|
|
}<br>
|
|
<span style="color:blue;">else</span><br>
|
|
{<br>
|
|
message = message + <span style="color:#a31515;">"File: (ID="</span>;<br>
|
|
StrID = ((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mlObjectID1.ToString();<br>
|
|
message = message + StrID + <span style="color:#a31515;">") "</span>;<br>
|
|
}<br>
|
|
<br>
|
|
message = message + ((<span style="color:#2b91af;">EdmCmdData</span>)ppoData.GetValue(index)).mbsStrData1 + <font face="Courier New">"\r\n"</font>;<br>
|
|
index = index + 1;<br>
|
|
}<br>
|
|
<br>
|
|
<br>
|
|
<span style="color:#2b91af;">EdmVault5</span> v = <span style="color:blue;">default</span>(<span style="color:#2b91af;">EdmVault5</span>);<br>
|
|
v = (<span style="color:#2b91af;">EdmVault5</span>)poCmd.mpoVault;<br>
|
|
v.MsgBox(poCmd.mlParentWnd, message, <span style="color:#2b91af;">EdmMBoxType</span>.EdmMbt_OKOnly, CommandName);<br>
|
|
}<br>
|
|
}<br>
|
|
<br>
|
|
<span style="color:blue;"> #endregion</span><br>
|
|
}<br>
|
|
}</p>
|
|
<p class="APICODE"> </p>
|
|
</blockquote>
|
|
</blockquote>
|
|
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|