Aller au contenu

Soucis avec une variable AutoCAD personnelle


DenisHen

Messages recommandés

Bonjour à la communauté.
En Lisp, j'ai créé une variable, puis, je contrôle si elle est bien là, et elle est bien là :

(setenv "TCModule" "Variable à Bibi")
(princ (getenv "TCModule"))

Mais depuis le VBA, je n'arrive pas à y accéder, par contre, je n'ai aucun problème avec les variables système.
La variable système ne me pose aucun problème :

VarCad = ThisDrawing.GetVariable("FILLMODE")
MsgBox VarCad     'Pas de problème

Mais pas ma variable perso :

VarCad = ThisDrawing.GetVariable("TCModule")

J'ai une erreur en retour : "Erreur en accédant à une variable système".

J'ai raté un truc ? Les variables "perso" ne sont pas considérées comme "système" ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

je viens de découvrir que même un SendCommand ne fonctionne pas

ThisDrawing.SendCommand "(setvar " & """TCModule""" & " " & """Din Da Da""" & ")" & vbCr

Cette ligne n'a aucun effet...
Et je découvre une chose curieuse, directement à la main en ligne de commande :

Commande: (setenv "TCModule" "Variable à Bibi")
"Variable à Bibi"
Commande: (getvar "TCModule")
nil

Faut-il créer la variable avec une commande spécifique ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Les fonctions LISP getenv et setenv concernent les variables d'environnement, pas les variables système (CF getvar et setvar).

Je crains qu'il n'existe pas d'équivalent à getenv / setenv en VBA (API COM). Mais ces "variables d'environnement" AutoCAD sont enregistrées dans la base de registre :
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R24.2\ACAD-6101:40C\FixedProfile\General (remplacer R24.2\ACAD-6101:40C par les valeurs correspondant à la version utilisée).

À mon avis, pour communiquer entre différents environnements de programmation, plutôt que d'utiliser des fonctions qui n'existent pas forcément dans tous ces environnements, il vaut mieux utiliser directement la base de registre, voir ici pour le LISP et là pour le VBA.

C'est la même chose pour les "ldata" (données LISP uniquement accessible en LISP), il vaut mieux utiliser les dictionnaires AutoCAD standard (dictionnaires nommés ou d'extension) qui sont accessibles par tous les environnement de programmation.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut @(gile).
Mercis pour ton aide.
J'ai déjà utilisé la base de registre pour mes macros (tant en Lisp qu'en VBA), mais je ne souhaitais pas l'encombrer, surtout que je ne sais pas si y accéder est plus rapide que les accès aux variables.
Tu me parles des dictionnaires (et tu n'es pas le seul) sur lesquels je me suis déjà penché (légèrement) sur eux sans réellement réussir à bien les comprendre et donc, à faire quelque-chose de probant.
Par contre, j'utilise très souvent les "ldata" que je maitrise un peu.
Je vais tenté de progresser avec les dictionnaires, je vais regarder ça avec attention car, comme tu le précise, ils sont accessibles par tous les langages.
Encore mille mercis à toi.
Bien à toi et à la communauté.
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

il y a 41 minutes, DenisHen a dit :

surtout que je ne sais pas si y accéder est plus rapide que les accès aux variables.

Comme dit plus haut, ces "variables d'environnement" (comme beaucoup de variables systèmes) sont enregistrées dans la base de registre...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Oops, merci de me corriger 😉 

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é