Revit把所有的交互選擇的操作全部封裝在Selection類中翁都。
Selection類提供了選擇點(diǎn)短曾,選擇線寒砖,選擇面,選擇對象嫉拐,窗口選擇哩都,多重選擇等等操作。
常用
Pick...是執(zhí)行命令之后選擇婉徘。
GetElementIds 執(zhí)行命令之前選中圖元漠嵌,并返回他們的Id。
SetElementIds 執(zhí)行命令后盖呼,選中傳入Id的圖元儒鹿。
PickBox(PickBoxStyle) //窗口選的效果,返回所選擇的范圍几晤,不返回所選的對象集合
PickBox(PickBoxStyle, String) //窗口選约炎,可輸入狀態(tài)欄提醒字符串,返回返回所選擇的范圍
PickElementsByRectangle()()()() //窗口選,返回選中對象集合
PickElementsByRectangle(String) //窗口選圾浅,返回選中對象集合
PickElementsByRectangle(ISelectionFilter) //窗口選掠手,指定一個(gè)選擇過濾器,返回選中對象集合
PickElementsByRectangle(ISelectionFilter, String) // 窗口選狸捕,指定一個(gè)選擇過濾器喷鸽,返回選中對象集合, 提示字符串
PickObject(ObjectType) //單選一個(gè)實(shí)體上的點(diǎn),棱邊府寒,面魁衙,對象
PickObject(ObjectType, ISelectionFilter) //單選一個(gè)實(shí)體上的點(diǎn),棱邊株搔,面剖淀,對象,帶過濾器纤房,只有符合過濾器的才能在選擇中被高亮纵隔,且被選中
PickObject(ObjectType, String)
PickObject(ObjectType, ISelectionFilter, String)
PickObjects(ObjectType) //多選,可以組合多中選擇方式炮姨。
PickObjects(ObjectType, ISelectionFilter)
PickObjects(ObjectType, String)
PickObjects(ObjectType, ISelectionFilter, String)
PickObjects(ObjectType, ISelectionFilter, String, IList<(Of <<'(Reference>)>>))
PickPoint()()()() //選擇一個(gè)點(diǎn)
PickPoint(String) //選擇一個(gè)點(diǎn)
PickPoint(ObjectSnapTypes) //選擇一個(gè)點(diǎn)捌刮,指定捕捉類型
PickPoint(ObjectSnapTypes, String)
測試代碼:
//主函數(shù)
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
ISelectionFilter WallFilter = new WallSelectionFilter();
IList<Element> elementList = uidoc.Selection.PickElementsByRectangle(WallFilter, "框選常規(guī) - 200mm的墻");
var eleIds = from Element in elementList
select Element.Id;
uidoc.Selection.SetElementIds(eleIds.ToList());
return Result.Succeeded;
}
//實(shí)現(xiàn)函數(shù)
public class WallSelectionFilter : ISelectionFilter
{
public bool AllowElement(Element elem)
{
if(elem is Wall && elem.Name == "常規(guī) - 200mm")
{
return true;
}
return false;
}
public bool AllowReference(Reference reference, XYZ position)
{
return false;
}
}
測試結(jié)果
參考: http://blog.csdn.net/joexiongjin/article/details/8099842