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 longueur fixe.

1) Script Interface

Je me place dans le dossier Bibliothèque d’Allplan (par défaut localisé ici C:\Data\Allplan\2023\Std\Library\PythonParts) et je crée un nouveau fichier :

HelloWorld.pyp

Comme vu précédemment, les fichiers interface sont écrits en XML.

Ils commencent par l’information suivante :

<?xml version= »1.0″ encoding= »utf-8″?>

Ce prologue indique la version du langage XML utilisé ainsi que le codage des caractères dans le document.

Vient ensuite la balise générale Element dans laquelle nous indiquons les informations du script principal :

<Element>

<Script>
<Name>APIHub\hello_world.py</Name>
<Title>HelloWorld</Title>
<Version>1.0</Version>
</Script>

</Element>

Nous trouvons d’abord le chemin du fichier Python, le titre affiché dans Allplan et la version du script.

Voici le fichier complet :

2) Script Principal

Toujours dans le dossier STD, je crée maintenant un nouveau fichier dans le répertoire PythonPartsScripts que je nomme :

hello_world.py

On commence par importer les différents modules dont nous allons avoir besoin :

import NemAll_Python_BaseElements as BaseElements
import NemAll_Python_BasisElements as BasisElements
import NemAll_Python_Geometry as Geometry
import NemAll_Python_IFW_ElementAdapter as ElementAdapter

 

from BuildingElement import BuildingElement
from CreateElementResult import CreateElementResult
from PythonPartUtil import PythonPartUtil

A noter : la liste complète des modules est disponible ici.

Les scripts ont besoin d’au moins 2 fonctions :

  • check_allplan_version

Cette fonction est là pour s’assurer de la bonne exécution du script dans votre version d’Allplan (par défaut toutes les versions sont acceptées) :

def check_allplan_version(build_ele, version):

 

# Support all versions
return True

  • create_element

Là nous lançons la création des objets :

def create_element(build_ele, doc):

 

model_ele_list = []

pyp_util = PythonPartUtil()

 

 

return CreateElementResult(model_ele_list)

A noter : d’une manière générale, je pars sur l’hypothèse que les objets que nous allons étudier restent sous leur forme paramétrique PythonPart ; je commence par initialiser ma liste des objets à créer puis j’instancie ma classe PythonPartUtil.

Je questionne Allplan afin de récupérer les valeurs courantes (layer, plume, couleur, etc…) :

# Define common properties
com_prop = BaseElements.CommonProperties()
com_prop.GetGlobalProperties()

Voici ma ligne que l’on définit par son point d’origine et d’arrivée :

# Create 2D line
line = Geometry.Line2D(0, 0, 1000, 0)

A noter : les 2 premiers chiffres représentent les coordonnées de départ (0, 0) et ensuite ceux finaux (1000, 0). Nous formons ainsi une ligne horizontale de 1000mm de longueur.

J’ajoute cette ligne à ma vue :

# Add line to 2d view
pyp_util.add_pythonpart_view_2d(BasisElements.ModelElement2D(com_prop, line))

Ainsi j’applique des propriétés graphiques (com_prop) à mon objet (line) et je place le tout dans un environnement 2D (add_pythonpart_view_2d).

A noter : Allplan nous offre le choix sur la visibilité de nos objets => en 2D (add_pythonpart_view_2d), en 3D  (add_pythonpart_view_3d) ou bien les deux (add_pythonpart_view_2d3d).

Dernière étape, je crée mon PythonPart :

# Create the PythonPart
model_ele_list = pyp_util.create_pythonpart(build_ele)

Voici le fichier complet :

Notre 1er script est achevé, Allplan génère une ligne avec la bonne longueur et les paramètres courants.

Nous verrons dans le prochain article comment ajouter une poignée pour personnaliser la longueur.

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 V3.0

Dernière étape pour notre 1er exemple de script HelloWorld, nous allons maintenant voir comment personnaliser le rendu de notre objet.1) Script InterfaceDe retour dans notre palette, je vais tout...

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...

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...