PIPA Posté(e) le 13 juillet 2004 Posté(e) le 13 juillet 2004 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,
fabcad Posté(e) le 14 juillet 2004 Posté(e) le 14 juillet 2004 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 ExplicitPublic 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 Subou getfiled et setvar sont des fonctions autolisp autre exemple : ThisDrawing.SendCommand "(setq def-list (map_pltdeflist))" & vbCrThisDrawing.SendCommand "(setq long-list (length def-list))" & vbCrThisDrawing.SendCommand "(setvar " & """USERI1""" & "long-list)" & vbCrThisDrawing.SendCommand "(setq i 0)" & vbCrThisDrawing.SendCommand "(setq chn " & """l""" & ")" & vbCrThisDrawing.SendCommand "(while (< i long-list) (setq chn (strcat chn " & """;""" & "(nth i def-list))) (setq i (+ 1 i)))" & vbCrThisDrawing.SendCommand "(setq chn (substr chn 3))" & vbCrThisDrawing.SendCommand "(setq chn (strcat chn " & """;""" & "))" & vbCrThisDrawing.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 questionsfabcad
Pako Posté(e) le 15 juillet 2004 Posté(e) le 15 juillet 2004 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
PIPA Posté(e) le 15 juillet 2004 Auteur Posté(e) le 15 juillet 2004 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,
fabcad Posté(e) le 15 juillet 2004 Posté(e) le 15 juillet 2004 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 partiegraphique 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
HEIGHTS Posté(e) le 20 juillet 2004 Posté(e) le 20 juillet 2004 Bonjour, La commande "SendCommand" n'est pas reconnue par sur mon Autocad R14.Y-a-t-il une autre méthode pour envoyer des commandes Lisp depuis VBA.Merci.
fabcad Posté(e) le 22 juillet 2004 Posté(e) le 22 juillet 2004 effectivement cette commande n'existe pas sur la 14mais decris ton programme que tu veux creer.
HEIGHTS Posté(e) le 22 juillet 2004 Posté(e) le 22 juillet 2004 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.
Patrick_35 Posté(e) le 22 juillet 2004 Posté(e) le 22 juillet 2004 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
fabcad Posté(e) le 23 juillet 2004 Posté(e) le 23 juillet 2004 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
HEIGHTS Posté(e) le 23 juillet 2004 Posté(e) le 23 juillet 2004 ok, pour mettre du VBA dans du lisp, mais moi je veux faire l'inverse car j'ai plus facile à programmer en VBA. (Surtout pour des connexions BDD)
LUDWIG Posté(e) le 23 novembre 2004 Posté(e) le 23 novembre 2004 - 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
DenisHen Posté(e) le 4 octobre 2006 Posté(e) le 4 octobre 2006 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)
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