PDA

View Full Version : 2015 Dynamo - Appliquer automatiquement un paramètre d'un volume à ses sols de volumes



eric.lehy-meira695599
2015-04-23, 02:08 PM
Bonjour à tous,
Dans Revit, j'ai créé un paramètre partagé que j'ai appliqué aux volumes et aux sols de volumes.
Je voudrais que Dynamo:
1- récupère le paramètre que je renseigne dans mon volume
2- le transfert automatiquement vers le paramètre de tous les sols du volume en question.

J'ai réussi à faire la partie 1 mais la partie 2 ne me satisfait pas car elle diffuse le paramètre à l'ensemble des sols de volumes du fichier!

Je n'arrive pas à trouver comment ne selectionner que les sols du volume en question et pas ceux des autres volumes du fichier.

Merci d'avance
Eric

jbenoit44
2015-05-23, 06:33 AM
il est nécessaire de trouver un lien entre le sol de volume et le volume. C'est une fonction qui existe dans l'API mais pas dans Dynamo "de base".

http://forums.augi.com/attachment.php?attachmentid=99674&stc=1

voici le code du bloc Python.

#python nodes in dynamo 0.7
#proposed by Julien Benoit @jbenoit44
#http://aecuandme.wordpress.com/
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
# Import geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from System.Collections.Generic import *
# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
#The inputs to this node will be stored as a list in the IN variable.

MLD=[]
for i in IN[0]:
MLD.append(UnwrapElement(i))


Mass=[]

for i in MLD:
Mass.append(doc.GetElement(i.OwningMassId).ToDSType(False))


#Assign your output to the OUT variable
OUT = Mass

bon courage