Disable Selection of Faces and Edges Using a Pre-Notify Event Example
(C#)
This example shows how to disable the interactive selection of:
using a pre-notify event.
//------------------------------------
//
// Preconditions:
// (1)
Part, assembly, or drawing document
// is
active.
// (2)
Run this macro (press F5).
//
// NOTE: Tools > Options
> Stop VSTA debugger on macro exit
// must
not be selected for this macro to run to
// completion.
//
// Postconditions:
// (1)
If a part or assembly document is open,
// then
you cannot interactively select faces in
// that
document.
// (2)
If a drawing document is open, then
// you
cannot interactively select edges in that
// document.
// (3)
Click the Stop Debugging button in the
// SolidWorks
Visual Studio Tools for
// Applications
IDE to re-enable the
// interactive
selection of faces in
// a
part or assembly document or edges in
// a
drawing document.
//
//----------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Collections;
namespace UserSelectionPreNotifyCSharp.csproj
{
partial
class SolidWorksMacro
{
public
PartDoc pDoc;
public
AssemblyDoc aDoc;
public
DrawingDoc dDoc;
public
void Main()
{
ModelDoc2
swModel;
Hashtable
openPart;
Hashtable
openAssembly;
Hashtable
openDrawing;
swModel
= (ModelDoc2)swApp.ActiveDoc;
//
Determine the document type
//
and set up event handlers
if
(swModel.GetType() == (int)swDocumentTypes_e.swDocPART)
{
pDoc
= (PartDoc)swModel;
openPart
= new Hashtable();
}
else
if (swModel.GetType() == (int)swDocumentTypes_e.swDocASSEMBLY)
{
aDoc
= (AssemblyDoc)swModel;
openAssembly
= new Hashtable();
}
else
if (swModel.GetType() == (int)swDocumentTypes_e.swDocDRAWING)
{
dDoc
= (DrawingDoc)swModel;
openDrawing
= new Hashtable();
}
AttachEventHandlers();
}
public
void AttachEventHandlers()
{
AttachSWEvents();
}
public
void AttachSWEvents()
{
if
((pDoc != null))
{
pDoc.UserSelectionPreNotify
+= this.pDoc_UserSelectionPreNotify;
}
if
((aDoc != null))
{
aDoc.UserSelectionPreNotify
+= this.aDoc_UserSelectionPreNotify;
}
if
((dDoc != null))
{
dDoc.UserSelectionPreNotify
+= this.dDoc_UserSelectionPreNotify;
}
}
private
int pDoc_UserSelectionPreNotify(int
SelectionType)
{
int
functionReturnValue = 0;
//
Disable the selection of faces in this part
if
(SelectionType == (int)swSelectType_e.swSelFACES)
{
functionReturnValue
= 1;
}
return
functionReturnValue;
}
public
int aDoc_UserSelectionPreNotify(int
SelectionType)
{
int
functionReturnValue = 0;
//
Disable the selection of faces in this assembly
if
(SelectionType == (int)swSelectType_e.swSelFACES)
{
functionReturnValue
= 1;
}
return
functionReturnValue;
}
private
int dDoc_UserSelectionPreNotify(int
SelectionType)
{
int
functionReturnValue = 0;
//
Disable the selection of edges in this drawing
if
(SelectionType == (int)swSelectType_e.swSelEDGES)
{
functionReturnValue
= 1;
}
return
functionReturnValue;
}
///
<summary>
///
The SldWorks swApp variable is pre-assigned for you.
///
</summary>
public
SldWorks swApp;
}
}