【Revit二次开发】元素(Element)
图元与图元类型
- 元素
元素
元素(Element)也称图元
图元作为revit建模的基础,数量庞大,关系千丝万缕。先了解图元的分类,将会帮助我们整理思路,找到功能开发的关键点。
每一个人都可以按照自己的思路将图元进行分类。建模人员可以按照制图要求将图元分为“建筑”“结构”“钢”“系统”“注释”“分析”“体谅和场地”和“视图”几类。你也可以把图元分为“认识的”和“不认识的”的两类。然而,分类是手段不是目的,分类的目的是将具有相同特性的图元划分为一类,以便在不同应用场景下选择合适的特性或特性组合进行使用,最终方便我们开发。
图元和图元类型间存在一定的关系,Revit中允许修改图元的类型
element.GetTypeId() 方法返回当前图元的图元类型ID,当图元类型无法指定是返回ElementId.InvalidElementId
element.ChangeTypeId(ElementId) 方法可修改当前图元的图元类型ID。返回值为新创建修改类型后的图元ID或InvalidElementId(修改成功但没有创建新的图元)。
element.GetValidTypes()返回适用于当前图元的图元类型ID集合。
element.IsValidType(ElementId)判断指定图元类型是否适用于当前图元。
Revit API中派生图元和图元类型
Element类层次图描绘了Revit API中图元元素和派生子类的关系,ElementType类层次对描绘了对应图元的元素类型的类型层次关系。需要注意的是,根结点和子节点的类在类继承关系上并不一定是直接派生类。我们需要掌握的是Element和ElementType是如何一起发挥作用来表达Revit中的图元的。
选择视图中的图元后,属性窗口会显示图元的信息:其中包含它的元素类型;单击编辑类型,可以对该图元的的类型做修改。由于图元和图元类型是分开表达的,存在多个图元属于同一类型时,对图元类型的修改将会作用到所有的图元。
模型
“模型图元表示存在于建筑项目中的物理项”,通俗的讲,凡是在设计图纸中出现的模型图元,在现实世界中必将会存在与之描述一致的物理实体。例如,当使用物理图元在revit中构件模型后,施工方将会按照图纸建造出相对应的设施和建筑。
所以,当在revit中看到一个图元后,我们都可以先鲁莽的将其归为模型图元,之后,结合尝试判断其到底是不是模型图元。
每一个模型旁边都由一个文字标注来解释图元代表什么。在我们还不清楚各个图元到底属于哪个分类。我们先全部当作模型图元,以“排烟“为例,排烟的设备是可以通过购买或者现场焊接制作出来安装在现实世界中的,而”排烟”两个字,我们是无法把这两字和最终的建筑相对应。故此,”排烟“是图元模型,而这两个字不是模型图元。
仅仅依靠“物理存在“这一原则归纳出了模型图元这一类,但其数量还是太大了,人力去记忆还是太困难。所以,人们又把模型图元中的一些特例归纳成了”FamilyInstance”和宿主图元和结构图元。
族实例: FamilyInstance
在Revit中,选择任意图元,在属性窗体中点击“编辑类型“可以看到类型属性窗口。
在“族“一栏中,会有系统族和不带系统族前缀的族。族实例一般是指按照非系统族来定义的图元。区别是,系统族的族实例在Revit中可以找到与之相关的变成类型,例如,使用系统族:基本墙绘制的图元,它的编程类型是Wall。而其他系统没有定义的族,需要BIM工程师创建族,以供建模人员使用,使用用户自定义族绘制的图元就是FamilyInstace——族实例。
宿主图元
“主体图元包含那些能容纳其他模型图元的系统族对象“,例如,墙是一种宿主图元,可在墙上开洞(洞图元Opening),也可把门、窗置于墙上。
值得注意的是,像洞,门窗等这类模型图元(多为FamilyInstance大类)与宿主图元是配套存在的,不存在不依赖于宿主的这类实例。
在Revit中,创建墙或板等宿主图元;再观察宿主图元上可以绘制的其他模型图元有哪些。
结构图元
结构图元是针对从事建筑的专业人员设计建筑模型细分出来的一类。而对于二次开发的执行者,能够区分已有模型图元是否为结构图元即可,见图元的属性参数“结构“。
注释
“注释图元标识保持图纸比例的二维组件,仅在一个视图中可见“。 这里有三个关键词:图纸比例、二维、基于视图可见。需要注意的是二维和视图可见是分开的,注释图元是二维的,但是是否能在三位中显示不是有图元决定,而是由视图决定。
注释图元和模型图元是图元中数量最多的两类。详见下图:
感兴趣的,可通过方法一:视图选项卡 —> 可见性/图形;或方法二:管理选项卡 –-> 对象样式,浏览模型和注释两类图元。
组
组图元是将一些图元组合成一个单一图元来进行操作。
视图
视图是图元与用户交互的接口,它也继承自Element,也是一种图元。Revit中的视图图元类型可通过视图选项卡 创建面板的子项查看; 也可通过项目浏览器中的“视图“节点的自节点来查看视图图元类型和视图图元,更细致的内容将在后续的视图一讲介绍。
基准和信息
基准图元和信息图元在视图中是可以看到的,多为属于注释图元。之所以将其与注释图元做区分,是因为基准和信息图元承载了普通注释图元无法具备的能力。例如,文字注释和标记注释他们是与一定的模型图元模型关联的。而基准图元,相当于制图过程中的参照,是现有这些基准才能将模型图元放置在正确的位置,他们具有指导模型的能力。
常见的基准图元有:标高、轴线和模型曲线。
而信息图元中包含了常规图元无法具有的过程和渲染信息。
草图
“草图图元标识二维、三维形式的草图临时项目“,它是一个在过程中存在的图元。举个例子,当我们在数学考试中答题时,往往会在草稿纸上演算计算过程,而将最终的答案或关键的步骤誊写在答卷上。在使用建模中,经常会遇到异型的图元,这种情况下使用草图可将模型的轮廓绘制和最终的模型阶段区分开来,提高设计的灵活性。否则,只能依靠现有的模型,用堆积木的方式搭出样子,而且质量不可控。
【Revit二次开发】元素(Element)相关推荐
- Revit二次开发——元素信息绑定的两种方法
<一>通过共享参数与项目参数绑定 在二次开发功能中,很多模型需要添加附加参数,这时候就得使用共享参数或者项目参数来实现,在文档中对于可载入族添加参数时,一般都是为族添加共享参数,因为项目参 ...
- revit二次开发——如何选取元素(revit2016)
revit二次开发--如何选取元素(revit2016) 这是我在网上和书中比较写出的代码,可能不是太成熟,希望大家多多指教 using System; using System.Collection ...
- Revit二次开发之按照标高过滤元素
Revit二次开发之按照标高过滤元素 之前群里有朋友问怎么过滤特定标高的元素,当时有人回答先都过滤出来,然后遍历判断相应的标高参数来找出特定标高的元素.今天在看书的时候看到了一个可以过滤特定标高元素的 ...
- Revit二次开发_1.过滤器笔记篇
Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...
- revit二次开发--异形柱翻模
最近写了一个revit二次开发的异形柱翻模的功能,柱子翻模网上有很多插件可以用,我用的比较多的是红瓦,其中异形柱的翻模对于图纸的要求较高,有很多不准确的地方.很多异形柱,整体翻模出来是错误的,翻出来之 ...
- C# Revit二次开发基础/核心编程---建筑建模-标高和轴网
一.本节课程 C# Revit二次开发基础/核心编程---建筑建模-标高和轴网 二.本节要讲解的知识点 1.标高的高度.创建标高 2.轴网曲线.创建轴网 具体内容 1.标高 标高是有限水平平面,大多数 ...
- Revit二次开发——扩展存储
Revit二次开发--扩展存储 在revitAPI中,提供了Extensible Storage framework,可以使开发者将需要存储的数据存到Revit的rvt文件中, 扩展的数据始终跟 ...
- C# Revit二次开发基础/核心编程--- Application\Document\Transaction
一.本节课程 C# Revit二次开发基础/核心编程--- Application\Document\Transaction 二.本节要讲解的知识点 Application\Document\Tran ...
- Revit二次开发学习笔记
Revit二次开发学习笔记1 20220314: 概念:Application与Document 接口函数:IExternalCommand.ActiveView与Selection 20220316 ...
- Revit二次开发之批量修改族名称及族类型名称
昨天是参加工作整一年的好日子,在这一年中逐步开始接触C#和Revit二次开发,困扰和BUG伴随着整个学习过程.由于Revit二次开发的资料和课程不多,很多情况下都是依靠博客.技术贴和QQ群里的大神等方 ...
最新文章
- 有人把机器学习的数学基础整理成了专辑(附下载 )
- Oracle HowTo:如何解决Oracle10gR2 ORA-19554关于SBT_TAPE问题
- 第一章 为什么使用单元测试
- RobotFrameWork(五)控制流之if语句——Run Keyword If
- keepalived双实例配置
- 2015-2016 Petrozavodsk Winter Training Camp, Nizhny Novgorod SU Contest
- JavaScript实现CountingSort计数排序算法(附完整源码)
- Android系统如何实现UI的自适应
- 性能测试之JMeter配置元件【计数器】
- H5面试题---HTTP状态码知道哪些
- World Wind Java 系列
- 华为路由器配置VRRP
- VS找到w3wp.exe 附加到23wp.exe进行debug程序调试
- ​mybatis collection解析以及和association的区别
- 微信公众平台学习笔记
- textarea标签 禁止拉伸
- 首批!工信部下达2021年国家工业专项节能监察任务,涉及270 个数据中心(附名单)...
- 易盾php,PHP接入网易易盾验证码
- PCM与G711 转换
- 3种方法保护Word文档不可随意编辑
热门文章
- 共享wifi项目怎么样
- FastReport使用技巧参考整理
- 字数统计方式统计字数(简单版)中文算1个,英文算0.5个,全角字符算1个,半角字符算0.5个。
- 面试智力题-脑筋急转弯
- android seekto实现_Android IjkPlayer seekto后会有时会向后跳跃?不准确怎么解决
- 使用 iperf 工具测试 Linux 网络性能
- 【信息检索】文档评分和概率检索模型
- 使用Pandoc和LaTeX从Markdown创建PDF
- SQL中的Contains
- html下拉框onchange事件,javascript 中select标签上放入onchange事件的两种方式分享