Aller au contenu

petit lisp de debutant


GER-onimo

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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é ^^

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

  • 7 mois après...

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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité