Message 1 of 3

Not applicable
11-29-2012
10:44 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi, I am trying to add an entity on a new drawing (document) with a new layer.
Following is the code snippet I have right now.
[CommandMethod("TEST")] public void Test() { Document newDoc = Application.DocumentManager.Add("acad"); Database db = newDoc.Database; DocumentLock docLock = newDoc.LockDocument(); try { using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; DBPoint p = new DBPoint(new Point3d(0, 0, 0)); string newLayer = PTPUtils.CreateLayer(db, "NewLayer", 3); p.Layer = newLayer; btr.AppendEntity(p); tr.AddNewlyCreatedDBObject(p, true); tr.Commit(); } } catch (Autodesk.AutoCAD.Runtime.Exception e) { Application.ShowAlertDialog(e.Message); } docLock.Dispose(); Application.DocumentManager.MdiActiveDocument = newDoc; }
PTPUtils.CreateLayer() method creates a new layer in the given DB.
However, the code gives me an "eKeyNotFound" exception in the line p.Layer = newLayer.
If I remove the p.Layer line, the code works very well. But the entity only goes to the default layer "0".
How could I solve this?
Thank you in advance.
DynamicScope.
FYI,
ObjectARX 2010 (C#)
VS 2008
Solved! Go to Solution.