RevitAPI之创建房间方法的介绍【比目鱼原创】

=========【更多高级应用请关注公众号】========


===================================

创建Room的方法是Document.Create.NewRoom,它有很多重载,下面作简要介绍。

Room NewRoom(Phase phase):给定Phase,创建一个未放置的房间。


NewRooms2(Phase,int count):在给定的Phase上创建多个房间,count代表房间 的个数。


Room NewRoom(Level level,UV point):在给定标高上创建一个被放罝的房间,放 置点由UV参数指定。
•如果在该放置点有闭合回路(Plan Circuit),那么创建的房间会自动绑定该回路。 
•如果在该放置点没有房间边界可以绑定,会有警告框弹出:房间不在完全闭合的区

域中。


Room NewRoom(Room room,PlanCircuit Ccircuit):在给定的闭合回路放置房间。
 
•如果room为空,则创建一个房间。 
•如果room代表的房间没有被放置,首先检查该房间的Phase是不是和PlanCircuit一致。 一致的话则在制定的PlanCircuit放置该房间,不一致的话会有异常ArgumentException抛出。

 

Level level; // 此处省略获取Level的代码 
        Phase phase; //此处省略获取Phase的代码 
        void CreatRoom(Autodesk.Revit.DB.Document document)
        {
            var defaultView = new FilteredElementCollector(document)
   .WherePasses(new ElementClassFilter(typeof(View)))
   .Cast<View>()
   .Where(v => v.GenLevel != null && v.GenLevel.Id == level.Id)
   .FirstOrDefault();
            // 确保视图不为空 
            if (defaultView != null)
            {
                var defaultPhase = defaultView.get_Parameter(BuiltInParameter.VIEW_PHASE);
                if (defaultPhase != null && defaultPhase.AsElementId() == phase.Id)
                {
                    using (Transaction transaction = new Transaction(document))
                    {
                        transaction.Start("get_PlanTopology");
                        var circuits = document.get_PlanTopology(level, phase).Circuits;
                        transaction.Commit();
                        foreach (PlanCircuit planCircuit in circuits)
                        {
                            document.Create.NewRoom(null, planCircuit);
                        }
                    }
                }
            }
        }


NewRooms2(Level):给定标高,在所有可用的闭合区域创建房间,Phase为当前默认的 Phase。等同于调用 NewRooms2(Level,theDefaultPhase),其中 theDefaultPhase是当前默认的Phase。


NewRooms2(Level,Phase):给定的标高和项目阶段,在所有可用的闭合区域分别创建房间。


注意:Level的项目阶段(Level对应的默认的视图的项目阶段)必须和给定的Phase保持一致,否则就会有异常抛出


⑦其他一些和创建房间相关函数:ModelCurveArray NewRoomBoundaryLines 
(SketchPlane sketchPlane,CurveArray curves,View view)。给定—个草图视图,一个曲 线列表和一个平面视圈,创建一组房间边界曲线(ModelCurveAiray)。调用该方法(或多次 调用)形成一个闭合区域之后,取该区域的一个点,再调用NewRoom就可以创建房间。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值