大家好,欢迎来到IT知识分享网。
族
Revit将族分为系统族、内建族、标准构件族。
系统族:系统族是在 Autodesk Revit 中预定义的族,包含基本建筑构件,例如墙、窗和门。例如:基本墙系统族包含定义内墙、外墙、基础墙、常规墙和隔断墙样式的墙类型;可以复制和修改现有系统族,但不能创建新系统族;可以通过指定新参数定义新的族类型。
标准构件族:在默认情况下,在项目样板中载入标准构件族,但更多标准构件族存储在构件库中。使用族编辑器创建和修改构件。可以复制和修改现有构件族, 也可以根据各种族样板创建新的构件族。族样板可以是基于主体的样板, 也可以是独立的样板。基于主体的族包括需要主体的构件。例如:以墙族为主体的门族,独立族包括柱、树和家具;族样板有助于创建和操作构件族。标准构件族可以位于项目环境外,且具有 .rfa 扩展名,可以将它们载入项目,从一个项目传递到另一个项目,而且如果需要还可以从项目文件保存到您的库中。
内建族:内建族可以是特定项目中的模型构件,也可以是注释构件。只能在当前项目中创建内建族,因此它们仅可用于该项目特定的对象,例如:自定义墙的处理。创建内建族时,可以选择类别,且您使用的类别将决定构件在项目中的外观和显示控制。
如果用面向对象语言中的概念来讲,族相当于类模板(Class Template),族类型相当于类(Class) ,族实例相当于对象(Object)。虽然它们在API中是使用聚合而不是继承的方式组织的,但可以用来做类比。
族编辑
族类代表整个Revit族,包括了族实例所使用的族符号。
编辑和载入族的方法
方法 | 描述 |
---|---|
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)。
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( )方法检索族实例结构分析模型。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/152314.html