PickObjects 是Revit二次开发里经常会用到的交互方式,这里对里面的各参数所对应的交互效果进行讲解。
class PickObjects : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
RevitSelection selection = commandData.Application.ActiveUIDocument.Selection;
//只能选择边
var pickObjects1 = selection.PickObjects(ObjectType.Edge);
//只能选择当前文件中继承Element的对象
var pickObjects2 = selection.PickObjects(ObjectType.Element);
//只能选择面
var pickObjects3 = selection.PickObjects(ObjectType.Face);
//只能选择链接文件中继承Element的对象
var pickObjects4 = selection.PickObjects(ObjectType.LinkedElement);
//无法选择任何对象
var pickObjects5 = selection.PickObjects(ObjectType.Nothing);
//只能选择继承Element的对象上的点,不管是当前文件还是连接文件
var pickObjects6 = selection.PickObjects(ObjectType.PointOnElement);
//设置选择过滤器,使得第一个参数的选择只能基于过滤器中设置允许选择的对象中进行选择
var pickObjects7 = selection.PickObjects(ObjectType.Element, new SelectionFilter());
//添加状态提示
var pickObjects8 = selection.PickObjects(ObjectType.Element, "这里可以设置交互提示。");
//添加选择过滤器和状态提示
var pickObjects9 = selection.PickObjects(ObjectType.Element, new SelectionFilter(), "这里可以设置交互提示。");
//添加选择过滤器、状态提示、设置预先选择的对象
var pickObjects10 = selection.PickObjects(ObjectType.Element, new SelectionFilter(), "这里可以设置交互提示。", pickObjects9);
//添加选择过滤器、状态提示、设置预先选择的对象
var pickObjects11 = selection.PickObjects(ObjectType.Element, new SelectionFilter(), "这里可以设置交互提示。", pickObjects9);
//添加选择过滤器、状态提示、设置预先选择的对象
var pickObjects12 = selection.PickObjects(ObjectType.Element, new SelectionFilter(), "这里可以设置交互提示。", pickObjects9);
//添加选择过滤器、状态提示、设置预先选择的对象
var pickObjects13 = selection.PickObjects(ObjectType.Element, new SelectionFilter(), "这里可以设置交互提示。", pickObjects9);
return Result.Succeeded;
}
}
如果你对Revit二次开发感兴趣,欢迎关注我的公众号一起学习~