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

How get objectids from pasteclip ?

7 REPLIES 7
SOLVED
Reply
Message 1 of 8
ButterFlyShame
921 Views, 7 Replies

How get objectids from pasteclip ?

Hello,

 

I am trying to copy some objects with Xdata attached to it, from source  drawing to destination drawing.

I have an event handler in destination drawing  for pasteclip command. Now my question is when use finish the paste  , How to collect the objectids and do my process on them ?

 

Could an expert please help me in this regard ?

Appreciated any help.

 

7 REPLIES 7
Message 2 of 8

Hi,

 

I would suggest the following process: track then command PASTECLIP begins, then monitor event Database.ObjectAppended for new new IDs, finally when command PASTECLIP ends, stop monitoring the append event.

 

Cheers,

 

Augusto Goncalves

Autodesk Developer Network

Regards,



Augusto Goncalves
Twitter @augustomaia
Autodesk Developer Network
Message 3 of 8

Thank you sir for your concern and time. well honestly I am not very good at all those terminology you using. the way I am learning so far is change an existing code an play with it. Could you please give me a sample code. Really appreciated.

 

Message 4 of 8

Hi,

 

I don´t have a sample on it....but you can learn more here: http://www.autodesk.com/developautocad

 

Try this video: http://download.autodesk.com/media/adn/DevTV_Introduction_to_AutoCAD_NET_Programming.zip

 

Regards,

Augusto Goncalves

Autodesk Developer Network

Regards,



Augusto Goncalves
Twitter @augustomaia
Autodesk Developer Network
Message 5 of 8

Thanks for all effort sir. though.

Does anybody else can help me here. I really appreciate it.

 

Message 6 of 8

Best examples will be EventsWatcher from ObjectARX SDK samples and MgdDbg from Kean Walmsley blog:  http://through-the-interface.typepad.com

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 7 of 8

This code may help you:

 

using System;

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Geometry;

using Autodesk.AutoCAD.EditorInput;

using AcRx = Autodesk.AutoCAD.Runtime;

using AcAp = Autodesk.AutoCAD.ApplicationServices;

using AcDb = Autodesk.AutoCAD.DatabaseServices;

using AcGe = Autodesk.AutoCAD.Geometry;

using AcEd = Autodesk.AutoCAD.EditorInput;

 

 

[assembly: ExtensionApplication(typeof(Rivilis.MonitorPaste))]

 

namespace Rivilis

{

 

  public class MonitorPaste : IExtensionApplication

  {

    private AcAp.DocumentCollection m_docMan;

    private AcAp.Document m_doc;

    private AcDb.Database m_db;

    private bool m_bBeginPaste;

    private AcDb.ObjectIdCollection ids;

 

    void IExtensionApplication.Initialize()

    {

      ids = new AcDb.ObjectIdCollection();

      m_bBeginPaste = false;

      m_docMan = AcAp.Application.DocumentManager;

      m_doc    = m_docMan.MdiActiveDocument;

      m_db     = m_doc.Database;

      m_doc.CommandWillStart += new AcAp.CommandEventHandler(MonitorCommandWillStarted);

      m_doc.CommandEnded     += new AcAp.CommandEventHandler(MonitorCommandEnded);

      m_doc.CommandCancelled += new AcAp.CommandEventHandler(MonitorCommandCanceled);

      m_doc.CommandFailed    += new AcAp.CommandEventHandler(MonitorCommandCanceled);

      m_db.ObjectAppended    += new AcDb.ObjectEventHandler(MonitorObjectAppended);

      m_db.ObjectUnappended  += new AcDb.ObjectEventHandler(MonitorObjectUnappended);

      m_db.ObjectReappended  += new AcDb.ObjectEventHandler(MonitorObjectReappended);

      m_db.ObjectErased      += new AcDb.ObjectErasedEventHandler(MonitorObjectErased);

    }

 

    void IExtensionApplication.Terminate()

    {

 

    }

    private void MonitorCommandWillStarted(Object o, CommandEventArgs e)

    {

      if (e.GlobalCommandName.Substring(0, 5) == "PASTE"// Any of PASTE command (e.g., PASTECLIP, PASTEORIG, etc.)

      {

        m_bBeginPaste = true;

      }

    }

    private void MonitorCommandEnded(Object o, CommandEventArgs e)

    {

      if (e.GlobalCommandName.Substring(0, 5) == "PASTE" && m_bBeginPaste)

      {

        m_doc.Editor.WriteMessage("\nCommand added {0} entities:", ids.Count);

        foreach (ObjectId id in ids)

        {

          m_doc.Editor.WriteMessage("\n\t{0} {1}", id.ObjectClass.Name,id);

        }

      }

      m_bBeginPaste = false; ids.Clear();

    }

    private void MonitorCommandCanceled(Object o, CommandEventArgs e)

    {

      m_bBeginPaste = false; ids.Clear();

    }

 

    private void MonitorObjectAppended(object sender, ObjectEventArgs e)

    {

      if (!m_bBeginPaste) return;

      // Only entities from current space (Model or Layout) will be added

      if (!ids.Contains(e.DBObject.ObjectId) && e.DBObject.OwnerId == m_db.CurrentSpaceId) ids.Add(e.DBObject.ObjectId);

    }

    private void MonitorObjectUnappended(object sender, ObjectEventArgs e)

    {

      if (!m_bBeginPaste) return;

      if (ids.Contains(e.DBObject.ObjectId)) ids.Remove(e.DBObject.ObjectId);

    }

    private void MonitorObjectReappended(object sender, ObjectEventArgs e)

    {

      if (!m_bBeginPaste) return;

      // Only Entity from current space (Model or Layout) will be added

      if (!ids.Contains(e.DBObject.ObjectId) && e.DBObject.OwnerId == m_db.CurrentSpaceId) ids.Add(e.DBObject.ObjectId);

    }

 

    private void MonitorObjectErased(object sender, ObjectErasedEventArgs e)

    {

      if (!m_bBeginPaste) return;

      if (ids.Contains(e.DBObject.ObjectId)) ids.Remove(e.DBObject.ObjectId);

    }

  }

}

Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"


Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Expert Elite Member

Message 8 of 8

Alex ,

It worked man .

Thanks a lot. really appreciated.

 

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