Aller au contenu

MacStorm

Membres
  • Compteur de contenus

    6
  • Inscription

  • Dernière visite

MacStorm's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. OK merci, Je vais tester cela, et je reviendrai vous redire, mais ce sera probablement l’année prochaine, car me reste 3 jours de taff avant les vacances de fin d'année, et ces 3 derniers jours je suis en déplacement chez les clients... mais que ça fonctionne ou pas, ou si je trouve une idée de contournement, je reviendrais pour le partage et finaliser le poste...
  2. Merci pour ta réponse, mais j'ai omis de dire que ça fait un moment que j'utilise le VB.net. (trop tard pour moi de me mettre au C# :unsure: ) Mais pour le projet que je doit reprendre et le temps que j'ai devant moi, il me sera impossible de tout convertir. Surtout au vu de la taille et de la complexité du développement qui à été fait. J'avais déjà remplacer tout les boutons par des appelle direct du vba lorsque mon boss est venu pour me dire de revenir en arrière car le répéter de la touche Enter ne fonctionnais plus. Du coup je suis revenu au commande lisp... cependant avec le lisp le problème est qu'il me fait de "missmatch error"... Quand il y a un ça va, mais en fonction des commande c'est tout autocad qui plante... Explication: le lisp commence une suite d'instruction et se place en mémoire. Dans ces instruction, une macro vba est exécuté et doit s’écrire aussi en mémoire, et le vba peu aussi lance un fonction lisp, etc, etc.. et très complexe. Seulement il arrive qu'entre le lisp et le vba, ils veulent utilisé la même adresse mémoire. Ce qui provoque des erreurs et des plantage. Tout fonctionnait bien lorsque tout était en 32bit. Mais des clients sont passés au 64bit, du coup nous avons du essayer de bricolé quelque chose. C'est la raison du pourquoi pas de lisp. En résumé, et bien je suis pour tout passé en .net, mais pour l'heure je veux simplement pouvoir lancer du vba depuis du .net sans pour autant qu'il enregistre le VBARUN comme dernière commande. Par exemple, j'ai pensé que la liste des dernière commande se trouvait peut-être dans le registre, alors j'aurai crée une petit fonction pour le modifié, mais je n'ai rien trouvé. Mais peut-être autre chose qui pourrai m’éviter ces mismatch error, ce qui me ferait gagné beaucoup de temps pour me concentrer sur la conversion de toute le code vba...
  3. Bonjour, Voici mon problème. J'ai plein de macro VBA à exécuter directement depuis un bouton, ou depuis une dll (VB.net). La chose serait simple si je pouvais utilisé le Lisp, mais la contrainte est de NE PAS utiliser le Lisp. Et lorsque j’exécute ces macros, je n'arrive pas à faire que la commande soit la dernière exécutée et la répéter avec la touche "Enter". Dans un bouton d'une barre d'outil j'ai par exemple essayer ceci: ^C^C^P(vl-vbarun "FichierMacro.dvb!modCommande.SelectionClasseurDocument") "Structure";^P ou encore ^C^C^P-vbarun "FichierMacro.dvb!modCommande.SelectionClasseurDocument" "Structure";^P mais après avoir utilisé le bouton, la dernière commande que la touche "Enter" execute est seulement -VBARUN sans tout le reste et ceci dans les 2 cas... Donc je me suis tourner vers le .net, et crée une dll que je charge avec un script, au démarrage. Dans ma dll j'execute les macro de cett façons Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.Runtime Public Class MesCommandeAutoCAD <CommandMethod("SelectionClasseurDocument")> Public Sub SelectionClasseurDocument() Application.DocumentManager.MdiActiveDocument.SendStringToExecute("-Vbarun ""FichierMacro.dvb!modCommande.SelectionClasseurDocument"" ", True, False, False) End Sub End Class J'avais espère que la dernière commande utilisé serai la commande de la dll, cependant il n'en est rien, c'est le même problème qu'avec un bouton. C'est à nouveau le -VBARUN en solo qui est répété lorsque l'on presse la touche "Enter". Mais je me dis: Je suis en VB.net ! Et selon tout ce que je lis ci et là, c'est très puissant. Je pourrais par exemple ajouter un bout de code pour réécrire cette liste des dernières commandes utilisés ? Ou peut-être existe-il une variable, un paramètre ? ou alors encore une autre méthode pour exécuter du VBA depuis le .net ? Et voila la raison de ce poste, je cherche, mais je n'ai pas trouvé, alors je vous demande de l'aide, ou une piste à explorer. PS: au risque de me répéter, avec le Lisp je sais le faire, mais je dois le faire sans pour des raison indépendante de moi.
  4. MacStorm

    Lisp to vba

    Je prend un petit moment pour finaliser ce poste en y mettant le bout de code que j'ai utilisé en m'inspirant du (gile). J'ai eu quand même des difficultés avec la variable collection "Dim blockColl As AcadBlocks" que j'ai fin par court-circuité. Je n'ai pas trouver de référence fonctionnel dans les bibliothèques que j'utilise. Dim blockName As String Dim block As AcadBlock Dim description As Variant With ThisDrawing blockName = .GetVariable("USERS1") Set block = .Blocks.Item(blockName) description = block.Comments .SetVariable "USERS1", description End With Merci a tous et si cela peut servir à d'autre, j'en serai content.
  5. MacStorm

    Lisp to vba

    Merci pour vos explications... Et si je code encore en VBA, c'est parce que je doit faire tourner un prog qui a suivie les évolution d'autocad depuis les début du VBA dans autocad. Le prog est très gros, et avec le temps il est devenu très complexe.Il fait appel à du lisp pendant des exécutions du VBA, et ça fonctionnait bien jusqu’à la version 2013 d'autocad... Ensuite, avec les version 64bit l'on m'a demander d'adapter ce code, mais je n'ai pas le temps de tout convertir en vb.net. Donc je supprime tout les appelles au lisp dans le code vba pour commencer. Car le VBA et le lisp se marche dessus en 64bit et provoque des erreurs.Ceci m'a déjà permis de supprimer beaucoup de "missmatch error"... Quand j'aurais le temps, je ferai la conversion du vba au .net, mais pour l'heure je part au plus urgent qui est de faire tourner les fonctions principale du programme. Bref, quand je me relie, je sais pas si j'ai été très claire dans mes explications. Mais quoiqu'il en soit, je n'ai d'autre choix que de faire du VBA pour le moment... Et vos explications vont me faire gagner du temps, surtout dans mes recherche de conversion... Merci à vous deux
  6. MacStorm

    Lisp to vba

    Bonjour Je cherche à comprendre cette ligne suivante: (setvar "USERS1" (cdr (assoc 4 (entget (tblobjname "block" (getvar "USERS1")))))) Cependant je ne connais pas, mais alors vraiment pas le lisp. J'ai regardé un peux tout se que je pouvais trouver sur le lisp, et j'arrive, pour des expression simple, à me faire un équivalent en vba. Même si j'ai galéré pour comprendre certain site en anglais, alors que je ne parle que le français. Cependant, pour cette dernière, je n'arrive pas à la comprendre, et je n'arrive pas a me faire un code vba équivalent. Si une âme charitable pouvais me l'expliquer afin que je puisse me la codé en vba, ce serai très gentil. A bientôt...
×
×
  • 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é