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

Getting the coordinate of the lastly appended(added) point object

3 REPLIES 3
Reply
Message 1 of 4
dynamicscope
431 Views, 3 Replies

Getting the coordinate of the lastly appended(added) point object

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.

3 REPLIES 3
Message 2 of 4
dynamicscope
in reply to: dynamicscope

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?

Message 3 of 4
Hallex
in reply to: dynamicscope

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'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
Message 4 of 4

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 -

------------------------------------------------------------------------------------
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)

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