Fire Undo and Redo Pre- and Post-notifications in Assembly Document
(C#)
This example shows how to fire Undo and Redo post-notifications in an
assembly document.
//
----------------------------------------------------------------------------
// Preconditions: Open:
//<SOLIDWORKS_install_dir>\samples\tutorial\smartcomponents\stepped_shaft.sldasm.
//
// The
base-plate<1> component is selected and then hidden, and
// pre-
and post-notifications are fired indicating that an
// Undo
has occurred. A Redo is performed and pre- and
// post-notifications
are fired for it. Finally another Undo
// is
performed (and pre- and post-notifications are fired)
// so
that the assembly document returns to its just-opened state.
//
// Postconditions: None
//
----------------------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System;
using System.Collections;
using System.Windows.Forms;
namespace Macro1.csproj
{
public
partial class SolidWorksMacro
{
public
AssemblyDoc swAssemblyDoc;
public
void Main()
{
ModelDoc2
swModel = default(ModelDoc2);
ModelDocExtension
swModelDocExt = default(ModelDocExtension);
bool
boolstatus = false;
Hashtable
openAssembly = default(Hashtable);
swModel
= (ModelDoc2)swApp.ActiveDoc;
swModelDocExt
= (ModelDocExtension)swModel.Extension;
//
Event notification
swAssemblyDoc
= (AssemblyDoc)swModel;
openAssembly
= new Hashtable();
AttachEventHandlers();
//
Select a component and hide it
boolstatus
= swModelDocExt.SelectByID2("base_plate-1@stepped_shaft",
"COMPONENT", 0, 0, 0, false, 0, null, 0);
swModel.HideComponent2();
swModel.ClearSelection2(true);
//
Undo hiding of the component
//
and fire pre- and post-notifications
swModel.EditUndo2(1);
//
Redo hiding of the component
//
and fire pre- and post-notifications
swModel.EditRedo2(1);
//
Undo hiding of the component
//
so that the assembly document
//
is unchanged
swModel.EditUndo2(1);
//
Rebuild model
swModel.ForceRebuild3(true);
}
///
<summary>
///
The SldWorks swApp variable is pre-assigned for you.
///
</summary>
public
SldWorks swApp;
public
void AttachEventHandlers()
{
AttachSWEvents();
}
public
void AttachSWEvents()
{
swAssemblyDoc.UndoPostNotify
+= this.swAssembly_UndoPostNotify;
swAssemblyDoc.UndoPreNotify
+= this.swAssembly_UndoPreNotify;
swAssemblyDoc.RedoPostNotify
+= this.swAssembly_RedoPostNotify;
swAssemblyDoc.RedoPreNotify
+= this.swAssembly_RedoPreNotify;
}
public
int swAssembly_UndoPostNotify()
{
//Display
message after undo action occurs
// NOTE: Because the message box may be
displayed
// behind an opened window, you might not
see it.
// If so, then check the Taskbar for it.
MessageBox.Show("An
Undo post-notification event has been fired.");
return
1;
}
public
int swAssembly_UndoPreNotify()
{
//Display
message after undo action occurs
// NOTE: Because the message box may be
displayed
// behind an opened window, you might not
see it.
// If so, then check the Taskbar for it.
MessageBox.Show("An
Undo pre-notification event has been fired.");
return
1;
}
public
int swAssembly_RedoPostNotify()
{
//Display
message after undo action occurs
// NOTE: Because the message box may be
displayed
// behind an opened window, you might not
see it.
// If so, then check the Taskbar for it.
MessageBox.Show("A
Redo post-notification event has been fired.");
return
1;
}
public
int swAssembly_RedoPreNotify()
{
//Display
message after undo action occurs
// NOTE: Because the message box may be
displayed
// behind an opened window, you might not
see it.
// If so, then check the Taskbar for it.
MessageBox.Show("A
Redo pre-notification event has been fired.");
return
1;
}
}
}