欢迎小编回来给大家继续更新,由于最近工作时长很久很久。。。我深刻的害怕我的英容俊貌只能留在冷冰冰的照片上,特地的继续加了个班。就这样还是我们部门工作时长最少的,就问你,害不害怕,害不害怕??
回到正题吧,今天我们来讲一下如何创建族实例,由于族实例的重载有12个,这里小编就挑一个稍微复杂点的讲一下:Document.NewFamilyInstance Method (XYZ, FamilySymbol, Level, StructuralType),剩下的大家举一反三吧。
这里我们举例创建一个500*500的柱子,老规矩,我们分析一下,创建族实例需要有哪些条件吧?
1.XYZ
位置信息,就是我们要把这个实例建在什么地方。这里我们就先把它放在原点new XYZ(0, 0, 0)吧。
2. FamilySymbol
族类型,我们需要创建什么类型的族实例(我们通过过滤器来获得所要创建的柱子族类型):
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
标高和前几期类似,这里就不重复啦。
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;就好啦!
让我们来看代码(记得命名空间前面的引用哦):
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);
效果展示: