前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Revit二次开发之创建族实例(第十三期)

Revit二次开发之创建族实例(第十三期)

作者头像
一席青衣卧龙城
发布2022-04-21 12:16:44
1.3K0
发布2022-04-21 12:16:44
举报
文章被收录于专栏:Revit二次开发Revit二次开发

欢迎小编回来给大家继续更新,由于最近工作时长很久很久。。。我深刻的害怕我的英容俊貌只能留在冷冰冰的照片上,特地的继续加了个班。就这样还是我们部门工作时长最少的,就问你,害不害怕,害不害怕??


回到正题吧,今天我们来讲一下如何创建族实例,由于族实例的重载有12个,这里小编就挑一个稍微复杂点的讲一下:Document.NewFamilyInstance Method (XYZ, FamilySymbol, Level, StructuralType),剩下的大家举一反三吧。

这里我们举例创建一个500*500的柱子,老规矩,我们分析一下,创建族实例需要有哪些条件吧?

1.XYZ

位置信息,就是我们要把这个实例建在什么地方。这里我们就先把它放在原点new XYZ(0, 0, 0)吧。

2. FamilySymbol

族类型,我们需要创建什么类型的族实例(我们通过过滤器来获得所要创建的柱子族类型):

代码语言:javascript
复制
 FilteredElementCollector faaa = new FilteredElementCollector(doc);
            faaa.OfClass(typeof(FamilySymbol));//收集族类型
 foreach (FamilySymbol faa in faaa)
            {
                if(faa.Name.Contains("500 x 500"))//寻找500*500类型的柱子
                {
                    id = faa.Id;//存储它的ID
                }
            }
            FamilySymbol fs = doc.GetElement( id) as FamilySymbol;//从他的ID来获得族类型

3. Level

标高和前几期类似,这里就不重复啦。

代码语言:javascript
复制
  FilteredElementCollector fil = new FilteredElementCollector(doc);
            fil.OfClass(typeof(Level));
   foreach (Level ll in fil)//找标高
            {
                if (ll.Name.Contains("一层"))//找到一层标高
                {
                    le = ll;
                }
            }

4.StructuralType

这个是结构类型,需要重点讲一下,之前的模板引用并没有涉及引用结构类型,所以大家是否还记得如何去引用呢?

在命名空间之前添加这么一个引用就好啦,using Autodesk.Revit.DB.Structure;

那么结构有哪些?我们具体来看一下

NonStructural

Non-Structural 非结构

Beam

Structural Beam 梁

Brace

Structural Brace 支撑

Column

Structural Column 结构柱

Footing

Structural Footing 结构基础

UnknownFraming

Unknown Framing 未知的框架

这样就给我们的结构族实例定义了用途。

那我们这里的结构柱就用StructuralType.Column;就好啦!


让我们来看代码(记得命名空间前面的引用哦):

代码语言:javascript
复制
FilteredElementCollector fil = new FilteredElementCollector(doc);
            fil.OfClass(typeof(Level));
            FilteredElementCollector faaa = new FilteredElementCollector(doc);
            faaa.OfClass(typeof(FamilySymbol));//收集族类型
            Level le = null;
            ElementId id = null;
            foreach (FamilySymbol faa in faaa)
            {
                if(faa.Name.Contains("500 x 500"))//寻找500*500类型的柱子
                {
                    id = faa.Id;//存储它的ID
                }
            }
            FamilySymbol fs = doc.GetElement( id) as FamilySymbol;//从他的ID来获得族类型
            foreach (Level ll in fil)//找标高
            {
                if (ll.Name.Contains("一层"))//找到一层标高
                {
                    le = ll;
                }
            }
            FamilyInstance fa = doc.Create.NewFamilyInstance(new XYZ(0, 0, 0), fs, le, StructuralType.Column);

效果展示:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 精讲Revit二次开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档