using Autodesk.Revit.DB;
using Autodesk.Revit.Attributes;
using System.Windows.Media.Imaging;
using Autodesk.Revit.UI.Selection;
namespace HelloWorld
{
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class Test : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
Reference refer = uidoc.Selection.PickObject(ObjectType.Element,new Filter(), "拾取目标构件");
FamilyInstance instance = doc.GetElement(refer) as FamilyInstance;
FamilySymbol symbol = instance.Symbol;
//可以将image保存或是传递给PictreBox
System.Drawing.Image image = symbol.GetPreviewImage(new System.Drawing.Size(100,100));
return Result.Succeeded;
}
}
//过滤器
public class Filter : ISelectionFilter
{
public bool AllowElement(Element elem)
{
return elem.Category.Name == "管道附件" & elem.Name == "钢管_沟槽_同径90度弯头_DN25-600";
}
public bool AllowReference(Reference reference, XYZ position)
{
return false;
}
}
}
本文介绍如何使用Revit API实现特定类别构件的选择,并通过自定义过滤器选取指定名称的管道附件,同时展示了如何获取所选FamilyInstance的预览图像。

1570

被折叠的 条评论
为什么被折叠?



