Hi,
I am trying to get the coordinate of the lastly appended(added) point object.
It seems like I need to use "ObjectAppended" event.
However, when the event is triggred, it looks like the sender object is "Database" (not Point object).
How could I retrieve the point object therefore the coordinates of the point using "Database" (sender object)?
(explaination with C# code would be much more thanksful)
Jake.
I encountered with another problem.
If I use "ObjectAppended" event, I cannot get the coordinates value as a return value.
I need the coordinate value in order to manipulate some other variables.
How can I approach this problem?
Here is a sample code, change to your suit
[CommandMethod("huh")] public void AddPointEvents() { // Get the current document and database, and start a transaction Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; DBPoint dpoint = null; db.ObjectAppended += new ObjectEventHandler(db_ObjectAppended); Editor ed=doc.Editor; try { using (Transaction tr = db.TransactionManager.StartTransaction()) { // Open the current space for write BlockTableRecord btr; btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord; Point3d pt; PromptPointResult pres; pres= ed.GetPoint("\nPick a point: "); if (pres.Status != PromptStatus.OK) return; // Create a point // pres = ed.GetPoint("\nPick a point: "); pt = pres.Value; dpoint = new DBPoint(); dpoint.Position = pt;//<-- position changed separatelly to call db.ObjectAppended event // Add the new point to the block table record and the transaction btr.AppendEntity(dpoint); tr.AddNewlyCreatedDBObject(dpoint, true); // Save the new object to the database tr.Commit(); db.ObjectAppended -= new ObjectEventHandler(db_ObjectAppended); } } catch (System.Exception ex) { ed.WriteMessage(ex.Message+"\n" + ex.StackTrace); } finally { } } public void db_ObjectAppended(object sender, ObjectEventArgs e) { // Get the current document and database, and start a StartOpenCloseTransaction Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction tr = db.TransactionManager.StartOpenCloseTransaction()) { try { DBObject dbo = e.DBObject; DBPoint dpoint = dbo as DBPoint; Point3d ins = dpoint.Position; Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage ("\nCoordinates:\tX = {0}; Y = {1}; Z = {2}", ins.X, ins.Y, ins.Z); } catch (System.Exception ex) { Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage (ex.Message + "\n" + ex.StackTrace); } tr.Commit(); } }
~'J'~
Hi,
it may not work for your task, it's not really what you asked for, but it may also be what you may search for and so just to be mentioned:
Sysvar LASTPOINT (>>>details<<<)
- alfred -