Initial Commit of the PDM project (ready for DWS migration)
This commit is contained in:
200
documentation/api_extracted/csharpreactor.htm
Normal file
200
documentation/api_extracted/csharpreactor.htm
Normal file
@@ -0,0 +1,200 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Creating Add-in Hooks (C#)</title>
|
||||
<meta name=MS-HKWD content="Hooks">
|
||||
<meta name=MS-HKWD content="Add-ins, hooks">
|
||||
<meta name=MS-HKWD content="C# add-ins, hooks">
|
||||
<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 Add-in Hooks (C#)</h1>
|
||||
<div class=Section1>
|
||||
|
||||
<p><span lang=EN-US style='font-family:Verdana'>This topic shows how to program
|
||||
an add-in to have SOLIDWORKS PDM Professional notify your add-in
|
||||
whenever a file is added, checked out, or checked in to a vault. <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>
|
||||
<ol>
|
||||
<li class="kadov-P"><span style="font-family: Verdana">Follow </span>
|
||||
<span lang=EN-US style='font-family:Verdana'><a href="csharpmenuitem.htm">
|
||||
Creating Menu Commands (C#)</a> to create a basic add-in.<br>
|
||||
</span><li class="kadov-P"><span style="font-family: Verdana">In your add-in's </span><span lang=EN-US style='font-family:Verdana'>
|
||||
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~GetAddInInfo.html">IEdmAddIn5::GetAddInInfo</a> implementation, c</span><span lang=EN-US style='font-family:Verdana'>all
|
||||
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmCmdMgr5~AddHook.html">IEdmCmdMgr5::AddHook</a>
|
||||
for each SOLIDWORKS PDM Professional activity that you want your add-in to be
|
||||
notified about. Implement IEdmAddIn5::GetAddInInfo as follows:</span></li>
|
||||
|
||||
<blockquote>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<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;"> //Specify information to display
|
||||
in the add-in's Properties dialog box</span><br>
|
||||
poInfo.mbsAddInName = <span style="color:#a31515;">"My first add-in"</span>;<br>
|
||||
poInfo.mbsCompany = <span style="color:#a31515;">"The name of my company"</span>;<br>
|
||||
poInfo.mbsDescription = <span style="color:#a31515;">"This is a very nice add-in."</span>;<br>
|
||||
poInfo.mlAddInVersion = 1;<br>
|
||||
<br>
|
||||
<span style="color: #008000; background-position: 0 0">//Specify the
|
||||
minimum required version of S</span><span style="color: green">olidWorks PDM
|
||||
Professional</span><br>
|
||||
poInfo.mlRequiredVersionMajor = 5;<br>
|
||||
poInfo.mlRequiredVersionMinor = 2;<br>
|
||||
<br>
|
||||
<span style="color:green;">//Register hooks<br>
|
||||
</span><br>
|
||||
<span style="color:green;">//Notify the add-in when a file has been added</span><br>
|
||||
poCmdMgr.AddHook(<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PostAdd);<br>
|
||||
<br>
|
||||
<span style="color:green;">//Notify the add-in when a file has been checked out</span><br>
|
||||
poCmdMgr.AddHook(<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PostLock);<br>
|
||||
<br>
|
||||
<span style="color:green;">//Notify the add-in when a file is about to be checked in</span><br>
|
||||
poCmdMgr.AddHook(<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PreUnlock);<br>
|
||||
<br>
|
||||
<span style="color:green;">//Notify the add-in when a file has been checked in</span><br>
|
||||
poCmdMgr.AddHook(<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PostUnlock);<br>
|
||||
}</p>
|
||||
</blockquote>
|
||||
|
||||
|
||||
<li class="kadov-P">
|
||||
<p style='background:white'><span style="font-family: Verdana">Implement
|
||||
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~OnCmd.html">IEdmAddIn5::</a></span><span lang=EN-US style='font-family:Verdana'><a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~OnCmd.html">OnCmd</a> as follows:</span></p></li>
|
||||
|
||||
<blockquote>
|
||||
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
|
||||
<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>
|
||||
<span style="color:green;">//Handle the hook</span><br>
|
||||
<span style="color:blue;">string</span> name = <span style="color:blue;">null</span>;<br>
|
||||
<span style="color:blue;">switch</span> (poCmd.meCmdType)<br>
|
||||
{<br>
|
||||
<span style="color:blue;">case</span> <span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PostAdd:<br>
|
||||
name = <span style="color:#a31515;">"PostAdd"</span>;<br>
|
||||
<span style="color:blue;">break</span>;<br>
|
||||
<span style="color:blue;">case</span> <span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PostLock:<br>
|
||||
name = <span style="color:#a31515;">"PostLock"</span>;<br>
|
||||
<span style="color:blue;">break</span>;<br>
|
||||
<span style="color:blue;">case</span> <span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PreUnlock:<br>
|
||||
name = <span style="color:#a31515;">"PreUnlock"</span>;<br>
|
||||
<span style="color:blue;">break</span>;<br>
|
||||
c<span style="color:blue;">ase</span> <span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_PostUnlock:<br>
|
||||
name = <span style="color:#a31515;">"PostUnlock"</span>;<br>
|
||||
<span style="color:blue;">break</span>;<br>
|
||||
<span style="color:blue;">default</span>:<br>
|
||||
name = <span style="color:#a31515;">"?"</span>;<br>
|
||||
<span style="color:blue;">break</span>;<br>
|
||||
}<br>
|
||||
<br>
|
||||
<span style="color:green;">//Check the upper and lower bounds of the array</span><br>
|
||||
<span style="color:blue;">string</span> message = <span style="color:blue;">null</span>;<br>
|
||||
message = <span style="color:#a31515;">""</span>;<br>
|
||||
<span style="color:blue;">int</span> index = 0;<br>
|
||||
index = ppoData.GetLowerBound();<br>
|
||||
<span style="color:blue;">int</span> last = 0;<br>
|
||||
last = ppoData.GetUpperBound();<br>
|
||||
<br>
|
||||
<span style="color:green;">//Append the paths of all files to a message
|
||||
string</span><br>
|
||||
<span style="color:blue;">while</span> (index <= last)<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 a message to the user</span><br>
|
||||
message = <span style="color:#a31515;">"The following files were affected by a "</span> + name + <span style="color:#a31515;">" hook:"</span> + "\r\n" + message;<br>
|
||||
<br>
|
||||
<span style="color:#2b91af;">EdmVault5</span> vault = <span style="color:blue;">default</span>(<span style="color:#2b91af;">EdmVault5</span>);<br>
|
||||
vault = (<span style="color:#2b91af;">EdmVault5</span>)poCmd.mpoVault;<br>
|
||||
vault.MsgBox(poCmd.mlParentWnd, message);<br>
|
||||
}</p>
|
||||
</blockquote>
|
||||
|
||||
<p style='background:white'><span lang=EN-US style='font-family:Verdana'>
|
||||
SOLIDWORKS PDM Professional calls OnCmd whenever one of the
|
||||
hooks registered in GetAddInInfo triggers an event. You can tell which hook
|
||||
triggered the call by inspecting
|
||||
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.EdmCmd.html">EdmCmd</a>.meCmdType
|
||||
that is returned in OnCmd's poCmd argument. meCmdType contains an
|
||||
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.EdmCmdType.html">EdmCmdType</a> constant
|
||||
that indicates which hook triggered the call.<o:p></o:p></span></p>
|
||||
|
||||
<p style='background:white'><span lang=EN-US style='font-family:Verdana'>The second argument to OnCmd,
|
||||
ppoData, contains an array of
|
||||
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.EdmCmdData.html">EdmCmdData</a> structures.
|
||||
The array contains one structure for each file that is affected by the hook. The
|
||||
contents of the structure members vary, depending on the hook. See EdmCmdData for a complete list
|
||||
of members and their descriptions.<o:p></o:p></span></p>
|
||||
|
||||
|
||||
<li class="kadov-P">
|
||||
<p class=MsoNormal style='background:white'>
|
||||
<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 class="kadov-P">
|
||||
<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 <b>EPDM.Interop.epdm.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></li>
|
||||
<li class="kadov-P">
|
||||
<p class=MsoNormal style='background:white'><span lang=EN-US>
|
||||
<font face="Verdana">Add, check out, or check in
|
||||
one or more vault files.</font><o:p> A message box displays with the files
|
||||
added, checked out, or checked in.</o:p></span></p></li>
|
||||
</ol>
|
||||
|
||||
<p class=MsoNormal style='background:white'><strong>
|
||||
<span lang=EN-US
|
||||
style='font-family:Verdana'>NOTE: </span></strong>
|
||||
<span
|
||||
lang=EN-US style='font-family:Verdana'>OnCmd is not called during check-in if the
|
||||
file is not modified. During check-in of unmodified
|
||||
files, SOLIDWORKS PDM Professional triggers an "undo check-out" event. To handle
|
||||
this "undo check-out" event, register <a href="EPDM.Interop.epdm~EPDM.Interop.epdm.EdmCmdType.html"> EdmCmdType.EdmCmd_PreUndoLock</a> and
|
||||
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.EdmCmdType.html">EdmCmdType.EdmCmd_PostUndoLock</a>
|
||||
hooks in your add-in's implementation of IEdmAddIn5::GetAddInInfo.</span></p>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user