一、节点包方法
如下图所示,其中Pipe.ByLines为MEPover软件包的节点,这是一个功能很强大的软件包,如何下载软件包请参考Dynamo相关下载教程分享!(附软件包和Revit使用插件Revit Lookup下载教程)
二、python script方法
直接上代码!!!
##############################################
# 加载 Python Standard 和 DesignScript 库(这部分可以无脑复制粘贴,不用深入理解)
import clr
import sys
clr.AddReference('ProtoGeometry')
clr.AddReference('RevitAPI')
from Autodesk.DesignScript.Geometry import *
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Mechanical import *
clr.AddReference("RevitNodes")
clr.AddReference('RevitServices')
import RevitServices
import Revit
from Autodesk.DesignScript.Geometry import *
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
import Autodesk
from Autodesk.Revit.DB.Document import GetElement
from Autodesk.Revit.DB.Element import GetTypeId
from Autodesk.Revit.DB.Plumbing import *
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)
##############################################
# 开启文档
doc = DocumentManager.Instance.CurrentDBDocument
# 读取所有标高,选用标高1
levels = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements()
level = UnwrapElement(levels[0])
# 读取水管类型,选用第一种
pipeType = FilteredElementCollector(doc).OfClass(PipeType).ToElements()
pipetype = UnwrapElement(pipeType[0])
#读取水管系统类型,选用第一种
pipingSystem = FilteredElementCollector(doc).OfClass(PipingSystemType).ToElements()
pipesystem = UnwrapElement(pipingSystem[0])
# 开启任务
TransactionManager.Instance.EnsureInTransaction(doc)
# 创建两个坐标点A,B
x1 = y1 = z1 = 200
x2 = y2 = z2 = 400
pointA = Autodesk.DesignScript.Geometry.Point.ByCoordinates(200,200,200)
pointB = Autodesk.DesignScript.Geometry.Point.ByCoordinates(400,400,400)
# 通过A,B点创建水管
pipe = Autodesk.Revit.DB.Plumbing.Pipe.Create(doc,pipesystem.Id,pipetype.Id,level.Id,pointA.ToRevitType(),pointB.ToRevitType())
# 结束任务
TransactionManager.Instance.TransactionTaskDone()
OUT = pipe
希望我的经验分享能帮到您,如果觉得不错可以点赞多多支持,谢谢您的观看!!!