Sujets similaires
Rechercher
Derniers sujets
Detecter un projet VBA
3 participants
TOUT SUR LE BTP ET LA TOPOGRAPHIE :: LOGICIELS PROFESSIONNELS :: LOGICIELS PROFESSIONNELS :: AUTOCAD
Page 1 sur 1
Detecter un projet VBA
Dans mon précédent post je vous présente mes outils sur Autocad mais j'ai encore un problème avec:
Je n'arrive pas à détecter la présence ou non d'un projet VBA en mémoire par une commande Lisp ou Autocad.
Quelqu'un peut il m'aider ?
Je n'arrive pas à détecter la présence ou non d'un projet VBA en mémoire par une commande Lisp ou Autocad.
Quelqu'un peut il m'aider ?
Re: Detecter un projet VBA
Bonjour à toutes et tous,
Que veux-tu faire exactement ?
Le projet doit-il être chargé ?
Alt+F8 te permet de voir tous les projets chargés, non ?
Que veux-tu faire exactement ?
Le projet doit-il être chargé ?
Alt+F8 te permet de voir tous les projets chargés, non ?
Re: Detecter un projet VBA
Voila : j'ai des outils qui sont des macros inclus dans des projets VBA.
Ils sont lancés par des fichiers lisp qui chargent d'abord le projet contenant la macro :
(command "vbaload" "\\e-methodes\\Trace_grues\\Trace_grues.dvb")
(command "execVba" "Trace_Grues")
à la première utilisation dans une session Autocad l'utilisateur doit valider l'activation des macros, ce qui est ok pour la sécurité.
mais lors de l'utilisation suivante la première commande génère un message d'erreur car le projet est déjà chargé. C'est ce que je voudrait éviter.
NB : l'utilisation de (command "commandeAutocad") retourne NIL quelque soit le résultat de la commande autocad.
Ils sont lancés par des fichiers lisp qui chargent d'abord le projet contenant la macro :
(command "vbaload" "\\e-methodes\\Trace_grues\\Trace_grues.dvb")
(command "execVba" "Trace_Grues")
à la première utilisation dans une session Autocad l'utilisateur doit valider l'activation des macros, ce qui est ok pour la sécurité.
mais lors de l'utilisation suivante la première commande génère un message d'erreur car le projet est déjà chargé. C'est ce que je voudrait éviter.
NB : l'utilisation de (command "commandeAutocad") retourne NIL quelque soit le résultat de la commande autocad.
Re: Detecter un projet VBA
Bonjour à toutes et tous,
Ok !
Pour les projets VBA, je les charges depuis mon gabarit et je les lances ensuite depuis un bouton comme ceci :
J'espère avoir répondu à ton pb,...
Ok !
Pour les projets VBA, je les charges depuis mon gabarit et je les lances ensuite depuis un bouton comme ceci :
- Code:
^C^C-execvba;nomdetonprojet
J'espère avoir répondu à ton pb,...
Re: Detecter un projet VBA
C'est justement pour ne charger QUE les projets dont j'ai besoin au moment ou j'en ai besoin.
Re: Detecter un projet VBA
Re,
Quel est le pb de ma méthode ?
Aucune incidence sur la "lourdeur" du gabarit ,...
Désolé, je n'ai pas mieux,...
D'ailleurs, semble indépendant du gabarit de travail,...
De plus, je ne suis pas spécialiste de ce langage qui à disparut avec la V2010,...
Bon courage,
Quel est le pb de ma méthode ?
Aucune incidence sur la "lourdeur" du gabarit ,...
Désolé, je n'ai pas mieux,...
D'ailleurs, semble indépendant du gabarit de travail,...
De plus, je ne suis pas spécialiste de ce langage qui à disparut avec la V2010,...
Bon courage,
Re: Detecter un projet VBA
Bonjour,
Ta méthode est tout à fait OK par rapport à la taille du gabarit : les projets VBA ne sont pas enregistrés avec les dessins ais dans des DVB. On peut donc charger les ressources lisp et vba au démarrage d'autocad - avec le acad.lsp je crois.
Mais par contre ça prend des ressources système et ça c'est plus embêtant pour moi.
J'ai beaucoup d'outils différents et correspondant à des phases de travail spécifiques rarement faites ensemble. Par exemple tout les outils d'install servent peu en phase de rotations de banches... D'ou le choix de ne charger que par blocs en fonction des utilisations.
Sur le fond tu as toutefois raison : VBA est en disparition, je suis en train de regarder l'évolution avec ObjectArx.
Ta méthode est tout à fait OK par rapport à la taille du gabarit : les projets VBA ne sont pas enregistrés avec les dessins ais dans des DVB. On peut donc charger les ressources lisp et vba au démarrage d'autocad - avec le acad.lsp je crois.
Mais par contre ça prend des ressources système et ça c'est plus embêtant pour moi.
J'ai beaucoup d'outils différents et correspondant à des phases de travail spécifiques rarement faites ensemble. Par exemple tout les outils d'install servent peu en phase de rotations de banches... D'ou le choix de ne charger que par blocs en fonction des utilisations.
Sur le fond tu as toutefois raison : VBA est en disparition, je suis en train de regarder l'évolution avec ObjectArx.
Re: Detecter un projet VBA
Salut
Pour savoir si une fonction est présente, tu peux faire en lisp
Si tu as par exemple comme réponse
Un exemple concret pour charger une dll en lisp
@+
Pour savoir si une fonction est présente, tu peux faire en lisp
- Code:
(eval 'ma_fonction)
Si tu as par exemple comme réponse
la fonction est présente#<SUBR @0e134474 <EXRXSUBR>>
Un exemple concret pour charger une dll en lisp
- Code:
(or (eval 'gc-vpthaw)
(vl-cmdf "_.netload" (findfile "VpLayerLisp.dll"))
)
@+
Patrick_35- Messages : 24
Date d'inscription : 18/05/2010
Re: Detecter un projet VBA
Patrick_35- Messages : 24
Date d'inscription : 18/05/2010
Re: Detecter un projet VBA
Bonjour,
Et merci pour ta solution Patrick_35.
En fait j'avais implémenté ce type de solution en définissant une variable en même temps que je charge le projet => si elle existe je ne charge pas le projet.
Le problème - et avec la tienne c'est la même chose, j'ai testé, c'est que c'est défini pour un dessin, et que le projet est défini pour une session Autocad éventuellement MDI => quand on change de dessin dans la même session la variable ou fonction Lisp n'est plus définie et on tente a nouveau le chargement du projet alors qu'il n'y a pas lieu.
J'ai conscience que c'est le fait d'utiliser VBA qui pose pb et je pense qu'avec un ARX ce serait plus rigoureux, mais bon, l'historique est la !
J'ai vu que dans Autolisp il y avait une gestion d'erreur en MDI, je vais chercher par là.
Merci aussi pour ton autre réponse, je n'ai pas encore eu le temps de la tester.
A + tard !
Et merci pour ta solution Patrick_35.
En fait j'avais implémenté ce type de solution en définissant une variable en même temps que je charge le projet => si elle existe je ne charge pas le projet.
Le problème - et avec la tienne c'est la même chose, j'ai testé, c'est que c'est défini pour un dessin, et que le projet est défini pour une session Autocad éventuellement MDI => quand on change de dessin dans la même session la variable ou fonction Lisp n'est plus définie et on tente a nouveau le chargement du projet alors qu'il n'y a pas lieu.
J'ai conscience que c'est le fait d'utiliser VBA qui pose pb et je pense qu'avec un ARX ce serait plus rigoureux, mais bon, l'historique est la !
J'ai vu que dans Autolisp il y avait une gestion d'erreur en MDI, je vais chercher par là.
Merci aussi pour ton autre réponse, je n'ai pas encore eu le temps de la tester.
A + tard !
Re: Detecter un projet VBA
Salut
Le but est de tester si la fonction est présente.
Non --> je la charge.
@+
Je veux bien te croire quand tu dis que cela ne marche pas avec vba, mais ma solution fonctionne parfaitement avec des fonctions lisp/vlisp/arx et même dll. Donc cela me surprends quand même.Le problème - et avec la tienne c'est la même chose, j'ai testé, c'est
que c'est défini pour un dessin, et que le projet est défini pour une
session Autocad éventuellement MDI => quand on change de dessin dans
la même session la variable ou fonction Lisp n'est plus définie et on
tente a nouveau le chargement du projet alors qu'il n'y a pas lieu.
Le but est de tester si la fonction est présente.
Non --> je la charge.
@+
Patrick_35- Messages : 24
Date d'inscription : 18/05/2010
Re: Detecter un projet VBA
Bonjour,
Malheureusement lorsqu'on utilise VBA Autocad charge l'environnement d'exécution dans lequel il reconnait les macro mais il ne reconnait pas ces macros comme des commandes. Il faut utiliser execvba NomDeLaMacro.
Tant pis, j'utilise ma demi solution en attendant de passer tout ça en arx.
Malheureusement lorsqu'on utilise VBA Autocad charge l'environnement d'exécution dans lequel il reconnait les macro mais il ne reconnait pas ces macros comme des commandes. Il faut utiliser execvba NomDeLaMacro.
Tant pis, j'utilise ma demi solution en attendant de passer tout ça en arx.
Re: Detecter un projet VBA
Je ne pense que qu'un arx soit l'idéal car tu es obligé de générer un arx par version d'autocad alors qu'avec une dll, ce n'est plus le cas.en attendant de passer tout ça en arx
@+
Patrick_35- Messages : 24
Date d'inscription : 18/05/2010
Re: Detecter un projet VBA
Bonjour,
J'ai vu qu'il y avait aussi cette possibilité. Mais permet elle de créer des commandes externes à autocad utilisables comme avec du lisp ou un arx ?
Ca m'intéresse d'autant plus qu'effectivement les arx doivent être compilés par versions et avec une version de visual c++ différente toute les 3 version. C'est bien lourd lorsque l'on vise un groupe d'utilisateurs avec des config et versions pour le moins disparates !
Si tu avais un exemple de dll qui soit reconnue dans l'environnement autocad comme une commande ou des références de docs ce serait d'un grand secours.
Merci ... en plus, ils m'ont relâché [Vous devez être inscrit et connecté pour voir cette image]
J'ai vu qu'il y avait aussi cette possibilité. Mais permet elle de créer des commandes externes à autocad utilisables comme avec du lisp ou un arx ?
Ca m'intéresse d'autant plus qu'effectivement les arx doivent être compilés par versions et avec une version de visual c++ différente toute les 3 version. C'est bien lourd lorsque l'on vise un groupe d'utilisateurs avec des config et versions pour le moins disparates !
Si tu avais un exemple de dll qui soit reconnue dans l'environnement autocad comme une commande ou des références de docs ce serait d'un grand secours.
Merci ... en plus, ils m'ont relâché [Vous devez être inscrit et connecté pour voir cette image]
Patrick_35- Messages : 24
Date d'inscription : 18/05/2010
Re: Detecter un projet VBA
Re,
Oui, je vais essayer de voir comment je peux faire mieux, c'est en effet pas terrible comme ça,..
@+,
Oui, je vais essayer de voir comment je peux faire mieux, c'est en effet pas terrible comme ça,..
@+,
TOUT SUR LE BTP ET LA TOPOGRAPHIE :: LOGICIELS PROFESSIONNELS :: LOGICIELS PROFESSIONNELS :: AUTOCAD
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Mer 27 Déc - 20:06 par souad2010
» LES COURS DE GEODESIE
Sam 10 Juil - 14:07 par lili2006
» TES HEBERGEMENT NUAGE DE POINTS
Ven 9 Juil - 9:41 par lili2006
» Bonjour à toutes et à tous
Mer 15 Mai - 6:13 par Mayah2105
» probleme d'ouverture de plusieures fenetre autocad
Jeu 5 Juil - 14:50 par lili2006
» Presentation d'un nouveau
Sam 30 Sep - 15:05 par alphaville974
» LA TOPOGRAPHIE POUR LE BTP
Dim 19 Mar - 17:26 par albator
» au sujet remblai
Ven 28 Oct - 17:34 par lili2006
» formation Autopiste
Jeu 25 Aoû - 15:42 par djingtresfort