Revit二次开发、创建风管、创建柱子、过滤系统类型、过滤风管类型、加载族文件、给族实例添加族类型

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; // 给族实例添加族符号
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渣渣-二货

您的认可是我最快乐的事情,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值