1. 创建风管
2. 过滤系统类型
3. 过滤风管类型
4. 读取文件中的族符号
5. 加载rfa族文件
4. 创建柱子
// (1) 创建风管
Level currentLevel = m_curDoc.ActiveView.GenLevel;
// a 过滤系统类型
FilteredElementCollector collector1 = new FilteredElementCollector(m_curDoc);
List<MechanicalSystemType> mechanicalSystemTypes = collector1.OfClass(typeof(MechanicalSystemType)).Cast<MechanicalSystemType>().ToList();
// b 过滤风管类型
FilteredElementCollector collector2 = new FilteredElementCollector(m_curDoc);
List<DuctType> ductTypes = collector2.OfClass(typeof(DuctType)).Cast<DuctType>().ToList();
MechanicalSystemType mechanicalSystemType = mechanicalSystemTypes.First();
DuctType ductType = ductTypes.First();
XYZ jiXianStartPoint = new XYZ(0,100,0);
XYZ jiXianEndPoint= new XYZ(0,500,0);
// c. 生成风管
Duct duct = Duct.Create(m_curDoc, mechanicalSystemType.Id, ductType.Id, currentLevel.Id, jiXianStartPoint.ToAPI(), jiXianEndPoint.ToAPI());
// (2) 创建柱
// a.获取文件中的族符号
IEnumerable<FamilySymbol> fss = from ele in new
FilteredElementCollector(m_curDoc).OfClass(typeof(FamilySymbol))
let item = ele as FamilySymbol
where item.FamilyName == "族名称(自己设置)"
select item;
FamilySymbol fs =fss.FirstOrDefault();
// b. 如果文件中没有需要的族 需要加载
string familyFileName = Assembly.GetExecutingAssembly().FolderPath() + "族名称(自己设置)";
// 族名称的完整路径
if (fs == null)
{
// 加载族
m_curDoc.LoadFamily(familyFileName,
AirportBimRevit.Command.FamilyLoadOptions.Default, out family);
// 获得族符号
ISet<ElementId> familySymbolIds = family.GetFamilySymbolIds();
ElementId familySymbolId = familySymbolIds.FirstOrDefault();
fs = m_curDoc.GetElement(familySymbolId) as FamilySymbol;
}
if (!fs.IsActive)
{
fs.Activate();
}
// c. 柱插入点
XYZ familyInsertPt = new XYZ(0,0,0);
Level level = m_curDoc.ActiveView.GenLevel;
// d. 生成柱子
FamilyInstance fInst = m_curDoc.Create.NewFamilyInstance(familyInsertPt, fs, level, Autodesk.Revit.DB.Structure.StructuralType.NonStructural);
// 添加族类型 / 族符号
FamilySymbol curFamilySymbol = m_curDoc.FindFamilySymbol(familySymbolName);
if (curFamilySymbol == null)
{
fInst.Symbol = fInst.Symbol.Duplicate(familySymbolName) as FamilySymbol; // 如果不存在复制出来一份
}
else
{
fInst.Symbol = curFamilySymbol; // 给族实例添加族符号
}