• 族编辑
    • 族实例

Revit将族分为系统族、内建族、标准构件族。

系统族:系统族是在 Autodesk Revit 中预定义的族,包含基本建筑构件,例如墙、窗和门。例如:基本墙系统族包含定义内墙、外墙、基础墙、常规墙和隔断墙样式的墙类型;可以复制和修改现有系统族,但不能创建新系统族;可以通过指定新参数定义新的族类型。
标准构件族:在默认情况下,在项目样板中载入标准构件族,但更多标准构件族存储在构件库中。使用族编辑器创建和修改构件。可以复制和修改现有构件族, 也可以根据各种族样板创建新的构件族。族样板可以是基于主体的样板, 也可以是独立的样板。基于主体的族包括需要主体的构件。例如:以墙族为主体的门族,独立族包括柱、树和家具;族样板有助于创建和操作构件族。标准构件族可以位于项目环境外,且具有 .rfa 扩展名,可以将它们载入项目,从一个项目传递到另一个项目,而且如果需要还可以从项目文件保存到您的库中。
内建族:内建族可以是特定项目中的模型构件,也可以是注释构件。只能在当前项目中创建内建族,因此它们仅可用于该项目特定的对象,例如:自定义墙的处理。创建内建族时,可以选择类别,且您使用的类别将决定构件在项目中的外观和显示控制。

Category、Family、FamilySymbol、FamilyInstance这四个概念之间的关系
类别(Category)>族(Family)>族模型(FamilySymbol),这三者是子集关系,而你在视图中实际绘制的墙就叫做族实例(FamilyInstance)

如果用面向对象语言中的概念来讲,族相当于类模板(Class Template),族类型相当于类(Class) ,族实例相当于对象(Object)。虽然它们在API中是使用聚合而不是继承的方式组织的,但可以用来做类比。

族编辑

Revit中有个很重要的概念一族(Family)。 族也是一种元素 ,它分为系统族、内建族和构建族。系统族是Revit内置的族,不可以自由编辑它的模型、类型和参数。内建族和构建族允许编辑和创建自定义的模型、类型和参数,区别是内建族只能存储在当前的项目文档里,不能被其他文档使用。编辑族( EditFamily)和载入族(LoadFamily)
在当前文档中,如果加载了一些构建族,并创建了这些族的族实例,那么,对某个族实例进行EditFamily操作,将会进人到族编辑的文档中,可以对族进行修改。这个方法是对族在内存中新创建一个独立的拷贝文档,修改编辑好这份文档之后,如果想要之前的工程文档应用这些修改,那么需要使用带有IFamilyLoadOptions接口参数的LoadFarmily重载方法重新载人族并覆盖应用到使用中的族实例中。

族类代表整个Revit族,包括了族实例所使用的族符号。

1)编辑族( EditFamily)和载入族(LoadFamily)
在当前文档中,如果加载了一些构建族,并创建了这些族的族实例,那么,对某个族实例进行EditFamily操作,将会进人到族编辑的文档中,可以对族进行修改。这个方法是对族在内存中新创建一个独立的拷贝文档,修改编辑好这份文档之后,如果想要之前的工程文档应用这些修改.那么需要使用带有IFamilyLoadOptions接口参数的LoadFamily重载方法重新载人族并覆盖应用到使用中的族实例中。

编辑和载入族的方法

方法 描述
EditFamily(Family loadedFamily) 从传入的构建族中获得要修改的族文档
LoadFamily ( Document targetDocument, IFamilyLoad( )ptions familyLoadOptions) 将族文档的内容载人到目标文档中

Autodesk. Revit, DB. IFamilyI oad( )ptions是提供族载人选项的接口类,它有两个接口函数,可以根据需要实现这两个接口函数,在LoadFamily中就可以实现想要的功能

IFamilyLoadOptions的接口类方法

方法 描述.
OnFamilyFound ( bool familyInUse, out bool overwriteParameterValues) 当族实例在 目标文档中被找到时,将被触发执行的回调函数
OnSharedFamilyFound( Family sharedFamily, bool familylnUse, out FamilySource source, out bool overwriteParameterValues) 当共享族实例在目标文档中被找到时,将被触发执行的回调函数

Document类包括LoadFamily( )和LoadF amilySymbol( )方法。.
●LoadFamily( )可将整个族及其所有类型或符号加载到项目中。
●LoadFamilySymbol( )只将指定的族符号从族文件中加载到项目中。
注意:若要提高应用程序的性能和减少内存使用,则应尽可能地加载特定的族符号而不是整个族对象。
●使用Application对象Options属性检索Options.Application对象。
●使用Options.Application对象GetLibraryPaths( )方法检索族文件路径。
●在LoadFamilySymbol()中,输入的参数Name与FamilySymbol对象Name属性返回的字符串值相同。

       Document projectDoc = ActiveUIDocument.Document;
