Mettre à jour la coordonnée Z de blocs AutoCAD à partir d'un attribut ALT

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.

  1. 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 ».
  2. 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 LISP ALTPOINT dé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 :

      1. Téléchargez le fichier UtGeodt . ALTPOINT 2.1.2 - 2022.07.25 (Luna).lsp (le lien était fourni dans le forum original).
      2. Dans AutoCAD, tapez APPLOAD (ou _APPLOAD) et appuyez sur Entrée.
      3. Dans la boîte de dialogue « Charger/Décharger des applications », naviguez jusqu’à l’emplacement du fichier .lsp té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.
      4. Cliquez sur « Fermer ».
    • Exécution de la Commande ALTPOINT :

      1. Dans la ligne de commande AutoCAD, tapez ALTPOINT et appuyez sur Entrée.
      2. Le programme vous demandera le nom du bloc à traiter. Pour vos « TCPOINT », vous pouvez taper TCPOINT et Entrée, ou simplement appuyer sur Entrée pour accepter la valeur par défaut (qui inclut souvent « TCPOINT » ou « TCPOINT* »).
      3. Le programme vous demandera ensuite le nom de l’attribut contenant l’altitude. Pour votre cas, tapez ALT et Entrée, ou appuyez sur Entrée pour accepter la valeur par défaut.
      4. 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 ».
  3. 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 APPLOAD et tapez TOPOALT dans la ligne de commande.

    • LISP PTALT (par (gile)) :
      Ce snippet utilise getpropertyvalue et setpropertyvalue, 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 APPLOAD et tapez PTALT dans la ligne de commande. La commande _attsync à la fin est une bonne pratique pour s’assurer que les attributs sont à jour.

  4. 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 commande ATTSYNC (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 LIST ou la palette des PROPRIETES (_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.).

En suivant ces étapes, vous devriez pouvoir transformer efficacement vos points topographiques 2D en une base solide pour votre modélisation 3D de parcelle.