马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
问题:
I'm using the solution from DevNote AN20090811-2 [Using custom contextual ribbon tabs], but it does not work for my custom entities. I pass in the name of my entity that is displayed in the Property Palette, but still, Selection.ContainsOnly("MyEntity") is always false.
解答:
The selection rule is using the .NET type name of the selected entities. So if your entity does not have a .NET wrapper then the selection set will know it as the type name of the .NET wrapper of your custom entity's base class - i.e. if your entity is based on AcDbEntity then the selection set will know it as type "Entity"
So, if you want to check if only your custom entities are selected (and they do not have a .NET wrapper class), then create a utility assembly which iterates through the Selection set and checks each entity's RxClass.Name.
We could simply modify the sample code in DevNote AN20090811-2 the following way to check if only my custom entities called "MyLine" are selected:
- public static bool ShowMyTab(object selObj)
- {
- Selection sel = (Selection)selObj;
- if (sel.Count < 1)
- return false;
- foreach (IDataItem item in sel)
- {
- if (item.ObjectId.ObjectClass.Name != "MyLine")
- return false;
- }
- return true;
- }
|