GER-onimo Posté(e) le 26 février 2020 Posté(e) le 26 février 2020 Bonjour je tiens de suite à préciser que je n'y connais rien en codage Lisp. Mes derniers codes remontent il y a 20ans sur la console de Mirc en Java Script, et encore j'étais pas très bon...!Hier j'ai écris, non sans mal , une petite routine qui me permet de basculer rapidement d'une configuration au Mètre vers une configuration au Millimètre sur autocad full 2018. Pourquoi ce basculement ?pour différentes raisons liées à l'échelle des blocs de ma palette, aux plans externes ...etc (defun C:CONVMM () (command "insunitsdefsource" "6") (command "dimscale" "1000") (command "dimlfac" "1") (command "mleaderscale" "1000") (command "modemacro" "Mètre = 4 Millimètre = 6 : $(getvar, insunitsdefsource)") ) Je sais c'est pas pas terrible (j'ai honte) face aux ténors de l'Autolisp tel que Gilles ... etc mais bon ça m'aide :unsure: Comme vous le voyez je termine le code par un modemacro qui me permet d'afficher sur la barre d'état d'autocad, si le plan est au Mètre ou au Millimètre.mais l'expression ne retourne que la valeur de la variable ; "4" ou "6" .J'aimerais qu'elle retourne seulement le texte de la valeur "Mètre" ou "Millimètre"Par ailleurs le modemacro n'existe que si la commande est lancée , j'aimerais la voir même si la commande n'est pas active. Merci à vous :) Autocad + Revit
Luna Posté(e) le 27 février 2020 Posté(e) le 27 février 2020 Hey ! Dans un premier temps, je crois que tu as inversé la correspondance entre les unités et la valeur de la variable système ;) (4 = Millimètre et 6 = Mètre) Ensuite je pense que cela devrait suffire à tes besoins :(setvar "MODEMACRO" "$(if,$(eq,$(getvar,INSUNITS),6),Mètre,$(if,$(eq,$(getvar,INSUNITS),4),Millimètre,Non défini))") ça remplace la ligne : (command "modemacro" "Mètre = 4 Millimètre = 6 : $(getvar, insunitsdefsource)") Si l'unité change en cours de route, la variable MODEMACRO se mettra à jour correctement. :)Si l'unité est différente de Mètre ou Millimètre ça affichera "non défini". PS : tu n'es pas obligé de passer par les commandes pour définir les variables systèmes INSUNITS, DIMSCALE, DIMLFAC et MLEADERSCALE. tu peux utiliser les fonctions (setvar), qui n'affiche rien dans l'historique de commande. (defun C:CONVM () (setvar "INSUNITS" 6) (setvar "DIMSCALE" 1000) (setvar "DIMLFAC" 1) (setvar "MLEADERSCALE" 1000) (setvar "MODEMACRO" "$(if,$(eq,$(getvar,INSUNITS),6),Mètre,$(if,$(eq,$(getvar,INSUNITS),4),Millimètre,Non défini))") ) Voili voilou en espérant t'avoir aidé ^^
GER-onimo Posté(e) le 27 février 2020 Auteur Posté(e) le 27 février 2020 ha super !!! merci En fait "Mètre = 4 Millimètre = 6 est juste un texte légende envoyé par le modemacro pour me rappeler l'état courant dans le barre d'état c'est impec je remercie :D Autocad + Revit
GER-onimo Posté(e) le 27 février 2020 Auteur Posté(e) le 27 février 2020 Hé bien Luna j'ai testé mais avec "setvar" et "insunits" ça ne marche pas "insunitsdefsource" me permet de récuperer mes blocs depuis la palette sans modifier la propriété d'échelle, ça m'évite d'aller dans les options du coup je me suis permis de modifier ton code ça me renvoi uniquement " Millimètre " dans la barre d'état (defun C:CONVMM () (command "insunitsdefsource" "6") (command "dimscale" "1000") (command "dimlfac" "1") (command "mleaderscale" "1000") (command "MODEMACRO" "$(if,$(eq,$(getvar,INSUNITSDEFSOURCE),6),Millimètre)") ) ça m'a permis de récupérer ta ligne du modemacro pour obtenir ce que je voulais .... un grand merci à toi :) Autocad + Revit
Luna Posté(e) le 27 février 2020 Posté(e) le 27 février 2020 Pas de soucis, je ne connaissais pas la variable INSUNITSDEFSOURCE, voilà tout ;)
nen Posté(e) le 2 octobre 2020 Posté(e) le 2 octobre 2020 Bonjour le forum, Je me permets d'écrire sur ce poste, car j'ai aussi fait un petit lisp très basique qui convertit toutes les variables en centimètre, j’ai voulus rajouté la modification des précisions "LUCPREC" et "AUPREC" pour les mêmes raison que GER-onimo. J'ai un problème avec la variable "LUCPREC" qui m'affiche une erreur et arrête mon lisp. Quelqu'un pour me dire pourquoi étant novice ne voit pas ? :blink: (defun C:CONVERTC () (setvar "LTSCALE" 1) (setvar "INSUNITS" 5) (setvar "LUNITS" 2) (setvar "LUCPREC" 2) (setvar "AUNITS" 0) (setvar "AUPREC" 1) (setvar "DIMSCALE" 1) (setvar "DIMLFAC" 1) (setvar "DIMLUNIT" 2) (setvar "INSUNITSDEFSOURCE" 5) (setvar "INSUNITSDEFTARGET" 5) ) Merci d'avance pour votre aide Meilleures salutations
zebulon_ Posté(e) le 3 octobre 2020 Posté(e) le 3 octobre 2020 BonjourLucprec, ça ne me dit rien. Par contre LUPREC si. Amicalement Vincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
nen Posté(e) le 4 octobre 2020 Posté(e) le 4 octobre 2020 Merci zebulon :D Une bête faute de frappe ;) Et pourtant j'ai vérifié je ne sais pas combien de fois :) Merci pour ton aide. Meilleures salutations
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant