DenisHen Posté(e) le 4 février 2023 Posté(e) le 4 février 2023 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)
DenisHen Posté(e) le 4 février 2023 Auteur Posté(e) le 4 février 2023 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)
(gile) Posté(e) le 4 février 2023 Posté(e) le 4 février 2023 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
DenisHen Posté(e) le 4 février 2023 Auteur Posté(e) le 4 février 2023 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)
(gile) Posté(e) le 4 février 2023 Posté(e) le 4 février 2023 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
DenisHen Posté(e) le 4 février 2023 Auteur Posté(e) le 4 février 2023 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)
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