最近,在项目上一直在做机房装修的模型,这个项目的弱电小间、UPS机房、主信息机房、IT实验室等大小机房合计100余个。经过几个机房静电地板的排布也逐渐找到了其中排布规律,使用Dynamo来快速进行静电地板的排布。

(某项目机房地板排布)

        机房地板的排布主要考虑机柜的布置、入户门的位置、精密空调,配电柜等设备位置、结构柱位置等因素来确定起排点,有了起排点再根据地板模数即可进行地板排布。地板排布确定后,墙面,顶面的排布也随之确定。那么来看下在Dynamo中如何实现吧:

选择X,Y方向起排线,将其向两端延伸:

选择楼板表面surface,通过其BoundingBox的最大点和最小点的X,Y值之差来计算房间的长度和宽度,长度和宽度除以地板边长600取商作为X,Y方向起排线阵列的个数:

分别将X,Y方向起排线向X,Y正方向复制与选择的面做交集来判断起排线复制的方向:

复制出网格线,并用这些网格线去拆分选择的surface,用到的是K神Chynamo节点包中的Surface.SplitByCurves节点:

通过拆分得到Sueface的边界线生成楼板:

为避免Dynamo本次运行覆盖上次运行结果的机制,将此部分生成楼板的节点调用API重写:

import clr
clr.AddReference("RevitAPI")import Autodeskfrom Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")import Revitclr.ImportExtensions(Revit.Elements)clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")import RevitServicesfrom RevitServices.Persistence import DocumentManagerfrom RevitServices.Transactions import TransactionManagerdoc = DocumentManager.Instance.CurrentDBDocumentfloor_type = UnwrapElement(IN[1])level = UnwrapElement(IN[2])
floors = []TransactionManager.Instance.EnsureInTransaction(doc)for i in IN[0]:  cur = CurveArray()  for j in i:    cur.Append(j.ToRevitType())  floor = doc.Create.NewFloor(cur,floor_type,level,False)  floors.append(floor.ToDSType(True))TransactionManager.Instance.TransactionTaskDone()OUT =floors 

    这部分要非常感谢  九哥BIMer  的帮助,一眼就看出我之前将第23行代码    cur = CurveArray()放在第一个for循环之外,导致程序报错的问题。

最后做一下可视化展示,通过计算面积,将整块板填充为绿色,将需要裁剪的板填充为红色:

机房常见布局:

运行效果:

0

评论0

请先
中建钢筋精益管理实施指南(2023年,98页)
中建钢筋精益管理实施指南(2023年,98页)
1分钟前 有人购买 去瞅瞅看

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站