Jump to content

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


Recommended Posts

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 !

Link to post
Share on other 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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Link to post
Share on other 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)

)

Link to post
Share on other 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

Link to post
Share on other 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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Link to post
Share on other 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)

)

Link to post
Share on other 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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Link to post
Share on other 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.

Link to post
Share on other sites
  • Curlygoth changed the title to [RESOLU] Une commande pour un bouton LANCEMENT VBA VIA LISP
  • 2 weeks later...

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 ?

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...