Aller au contenu

[RESOLU] Une commande pour un bouton LANCEMENT VBA VIA LISP


Curlygoth

Messages recommandés

Bonjour ou bonsoir (tout dépend a quel moment de la journée vous allez voir ce message),

 

Je commence à avoir un peu (Beaucoup trop) de boutons pour mes programmes ou autres...

 

Est il possible de créer une commande pour faire appel à l'action de ce bouton ?

 

mini_210318104659621593.png

 

Merci à vous !

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Le plus simple est de définir une commande LISP.

Exemple pour une macro VBA avec les fonctions vl-vbaload et vl-vbarun.

(defun c:TOTO ()
 (vl-vbaload "C:\Macros VBA\AutoCAD\laMacro.dvb")
 (vl-vbarun "laMacro") 
 (princ)
)

ensuite tu peux simplement entrer : TOTO en ligne commande (et simplifier ta macro AutoCAD : ^C^Ctoto).

 

Si tu ne veux absolument pas de LISP, le seul autre moyen, à ma connaissance, pour définir une commande AutoCAD est de le faire .NET ou ObjectARX, mais là, c'est vraiment comme prendre l'avion pour acheter une baguette de pain à un pâté de maison.

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

Lien vers le commentaire
Partager sur d’autres sites

OK ensuite "appload" contenu a chargé au démarrage etc... merci beaucoup

 

et question bête mais si je rajoute tous mes dvb ça dans un DEM.lsp :

(defun c:TOTO ()

(vl-vbaload "C:\Macros VBA\AutoCAD\laMacro.dvb")

(vl-vbarun "laMacro")

(princ)

)

 

...

 

(defun c:TATA ()

(vl-vbaload "C:\Macros VBA\AutoCAD\TATA.dvb")

(vl-vbarun "laMacro")

(princ)

)

 

Si tu ne veux absolument pas de LISP, le seul autre moyen, à ma connaissance, pour définir une commande AutoCAD est de le faire .NET ou ObjectARX, mais là, c'est vraiment comme prendre l'avion pour acheter une baguette de pain à un pâté de maison.

Un maitre du multi language VB.NET/ C# / Lisp /ObjectARX m'a dit :

Ne cherche pas à aller trop vite et vas-y avec toute la rigueur nécessaire, à vouloir courir avant de savoir marcher, on se casse souvent la gueule.

Et je vais suivre son conseil

 

Ca lancera toutes mes commandes ?

 

parce que j'ai une centaines d'entrées à faire !

 

 

 

[EDIT] Initialisation du système VBA...; erreur: Erreur Automation Problème lors du chargement du fichier DVB

 

Le code réél

 

J'ai créer un module qui s'appel Aff

puis une procédure aff pour afficher le userform

 

(defun c:USF ()

(vl-vbaload "C:\K2M\ACAD\USF.dvb")

(vl-vbarun "C:\K2M\ACAD\USF.dvb!Aff.aff") Marche pas

;;(vl-vbarun "Aff.aff") marche pas

;;(vl-vbarun "aff") marche pas

(princ)

)

Lien vers le commentaire
Partager sur d’autres sites

ensuite tu peux simplement entrer : TOTO en ligne commande (et simplifier ta macro AutoCAD : ^C^Ctoto).

 

heu.. le ^C^C pour echap deux fois ok mais ??? dans la création de commande ? pour mettre les ^C^C en plus ?

 

Montre le contenu d'une ou deux macros, on les convertira en commandes LISP.

Tu veux me convertir aussi au lisp ? ^^

allez je suis d'accord ! plus à de corde à son arc mieux c'est !

 

en code simple j'ai ça :

Sub aff()

FONCT.PROPRIETE_ACTIVE_DUCALQUE 'Mets les propriétés active en propriété ducalque

PRINC.show 'Affiche le userform

End Sub

 

EDIT : SUPPRESSION D'UN CODE VBA

Lien vers le commentaire
Partager sur d’autres sites

