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.