Revit二次开发——创建楼板(第十二期)

2022-04-21 12:14:32 浏览数 (1)

不知道你们有多少人和小编一样天天加班4-5小时还走不了的加班狗。。。。。。最主要是。。。。。。。


好了,言归正传,进入我们这期的主题——利用Revit二次开发如何创建楼板

创建楼板的第一种方法:NewFloor(CurveArray profile, bool structural)这个方法比较简单就不说了,我们来说第二种方法:NewFloor(CurveArray profile, floorType, level, bool structural)和前几期类似,我们需要去把这四个条件集齐这样就可以创建出我们想要的楼板了:

1.CurveArray profile。这是曲线的一个组合,和墙的集合有所不同要用Append来添加而不是add了,具体如下:

代码语言:javascript复制
             CurveArray cu = new CurveArray();
            cu.Append(Line.CreateBound(new XYZ(0, 0, 0), new XYZ(100, 0, 0)));
            cu.Append(Line.CreateBound(new XYZ(100, 0, 0), new XYZ(0, 100,0)));
            cu.Append(Line.CreateBound(new XYZ(0, 100, 0), new XYZ(0, 0, 0)));

2.floorType。我们需要创建楼板的类型:

代码语言:javascript复制
 if (wa.GetParameters("默认的厚度")[0].AsValueString()=="225")//找到板厚为225的板
                {
                    fl = wa;
   }

3.level。要创建楼板所在的标高,和墙一样小编在这就不重复了。

4. bool structural。是否是结构,这回我们选个true,也和墙类似小伙伴可以去看前面几期哦。


我们来组合比较一下和创建墙的方法不同

(1)在于创建墙时我们需要的是墙类型和标高的ID而楼板则要的不是ID而是类型,本质上是一样的;

(2)创建轴线、标高、墙create一下就好而板则需要doc.create。

下边上代码:

代码语言:javascript复制
 FilteredElementCollector fil = new FilteredElementCollector(doc);
            fil.OfClass(typeof(Level));
            FilteredElementCollector fill = new FilteredElementCollector(doc);
            fill.OfClass(typeof(FloorType));
            FloorType fl = null;
            Level le= null;
            foreach (FloorType wa in fill)//查找板的类型
            {
                if (wa.GetParameters("默认的厚度")[0].AsValueString() == "225")//找到板厚为225的板
                {
                    fl= wa;
                }
            }
            CurveArray cu = new CurveArray();
            cu.Append(Line.CreateBound(new XYZ(0, 0, 0), new XYZ(100, 0, 0)));//线条
            cu.Append(Line.CreateBound(new XYZ(100, 0, 0), new XYZ(0, 100, 0)));
            cu.Append(Line.CreateBound(new XYZ(0, 100, 0), new XYZ(0, 0, 0)));
            foreach (Level ll in fil)//找标高
            {
                if (ll.Name.Contains("一层"))//找到一层标高
                {
                   le = ll;
                }
            }
            Floor fll = doc.Create.NewFloor(cu, fl, le, true);

效果:

看到我们写true后结构和启用分析模型就会被勾选(当然一般情况我们是false,因为分析模型会使得模型比较卡)

0 人点赞