.NET
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
cursor pick object event
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
i am trying to make a custom palette to display some custom infomation pulled out from selected objects.
i can deal with the palette part.
i want some code for when you click an object in model space then the property palette updates. i am gonna keep it simple so this custom palette only refresh to the last selected object. but i don't know how to make an event when mouse click the autocad object and then do my things. any codes in c# or vb.net would be nice.
so use commandmethod load in a command and there will be a palette there stay open, when user click on an object then it will get populated. what event do i use for the clicking?
thank you.
Work: Xeon W3503, 12GB, Quadro 2000, Dell 19' x 2
Home: 3930k, 16GB, GTX 590, Dell U3011
Solved! Go to Solution.
Re: cursor pick object event
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
I'm gonna take a guess here:
I think it's a Doc Event
I used MdgDgbd.dll Tool to tinker with events that are fired when I click and object.
This notification is triggered when the pickfirst selection set has been modified; that is, for all events that add objects to or remove objects from the set. Events that change the geometry or properties of the objects within the selection set (stretching, moving, and so on) do not trigger this callback.
Re: cursor pick object event
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Did you ever figure it out? I'd be curious to know how you did it?
Do you mind posting some code?
Re: cursor pick object event
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi Bob,
Some initial testing shows that this can work, for the most part. Ran out of time to track down why the AddedObjects ObjectId collection is still populated when the user hits ESC.
///Sample code to trap adding an object to the PickFirstSelectionset.
///Works across multiple drawings. Not sure, yet, how to handle when the user clears
///the PickFirstSS by hitting ESC. Did not test for manual removal by SHIFT+Pick.
///Jeff Mishler, Feb 2012
using System.Linq;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace PaletteTest
{
public class PaletteTest : IExtensionApplication
{
static PaletteTestPalette palette;
static Document doc_palettetest;
static Editor ed_palettetest;
public void Initialize()
{
palette = new PaletteTestPalette();
if (palette.Visible)
palette.ToggleVisibility();
doc_palettetest = Application.DocumentManager.MdiActiveDocument;
ed_palettetest = doc_palettetest.Editor;
ed_palettetest.SelectionAdded += new SelectionAddedEventHandler(ed_SelectionAdded);
}
static void DocumentManager_DocumentToBeDeactivated(object sender, DocumentCollectionEventArgs e)
{
ed_palettetest.SelectionAdded -= new SelectionAddedEventHandler(ed_SelectionAdded);
}
static void DocumentManager_DocumentActivated(object sender, DocumentCollectionEventArgs e)
{
doc_palettetest = Application.DocumentManager.MdiActiveDocument;
ed_palettetest = doc_palettetest.Editor;
ed_palettetest.SelectionAdded += new SelectionAddedEventHandler(ed_SelectionAdded);
}
public void Terminate()
{
}
static void ed_SelectionAdded(object sender, SelectionAddedEventArgs e)
{
if (palette.Visible && e.Flags == SelectionFlags.PickfirstSet)
{
ObjectId id = e.AddedObjects.GetObjectIds().Last();
using (Transaction tr = doc_palettetest.Database.TransactionManager.StartT ransaction())
{
Entity ent = (Entity)tr.GetObject(id, OpenMode.ForRead);
palette.thiscontrol.TextValue = "You selected a: " + id.ObjectClass.DxfName;
tr.Commit();
}
}
}
[CommandMethod("PaletteTest", CommandFlags.Session)]
public static void palettetestcommand()
{
Application.DocumentManager.DocumentActivated += new DocumentCollectionEventHandler(DocumentManager_Doc umentActivated);
Application.DocumentManager.DocumentToBeDeactivate d += new DocumentCollectionEventHandler(DocumentManager_Doc umentToBeDeactivated);
palette.ToggleVisibility();
}
}
}
Re: cursor pick object event
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
thanks jeff
i got it working now after finding out this pdf:
CP205-2_Mike_Tuersley.pdf
pretty good.
keeping your code as a future reference.
Work: Xeon W3503, 12GB, Quadro 2000, Dell 19' x 2
Home: 3930k, 16GB, GTX 590, Dell U3011
