.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Abort delete event

1 REPLY 1
Reply
Message 1 of 2
detox
297 Views, 1 Reply

Abort delete event

Hi all.

It is necessary to interrupt removal of object

Database acadDB = HostApplicationServices.WorkingDatabase;
acadDB.ObjectErased += new ObjectErasedEventHandler(acadDB_ObjectErased);

void acadDB_ObjectErased(object sender, ObjectErasedEventArgs e)
{
// any actions
//e.Abort(); ????????
}

How to not admit removal of object
1 REPLY 1
Message 2 of 2
detox
in reply to: detox

Really, it is necessary to do so?

Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
doc.CommandWillStart += new CommandEventHandler(doc_CommandWillStart);
doc.CommandEnded += new CommandEventHandler(doc_CommandEnded);

Database acadDB = HostApplicationServices.WorkingDatabase;
acadDB.ObjectErased += new ObjectErasedEventHandler(acadDB_ObjectErased);

DBObjectCollection dbObjects = new DBObjectCollection();

void doc_CommandWillStart(object sender, CommandEventArgs e)
{
switch (e.GlobalCommandName)
{
case "ERASE":
dbObjects.Clear();
break;
default:
break;
}
}
void acadDB_ObjectErased(object sender, ObjectErasedEventArgs e)
{
dbObjects.Add(e.DBObject);
}
void doc_CommandEnded(object sender, CommandEventArgs e)
{
switch (e.GlobalCommandName)
{
case "ERASE":
RestoreObjects(dbObjects);
break;
default:
break;
}
}
void RestoreObjects(DBObjectCollection dbObjects)
{
Database db = HostApplicationServices.WorkingDatabase;
Transaction trans = db.TransactionManager.StartTransaction();
try
{
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForWrite);
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.PaperSpace], OpenMode.ForWrite);

foreach (DBObject item in dbObjects)
{
Entity restore = (Entity)item.Clone();
btr.AppendEntity(restore);
trans.AddNewlyCreatedDBObject(restore, true);
}
trans.Commit();
}
finally
{
trans.Dispose();
}
}

The most unpleasant, that thus is removed allocation....

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost