Revit 二次开发之“在两个机械设备之间创建风管”

在项目浏览器中,族->机械设备->M_VAV机组->尺寸 2 - 150mm 入口
创建一个族实例,再添加一个弯头,选中这两个设备。
// 在两个机械设备之间添加风管
public  Duct CreateDuctBetweenConnectors(UIDocument uiDocument)
{
    Connector connector1 
=   null , connector2  =   null ;
    ConnectorSetIterator csi 
=   null ;
    ElementSet selection 
=  uiDocument.Selection.Elements;
    
foreach  (Element e  in  selection)
    {
        
if  (e  is  FamilyInstance)
        {
            FamilyInstance fi 
=  e  as  FamilyInstance;
            Family family 
=  fi.Symbol.Family;
            
if  (family.FamilyCategory.Name  ==   " 机械设备 " )
            {
                csi 
=  fi.MEPModel.ConnectorManager.Connectors.ForwardIterator();
                
while  (csi.MoveNext())
                {
                    Connector conn 
=  csi.Current  as  Connector;
                    
// 找到出风口且是送风系统
                     if  (conn.Direction  ==  FlowDirectionType.Out  &&  conn.DuctSystemType  ==  DuctSystemType.SupplyAir)
                    {
                        connector1 
=  conn;
                        
break ;
                    }
                }
            }
        }
    }
    
foreach  (Element e  in  selection)
    {
        
if  (e  is  FamilyInstance)
        {
            FamilyInstance fi 
=  e  as  FamilyInstance;
            Family family 
=  fi.Symbol.Family;
            
if  (family.FamilyCategory.Name  !=   " 机械设备 " )
            {
                csi 
=  fi.MEPModel.ConnectorManager.Connectors.ForwardIterator();
                
while  (csi.MoveNext())
                {
                    
if  ( null   ==  connector2)
                    {
                        Connector conn 
=  csi.Current  as  Connector;
                        
// 判断是不是在一条平行线上
                         if  (Math.Abs(conn.Origin.Y  -  connector1.Origin.Y)  <   0.001 )
                        {
                            connector2 
=  conn;
                            
break ;
                        }
                    }
                }
            }
        }
    }
    Duct duct 
=   null ;
    
if  ( null   !=  connector1  &&   null   !=  connector2)
    {
        FilteredElementCollector collector 
=   new  FilteredElementCollector(uiDocument.Document);
        collector.OfClass(
typeof (DuctType));
        
// 随便找个风管类型,矩形风管,半径弯头/接头
        var query  =  from element  in  collector
                    
where  element.Name.Contains( " 弯头 " ==   true
                    select element;
        DuctType ductType 
=  collector.Cast < DuctType > ().First < DuctType > ();
        
if  ( null   !=  ductType)
        {
            duct 
=  uiDocument.Document.Create.NewDuct(connector1, connector2, ductType);
        }
    }
    
return  duct;
}
from http://revit.5d6d.com/thread-857-1-4.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值