Comment déplacer des blocs de points topographiques (nommés ‹ TCPOINT ›) dont la coordonnée Z est à zéro, pour que leur Z corresponde à la valeur de leur attribut ‹ ALT › dans AutoCAD 2021, afin de créer un modèle 3D du terrain ?
Pour modéliser un terrain en 3D à partir de points topographiques, il est fréquent de recevoir des données où la coordonnée Z des blocs est à zéro, l’altitude réelle étant stockée dans un attribut. Voici une méthode experte pour mettre à jour la coordonnée Z de ces blocs dans AutoCAD 2021 en utilisant un programme LISP.
-
Comprendre la Problématique
- Vous disposez de blocs AutoCAD (ici, nommés « TCPOINT ») qui représentent des points topographiques.
- La position Z de ces blocs est actuellement à 0.
- L’altitude réelle de chaque point est stockée dans un attribut du bloc, nommé « ALT ».
- L’objectif est de modifier la coordonnée Z de chaque bloc pour qu’elle corresponde à la valeur numérique de son attribut « ALT ».
-
Solution Recommandée : Utilisation d’un LISP dédié (ALTPOINT de Luna)
La solution la plus efficace et la plus robuste identifiée dans la discussion est le programme LISPALTPOINTdéveloppé par Luna. Ce programme est conçu pour gérer ce type de conversion de manière flexible et a été confirmé comme fonctionnel par l’utilisateur.-
Téléchargement et Chargement du LISP :
- Téléchargez le fichier
UtGeodt . ALTPOINT 2.1.2 - 2022.07.25 (Luna).lsp(le lien était fourni dans le forum original). - Dans AutoCAD, tapez
APPLOAD(ou_APPLOAD) et appuyez sur Entrée. - Dans la boîte de dialogue « Charger/Décharger des applications », naviguez jusqu’à l’emplacement du fichier
.lsptéléchargé, sélectionnez-le et cliquez sur « Charger ». Pour une utilisation fréquente, il est recommandé de l’ajouter au « Contenu du démarrage » pour qu’il soit chargé automatiquement à chaque ouverture d’AutoCAD. - Cliquez sur « Fermer ».
- Téléchargez le fichier
-
Exécution de la Commande ALTPOINT :
- Dans la ligne de commande AutoCAD, tapez
ALTPOINTet appuyez sur Entrée. - Le programme vous demandera le nom du bloc à traiter. Pour vos « TCPOINT », vous pouvez taper
TCPOINTet Entrée, ou simplement appuyer sur Entrée pour accepter la valeur par défaut (qui inclut souvent « TCPOINT » ou « TCPOINT* »). - Le programme vous demandera ensuite le nom de l’attribut contenant l’altitude. Pour votre cas, tapez
ALTet Entrée, ou appuyez sur Entrée pour accepter la valeur par défaut. - Le LISP va alors parcourir tous les blocs spécifiés et mettre à jour leur coordonnée Z en fonction de la valeur de l’attribut « ALT ».
- Dans la ligne de commande AutoCAD, tapez
-
-
Alternatives LISP (avec précautions)
-
LISP
TOPOALT(par Luna) :
Ce snippet LISP est plus concis mais a été rapporté comme ne fonctionnant que partiellement dans certains cas. Il peut servir de base pour comprendre le principe.(defun c:TOPOALT (/ jsel i name n ALT pt) (and (or (setq jsel (ssget "_I" '((0 . "INSERT") (2 . "TCPOINT") (66 . 1)))) (setq jsel (ssget '((0 . "INSERT") (2 . "TCPOINT") (66 . 1)))) (setq jsel (ssget "_X" '((0 . "INSERT") (2 . "TCPOINT") (66 . 1)))) ) (repeat (setq n 0 i (sslength jsel)) (setq name (ssname jsel (setq i (1- i))) pt (cdr (assoc 10 (entget name))) ALT (atof (getpropertyvalue name "ALT")) ) (if (entmod (subst (cons 10 (list (car pt) (cadr pt) ALT)) (assoc 10 (entget name)) (entget name) ) ) (setq n (1+ n)) n ) ) (princ (strcat "\nUn total de " (itoa n) "/" (itoa (sslength jsel)) " blocs TCPOINT ont été modifié avec succès")) ) (princ) )Pour l’utiliser, chargez-le via
APPLOADet tapezTOPOALTdans la ligne de commande. -
LISP
PTALT(par (gile)) :
Ce snippet utilisegetpropertyvalueetsetpropertyvalue, des fonctions plus modernes et généralement plus performantes pour manipuler les propriétés d’entités. Cependant, l’utilisateur a rapporté une erreur « ADS erronée » avec ce code, ce qui peut indiquer un problème de version d’AutoCAD ou de contexte spécifique.(defun c:PTALT (/ ss i blk pt) (if (setq ss (ssget "_X" '((0 . "INSERT") (2 . "TCPOINT") (410 . "Model")))) (repeat (setq i (sslength ss)) (setq blk (ssname ss (setq i (1- i))) pt (getpropertyvalue blk "Position") ) (setpropertyvalue blk "Position" (list (car pt) (cadr pt) (atof (getpropertyvalue blk "ALT")))) ) ) (command-s "_attsync" "_name" "TCPOINT") (princ) )Pour l’utiliser, chargez-le via
APPLOADet tapezPTALTdans la ligne de commande. La commande_attsyncà la fin est une bonne pratique pour s’assurer que les attributs sont à jour.
-
-
Bonnes Pratiques et Vérifications Post-Traitement
- Synchronisation des Blocs (
ATTSYNC) : Avant d’exécuter un LISP, assurez-vous que tous les blocs « TCPOINT » ont bien l’attribut « ALT » défini dans leur définition. Si certains points semblent ne pas être modifiés, utilisez la commandeATTSYNC(ou_ATTSYNC) sur la définition du bloc « TCPOINT » pour synchroniser les attributs.(command-s "_attsync" "_name" "TCPOINT") - Gestion des Points sans Attribut ALT ou Z=0 : Il est possible que certains points n’aient pas d’attribut « ALT » ou que leur valeur soit nulle. Ces points resteront à Z=0. Identifiez-les (par exemple, en les sélectionnant et en vérifiant leurs propriétés) et décidez s’il faut les supprimer ou les corriger manuellement.
- Vérification des Altitudes : Après l’exécution du LISP, utilisez la commande
LISTou la palette desPROPRIETES(_PROPERTIES) sur quelques blocs pour confirmer que leur coordonnée Z a été correctement mise à jour. - Lignes de Rupture (Breaklines) : Pour une modélisation 3D précise du terrain (MNT - Modèle Numérique de Terrain), les points seuls ne suffisent pas. Les « lignes de rupture » (ou « lignes d’arête ») sont des polylignes 3D qui représentent des changements de pente significatifs (ex: bordures de trottoir, talus, murs). Elles sont cruciales pour guider la triangulation du MNT et éviter des interpolations incorrectes. Si votre géomètre a fourni ces lignes, assurez-vous de les utiliser dans votre logiciel de modélisation 3D (Civil 3D, Revit, SketchUp avec plugins, etc.).
- Synchronisation des Blocs (
En suivant ces étapes, vous devriez pouvoir transformer efficacement vos points topographiques 2D en une base solide pour votre modélisation 3D de parcelle.