Normalement, avec vl-vbarun tu as juste besoin de passer le nom de la macro, pas le chemin complet (voir l'aide).

 

Pour le chargement, tu peux créer, dans un dossier des chemins de recherche, un fichier nommé : acaddoc.lsp dans lequel tu mets toutes les définitions de commande LISP. Ce fichier sera automatiquement chargé dans chaque dessin AutoCAD.

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

Lien vers le commentaire
Partager sur d’autres sites

a dans les boutons : C'est toujours pareil :

^c^c^p-vbarun "C:/.../FICHIER.dvb!MODULE.PROC_SUB"

 

 

le nom de la macro, pas le chemin complet

OK merci et ça marche

 

...acaddoc.lsp dans lequel tu mets toutes les définitions de commande LISP.

 

donc je créer un accaddoc.lsp ou autre nom et dedans :

 

(defun c:USF () ;? meme nom ?

(vl-vbaload "C:\\K2M\\ACAD\\LANCEMENT.lsp")

(vl-vbarun "USF")

(princ)

)

 

EDIT et pourquoi ne pas "insérer" les ^C^C dans le le Nom USF de base dans le Lancement.lsp que j'ai créé ?

 

genre :

(defun c:USF ()

(^C^C);par exemple ????

(vl-vbaload "C:\\K2M\\ACAD\\USF.dvb")

(vl-vbarun "Aff.aff")

(princ)

)

Lien vers le commentaire
Partager sur d’autres sites

Si dans les boutons tu n'as que le vbarun :

^c^c^p-vbarun "C:/.../FICHIER.dvb!MODULE.PROC_SUB"

c'est que le fichier DVB est chargé par ailleurs. Donc en LISP il suffirait de faire :

(defun c:USF ()     ; le nom que tu veux
 (vl-vbarun "USF") ; le nom de la macro
 (princ)
)

 

donc je créer un accaddoc.lsp ou autre nom

Non, pas autre nom, acaddoc.lsp avec un seul c. À l'ouverture de chaque dessin, AutoCAD cherche un fichier nommé acaddoc.lsp dans les chemin de recherche et, s'il le trouve, il le charge.

 

pourquoi ne pas "insérer" les ^C^C dans le le Nom USF de base dans le Lancement.lsp que j'ai créé ?

C^C^ c'est uniquement pour les macros de commande AutoCAD. Ça n'a aucune signification en LISP.

 

Fais les choses tranquillement, calmement. Tu sembles surexcité, les exemples que tu donnes ne sont pas cohérents :

(vl-vbaload "C:\\K2M\\ACAD\\LANCEMENT.lsp")

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

Lien vers le commentaire
Partager sur d’autres sites

Ok super ! merci beaucoup !

 

C^C^ c'est uniquement pour les macros de commande AutoCAD. Ça n'a aucune signification en LISP.

 

A.. bon ok !

 

En tout cas merci beaucoup ça va permettre de créer des itérations contrôlés avec cette méthode.

Ou... juste un raccourci plutôt que d'aller chercher le bouton.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Hello je relance un poil,

Donc je suis content, j'ai tout mes fonctionnalités VBA en commande

juste un truc il m'affiche toujours ça :

image.png.0f2aea53ab3dad20f65e8db33ec8e73a.png

le nom de la commande elle me gêne pas : bien au contraire surtout pour la suite ^^

par contre connaissez vous un moyen de ne pas afficher ces 2 dernières lignes ?

 

Lien vers le commentaire
Partager sur d’autres sites

  • 8 mois après...

Bonjour,

Je relance un peu ce topic car les commandes ne fonctionne plus... une variable qui à bougé peut etre ?

Je suis passé sur AUTOCAD MAP 2022 :

j'ai un lancement.lsp qui se charge (pas de soucis) il y a ces deux lignes merci @(gile)

Quand je tape GAZ dans ma ligne de commande (le dvb se charge mais le code C:\\K2M\\ACAD\\GAZ.dvb!AFF.AFF ne se lance pas) :s

(defun c:GAZ ()
(vl-vbaload "C:\\...\\GAZ.dvb")
(vl-vbarun "Aff.aff")
(princ)
)

du coup, je suis reparti sur mes boutons mais ça commence à faire beaucoup XD

Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas de souci dans le code ci-dessus.

Je ne comprends pas ce que veut dire : " le code C:\\K2M\\ACAD\\GAZ.dvb!AFF.AFF ne se lance pas)".

Si tu essayes (toujours essayer, c'est si simple en LISP) de coller les expressions une par une dans la ligne de commande :

(vl-vbaload "C:\\...\\GAZ.dvb")

Que répond AutoCAD ?

(vl-vbarun "Aff.aff")

Que répond AutoCAD ?

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

Lien vers le commentaire
Partager sur d’autres sites

Citation

Si tu essayes (toujours essayer, c'est si simple en LISP) de coller les expressions une par une dans la ligne de commande :

 

Donc image.png.b729ce7d94b0b7e98440313c18230992.png  (le dvb est chargé dans mes projet)

 

et image.png.3e907e51b0d74f9410a42db29158a2c0.png

et donc j'ai essayer de mettre le code dans L'iDE de VLISP mais :

image.thumb.png.9a409d7360524ec432ca8ead69e5931c.png

F8 est grisé :-s

Merci en tout cas @(gile)

 

PS : J'ai réessayé avec autocad 2015 et ça marche... (c'est la version 2022 MAP qui a un problème ?)

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

F8 est actuellement grisée parce que tu n'as pas défini de point d'arrêt dans le programme. Il s'agit du bouton en forme de main (à gauche de la paire de lunettes).
Je te conseille de placer le point de coupure au niveau de la parenthèse ouvrante de la fonction (vl-vbaload) et d'ajouter "Consulter dernière interprétation" dans la fenêtre espion. Ainsi en lançant la commande GAZ tu verras ce qui ne fonctionne pas avec F8.

En regardant l'aide AutoCAD concernant la fonction (vl-vbaload), elle est supposée retourner le chemin du fichier .dvb normalement. Or cela ne semble pas être le cas d'après ta première capture.. Es-tu sûr que ton fichier a pu être trouvé ? Essaye de taper la ligne suivante dans la ligne AutoCAD et voir ce qu'elle retourne :

(findfile "C:\\K2M\\ACAD\\GAZ.dvb")

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

OK et pas T comme je lis sur ma barre de commande...

je me demande s'il n'y aurais pas un problème avec MAP 2022

Car ça marche sur Autocad 2015 (classique) et pas sur Autocad MAP 2022.

je fais un fichier test pour vous ?

 

TEST_VBA.dvbimage.png.b05411341fca75af0a208c18b0f43534.pngCURLY.lsp

 

j'ai fais un dvb et un lisp. qui l'appel j'ai le meme problème

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é