Un nom qui ne vend pas de rêve, une interface plutôt austère et une documentation essentiellement anglophone. On peut comprendre que le GDL attire peu d'utilisateurs d'ARCHICAD et refroidisse ceux qui tentent de s'y mettre.
En pourtant, une fois surmontée l'appréhension et effectués les premiers tests, le GDL devient vite utile, nécessaire, voir addictif.
Le GDL, qu'est-ce que c'est ? – Présentation en quelques mots
Le GDL (Geometric Description Langage), est le langage de programmation propre à ARCHICAD. Mais il est aussi ce qui se cache derrière chaque icône de l'interface du logiciel que nous utilisons tous les jours. ARCHICAD ayant été inventé avant l'interface graphique et la souris, le GDL est en fait la base du logiciel, toujours accessible par le biais de la fenêtre d'édition d'objet.
Mis à jour à chaque nouvelle version, il comporte les commandes équivalentes à chaque fonctionnalité d'ARCHICAD. On y trouve donc des commandes pour créer des formes 3D, des formes 2D, du texte. Les accompagnent les commandes de déplacements linéaires, de rotation et de mise à l'échelle. Mais cela ne suffirait pas. Le programmeur GDL a aussi à sa disposition ce qui fait la puissance du GDL et tout son intérêt : des fonctions mathématiques et statistiques, des déclarations de condition et de boucles…
LE GDL, est-ce pour vous ?
Sans hésiter, la réponse est oui !!!
Que vous choisissiez de l’apprendre et de le pratiquer vous-même, ou de passer commande d’objets correspondant à vos besoins, tout utilisateur d’ARCHICAD peut avoir besoin du GDL.
Ne vous êtes-vous jamais dit « quel dommage que ce cas de figure n’ait pas été prévu » à propos d’un objet de la bibliothèque d’ARCHICAD ?
La solution se trouve certainement dans le GDL.
C’est pour cette raison que la société BIM Services a fait appel à moi dans un premier temps, et m’a ensuite embauché.
Ayant appris le GDL en autodidacte et y ayant découvert une véritable passion, je me suis rapidement trouvé face à deux difficultés :
- Peu de personnes avec qui échanger sur le sujet
- Difficulté à cerner les besoins en matière de création d’objets.
C’est pour cette raison que j’ai rejoint BIM Services et que ma mission est double :
- Former au GDL ceux d’entre vous qui aiment se débrouiller seuls et prendre le temps de murir un projet
- Développer pour vous les objets qui vous font défaut et faciliteront votre travail quotidien.
Le GDL, comment ça marche ? – Etude d’un cas pratique
Pour faire simple, ce qui tombe bien parce que le GDL n'est pas aussi compliqué qu'il en a l'air, on peut décomposer un objet GDL en 6 parties principales :
- Une liste de paramètres qui couvre la totalité des caractéristiques que l'on veut rendre réglables dans l'objet
- Un script principal pour stocker des calculs nécessaires aux autres scripts
- Un script 3D qui crée le volume de l'objet en fonction des réglages des paramètres de la liste évoquée juste avant
- Un script 2D qui contrôle l'affichage en plan de l'objet créé.
- Un script de paramètres pour les brider ou contrôler leur affichage
- Un script d’interface pour créer une fenêtre de réglage ergonomique et illustrée
Le principe du GDL est simple : remplacer des valeurs fixes par des valeurs réglables.
Prenons l’exemple d’un objet tout bête : un claustra.
Vous avez tous utilisé la fonction « Enregistrer sélection comme objet » pour créer un objet à partir d’éléments que vous avez modélisé dans ARCHICAD. Mais avez-vous déjà eu la curiosité d’ouvrir l’objet pour regarder son code ?
Voilà à quoi ça ressemble :
Ceci n’est qu’un extrait. Le script 3D de l’objet que vous voyez comporte 1206 lignes de code. Vous y remarquerez beaucoup de chiffres répartis sur 3 colonnes. Ce sont les coordonnées X et Y de tous les sommets de tous les éléments qui constituent la forme 3D de l’objet.
Le but du jeu de la programmation GDL est de remplacer autant que nécessaire ces coordonnées fixes par des valeurs variables que l’utilisateur pourra modifier.
La première étape est donc de lister les éléments que l’on veut rendre paramétrables et de créer les variables correspondantes pour chacun d’eux.
Ensuite, en se basant sur cette liste de paramètres, nous pouvons recréer les éléments constituant notre objet.
Une latte dont le script automatique était :
sprism_{4} materialAttribute_1, materialAttribute_1, materialAttribute_1, 7,
5, 0, 0, 1, 0 1, 0,
0, 0, 1, 0, 0, 0,
-0.1, 0, 15, materialAttribute_1,
0, 0, 15, materialAttribute_1,
0, 2, 15, materialAttribute_1,
-0.1, 2, 15, materialAttribute_1,
-0.1, 0, -1, materialAttribute_1
Devient :
"Latte horizontale" :
MATERIAL mat_lattes
BLOCK A-(2*cadre_larg), hori_prof, hori_larg
RETURN
Vous remarquerez que les chiffres ont disparu et ont été remplacés par les variables qui avaient été créées dans la liste de paramètres.
Sur le même modèle, les autres éléments de l’objet deviennent
"Montant horizontal" :
MATERIAL mat_cadre
BLOCK A, B, cadre_larg
RETURN
"Montant vertical" :
MATERIAL mat_cadre
BLOCK cadre_larg, B, ZZYZX-(2*cadre_larg)
RETURN
"Renfort vertical" :
MATERIAL mat_renforts
BLOCK vert_larg, vert_larg, ZZYZX-(2*cadre_larg)
RETURN
Maintenant que nous avons nos pièces détachées programmées, nous pouvons les assembler comme des légos en intercalant entre chaque appel de pièce (GOSUB) des commandes de déplacement (ADD) qui positionnent les pièces où nous le souhaitons.
Un détour par le script principal va nous permettre à ce stade de calculer le nombre de lattes nécessaires pour remplir l’ouverture de l’objet, et leur écartement exact pour qu’elles soient régulièrement réparties, quelques soient les dimensions externes que l’utilisateur aura choisies pour son objet.
Le nombres de lattes horizontales
hori_nb = INT((ZZYZX-(2*cadre_larg))/horiz_ecart)
Leur écartement précis pour une bonne répartition
ecar_reel = (ZZYZX-(2*cadre_larg)-(hori_nb*hori_larg))/(hori_nb+1)
Notez que les résultats de ses calculs sont « stockés » dans des variables créées directement dans le script (hori_nb et ecart_reel). Accessibles pour les scripts, elles sont absentes de la liste de paramètre et par conséquent non modifiables par l’utilisateur de l’objet final.
De retour dans le script 3D nous pouvons maintenant utiliser une fonction de boucle pour placer le bon nombre de lattes au bon écartement.
Et comme notre script ne contient pas de valeurs fixes, mais des variables, l’objet ne se déforme pas mais s’adapte aux valeurs qu’on lui donne…
Le GDL, à quoi ça peut servir ? – Quelques exemples
Le champ des possibles est quasiment infini et il y en a pour tous les niveaux.
- En 2D
- Des symboles de dessins
Simples symboles 2D compilés en un objet dont on peut choisir quelle partie afficher ou symboles complexes entièrement paramétrables - Des étiquettes personnalisées
- Des marques de zones
- Des symboles de dessins
- En 3D
- Des objets indépendants à placer dans le projet
- Des ouvertures de mur et de toit
- Des composants personnalisés de porte, de fenêtres, de mur rideau…
- Des éléments MEP
- Des accessoires de mur, de dalle, de toit ou de zones (accessoires intérieurs)
- …
Voici quelques exemples d’objets réalisés par mes soins.
Une locomotive en bois animée en GDL et rendu dans ARCHICAD :
Un accessoire de mur pour créer un bardage bois paramétrable :
Une chaudière MEP :
Une ouverture de mur créant plusieurs volets roulants en un seul élément :
Un bloc de pierre 3D affichant automatiquement ses dimensions pour les projet de restauration :
Un objet 2D calculant automatiquement les dimensions d’un gradin :
Une ferme traditionnelle complète entièrement paramétrable :
Une fenêtre à meneaux dans le style renaissance :
Commentaires
Merci pour les compliments !
Non, malheureusement l'objet bardage bois n'est pas encore assez aabouti pour être diffusé
Petite demande: est-ce que l'outil pour générer les bardages en façade bois est disponible gratuitement ou à la vente sur votre site? Je fais un projet avec un bardage comme celui là et il me serait d'une grande utilité :)
Merci encore pour votre travail!!!!
un petit "up" de ce post, c'est vraiment extra....cela tient à du langage machine et cela me rappelle les débuts de l'informatique et la programmation en langage Basic sur un Thomson MO5 (pour les connaisseurs)...mais à l'époque je ne suis pas aller plus loin que la programmation d'un casse-brique avec le guide de l'époque...lol
Bref le GDL , je devoir m'y mettre pour une recherche évolutive dans Archicad.
A+
Respect pour la loco, il y a longtemps que j'ai compris l'intérêt du GDL, mais c'est vrai que l'austérité de l'interface et certainement le temps qu'il faut consacrer de façon autodidactique on eu raison de moi.
J'ai appris beaucoup de chose de cette manière et ça oblige a aller au fond des choses pour être sur de les comprendre.
Peut-être un jour avec des tutos simples pour se familiariser et avec l'appui d'un spécialiste je m'y mettrais certainement.
Nota : C'est de façon quasi systématique que je me dit qu'il serait bien que cette option existe dans le paramétrage d'un objet, car lorsque j'intègre une menuiserie dans un mur je commence par chercher les caractéristiques de la vraie menuiserie qui sera mise en œuvre, alors autant pouvoir renseigner toutes ses caractéristiques dans la maquette.
Désolé de ne pas avoir répondu plus tôt mais je ne savais pas ce que j'avais le droit de dire ou non à propos des objets
Mais merci pour le compliment
Ca fait plaisir de te voir ici. Ca faisait longtemps…
Pour le bardage et la charpente ce ne sera pas pour ce noël-ci… ;)
Il y a des objets en préparation mais sur des éléments plus simples que vous devriez voir bientôt ici.
Bonnes fêtes à tous
Frédéric Fmr Deschamp
Pour la Noël on pourrait pas avoir le bardage ou la charpente GDL en cadeau ? Je sais j'ai passé l'age mais j'y crois encore.
Merci et nonnes fêtes à toutes et à tous.
Carrère
Vaste sujet faire intéragir un objet et des zones… Avec des automatismes de mises à jour en cas de modifications des zones… ce qui va à l'encontre du fonctionnement de l'affichage des plans
Si c'était facile et simple l'objet existerait déjà car le besoin est énorme.
Impossible je ne crois pas, la solution si elle existe ne sera pas dans une solution classique mais il est primordial que celle-ci soit fiable et juste sinon ça ne servirait à pas grand chose.
J'aimerais créer un objet 2D. L'objectif est de reprendre un symbole 2D existant qui permet d'afficher en plan un triangle (taille paramétrable) avec du texte à côté. Nous l'utilisons comme symbole d'entrée face à une porte palière de logement. Je voudrais qu'il affiche 2 lignes de texte :
1- un champs texte qu'on remplit manuellement et qui correspond au numéro de l'appartement souhaité
2- la somme de toutes les surfaces mesurées des zones qui portent le même ID que le numéro d'appartement renseigné précédemment.
Pensez-vous que cela soit possible ? Car quand j'avais essayé il y a quelques mois (et au final j'avais abandonné), j'avais des difficultés à interagir avec les zones pour faire cette fameuse somme de surface.
D'avance merci pour votre retour