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

Soumettre un commentaire

Objects3D V2.0

Nouvelle étape dans la modélisation de notre PythonPart "Poteau en Béton Armé", regardons aujourd'hui comment configurer les ancrages de notre objet 3D. Par ancrage je pense tout particulièrement à...

Objects3D V1.0

Nouvelle série dans l'apprentissage des PythonParts, étudions la modélisation d'un objet 3D : un poteau en béton armé.1) Script InterfaceDans cet exemple nous allons mettre en place les premiers...

Objects2D V3.0

Dernière étape pour cet exemple de PythonParts, je vous propose de mettre en place une légende pour notre objet. Cette dernière devra reprendre les informations suivantes : le nom de mon objet ; le...

Objects2D V2.0

Dans le précédent article, nous avons vu comment préparer notre code en POO, voyons aujourd'hui comment en exploiter le potentiel avec ce nouvel exemple. En effet, nous allons compléter notre...

Objects2D V1.0

Nous allons commencer à construire des objets plus complexes sur Allplan, mais avant tout, un mot sur la Programmation Orientée Objet (POO)...1) Programmation Orientée ObjetLa Programmation Orientée...

HelloWorld V2.0

Dans l'article précédent, nous avons appris comment générer un objet (une ligne de longueur fixe) via l'API PythonParts. Aujourd'hui je vais vous montrer la mise en place de poignées pour notre...

HelloWorld V1.0

HelloWorld est par tradition écrit pour donner un exemple d'un langage de programmation. Nous ne ferons pas exception ici avec l'écriture de notre 1er script. Le but est simple, créer une ligne de...

Structure des PythonParts

Allplan est installé, votre IDE est prêt... parfait, voyons en détail le fonctionnement des PythonParts.1) Description des fichiersPour fonctionner, un PythonPart a besoin d'au moins 2 fichiers :...

Introduction

Dans cette série d'articles, nous allons étudier l'édition de scripts en langage de programmation Python pour le logiciel Allplan.Pour vous permettre de bien suivre ces tutoriels, je vais partir sur...