newer 发表于 2021-2-3 09:10:00

在contextual tab selection rule中检测是否选择了自定义实体

Checking if custom entity is selected inside a contextual tab selection rule

问题:

I'm using the solution from DevNote AN20090811-2 , 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:

**** Hidden Message *****

页: [1]
查看完整版本: 在contextual tab selection rule中检测是否选择了自定义实体