Standardiser le chemin retourné par (getfiled) en LISP AutoCAD

J’utilise la fonction LISP getfiled dans AutoCAD pour sélectionner un fichier. J’ai remarqué une incohérence : pour la plupart des fichiers, elle retourne uniquement le nom du fichier, mais pour un fichier spécifique (par exemple, ‹ A000d_ADEMOLIR.txt ›), elle inclut le chemin complet. Comment puis-je garantir un format de sortie uniforme ?

La fonction LISP (getfiled) peut présenter un comportement inattendu en retournant parfois le chemin complet du fichier et d’autres fois uniquement son nom, même avec des paramètres identiques. Pour garantir une sortie cohérente (uniquement le nom du fichier), il est nécessaire de normaliser le résultat après l’appel à la fonction.

Procédure de normalisation du résultat de (getfiled) :

  1. Appeler getfiled : Utilisez la fonction (getfiled) comme vous le feriez habituellement pour permettre à l’utilisateur de sélectionner un fichier.
    (setq pathcible "H:\\cad2014\\") ; Définissez votre chemin de base
    (setq fcible (getfiled "Sélectionner un fichier" pathcible "txt" 8))
    
  2. Vérifier et ajuster le chemin : Après la sélection, vérifiez si la variable fcible contient le pathcible au début de la chaîne. Si c’est le cas, supprimez ce préfixe.
    (if (= pathcible (substr fcible 1 (strlen pathcible)))
        (setq fcible (substr fcible (+ (strlen pathcible) 1)))
    )
    
  3. Résultat attendu : Après cette condition, la variable fcible contiendra toujours uniquement le nom du fichier sélectionné, sans le chemin, assurant ainsi la cohérence pour la suite de votre programme LISP.
  4. Note sur la cause : Bien que la cause exacte de l’inconsistance de getfiled ne soit pas toujours claire (elle peut être liée à des attributs de fichier ou à des versions spécifiques d’AutoCAD), cette méthode offre une solution robuste pour gérer le résultat.