Aller au contenu

LISP ET VBA


Messages recommandés

Posté(e)

Salut,

 

Comment utiliser du code lisp dans une routine écrite en VBA ?

 

Comment récuperer la valeur d'une varaible écrite en lisp dans le code vba ?

 

comment placer l'exécution d'une macro derriere un bouton dans une barre de menu ?

 

Merci pour vos réponses,

 

 

Posté(e)

Bonsoir PIPA,

 

Comment utiliser du code lisp dans une routine écrite en VBA ?

Tu peux ecrire des lignes de code LISP si tu en a pas beaucoup sous la forme suivante :

Option Explicit

Public Sub Opendialog()

Dim fileName As String

ThisDrawing.SendCommand "(setvar " & """users1""" & "(getfiled " & """Select a DWG File""" & """C:/""" & """dwg""" & "8)) "

fileName = ThisDrawing.GetVariable("users1")

MsgBox "Vous avez selectionnez le fichier " & fileName & "!!!", , "File Message"

End Sub

ou getfiled et setvar sont des fonctions autolisp

autre exemple :

ThisDrawing.SendCommand "(setq def-list (map_pltdeflist))" & vbCr

ThisDrawing.SendCommand "(setq long-list (length def-list))" & vbCr

ThisDrawing.SendCommand "(setvar " & """USERI1""" & "long-list)" & vbCr

ThisDrawing.SendCommand "(setq i 0)" & vbCr

ThisDrawing.SendCommand "(setq chn " & """l""" & ")" & vbCr

ThisDrawing.SendCommand "(while (< i long-list) (setq chn (strcat chn " & """;""" & "(nth i def-list))) (setq i (+ 1 i)))" & vbCr

ThisDrawing.SendCommand "(setq chn (substr chn 3))" & vbCr

ThisDrawing.SendCommand "(setq chn (strcat chn " & """;""" & "))" & vbCr

ThisDrawing.SendCommand "(setvar " & """users1""" & " chn)" & vbCr

 

Comment récuperer la valeur d'une varaible écrite en lisp dans le code vba ?

Dans ton LISP tu envoie tes données suivant leur type :

- USERS1, USERS2, USERS3, USERS4 et USERS5 servent au stockage et à l'extraction des chaînes de caractères de texte.

- USERR1, USERR2, USERR3, USERR4 et USERR5 servent au stockage et à l'extraction des nombres réels.

- USERI1, USERI2, USERI3, USERI4 et USERI5 servent au stockage et à l'extraction de valeurs entières.

Puis tu les récupères dans ton code VBA avec fileName = ThisDrawing.GetVariable("users1")

 

comment placer l'exécution d'une macro derriere un bouton dans une barre de menu ?

 

(command "_vbaload" "c:\\autocad r14\\vba\\mes_fonctions.dvb")

(command "_-vbarun" "ma_fonction")

 

voila en espérant répondu a tes questions

fabcad

 

 

Posté(e)

Rien à rajouter, tous est complet , fabcad !

 

Sauf peut-on utilisé une autre façon que SendCommand pour introduire du LISP dans du VBA ?

 

Est-ce l'unique façon ?

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Posté(e)

Trés complet, c'est peu dire.

 

Merci pour cette réponse complete, precise, claire .....

 

du grand art...

 

juste un petit soucis avec vbaload et le chemin dans le bouton, mais j'ai contourner le probléme en chargeant le .dvb au démarrage.

 

encore merci,

Posté(e)

Bonsoir tout le monde!

 

Ce n'est pas la seule façon mais comme je l'ai précisé c'est pour un nombre limité

de commandes lisp sinon ça devient lourd à gérer.

 

Mais comme tu vois les variables autocad servent de lien entre les deux programmes.

d'ou deux variantes de programmation :

 

1- Programme LISP --> variables autocad --> Programme VBA

 

2- Programme VBA --> variables autocad --> Programme LISP

 

je prefère utiliser le VBA pour gérer les cases de dialogue et pour la partie

graphique le LISP qui est plus facile pour moi.

 

Pour information allez consulter le site de Dominique Vaquand à l'adresse suivante :

http://dominique.vaquand.free.fr/

 

fabcad

 

Posté(e)

Le but est de lancer des commandes lisp pour récupérer des fonctions et des boîtes de dialogue DCL. (Cela m'évite de les refaire en VBA).

Exemple "_ddatte".

Il n'y a pas une autre commande qui ferait l'affaire.

Merci.

 

Posté(e)

Bonjour,

Je ne suis pas sure de tout saisir. Pourquoi ne pas tout simplement faire du lisp et de programmer les boites de dialogue. C’est assez simple une fois que l’on a compris le principe et ce n’est que du texte.

Si tu cherches le boite de dialogue de _ddatte, regardes du coté de AutoCAD.dcl dans le répertoire support

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour LISP ET VBA fin

 

voici un exemple de programmation combinant lisp et vba

 

(setvar "cmdecho" 0)

(setvar "filedia" 0)

(setvar "cmddia" 0)

(command "_vbaload" "E:/lisp/Imprimer.dvb")

(command "_vbarun" "Impression")

(if (= (getvar "users5") "Fermer")

(progn

(command "_vbaunload" "E:/lisp/Imprimer.dvb")

(setvar "filedia" 1)

(setvar "cmddia" 1)

);fin progn

);fin if

 

bonne utilisation

 

fabcad

 

  • 4 mois après...
Posté(e)

- USERS1, USERS2, USERS3, USERS4 et USERS5 servent au stockage et à l'extraction des chaînes de caractères de texte.

- USERR1, USERR2, USERR3, USERR4 et USERR5 servent au stockage et à l'extraction des nombres réels.

- USERI1, USERI2, USERI3, USERI4 et USERI5 servent au stockage et à l'extraction de valeurs entières.

 

Comment fait-on quand on a besoin de passer plus de 5 variables d'un type de VBA vers LISP ou l'inverse ?

Autocad 2021 - Revit 2022 - Windows 10

  • 1 an après...
Posté(e)

Bonsoir à tous,

je cherche juste à récupérer un XData écrit en LiSP depuis VBA...

 

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)

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é