J’utilise un LISP pour extraire des quantités de moquette sur AutoCAD. Je suis récemment passé d’un environnement de travail en mètres à un autre en millimètres, ce qui a créé plusieurs problèmes. Le texte de référence inséré sur les lignes est devenu minuscule, les calculs de longueur sortent en millimètres alors que je les veux en mètres, et je n’arrive pas à modifier la référence (ex: « 3901 ») pour qu’elle soit prise en compte dans l’extraction. Comment puis-je corriger mon code LISP pour qu’il fonctionne correctement avec cette nouvelle échelle ?
Le problème provient de valeurs fixes (codées en dur) dans votre routine LISP qui ne sont plus adaptées à votre nouvelle unité de travail. Il faut ajuster la hauteur du texte définie dans le style et appliquer un facteur de conversion lors du calcul des longueurs.
Voici les modifications à apporter à votre fichier LISP :
-
Agrandir la hauteur du texte :
Le style de texte « MOQUETTE » est créé avec une hauteur fixe de 100 unités, ce qui est trop petit en millimètres.- Dans la fonction
mmq:definestyles, localisez la ligne suivante :
(vl-cmdf "_.-style" "moquette" "romans.shx" "100" "50" "25" "" "" "") - Modifiez la valeur de hauteur
"100"par une valeur plus appropriée pour une échelle en millimètres, par exemple"150"ou"200".
(vl-cmdf "_.-style" "moquette" "romans.shx" "150" "50" "25" "" "" "")
- Dans la fonction
-
Convertir les longueurs calculées en mètres :
La fonctiondistanceretourne une valeur dans l’unité du dessin (millimètres). Il faut diviser ce résultat par 1000 pour obtenir des mètres.- Dans la fonction
c:moqext, trouvez la ligne qui calcule et ajoute la distance à la liste :
(setq d_list (cdr_moq++ (dxf 2 en1) d_list (distance p1 p2))) - Modifiez cette ligne pour intégrer la division. L’utilisation de
1000.0garantit une division en nombre réel.
(setq d_list (cdr_moq++ (dxf 2 en1) d_list (/ (distance p1 p2) 1000.0)))
- Dans la fonction
-
Comprendre la gestion de la référence :
La référence de la moquette (ex: « 3901 ») est utilisée pour créer le nom du style de multiligne. Elle est donc définie à la création de l’objet avec la commandeMMQet ne peut pas être modifiée a posteriori via la palette des Propriétés.- Pour changer la référence d’une laie, il faut l’effacer et la redessiner en utilisant la commande
MMQet en saisissant la nouvelle référence lorsqu’elle vous est demandée. Le LISP fonctionne correctement sur ce point, c’est le flux de travail qui doit être adapté.
- Pour changer la référence d’une laie, il faut l’effacer et la redessiner en utilisant la commande
Après avoir effectué ces modifications, enregistrez votre fichier .lsp et rechargez-le dans AutoCAD avec la commande APPLOAD pour que les changements soient pris en compte.