Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Загрузить стандартную библиотеку Python и библиотеку DesignScript
- import sys
- import clr
- clr.AddReference('ProtoGeometry')
- from Autodesk.DesignScript.Geometry import *
- # Для использования транзакций и работе с документом (doc)
- clr.AddReference("RevitServices") # RevitServices.dll лежит здесь C:\Program Files\Dynamo\Dynamo Revit\1.3\Revit_2017
- import RevitServices
- from RevitServices.Persistence import DocumentManager
- from RevitServices.Transactions import TransactionManager
- doc = DocumentManager.Instance.CurrentDBDocument
- uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
- uiapp = DocumentManager.Instance.CurrentUIApplication
- app = uiapp.Application
- clr.AddReference('RevitAPI') # RevitAPI.dll лежит как правило здесь C:\Program Files\Autodesk\Revit 2017
- import Autodesk
- from Autodesk.Revit.DB import * # импорт всех элементов, если к примеру нужны только стены, то * заменяется на Wall
- # Упрощенные ноды для работы с объектами Revit
- clr.AddReference("RevitNodes") # RevitNodes.dll лежит здесь C:\Program Files\Dynamo\Dynamo Revit\1.3\Revit_2017
- import Revit
- clr.ImportExtensions(Revit.Elements)
- from Revit.Elements import *
- clr.ImportExtensions(Revit.GeometryConversion) # позволяет конвертировать величины
- clr.ImportExtensions(Revit.GeometryReferences)
- def mm_to_ft(mm):
- return 3.2808 * mm / 1000
- def ft_to_mm(ft):
- return ft * 304.8
- pipes = FilteredElementCollector(doc).\
- OfCategory(BuiltInCategory.OST_PipeCurves).\
- WhereElementIsNotElementType().ToElements()
- pipe_insulation_types = FilteredElementCollector(doc).\
- OfCategory(BuiltInCategory.OST_PipeInsulations).\
- WhereElementIsElementType()
- insulation_name = "Phenolschaum 25mm"
- for ins_tp in pipe_insulation_types:
- tp_name = ins_tp.get_Parameter(
- BuiltInParameter.SYMBOL_NAME_PARAM).AsString()
- if tp_name == insulation_name:
- insulation_Id = ins_tp.Id
- break
- TransactionManager.Instance.EnsureInTransaction(doc)
- for pipe in pipes:
- existing_insulation_name = pipe.get_Parameter(
- BuiltInParameter.RBS_REFERENCE_INSULATION_TYPE).AsString()
- pipe_diameter = ft_to_mm(pipe.Diameter)
- # create insulation only if there is no existing
- if not(existing_insulation_name):
- new_insulation = Plumbing.PipeInsulation.Create(
- doc,
- pipe.Id,
- insulation_Id,
- mm_to_ft(40))
- else:
- continue
- if pipe_diameter > 50:
- new_insulation.Thickness = mm_to_ft(32)
- else:
- new_insulation.Thickness = mm_to_ft(25)
- TransactionManager.Instance.TransactionTaskDone()
- # Назначьте вывод переменной OUT.
- OUT = pipes
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement