Allow user to only pick room objects

Allow user to only pick room objects

62BJW
Advocate Advocate
1,445 Views
2 Replies
Message 1 of 3

Allow user to only pick room objects

62BJW
Advocate
Advocate

I'd like the user to only be able to pick (individual) rooms and no other object types. I looked into Selection.PickObject but how do I get it to select only rooms?

 

Thanks for the help.

0 Likes
Accepted solutions (1)
1,446 Views
2 Replies
Replies (2)
Message 2 of 3

davidd
Contributor
Contributor

I think you need to look into the PickObject method with the iSelectionFilter Override

 

PickObject Method (ObjectType, ISelectionFilter, String):

http://www.revitapidocs.com/2019/e55e4998-ef65-6021-f448-6046be134533.htm

 

ISelectionFilter Interface:

http://www.revitapidocs.com/2019/d552f44b-221c-0ecd-d001-41a5099b2f9f.htm

0 Likes
Message 3 of 3

naveen.kumar.t
Autodesk Support
Autodesk Support
Accepted solution

Hi @62BJW 

try using the below code

 public class RoomSelectionFilter : ISelectionFilter
        {
            public bool AllowElement(Element element)
            {
                if (element.Category.Id.IntegerValue==(int)BuiltInCategory.OST_Rooms)
                {
                    return true;
                }
                return false;
            }

            public bool AllowReference(Reference refer, XYZ point)
            {
                return false;
            }
        }

 

RoomSelectionFilter RoomFilter = new RoomSelectionFilter();
                IList<Reference> RoomReferences=uidoc.Selection.PickObjects(ObjectType.Element,RoomFilter) as IList<Reference>;
                foreach(Reference RoomReference in RoomReferences)
                {
                    ElementId roomID = RoomReference.ElementId;
                    Room R = doc.GetElement(roomID) as Room;
                 /*
                      your code
                                  */

                }

Naveen Kumar T
Developer Technical Services
Autodesk Developer Network