// 这里是自定义族实例,比如门,窗,桌子…FamilyInstance famInst = elem as FamilyInstance;
// 编辑族,拿到族文档
Document familyDoc = projectDoc.EditFamily(famInst.Symbol.Family);
// 在族文档中添加一个新的参数
using(Transaction tran = new Transaction(projectDoc, "Edit family Document."))
{tran.Start();string paramName = "MyParam ";familyDoc.FamilyManager.AddParameter(paramName, BuiltInParameterGroup.PG_TEXT, ParameterType.Text, false);tran.Commit();
}
// 将这些修改重新载入到工程文档中
Family loadedFamily = familyDoc.LoadFamily(RevitDoc, new projectFamLoadOption());

在编辑族和载人族的时候,需要注意下面几点:
①如果当前文档正在被修改中(有打开没有被关掉的事务)或者处在只读的状态,EditFamily方法不能被调用。可以使用IsModifiable和IsReadOnly属性来判断和检查文档的状态。
②EditFamily方法也不能在动态更新机制(Dynamic Updates)中使用。
③在LoadFamily方法,可以用RevitUlFamilyLoadOptions弹出一个提示框来与用户进行交互。

族实例

Revit族实例对象类别的例子有梁、支撑、柱、家具、体量,等等。族实例对象具有更
详细的属性,以便在项目中更改族实例的类型和外观。
1.位置相关属性( Location-Related Properties )位置相关属性显示族实例对象的物理和几何特征,如方向、旋转和位置。
(1)方向(Orientation)。 对有些族实例对象,可以改变其面的朝向或把手的方向。例如,门可以面向房间或墙的外侧或内侧,把手可以放置在左侧或右侧。
(2)方向-工作平面(Orientation - Work Plane)。族实例的工作平面方向也是可以改变的。CanFlipWorkPlane为true 时,可以设置IsWorkPlaneFlipped属性。如果对不允许工作平面翻转的族实例设置此属性,则会引发异常。
(3)旋转-镜像(Rotation - Mirrored)。Mirrored 属性指示族实例对象是否已被镜像。
(4)旋转-可旋转和Rotate( ) [ Rotation - CanRotate and Rotate()]。 族实例CanRotate布尔属性用于检查族实例是否可被旋转180%。 这取决于该实例所属的族。
(5)位置(Location)。Location 属性确定项目中实例的物理位置。实例可以有点位置或线位置。
适用于Location的特点如下:
●点位置是个LocationPoint类对象-基础、门,或有点位置的桌子。
●线位置是个LocationCurve类对象-有线位置的梁。
●它们都是Location类的子类。

2.主体和主面( Host and HostFace )
Host和HostFace都是FamilyInstance属性。
(1)主体(Host)。 族实例对象有个Host属性,该属性返回其主体图元。有些族实例对象没有主体图元,如桌子和其他家具,因为没有主体图元被创建,所以Host属性不返回任何内容。然而,其他对象,如门窗,必须有主体图元。在这种情况下,Host 属性返回窗或门所在的墙图元.
(2) 主面(HostFace)。HostFace 属性获取对族实例的主体表面的参照,或若实例位于某个工作平面,则获取对底部工作平面的几何面参照。若工作平面未参照其他几何图形,或实例未嵌于某表面或工作平面,则该属性返回值为空(null)。

3.子构件及父构件( Subcomponent and Supercomponent )
FamilyInstance.GetSubComponentIds( )方法返回载入该族的族实例图元ID。 当一个“Table-Dining Round w Chairs.rfa”的实例置于某个项目中,可由GetSubComponentlds( )方法返回一组椅子图元的ID。

4.其他属性( Other Properties )
属性是特指Revit Architecture和Revit Structure中的属性。
(1)房间信息(Room Information)。族实例属性包括Room、FromRoom 和ToRoom。
(2)空间信息(Space Information)。族实例有一-个 Space属性,用于标识保存MEP实例的空间。
(3) Revit Structure 相关分析模型( Revit Structure Related Analytical Model )。GetAnalyticalModel( )方法检索族实例结构分析模型。

