管道U形翻弯

    继上次探讨了电缆桥架快速翻弯后,末尾提到了管道翻U形弯,这种场景主要出现在管道经过局部高度较高的结构梁和大横截面积风管时使用。经过测试后,这一功能也得以实现。

    管道翻U形弯避让不仅要考虑机电专业之间的协同(如管道避让管道,电缆桥架,风管),还要考虑机电与土建专业的协同(如管道避让梁)。

管道U形翻弯插图

    某项目喷淋管道避让结构梁

主要思路是:获取到需要翻弯的管道和与之冲突的管道,电缆桥架,风管,结构梁。将管道在与之冲突的图元的交点进行偏移m后进行拆分成A,B,C三段,将有冲突的管道B向上或向下偏移n,再依据拆分点做出两段立管D和E,最后在A,D,B,E,C之间生成弯头。

管道U形翻弯插图1

先是选择图元和与之冲突的图元,第一个要选择的图元是当前项目的图元,第二个要选择的则可能是当前项目图元也可能是连接项目图元通过下面的一段脚本可以实现:

import clr
clr.AddReference('RevitAPIUI')from Autodesk.Revit.UI import *from Autodesk.Revit.UI.Selection import *
clr.AddReference('RevitAPI')from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')import RevitServicesfrom RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocumentuidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocumentTaskDialog.Show("提示","请先选择需翻弯图元,再选择与之碰撞图元")ele_ref = uidoc.Selection.PickObjects(ObjectType.Element)eles = []col_eles = []link_eles = []for i in ele_ref:  ele = doc.GetElement(i)  eles.append(ele)if IN[1]==False:  col_ele_ref = uidoc.Selection.PickObjects(ObjectType.Element)  for j in col_ele_ref:    col_ele = doc.GetElement(j)    col_eles.append(col_ele)  OUT = eles,col_eleselse:  link_ele_ref = uidoc.Selection.PickObjects(ObjectType.LinkedElement)  for k in link_ele_ref:    re_link_ins = doc.GetElement(k)    doc_link = re_link_ins.GetLinkDocument()    link_ele = doc_link.GetElement(k.LinkedElementId)    link_eles.append(link_ele)  OUT = eles,link_eles

管道U形翻弯插图2

获得管道Location(Line)与其碰撞图元Geometry(Solid)的交集(Line)

管道U形翻弯插图3

取上步得到的Line的起始点,进行偏移后,作为管道的拆分点:

管道U形翻弯插图4

使用DynaTools节点包中的Tools.SplitPipeByPoints进行管道拆分,之前管道等距拆分中也有用到过:

管道U形翻弯插图5

通过判断相交找到管道B,并对之进行上下偏移:

管道U形翻弯插图6

其余生成两段立管,管道之间连接生成弯头,与之前方法相同。

运行效果:

欢迎阅读,分享,交流,批评指正。

如转载请注明出处,否则追究法律责任(说说而已,全靠自觉)。

管道U形翻弯插图7

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站
普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress