(gile) Posté(e) le 20 avril 2007 Posté(e) le 20 avril 2007 Salut, J'aurais besoin de savoir, suivant les versions d'AutoCAD, où les variables d'environnement crées avec SETENV s'inscrivent dans la base de registre. Sur AutoCAD 2007 (je n'ai que ça sous la main) si je fais : (setenv "NomDeVariable" "test") je crée une variable dont je peux ensuite récupérer la valeur avec (getenv "NomDeVariable") Ma variable dans est inscite dans : HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\[surligneur]R17.0[/surligneur]\ACAD-5001:40C\FixedProfile\General En fait j'aurais voulu savoir si c'est seulement la version qui change dans le chemin. Donc si d'aucuns pouvaient avoir la patience d'essayer sur différentes versions et de me retourner leurs résultats ... La procédure serait : - Entrer (setenv "NomDeVariable" "test") - Chercher"NomDeVariable" dans la base de registre (Démarrer >> Exécuter >> regedit >> CTRL+F >> NomDeVariable (respecter la casse).- Vérifier le chemin- Pour nettoyer, remplacer dans l'expression suivante le chemin que vous aurez trouvé :(vl-registry-delete "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R17.0\\ACAD-5001:40C\\FixedProfile\\General" "NomDeVariable") Merci d'avance... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 20 avril 2007 Posté(e) le 20 avril 2007 Salut (gile)C'est bien cela, la version est bien prise en compte.Perso, je préfère éviter cette solution et j'utilise (vl-registry-read/write cle ma_variable) avec une clé définit en variable de ce type (setq Cle "HKEY_CURRENT_USER\\Software\\Autodesk\\Autocad\\Patrick_35") Comme cela, mes lisps garderons toujours leurs paramètres même en changeant de version d'autocad sans changer d'ordinateur. :) ps : dans l'éditeur de registre, il est plus simple de faire suppr sur NomDeVariable que d'utiliser ton bout de code. ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 20 avril 2007 Auteur Posté(e) le 20 avril 2007 Merci, En fait, l'utilisation de setenv/getenv est une coquetterie. C'est pour pouvoir l'utiliser dans des macro diesel, pour faire des bascules avec toggle dans les menus. Nom de la commande : $(if,$(getenv,gilevpcolor),!.)Colorer les fenêtres dévérouilléesMacro : ^C^Cgilevpcolor $M=$(if,$(getenv,gilevpcolor),0,1) http://img123.imageshack.us/img123/696/vpcolez0.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 2 mai 2007 Posté(e) le 2 mai 2007 bonjour à tous .... Toujours à la recherche du travail propre .... Comment fait-on pour détruire une variable créée ???? après un (setenv "MAvar" 1) (delenv ????) A+
Bred Posté(e) le 2 mai 2007 Posté(e) le 2 mai 2007 Salut,à tester : (defun delenv (var / REP VERS) (setq vers (vl-string-subst "" (substr (getvar "ACADVER") 5) (getvar "ACADVER")) rep (car (vl-registry-descendents (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R"vers"\\")))) (if (vl-registry-delete (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R"vers"\\"rep"\\FixedProfile\\General\\") var) (princ (strcat "\n Variable "var" supprimée !.")) (princ (strcat "\n Variable "var" non supprimée.")) ) (princ) ) [Edité le 2/5/2007 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
stephan35 Posté(e) le 2 mai 2007 Posté(e) le 2 mai 2007 Bravissimo !!!! Fonctionne pour mon cas :AutoCAD 2006 fr Merci ! ;)
Patrick_35 Posté(e) le 2 mai 2007 Posté(e) le 2 mai 2007 Bien Bred :D On devient un roi du lisp ;)Juste deux remarques. tu ne testes pas si la variable existe ou pas, d'où un message d'erreur erronéeEt la deuxième pour la faute d'orthographe dans le lisp. Pour les corps de messages, je ne dis rien car moi aussi j'ai mon lot de fautes, mais dans le lisp, c'est un peu plus gênant. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 2 mai 2007 Posté(e) le 2 mai 2007 Salut,tu ne testes pas si la variable existe ou pas, d'où un message d'erreur erronéeJe n'ai pour l'instant pas eu de message d'erreur, que la variable existe ou pas : vl-registry-delete renvois T ou nil (c'est pour la visibilité de la réaction que j'ai fait un (if ... (princ ...., mais c'est inutile dans le principe) pour la faute d'orthographe dans le lisp. Pour les corps de messages, je ne dis rien car moi aussi j'ai mon lot de fautes, mais dans le lisp, c'est un peu plus gênant.C'est même pour moi honteux !!!... je fait trop de faute, et ce forum est un exercice pour moi d'essayer d'en faire moins... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
stephan35 Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 L'erreure est humaine .... Et ça me plait bien comme ça !, On en fait tous, le tout est de savoir le reconnaitre . ;) A+
Patrick_35 Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 Bred, ce que je voulais dire c'est que si tu cherches à effacer une variable qui n'existe pas, j'ai un message d'erreur comme quoi le lisp ne peut pas l'efacer (normal). Mais comme je suis un néophite ;) je me dit que cette variable est en lecture seule et donc qu'elle traine dans mes registres. Pour stephan35Mes propos sont amicaux et c'est juste pour améliorer le lisp qui va me servir car toute critique est bonne à prendre. D'ailleur, moi-même je ne suis pas contre sur ceux que j'ai mis à disposition @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 Salut Patrick_35,je n'arrive pas à reproduire d'erreur (j'ai suprimé des choses existante, mais ça me les supprime correctement, si elle n'existe pas, j'ai nil, et je n'arrive pas à trouver une variable en lecture seule dans ce répertoire). j'imagine que si j'avais un message d'erreur je fairait ceci :(vl-catch-all-error-p (vl-catch-all-apply 'vl-registry-delete (list (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R"vers"\\"rep"\\FixedProfile\\General\\") var))) ... mais comme je n'ai pas d'erreur je ne peut tester la justesse de ce que je fait ...aurais-tu un nom de variable en lecture sule dans ce repertoire ?merci. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 3 mai 2007 Posté(e) le 3 mai 2007 Je pensais plus à une chose dans ce style (defun delenv (var / REP VERS) (if (getenv var) (progn (setq vers (vl-string-subst "" (substr (getvar "ACADVER") 5) (getvar "ACADVER")) rep (car (vl-registry-descendents (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R" vers "\\")))) (if (vl-registry-delete (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R" vers "\\" rep "\\FixedProfile\\General\\") var) (princ (strcat "\n Variable " var " supprimée !.")) (princ (strcat "\n Variable " var " non supprimée.")) ) ) (princ "\n Variable " var " n'existe pas") ) (princ) ) Sinon, tu ne peux pas mettre en lecture seul une clé dans les registres. C'était pour expliquer comment aurait pu être pris le message d'erreur @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 4 mai 2007 Posté(e) le 4 mai 2007 Bonjour patrick_35 En utilisant ton exemple : Commande: (delenv "Gestion_projet") Variable Gestion_projet supprimée !. Commande: (delenv "Gestion_projet"); erreur: type d'argument incorrect: FILE "Gestion_projet" TIP TOP ! :D Juste le strcat qui manque ... (defun delenv (var / REP VERS) (if (getenv var) (progn (setq vers (vl-string-subst "" (substr (getvar "ACADVER") 5) (getvar "ACADVER"))rep (car (vl-registry-descendents (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R" vers "\\")))) (if (vl-registry-delete (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R" vers "\\" rep "\\FixedProfile\\General\\") var) (princ (strcat "\n Variable " var " supprimée !.")) (princ (strcat "\n Variable " var " non supprimée.")) ) ) (princ (strcat "\n Variable " var " n'existe pas")) ) (princ) ) Voili voilou, pour moi ça roule ! Merci à tous ! [Edité le 4/5/2007 par stephan35]
Patrick_35 Posté(e) le 4 mai 2007 Posté(e) le 4 mai 2007 Juste le strcat qui manque ... Je devais être fatigué hier soir :( @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 9 mai 2007 Posté(e) le 9 mai 2007 Pour Bredpour revenir à ton lisp, une instruction qui devrait te plaire(vlax-product-key) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 9 mai 2007 Posté(e) le 9 mai 2007 Pour Bredpour revenir à ton lisp, une instruction qui devrait te plaire (vlax-product-key) Ben voyons... de quoi gagner des lignes à foison !!!!(defun delenv (var) (if (getenv var) (progn (if (vl-registry-delete (strcat "HKEY_CURRENT_USER\\"(vlax-product-key)"\\FixedProfile\\General\\") var) (princ (strcat "\n Variable " var " supprimée !.")) (princ (strcat "\n Variable " var " non supprimée.")) ) ) (princ (strcat "\n Variable " var " n'existe pas")) ) (princ) ) merci ! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
BIM G CO Posté(e) le 9 mai 2007 Posté(e) le 9 mai 2007 Donc c'est décidé je vais utiliser AutoCAD pour affecter et modifier la base de registre pour les utilisateurs. Exécution d'un lisp au premier démarrage (à la réception de la machine - création de chaque utilisateur) Configuration des Etransmit, Configuration des dossiers par défaut (déjà paramétré par le déplyement réseau). Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
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