Hello,
Can someone help me with this issue?
I have a script and in that script I close my transaction.
In a next python script I open de transaction again and get a parameter that I set in the first script.
But he don’t use the right values, is there something wrong with my transaction?
When I use the dynamo node Tranasction.End the script works fine… but I try to understand what I do wrong.
Input = grouped list:
import clr #.NET Laden
import sys #sys is de fundamentele Python bibliotheek
#de standaard IronPython-bibliotheken
#sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib') #Imports the
#standaard IronPython-bibliotheken, die alles dekken, van servers en
#encryptie tot reguliere expressies.
import System #The System namespace in de hoofdmap .NET
from System import Array #.NET class voor het verwerken van array-informatie
import System.Collections.Generic as MGen #Module kan nu benaderd worden met MGen.xxxx
#from System.Collections.Generic import * #Hiermee kunt u generieke afhandelen. Revit's API
#soms wil hard-getypte 'generieke' lijsten, genaamd ILists. Als je niet nodig hebt
#deze kunt u deze regel verwijderen.
clr.AddReference('ProtoGeometry') #Een Dynamo-bibliotheek voor zijn proxygeometrie
#classes. Je hebt dit alleen nodig als je interactie hebt met geometrie.
import Autodesk.DesignScript.Geometry as AGeo #Module kan worden opgeroepen a=met AGeo.xxxx
#from Autodesk.DesignScript.Geometry import * #Laadt alles in Dynamo's
#geometriebibliotheek
clr.AddReference("RevitNodes") #Dynamo's nodes voor Revit
import Revit #Laad in de Revit-namespaces in RevitNodes
clr.ImportExtensions(Revit.Elements) #Meer laden van Dynamo's Revit-bibliotheken
clr.ImportExtensions(Revit.GeometryConversion) #Meer laden van Dynamo's
#Revit-bibliotheken. Je hebt dit alleen nodig als je interactie hebt met geometrie.
clr.AddReference("RevitServices") #Dynamo's classes voor het omgaan met Revit-documenten
import RevitServices
from RevitServices.Persistence import DocumentManager #Een interne Dynamo class
#dat het document bijhoudt waaraan Dynamo momenteel is gekoppeld
from RevitServices.Transactions import TransactionManager #Een Dynamo class voor
#transacties openen en sluiten om de database van het Revit-document te wijzigen
clr.AddReference("RevitAPI") #Verwijzing naar Revit's API DLL's toevoegen
clr.AddReference("RevitAPIUI") #Verwijzing naar Revit's APIUI DLL's toevoegen
import Autodesk #Loads the Autodesk namespace
import Autodesk.Revit.DB as RDB #Loading Revit's API UI classes module kan nu worden aangeroepen met RDB.xxxx
#from Autodesk.Revit.DB import * #Loading Revit's API UI classes
import Autodesk.Revit.UI as RUI # Loading Revit's API UI classes als RUI.xxxx
#from Autodesk.Revit.UI import * #Loading Revit's API UI classes
doc = DocumentManager.Instance.CurrentDBDocument #Dit is het actieve Revit document
uiapp = DocumentManager.Instance.CurrentUIApplication #Een handle instellen voor het actieve Revit UI-document
app = uiapp.Application #Een handle instellen op de momenteel geopende instantie van de Revit-toepassing
uidoc = uiapp.ActiveUIDocument #Een handle instellen op de momenteel geopende instantie van de Revit UI-toepassing
def GetName(ele):
elename = None
try:
elename = ele.Name
except:
elename = RDB.Element.Name.__get__(ele)
return elename
# einde code omrekenen revit feet naar huidig ingestelde document units
# Hieronder kan je dan gaan programmeren
# Gebruik boiler template
elementen = UnwrapElement(IN[0])
#Pipe fittingen ophalen
pipe_fitting = []
for pf in elementen:
for p in pf:
pf_name = GetName(p)
if pf_name.Contains("Bochtstraal"):
pipe_fitting.append(p)
#geconnecte pipe ophalen
refs = []
for x in pipe_fitting:
connset = x.MEPModel.ConnectorManager.Connectors
conn_pipes = []
for c in connset:
if c.IsConnected:
for lc in c.AllRefs:
conn_pipes.append(lc.Owner)
refs.append(conn_pipes)
#section van geconnecte buis ophalen
p_section = []
for r in refs:
p_section.append([]) #lege lijst maken voor behoudt structuur
for i in r:
section = i.get_Parameter(RDB.BuiltInParameter.RBS_SECTION).AsValueString()
p_section[-1].append(section) #-1 zorgt ervoor dat lijst in structuur blijft.
#Unique items eruit halen
listOfList = [p_section]
ukeys1 = [item[0] for item in p_section]
ukeys2 = []
for u in ukeys1:
ukeys2.append(int(u))
#Start transaction
TransactionManager.Instance.EnsureInTransaction(doc)
#toevoegen van sections aan bochten
uk = 0
for pf in pipe_fitting:
pf.LookupParameter("Section").Set(ukeys2[uk])
uk += 1
TransactionManager.Instance.TransactionTaskDone()
OUT = elementen