Revit二次开发——族的基础相关推荐

  1. Revit二次开发——族库管理插件的开发思路

    Revit二次开发--族库管理插件的开发思路 成熟的BIM团队都会有自己的族库及项目样板文件 在项目样板中载入常用的族及配置好管道系统为项目节约了初始环节的时间 然鹅,项目开展阶段仍需载入新的族 或是 ...

  2. Revit二次开发 - 族库最近使用菜单

    RibbonGallery 当时在"构件坞"中看到这种样式的ribbon菜单,觉得挺有意思的,于是找它的实现方案: 1.首先用Adwindows找到"构件坞"的 ...

  3. pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...

    二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...

  4. Revit二次开发入门秘籍 01如何入门

    关于入门 我想在开始学习之前大家应该更需要知道如何入门,对比一下我们在学校的学习,我们需要书.老师-书上呢,是有所有的知识点,有重要的,有不重要的,而老师呢,会知道哪些是重点,也就是我们考试要考的,教 ...

  5. Revit二次开发入门捷径_升维学习、降维打击

    问题 入门Revit二次开发有捷径吗? 答案 量子力学:有也没有.(皮一下:叠加态) 没有:目的地只有一个,路只有一条,学习没有捷径. 有:虽然路只有一条,但我们可以借助交通工具,缩短时间就是捷径. ...

  6. C# Revit二次开发基础/核心编程--- Application\Document\Transaction

    一.本节课程 C# Revit二次开发基础/核心编程--- Application\Document\Transaction 二.本节要讲解的知识点 Application\Document\Tran ...

  7. Revit二次开发之批量修改族名称及族类型名称

    昨天是参加工作整一年的好日子,在这一年中逐步开始接触C#和Revit二次开发,困扰和BUG伴随着整个学习过程.由于Revit二次开发的资料和课程不多,很多情况下都是依靠博客.技术贴和QQ群里的大神等方 ...

  8. Revit二次开发—载入族并交互式放置

    文章目录 核心代码 问题一:按esc取消放置时报错 问题二:如何在放置一个族实例之后退出放置 问题三:已存在所载入族时,如何正常放置 参考资料 核心代码 using (Transaction tx = ...

  9. C# Revit二次开发基础/核心编程---建筑建模-标高和轴网

    一.本节课程 C# Revit二次开发基础/核心编程---建筑建模-标高和轴网 二.本节要讲解的知识点 1.标高的高度.创建标高 2.轴网曲线.创建轴网 具体内容 1.标高 标高是有限水平平面,大多数 ...

  10. Revit二次开发之族库管理系统

    一.背景 很多小伙伴都想制作族库管理系统,但又不知从何下手,这里骑士给大家分享一下骑士做的族库管理系统,以及用到的一些技术点吧.感兴趣可以加入Q群711844216,有完整的族库开发教学. 二.技术点 ...

最新文章

  1. ProtoBuf格式详解
  2. html中设置父盒子的高度,【CSS】设置浮动元素高度等于父元素
  3. react-native 小米手机和 mac 安装
  4. 栈和队列应用之数制转换
  5. python字符串类型str_python数据类型之字符串类型str
  6. 机器学习实战之K近邻算法
  7. 用java servlet Filter编写过滤器
  8. 集成LNMP/LAMP/FAMP的LuNamp2.1正式版开源发布
  9. python opencv调用cuda_Win10使用VS2019从源码编译OpenCV 4.4 + CUDA 11.0 + Cudnn 8.0 + python3
  10. Linux运维故障排查——SSH连接Fedora不成功的原因
  11. python编程是啥-什么是Python编程课程
  12. 【渝粤题库】 陕西师范大学 202331 证券投资学 作业(专升本)
  13. java nio 多路复用_JAVA NIO 一步步构建I/O多路复用的请求模型
  14. 最大似然估计程序c语言,极大似然估计(示例代码)
  15. 浙大PAT 乙级(Basic Level) Practice 题解合集(全AC版)
  16. 50V升压恒流LED驱动芯片
  17. 几百万数据量的Excel导出会内存溢出和卡顿?那是你没用对方法!
  18. 黑马程序员--统计字符串中大小写字母和数字的个数问题的代码
  19. Autodesk 3ds Max 2014选择集闪退问题
  20. Obsidian 0x01:Obsidian 双链

热门文章

  1. bin和cue怎么合并_bin和cue格式的文件怎么用?
  2. SolidWorks的发展历史(1994~2007)
  3. 发布一款小软件:和讯博客助手-测试版- 0.3.0
  4. 基于MemFireCloud的电子图书馆开发指南(三)
  5. labview 上位机报警提示,报警记录,txt文档存储
  6. 华三基础命令(单臂,超级vlan,远程,聚合)
  7. sqlmap自动化注入工具使用浅析
  8. 上市公司高新企业分类数据、各省对外投资核准企业名录、独角兽企业数据库
  9. SHFileOperation删除文件夹
  10. C++ dlib实现人脸识别