• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Discussion Groups

    .NET

    Reply
    Valued Contributor
    Posts: 63
    Registered: ‎04-04-2012
    Accepted Solution

    Dealing with objects in LOCKED layer

    350 Views, 3 Replies
    05-01-2012 06:14 PM

    Hi

     

    I am trying to assign objects (only in UNLOCKED layers) with a new layer.

    So basically, the user will select all the objects in the drawing.

    After selecting (ex. press enter after window selecting), only objects in UNLOCKED layers will have a new layer.

    Following is the code I am using...

    But I keep getting eOnLockedLayer exception.

    How should I handle this issue?

     

       using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())

                {

                    PromptSelectionOptions pSelOpts = new PromptSelectionOptions();

                    pSelOpts.MessageForAdding = "Select all objects";

                    PromptSelectionResult pSelRes = acDoc.Editor.GetSelection(pSelOpts);

     

                    if (pSelRes.Status == PromptStatus.OK)

                    {                    

                        SelectionSet acSSet = pSelRes.Value;

                        foreach (SelectedObject acSSObj in acSSet)

                        {

                            if (acSSObj != null)

                            {  

        // This line I am getting eOnLockedLayer exception

                                Entity acEnt = acTrans.GetObject(acSSObj.ObjectId, OpenMode.ForWrite) as Entity;

                               

                                if (acEnt != null)

                                {

                                    acEnt.Layer = "newLayer";

                                    acEnt.ColorIndex = 20;                               

                                }

                            }

                        }

                    }               

                    acTrans.Commit();            

                }

    Please use plain text.
    Valued Mentor
    KerryBrown
    Posts: 259
    Registered: ‎11-29-2008

    Re: Dealing with objects in LOCKED layer

    05-01-2012 07:52 PM in reply to: dynamicscope

    Just stop them being selected

     

    // Autodesk.AutoCAD.EditorInput.PromptSelectionOptions
    public bool RejectObjectsOnLockedLayers

    { // < ..>

    }

     

    Regards

     

    //-------------------------------------------------------

    class keyThumper<T> : Lazy<T>;      another  Swamper


    I do not endorse the social media app links below:smileyembarrassed:

    Please use plain text.
    *Expert Elite*
    Posts: 6,460
    Registered: ‎06-29-2007

    Re: Dealing with objects in LOCKED layer

    05-01-2012 10:50 PM in reply to: dynamicscope

    Hi,

     

    ...or check the full syntax for TransAction.GetObject:

    Public Overridable Function GetObject(id As Autodesk.AutoCAD.DatabaseServices.ObjectId, mode As Autodesk.AutoCAD.DatabaseServices.OpenMode, openErased As Boolean, forceOpenOnLockedLayer As Boolean) As Autodesk.AutoCAD.DatabaseServices.DBObject
         Member von Autodesk.AutoCAD.DatabaseServices.Transaction

     

    - alfred -

    -------------------------------------------------------------------------
    Alfred NESWADBA
    Ingenieur Studio HOLLAUS ... www.hollaus.at
    -------------------------------------------------------------------------
    Please use plain text.
    Distinguished Contributor
    VB_Autocad_guy
    Posts: 136
    Registered: ‎07-24-2009

    Re: Dealing with objects in LOCKED layer

    06-12-2012 08:16 AM in reply to: alfred.neswadba

    ForceOpenOnLockedLayer Parameter, 

     

    That sure helped me. Thanks!:smileyhappy:

    Please use plain text.