Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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

Macro : ^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

  • 2 semaines après...
Posté(e)

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+

Posté(e)

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...

Posté(e)

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

Et 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Salut,

tu ne testes pas si la variable existe ou pas, d'où un message d'erreur erronée

Je 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...

Posté(e)

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 stephan35

Mes 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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...

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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]

Posté(e)
Pour Bred

pour 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...

Posté(e)

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

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é