Restaurer la visibilité de la base de carte et des objets FDO dans AutoCAD Map 3D

Comment restaurer la visibilité de la base de carte et des objets FDO dans AutoCAD Map 3D lorsque les méthodes habituelles (fermeture/réouverture, seuils d’affichage) échouent et que les données semblent corrompues ?

La disparition inattendue de la base de carte ou d’objets FDO dans AutoCAD Map 3D est un problème frustrant, souvent lié à des paramètres d’affichage corrompus ou à des seuils de visibilité FDO mal configurés. Bien qu’une simple réouverture du dessin ou du logiciel puisse résoudre des cas mineurs, des situations plus persistantes nécessitent une intervention plus approfondie.

Voici une démarche experte pour diagnostiquer et résoudre ce problème, en commençant par les solutions courantes et en progressant vers une méthode avancée via un script LISP.

1. DIAGNOSTIC INITIAL ET SOLUTIONS SIMPLES

  • Vérification des Seuils d’Affichage FDO :
    • Dans le Gestionnaire d’affichage (Display Manager), sélectionnez la couche FDO concernée.
    • Cliquez droit sur la couche et choisissez « Définir les seuils de visibilité » (Set Visibility Thresholds) ou « Comparer les seuils » (Compare Thresholds).
    • Assurez-vous que les plages de zoom sont correctement définies et que la couche est visible à tous les niveaux de zoom souhaités. Recochez les cases si nécessaire.
  • Redémarrage du Logiciel :
    • Fermez complètement AutoCAD Map 3D et rouvrez le dessin. Pour des problèmes moins sévères, cette action suffit souvent à réinitialiser les paramètres d’affichage temporaires.
    • Si le problème persiste même après avoir ouvert le dessin sur un autre poste, cela indique une corruption plus profonde des données du dessin.

2. SOLUTION AVANCÉE : UTILISATION D’UN SCRIPT LISP POUR LA VISIBILITÉ DES ENTITÉS

Lorsque les méthodes précédentes échouent, il est possible que des propriétés de visibilité au niveau des entités DXF soient altérées. Le script LISP ent_visible de Gegematic permet de forcer la visibilité de toutes les entités en manipulant le code de groupe DXF 60.

  • Compréhension du LISP :

    • Le code de groupe DXF 60 contrôle la visibilité des entités : (60 . 0) signifie visible, (60 . 1) signifie invisible.
    • La fonction clé big_clean parcourt le dessin et remplace toutes les occurrences de (60 . 1) par (60 . 0), rendant ainsi les entités invisibles visibles.
    • La commande c:ent_visible (qui appelle big_clean) est conçue pour rendre toutes les entités visibles et effectue un zoom étendu.
  • Procédure d’Application du LISP :

    1. Sauvegardez votre dessin avant toute manipulation de script.
    2. Copiez le code LISP suivant dans un fichier texte et enregistrez-le avec l’extension .lsp (par exemple, ent_visible.lsp).
      ; ****************************************************************************
      ;; Fonction pour balayer le dessin et remplacer une propriété DXF par une autre
      ;; prop1 et 2 : code d'association DXF (ex: '(60 . 1) pour invisible)
      (defun big_clean ( prop1 prop2 / ent eg)
        (setq ent (entnext)) ; Récupère la première entité du dessin
        (while ent
          (setq eg (entget ent)) ; Récupère la liste DXF de l'entité
          (if (equal (assoc (car prop1) eg) prop1) ; Si la propriété prop1 est trouvée
            (if prop2
              (progn
                (setq eg (subst prop2 prop1 eg)) ; Remplace prop1 par prop2
                (entmod eg) ; Met à jour l'entité dans le dessin
              )
            )
          )
          (setq ent (entnext ent)) ; Passe à l'entité suivante
        )
      )
      
      ; ****************************************************************************
      ;; Commande LISP pour rendre toutes les entités visibles
      ;; Traite les entités en modifiant leur code de visibilité DXF 60
      (defun c:ent_visible ( / sel)
        (setvar "QTEXTMODE" 1) ; Active le mode texte rapide pour potentiellement accélérer l'affichage
        (big_clean '(60 . 1)'(60 . 0)) ; Rend toutes les entités marquées comme invisibles (60.1) visibles (60.0)
      
        ; Les fonctions 'pw_' étaient spécifiques à la configuration de l'utilisateur original
        ; et ne sont pas incluses ici pour garantir la portabilité du script.
      
        ;; Partie zoom : effectue un zoom étendu pour afficher toutes les entités
        (setq sel (ssget "x")) ; Sélectionne toutes les entités du dessin
        (if sel
          (command "_zoom" "_e") ; Exécute un zoom étendu si des entités sont présentes
        )
        (prompt "\nPour retrouver l'aspect des textes, QTEXTMODE à 0")
        (princ) ; Termine la commande proprement
      )
      
    3. Chargez le LISP dans AutoCAD Map 3D en utilisant la commande APPLOAD (ou _APPLOAD). Naviguez jusqu’à votre fichier .lsp et cliquez sur « Charger ».
    4. Exécutez la commande LISP en tapant ENT_VISIBLE (ou C:ENT_VISIBLE) dans la ligne de commande et appuyez sur Entrée.
    5. Réactivez les couches FDO : Après l’exécution du LISP, il peut être nécessaire de désactiver puis de réactiver les couches FDO dans le Gestionnaire d’affichage pour qu’elles se rafraîchissent correctement avec les nouvelles propriétés de visibilité.

3. BONNES PRATIQUES ET PRÉCAUTIONS

  • Sauvegardes régulières : Toujours sauvegarder votre travail avant d’exécuter des scripts LISP ou d’effectuer des modifications majeures.
  • Compréhension du LISP : Si vous utilisez des scripts LISP trouvés en ligne, assurez-vous de comprendre leur fonction pour éviter des effets indésirables.
  • Nettoyage du dessin : Après avoir résolu le problème, envisagez d’utiliser les commandes PURGE et AUDIT pour nettoyer et réparer le dessin.

Cette approche, combinant diagnostic, solutions standards et une intervention LISP ciblée, permet de résoudre les cas les plus récalcitrants de disparition de la base de carte dans AutoCAD Map 3D.