Plusieurs articles montrent comment créer un tuyau en C# :
http://pastebin.com/RZn1WnMW
http://thebuildingcoder.typepad.com/blog/2014/01/final-rolling-offset-using-pipecreate.html
Voici un code très court qui montre comment faire en python.
Il ne faut pas oublier d’ajouter la ligne suivante pour importer les fonctions liées aux tuyaux :
from Autodesk.Revit.DB.Plumbing import *
Pour créer un tube entre 0.0.0 et 10.0.0, le code est le suivant (on utilise le premier type de système et de tube qui nous tombe sous la main).
t = Transaction(doc, "Création d'un tuyau") t.Start() def pickobject(): from Autodesk.Revit.UI.Selection import ObjectType __window__.Hide() picked = uidoc.Selection.PickObject(ObjectType.Element) __window__.Show() __window__.Topmost = True return picked #Trouve un type de tuyau, un type de système et le niveau de la vue courante idtypetuyau = FilteredElementCollector(doc).OfClass(PipeType).FirstElement().Id idtypesystem = FilteredElementCollector(doc).OfClass(PipingSystemType).FirstElement().Id idniveau = doc.ActiveView.GenLevel.Id #Création du point de départ et d'arrivée du tuyau p1 = XYZ(0, 0, 0) p2 = XYZ(10, 0, 0) #Création du tuyau Pipe.Create(doc, idtypesystem, idtypetuyau, idniveau, p1, p2) t.Commit()
Bonjour,
J’ai essayé ces lignes de mon côté, et j’ai un problème avec la ligne :
__window__.Topmost = True
Mon problème est le suivant : voici le code complet que j’utilise :
def Test(self) :
__window__.Hide()
sel = __revit__.ActiveUIDocument.Selection
pickedRef = sel.PickObject(ObjectType.Element, « Please select a group »);
__window__.Show()
__window__.Topmost = True
return pickedRef
J’ai le message d’erreur suivant : « Syntax error : ‘return’ outside function ».
Si je commente l’avant dernière ligne (donc avec Topmost = true), je n’ai plus de message d’erreur. Par contre, je m’attendrais à avoir une fenêtre qui s’affiche avec « Please select a group », mais ce n’est pas le cas. Je peux juste sélectionner un élement, sans voir ce message. Cela est-il lié à la ligne « __window__.Topmost = True » ?
Si oui, comment régler le problème ?
Merci !
Bonjour,
Aucune fenêtre n’est censée apparaître avec la méthode PickObject, le message apparait en bas à gauche dans la fenêtre de Revit comme pour les commandes standards de Revit.
Il ne faut pas mettre « self » dans le contexte présenté.
Voici un code qui fonctionne :
def pickobject():
from Autodesk.Revit.UI.Selection import ObjectType
__window__.Hide()
picked = uidoc.Selection.PickObject(ObjectType.Element, "Sélectionnez un objet")
__window__.Show()
__window__.Topmost = True
return picked
Ais-je bien répondu à la question ?
Salut,
Oui c’est parfait, j’ai aussi répondu sur Stackoverflow 😉
pour mon problème avec la ligne Topmost, en fait l’indentation était la même sauf que pour cette ligne, il y avait un tab et plusieurs espaces devant, au lieu de deux tabs.. Je savais que Python était sensible à l’indentation, mais je ne savais pas qu’il faisait aussi la différence entre « tabs » et « espaces ». Maintenant je sais 😉
Merci !
Arnaud