I didn’t want to use Dynamo as I really prefer line code programming to visual programming. But in fact Dynamo :
- has a very active community
- is open source too
- use python as main scripting language
- is great for debugging python script as you don’t need to include every single line in a try/except block
- is much user friendly than as it is now included with Revit 2017.1 and by the way this new Dynamo Player makes it usable by anyone
- scare many people less than line code so they can easily modify to adapt it to their objectives
Here is the Dynamo image. It uses Clockwork package :
File is available here
Here is the python code block :
import clr clr.AddReference("RevitAPI") from Autodesk.Revit.DB import * from Autodesk.Revit.DB.Plumbing import PipeSegment clr.AddReference("RevitServices") from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager doc = DocumentManager.Instance.CurrentDBDocument #Les entrées effectuées dans ce noeud sont stockées sous forme de liste dans les variables IN. dataEnteringNode = IN elem = doc.GetElement(IN[0]) TransactionManager.Instance.EnsureInTransaction(doc) for dn, di, de in zip(IN[1], IN[2], IN[3]): DN = UnitUtils.ConvertToInternalUnits(dn , DisplayUnitType.DUT_MILLIMETERS) Di = UnitUtils.ConvertToInternalUnits(di , DisplayUnitType.DUT_MILLIMETERS) De = UnitUtils.ConvertToInternalUnits(de , DisplayUnitType.DUT_MILLIMETERS) try: elem.AddSize(MEPSize(DN,Di,De,True,True)) except: elem.RemoveSize(DN) elem.AddSize(MEPSize(DN,Di,De,True,True)) #Affectez la sortie à la variable OUT. OUT = IN
Enjoy