Revit二次开发入门:第三章图元与参数
本章内容
1.元素基础
元素在Revit中尤为重要,用户能看见的大多数对象都是元素,比如墙、族、族类型、族实例、标高、轴网、视图等,Revit中的大多数类都继承自元素。元素是可序列化的,即是可以被保存到RVT项目文件里。
下图是一个族、族实例类图。族对应Family,族类型对应FamilySymbol,族实例是FamilyInstance
2.如何获取元素
- 通过ID获取元素:Revit中的元素都有一个ID,我们可以通过ID来直接从文档中获取这个元素。Document.GetElement(new ElementId(30))
- 通过过滤器获取元素:过滤器方式是API里使用最广的方式,也是推荐使用的方式。需要创建收集器与过滤器来获取用户想要的元素。FilteredElementCollcetor=new FilteredElementCollcetor(doc)
- 通过选择:使用UIDocument的Seclection属性,用户可以获取被选中的元素的集合。UIDocument.Selection.GetElementIds()
3.元素与元素类型
Element->ElementType
- Element.GetTypeId()
- Wall.WallType
- FamilyInstance.Symbol
FamiliSybol->Family
- FamiliSymbol.Family
Family->FamilySybol
- Family.GetFamilySymbolIds()
4.元素的属性与重要方法
元素的几个重要属性包括:
- Category-类别
- Location-位置
- LevelId-标高ID
- Document-所在文档
- Parameters-所有参数
元素的主要方法有:
- GetTypeId()-类型ID
- ChangeTypeId()修改类型ID
- IsValidType()检验类型合法性
- GetMaterialIds()获取材质ID
- LookupParameter()查询某一参数
5.元素参数概念与实例
参数的属性:
- Definition定义:名字,参数组,参数类型等
- Element所在元素
- HasValue是否有值
- ID
- IsShared是否是共享参数
- IsReadOnly是否只读
- StorageType存储类型
参数的方法
- As***
- AsDouble()
- AsString()
- AsValueString()
- AsElementID()
- AsInteger()
- Set()
参数的四种类型
- int整形(枚举、布尔、数量)
- float浮点(长度、面积……)
- string文本(字符串)
- elementId元素ID(类型,材质……)
注:浮点数的单位始终是英制!
实例:读取元素参数
- 读取选择元素的参数,并且显示在TaskDialog上。
- 把元素的类型的参数信息显示出来。
- 并且获取元素的族名称。
本课代码
[TransactionAttribute(TransactionMode.Manual)]
[RegenerationAttribute(RegenerationOption.Manual)]
public class Class1 : IExternalCommand {
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) {
UIDocument uiDoc = commandData.Application.ActiveUIDocument;
Document revitDoc = uiDoc.Document;
List<ElementId> elemList = uiDoc.Selection.GetElementIds().ToList();
Element selEle;
ElementType type;
foreach (ElementId id in elemList) {
selEle = revitDoc.GetElement(id);
type = revitDoc.GetElement(selEle.GetTypeId()) as ElementType;
string str = "元素族名称:" + type.FamilyName + "\n元素类型:" + type.Name;
TaskDialog.Show("元素参数", str);
}
return Result.Succeeded;
}
}