知识点
yunyou.ke.qq.com有相关免费课程
元素Element的基础概念、如何编辑元素
- 具体内容
- 元素Element基础
元素在Revit里面尤其重要,用户能看见的大多数对象都是元素,比如墙、族、族类型、族实例、标高、轴网、视图等。Revit中的大多数类都是继承自元素。元素是可序列化的,即是可以保存到RVT项目文件中。
(1)相关类图
- 族、族实例相关
- 模型元素相关
- 设置相关
- 二维元素
- 其他元素
- 如何获取元素
1)通过ID获取元素: 必须要知道ID才可以获取到元素。
//============代码片段3-1通过Id获取元素============ ElementId levelId = new ElementId(766598); Element element = RevitDoc.GetElement(levelId); Level level = element as Level; if(level != null) { //使用level } |
2)通过过滤器来获取元素(推荐使用)
//============代码片段3-2 过滤所有外墙============ FilteredElementCollector filteredElements = new FilteredElementCollector(RevitDoc); ElementClassFilter classFilter = new ElementClassFilter(typeof(Wall)); filteredElements = filteredElements.WherePasses(classFilter); foreach (Wall wall in filteredElements) { // 获取墙类型“功能”参数,它用来指示墙是否为外墙。 var functionParameter = wall.WallType.get_Parameter(BuiltInParameter.FUNCTION_PARAM); if (functionParameter != null && functionParameter.StorageType == StorageType.Integer) { if (functionParameter.AsInteger() == (int)WallFunction.Exterior) { // 使用wall } } } |
- 通过选择
//============代码片段3-3 获取被选元素============ [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] public class MyExternalCommand : Autodesk.Revit.UI.IExternalCommand { public Autodesk.Revit.UI.Result Execute(Autodesk.Revit.UI.ExternalCommandData commandData, ref string message, ElementSet elements) { if (commandData.Application.ActiveUIDocument != null) { foreach (Element selected in commandData.Application.ActiveUIDocument.Selection.Elements) { Wall wall = selected as Wall; if(wall != null) { //使用wall } } } return Autodesk.Revit.UI.Result.Succeeded; } } |
- 获取和修改元素参数
每个元素都有参数,Element.Parameters获取到所有的参数,然后遍历找到需要的参数。也可以通过Element. get_Paramete(参数)来取得到单个参数,括号里面的“参数”,有四种选择:string参数名字、BuiltInParameter参数枚举、Definition参数定义和Guid参数的guid。
//============代码片段3-4 获取“长度”参数============ ParameterSet parameters = element.Parameters; foreach (Parameter parameter in parameters) { if(parameter.Definition.Name == "长度 |