Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=255
Archives de catégorie : Script
[Revit API] Exemple simple d’interface non modale (External Event Handler) dans pyRevit
Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=247
[Revit] Supprimer les paramètres de projets y compris ceux cachés
Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=201
[Revit] Changer le niveau de référence d’un raccord sans qu’il se déplace
Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=191
[Revit] Copier un paramètre partagé d’une pièce dans un fichier lié vers son espace associé localement
Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=177
[Revit] Ajouter des fluides avec CoolProp
Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=155
[Revit] Exemple d’ISelectionFilter en python
Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=116
[Revit] Distribuer ses scripts et créer un installeur
Grâce au livre électronique de Daren Thomas et à quelques recherches sur internet j’ai pu créer un installeur complet pour donner facilement des outils à des personnes intéressés mais qui n’ont jamais produit une ligne de code et/ou sans que Revit Python Shell (RPS) ait besoin d’être installé ! Voici les étapes du processus :
1- Créer ses scripts pour RPS. Dans cet exemple, je me servirais de mes petits scripts qui n’ont rien d’exceptionnel, pourraient grandement être améliorés et dont je me sers pourtant quasiment tous les jours quand je travaille sur mes modèles Revit (cf. articles précédents).
2- Créer un fichier Rps Addins tel que décrit au chapitre « Deploying RpsAddins ». Ce fichier est un xml qui indique le nombre de boutons à créer (PushButton) et leur script associé (src), le nom du ruban dans lequel ils se trouveront (RibbonPanel). Le chemin d’accès au script est toujours relatif à l’emplacement du fichier RpsAddin :
<?xml version="1.0" encoding="utf-8" ?> <RpsAddin> <RibbonPanel text="PythonCVC.net"> <!-- the script is always searched relative to the location of the RpsAddin xml file --> <PushButton text="Renommer la vue" src="Sources\renommer_vues.py"/> <PushButton text="Supprimer système" src="Sources\supprimer_système.py"/> <PushButton text="Rotation axe X" src="Sources\rotation_element.py"/> <PushButton text="Supprimer famille" src="Sources\supprimer_famille.py"/> <PushButton text="Supprimer type" src="Sources\supprimer_type.py"/> </RibbonPanel> </RpsAddin>
3- Utiliser l’outil « Deploy RpsAddins » de RPS en pointant le fichier RpsAddins créé. Un message informe alors que que le déploiement est complété dans le dossier « Output_<Nom du xml> ».
4- Créer un fichier Revit .addin standard qui permet d’ajouter un addin à Revit. Le Champs <FullClassName> doit être le nom du fichier RpsAddins. Le chemin du champs <Assembly> est indiqué avec une variable « path » qui sera remplacer à l’installation par l’emplacement où l’utilisateur a choisi d’installer votre addin. Note importante : Ne copiez pas le champs <GUID> dans votre .addin, c’est un identifiant global unique (Global Unique Identifier) généré aléatoirement et comme son nom l’indique censé être unique. 2 addins avec le même GUID ne pourront pas être utilisés simultanément ou cela posera problème. Utilisez le générateur de GUID disponible dans Visual Studio, Inno Setup ou autre. Pour plus d’informations sur les champs disponibles/utiles (icônes etc…) consulter la documentation :
<?xml version="1.0" encoding="utf-8" standalone="no"?> <RevitAddIns> <AddIn Type="Application"> <Name>Outils pythoncvc.net</Name> <Assembly>path\pythoncvc.dll</Assembly> <AddInId>C12476B2-1BA6-4A44-8646-0A6619070956</AddInId> <FullClassName>pythoncvc</FullClassName> <VendorId>REGISTER_YOUR_VENDOR_ID</VendorId> <VendorDescription>Python CVC, pythoncvc.net</VendorDescription> <VisibilityMode>NotVisibleInFamily</VisibilityMode> <LongDescription> Cet addin regroupe les outils développés par pythoncvc.net, plus d'informations sur le site. </LongDescription> </AddIn> </RevitAddIns>
5- Créer un installeur exécutable (et dés-installeur). Ce point n’est pas encore couvert dans le livre, j’ai choisi « Inno Setup » qui est libre, gratuit et permet de réaliser facilement un installeur à l’aide d’un assistant. Pour plus de fonctionnalités, on peut modifier le script qui créé l’installeur, l’inconvénient est qu’il faut utiliser le langage Pascal (recherche google et stackoverflow sont nos amis !). L’assistant permet de générer la majorité du script, il suffit de lui renseigner le nom de l’application, version, fichiers à installer, dossier de destination par défaut, fichier de licence etc. A la fin, l’assistant vous demande si vous voulez lancez le script, dîtes non, il faut procéder à quelques modifications avant :
Le fichier .addin ne doit pas être installé au même endroit que le reste, il doit être installé (Vista/Windows 7) dans « %ProgramData%\Autodesk\Revit\Addins\2015\ » ou « %AppData%\Autodesk\Revit\Addins\2015\ » pour être lu par Revit. Il faut donc modifier le « DestDir » du fichier .addin en utilisant de préférence les variables environnement ({%ProgramData}).
Source: "C:\Program Files (x86)\pythoncvc.net\pythoncvc.addin"; DestDir: "{%ProgramData}\Autodesk\Revit\Addins\2015\"; Flags: ignoreversion
Grâce à un sujet sur stackoverflow et à la documentation d’InnoSetup, j’ai pu généré un code permettant de modifier le .addin à la fin de l’installation pour qu’il pointe vers le dossier d’installation choisi par l’utilisateur. Il cherche et remplace dans le .addin le mot « path » (cf. point 4) par le chemin choisi par l’utilisateur (constante {app}) :
[Code] procedure Update(); var C: AnsiString; CU: String; Path: String; begin LoadStringFromFile(ExpandConstant('{%ProgramData}\Autodesk\Revit\Addins\2015\pythoncvc.addin'), C); CU := C; Path := ExpandConstant('{app}') StringChangeEx(CU, 'path', Path, True); C := CU; SaveStringToFile(ExpandConstant('{%ProgramData}\Autodesk\Revit\Addins\2015\pythoncvc.addin'), C, False); end; function GetCustomSetupExitCode: Integer; begin Update; result := 0; end;
Démonstration vidéo :
Vous pouvez retrouver l’ensemble des fichiers (sources et produits) ici : https://github.com/Nahouhak/pythoncvc.net/tree/master/Cr%C3%A9er%20un%20installeur
En espérant que cela aidera d’autres personnes à distribuer leurs pythonneries.
[Revit] Comment utiliser des scripts Revit Python Shell
Article non traduit actuellement, demandez la ou essayer la version anglaise ici (outil de traduction disponible) : http://pythoncvc.net/?p=44
[Revit] Créer un tuyau d’un point A à un point B façon python
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()