七、revit中元素的获取方法
-
信息的获取
1.得到信息的载体
2.读取信息
7.1得到信息的载体
- 在revit中信息的载体用element这个类来表示
- Element元素:ElementType(元素类型)、Family(族)、FamilyInstance(族实例)、HostObject(宿主对象)、其他
- ElementType(元素类型)包括:FamilySymbol(族类型)、WallType(墙类型)
- FamilyInstance(族实例)包括:Window(窗)、Column(柱)、Beam(梁),族实例都是由标准族和可载入族生成
- HostObject(宿主对象)包括:Wall(墙)、Floor(楼板)、MEPcurve,宿主对象都是由系统族生成
7.2获取元素
1.直接选取
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GetInformation
{
[Transaction(TransactionMode.ReadOnly)] //事件
public class Information : IExternalCommand //实现接口
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
//通过commandData获取UIDocument
UIDocument uidoc = commandData.Application.ActiveUIDocument;
//通过uidoc获取revit当前文档
Document doc = uidoc.Document;
//在revit当前文档下,进行选择元素的操作
var reference = uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);
//获取直接选择的这个元素
var element = doc.GetElement(reference.ElementId);
//对所选择的元素进行类型转换(或者可以理解成指定获取元素的类别,比如:墙、楼板、屋顶等等)
var wall = element as Wall;
return Result.Succeeded;
}
}
}
但是在revit中运行的时候,如果没有选择元素,那么revit会抛出一个OperationCanceledExecpt