sechanbask Posté(e) le 22 juin 2007 Posté(e) le 22 juin 2007 Comment autocad enregistre la dernière commande utilisée? Il utilise une variable? J'ai besoin de comprendre ce fonctionnement pour que mes macro VBA soit répétable sans lancer la commande. En effet, une fois la commande VBA fini si on fait "ESPACE" autocad redemande le nom de la macro (en VBA, cela signifie le chemin entier de la macro) la commande qui relance la dernière commande est trouvable dans le CUI :Nom : Répéter %sDescription : Répète la dernière commande exécutéeMacro : ^C^C; ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Bred Posté(e) le 23 juin 2007 Posté(e) le 23 juin 2007 Salut,personnellement, pour lancer des macros VBA, j'utilise le lisp, ce qui permet de créer une commande "répétable" comme tu le décris (en validant pour relancer la commande précedement lancé) : exemple(defun c:MACOMMANDE () (command "-vbarun" "MON_DVB.DVB!MODULE_MON.NOMduMODULE") (princ) ) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
sechanbask Posté(e) le 23 juin 2007 Auteur Posté(e) le 23 juin 2007 Merci je vais tester ça même si je je doute un peu (à tort sans doute) de la fiabilité de ce complexe LISP-VBA...A mon avis, il serait plus simple de modifier la commande de répétition d'autocad pour qu'elle reprenne les fonction avec arguments... De plus ça aiderait certains (donc moi d'ailleurs) pour relancer les commandes spéciales genre http://www.cadxp.com/sujetXForum-15749.htm et les commandes autocad par exemple couper au point... Ce forum is formidable ! ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
sechanbask Posté(e) le 6 août 2007 Auteur Posté(e) le 6 août 2007 Bonsoir,j'ai crée ça Sub DM() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." End Sub Que je lance avec : (defun c: RDM() (command "-vbarun" "PROJET.DVB!INSAUTO.DM") (princ) ) ça marche bien mais lorsque je relance la commande, il m'inscris 2 fois le texte pour l'interception de l'utilisateur... Si quelqu'un pouvais me dire comment empêcher ça... [Edité le 6/8/2007 par sechanbask] ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Bred Posté(e) le 21 août 2007 Posté(e) le 21 août 2007 Salut,je n'ai pas testé, mais peut-être ceci : Sub DM() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." [b]& vbCr[/b] End Sub Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
sechanbask Posté(e) le 7 septembre 2007 Auteur Posté(e) le 7 septembre 2007 J'ai effectué plusieurs modifications pour tenter de résoudre mon problème en vain alors je poste de nouveau les codes: Code de lancement en LISP: (defun c: DMN() (command "-vbarun" "PROJET.DVB!INSAUTO.DMN") (princ) ) Code de la macro VBA lancé par DMN(lisp) : Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub Le résultat est toujours le même en ligne de commande j'ai toujours 2 fois le texte qui apparait :Extrait de la ligne de commande :"Commande: dmn-vbarunNom de la macro: PROJET.DVB!INSAUTO.DMN Veuillez entrer la largeur de la réservation :Veuillez entrer la largeur de la réservation : " D'ailleurs, si je pouvais juste avoir une fois le texte "Veuillez entrer la largeur de la réservation :" sans "-vbarunNom de la macro: PROJET.DVB!INSAUTO.DMN " ça serait encore plus joli... mais déjà que je suis dans la panade c'est peut-être trop demandé.. [Edité le 7/9/2007 par sechanbask] ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Bred Posté(e) le 7 septembre 2007 Posté(e) le 7 septembre 2007 Salut, Pour ne pas voir les commandes en ligne de commande, il faut mettre la variable cmdecho à 0 : (defun c: DMN() (setvar "cmdecho" 0) (command "-vbarun" "PROJET.DVB!INSAUTO.DMN") (setvar "cmdecho" 1) (princ) ) pour le doublon sur la ligne de commande, essaye de mettre un saut de ligne dans ton message (pas testé) : Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "\nVeuillez entrer la largeur de la réservation :") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
sechanbask Posté(e) le 7 septembre 2007 Auteur Posté(e) le 7 septembre 2007 Le changement du lisp porte ses fruits car dans la ligne de commande, je n'ai que ça: "Commande:DMN \nVeuillez entrer la largeur de la réservation :" par contre j'ai une différence entre la ligne de commande et la ligne dynamique (sous autocad 2006) : -ligne de commande : (voir au dessus) -ligne dynamique : "\nVeuillez entrer la largeur de la réservation :\nVeuillez entrer la largeur de la réservation :" c'est bizarre non ? ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Bred Posté(e) le 7 septembre 2007 Posté(e) le 7 septembre 2007 Re,le fait que tu ais le "\n" dans la ligne de commande montre que le saut de ligne n'est pas pris en compte.Tu peux donc l'enlever. Pour différence en la ligne de commande et la saisie dynamique, je n'en sais rien.Peut-être n'est ce plus GetString qu'il faut utiliser .... Mais essaye avec ça pour voir (pas beau mais pour tester) : Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") [b]ThisDrawing.Utility.GetString(True, "(princ)")[/b] MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub [Edité le 7/9/2007 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
sechanbask Posté(e) le 7 septembre 2007 Auteur Posté(e) le 7 septembre 2007 j'ai une error de syntaxe sur :ThisDrawing.Utility.GetString(True, "(princ)") Je ne même pas passer à la ligne suivante on "oubliant l'erreur" avecon error resume next j'ai donc essayé ça :Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") Largeur = ThisDrawing.Utility.GetString(True, "(princ)") MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub mais en vain car forcement ça me donne dans la ligne dynamique :"Veuillez entrer la largeur de la réservation :Veuillez entrer la largeur de la réservation :". Puis une fois la valeur donnée, la ligne dynamique me redemande de remplir la variable largeur en écrivant "(princ)" . Bien sur seul ce que j'écris avec "(princ)" sera utilisable par le programme.. J'ai pas compris comment ton astuce devait marcher.. ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Bred Posté(e) le 7 septembre 2007 Posté(e) le 7 septembre 2007 Ceci ?(j'y vais à taton...) Sub DMN() Dim Largeur As String Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :") ThisDrawing.SendCommand "(princ)" & vbCr MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr End Sub [Edité le 7/9/2007 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
sechanbask Posté(e) le 7 septembre 2007 Auteur Posté(e) le 7 septembre 2007 je pense sérieusement que c'est problème de compatibilité entre VBA et LISP, tu n'as pas de commande avec une interception utilisateur comme celle que j'ai posté ? P.S. ça marche toujours pas... ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
sechanbask Posté(e) le 11 septembre 2007 Auteur Posté(e) le 11 septembre 2007 Bred, je suis toujours dans la panade, tu es en rade d'idée ? si c'est le cas, ben snifff... Merci d'avoir tenté de m'aider. ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
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