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

How to reject layer deleting

1 REPLY 1
Reply
Message 1 of 2
pva75
392 Views, 1 Reply

How to reject layer deleting

I want to lock my layer from deleting.

 

I did it as for object:

 

    public class NonErasableLayer : ObjectOverrule
    {
        public NonErasableLayer()
        {
            this.SetCustomFilter();
        }

 

        protected override void Dispose(bool value)
        {
            this.SetNoFilter();
            base.Dispose(value);
        }

 

        public override bool IsApplicable(Autodesk.AutoCAD.Runtime.RXObject overruledSubject)
        {
            if (overruledSubject == null)
                return false;

            return (overruledSubject is LayerTableRecord);
        }

 

        public override void Erase(DBObject dbObject, bool erasing)
        {
            if (dbObject is LayerTableRecord)
            {
                Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nLAYER IS LOCKED.\n");
            }

            throw new Autodesk.AutoCAD.Runtime.Exception(ErrorStatus.NotApplicable);
        }
    }

 

Then I set overrule for Drawable objects:

 

     ObjectOverrule.AddOverrule(RXClass.GetClass(typeof(Drawable))...

 

When I run it I saw my message from Erase method but... layer is deleted.

This method works fine for any objects as Line or Circle, but doen't work for layer.

 

How I can reject layer deleting?

 

Thanks,

Pavel.

 

 

 

1 REPLY 1
Message 2 of 2
jeff
in reply to: pva75

In link below is a similar thread and was to store the LayerTableRecord's ObjectIDs as Hard Pointers.

 

Would use the advice to store in Owners ExtensionDictionary

 

http://www.theswamp.org/index.php?topic=41870.msg469858#msg469858

You can also find your answers @ TheSwamp

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