在使用Revit绘制机电管线处理管线翻弯时经常要用到管线拆分图元命令(split),但BOB体育下载苹果下载 自带的这个拆分工具总是会自动生成管线的连接件,这并不是我们想要的,并且会因此而带来更多的操作步骤。

    为此我用Python写了一段脚本将原来打断-打断-框选-删除的操作变成打断一次即可。

主要思路是:选择图元上的点,将其投影在管线的LocationCurve上,作为打断点;对于管道和风管因API中提供了BreakCurve()可供使用,可直接调用此方法;对于桥架和线管由于无类似方法可调用,可曲线救国达到相同的效果:获取到管线LocationCurve的起始点,分别和投影的拆分点做两条直线line1和line2,将管线复制一个出来copy_element,将原element和copy_element的LocationCurve分别设置为line1和line2。

完整代码:

#  Revit管线打断#  By I am the oneimport clr
clr.AddReference('RevitAPI')from Autodesk.Revit.DB import *from Autodesk.Revit.DB.Plumbing import PlumbingUtilsfrom Autodesk.Revit.DB.Mechanical import MechanicalUtils
clr.AddReference('RevitAPIUI')from Autodesk.Revit.UI.Selection import * 
clr.AddReference('RevitNodes')import Revitclr.ImportExtensions(Revit.GeometryConversion)clr.ImportExtensions(Revit.Elements)
clr.AddReference('RevitServices')import RevitServicesfrom RevitServices.Persistence import DocumentManagerfrom RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocumentuidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
pt_ref = uidoc.Selection.PickObject(ObjectType.PointOnElement)
TransactionManager.Instance.EnsureInTransaction(doc)
ele = doc.GetElement(pt_ref)spl_pt = ele.Location.Curve.Project(pt_ref.GlobalPoint).XYZPointif ele.Category.Name == "管道" :    PlumbingUtils.BreakCurve(doc,ele.Id,spl_pt)elif ele.Category.Name == "风管" :    MechanicalUtils.BreakCurve(doc,ele.Id,spl_pt)elif ele.Category.Name == "电缆桥架" or ele.Category.Name == "线管":    cop_ele = ElementTransformUtils.CopyElement(doc,ele.Id,XYZ())    sta_pt = ele.Location.Curve.GetEndPoint(0)    end_pt = ele.Location.Curve.GetEndPoint(1)    line1 = Line.CreateBound(sta_pt,spl_pt)    line2 = Line.CreateBound(spl_pt,end_pt)    ele.Location.Curve = line1    doc.GetElement(cop_ele[0]).Location.Curve = line2
TransactionManager.Instance.TransactionTaskDone()
OUT = ele

r元akCurve

运行效果:

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

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

0

评论0

请先

社交账号快速登录

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