Dernière étape pour notre 1er exemple de script HelloWorld, nous allons maintenant voir comment personnaliser le rendu de notre objet.
1) Script Interface
De retour dans notre palette, je vais tout d’abord créer un chapitre pour dissocier les contrôles géométriques de ceux dédiés au rendu :
<Parameter>
<Name>GeometryExpander</Name>
<Text>Géométrie</Text>
<ValueType>Expander</ValueType>
</Parameter>
A l’intérieur de ce dernier, je place ma précédente variable pour la longueur de la ligne, j’obtiens alors :
<Parameter>
<Name>GeometryExpander</Name>
<Text>Géométrie</Text>
<ValueType>Expander</ValueType>
<Parameter>
<Name>LineLength</Name>
<Text>Longueur</Text>
<Value>1000.0</Value>
<ValueType>Length</ValueType>
</Parameter>
</Parameter>
Voici le rendu dans Allplan :
Je peux créer maintenant un nouvel Expander pour le rendu :
<Parameter>
<Name>FormatExpander</Name>
<Text>Format</Text>
<ValueType>Expander</ValueType>
</Parameter>
Avant d’intégrer mes paramètres de rendu, je vais partir sur les hypothèses suivantes :
- soit l’utilisateur conserve les paramètres actifs dans Allplan ;
- soit il les personnalise.
Paramètres courants
Choix par défaut, je vais tout simplement créer une case à cocher :
<Parameter>
<Name>UseGlobalProperties</Name>
<Text>Utiliser les paramètres courants</Text>
<Value>True</Value>
<ValueType>CheckBox</ValueType>
</Parameter>
A noter : la valeur True indique que la case est cochée au lancement du PythonPart.
Paramètres personnalisés
Dans ce scénario, l’utilisateur pourra choisir :
- l’épaisseur du trait ;
- le type de trait ;
- la couleur ;
- le layer ;
- …
Allplan nous permet de charger tous ces paramètres en une fois avec le code ci-dessous :
<Parameter>
<Name>CommonProperties</Name>
<Text></Text>
<Value></Value>
<ValueType>CommonProperties</ValueType>
</Parameter>
De retour sur Allplan , nous avons donc ceci :
Les différents champs fonctionnent mais nous avons un soucis d’affichage.
En effet, je souhaite masquer les options de personnalisation si la case des valeurs courantes est cochée.
Je vais donc rajouter l’option de visibilité suivante :
<Visible>UseGlobalProperties == False</Visible>
A noter : UseGlobalProperties est bien la valeur Name du champ à tester.
Voici le fichier complet :
2) Script Principal
Pour le script Python, je vais directement aller dans la fonction create_element.
Je complète alors les propriétés de rendu en remplaçant :
com_prop = AllplanBaseElements.CommonProperties()
com_prop.GetGlobalProperties()
par :
if build_ele.UseGlobalProperties.value:
com_prop = BaseElements.CommonProperties()
com_prop.GetGlobalProperties()
else:
com_prop = build_ele.CommonProperties.value
On remarque que si la condition de la case à cocher est vérifiée, on reprend les paramètres globaux, sinon on va récupérer les valeurs définies via la palette.
Voici le fichier complet :
Voici notre PythonPart :
0 commentaires