Excoffon Posté(e) le 22 juin 2023 Posté(e) le 22 juin 2023 Bonjour, Je cherche le moyen de lancer une procédure en Lisp qui s'exécuterait automatiquement sur tous les Dwg ouverts dans la même session AutoCad. J'ai réussi à le faire en lui demandant de dessiner un cercle, mais dès qu'il s'agit d'une sous-procédure plus complexe, elle ne l'exécute que sur le Dwg à partir de laquelle je la lance. Je charge le Lisp compilé (.fas) à l'ouverture d'AutoCad pour qu'il soit reconnu par tous les Dwg. Quelqu'un aurait-il une solution ? Merci.
x_all Posté(e) le 23 juin 2023 Posté(e) le 23 juin 2023 https://www.caderix.com/journal/spip.php?article419 je traine plus sur le forum, peut être le projet et il encore maintenu? l'idée c'est de faire un script qui lance ton list, superautoscript te lance le script et sauve le dessin quelques trucs sur autocad
La Lozère Posté(e) le 23 juin 2023 Posté(e) le 23 juin 2023 Bonjour, @x_all, SuperAutoScript fonction très bien (magnifique outil au passage. Merci @Eric), mais il ne répond pas à la demande. Au lancement de superautoscript, celui-ci ouvre une session autocad, et ouvre chaque fichier listé pour y appliquer un script et le referme avant de passer au suivant. Une fois tous les fichiers traité, Autocad est fermé. @Excoffon demande l'application d'un lisp pour chaque fichiers ouvert dans sa cession Autocad. Mais j'en conviens, peut-être cela peut-il être une alternative. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
Excoffon Posté(e) le 23 juin 2023 Auteur Posté(e) le 23 juin 2023 Bonjour, j'ai déjà regardé avec SuperAutoScript, et effectivement, cela fonctionne très bien avec un programme qui ne nécessite pas l'intervention de l'utilisateur, comme Purger le plan. A priori, dès que le programme Lisp demande de pointer un point ou de saisir une valeur, il s'interrompt au 1er plan ouvert.
Fraid Posté(e) le 23 juin 2023 Posté(e) le 23 juin 2023 Bonjour, SuperAutoScript est aussi pour moi une bonne solution. Il n'est pas possible d'exécuter un lisp en allant de dessin en dessin (ou difficilement...). Avec un langage externe oui, mais cela provoque des problèmes de synchronisations avec des plans lourds. Par contre si tu ferme tes dessins, il existe plusieurs solutions pour les traiter. Fait une recherche avec ObjectDBX, si ta as programmé uniquement en Visual lisp. Sinon, tu peux aussi lancer ton lisp a l'ouverture de tes dessins. Tu as juste à ajouter à la fin de ton lisp (c:mon_lisp) Tu ouvres les dessins que tu veux traiter, le lisp s'execute à l'ouverture. Une fois fait, tu met un ; devant ton lanceur. https://github.com/Fraiddd
Fraid Posté(e) le 23 juin 2023 Posté(e) le 23 juin 2023 Citation dès que le programme Lisp demande de pointer un point ou de saisir une valeur, il s'interrompt au 1er plan ouvert Développer normal, on ne peux pas traiter plusieurs fichiers si il y une intervention de l'utilisateur. https://github.com/Fraiddd
La Lozère Posté(e) le 23 juin 2023 Posté(e) le 23 juin 2023 Le 23/06/2023 à 07:02, Excoffon a dit : Bonjour, j'ai déjà regardé avec SuperAutoScript, et effectivement, cela fonctionne très bien avec un programme qui ne nécessite pas l'intervention de l'utilisateur, comme Purger le plan. A priori, dès que le programme Lisp demande de pointer un point ou de saisir une valeur, il s'interrompt au 1er plan ouvert. Développer Effectivement, ce n'est pas possible. Avec SuperAutoScript, tu lances la séquence, et tu vas boire un café. Car la seule chose qu'on reprocher à SuperAutoScript, c'est qu'il ne s'exécute pas en tache de fond. J'ai déjà eu à l'utiliser sur plusieurs 10aines de fichiers en même temps, mon PC été neutralisé pendant de longue minutes. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
Excoffon Posté(e) le 23 juin 2023 Auteur Posté(e) le 23 juin 2023 Merci à tous pour vos réponses. J'ai également créé un script sur le principe de celui généré par SAS, mais j'ai l'impression que je n'ai pas de solution réelle à mon pb. En fait, le pb principal, c'est de basculer automatiquement dans le deuxième plan ouvert lorsque le programme a terminé son travail sur le premier. J'ai essayé avec Vla-Activate, mais ça bloque aussi. Mon Lisp de lancement est bien chargé avec AutoCad pour être reconnue à chaque ouverture de plan.
Fraid Posté(e) le 23 juin 2023 Posté(e) le 23 juin 2023 Citation le pb principal, c'est de basculer automatiquement dans le deuxième plan ouvert Développer Un programme Autolisp s'execute dans un dessin. Je ne connais pas de moyens pour le faire continuer dans un autre. Pourquoi veux tu absolument ouvrir tes dessins? Et dans l'absolu, tu lance ton lisp dans chaque dessin, puisqu'ils sont ouvert. Peut être serions nous plus apte à t'aider si tu nous disais ce que tu fait avec ton lisp. https://github.com/Fraiddd
Excoffon Posté(e) le 23 juin 2023 Auteur Posté(e) le 23 juin 2023 C'est une grosse application développée en Lisp sous AutoCad et qu'un client m'a demandé de porter sous ZwCad. De multiples fonctions existent pour automatiser différentes tâches sur des dessins existants (insertion automatiques de blocs, manipulations de calques, création de présentations, Impressions, sélection d'objets identiques pour les changer de calque ou les supprimer ...). Chacune de ces fonctions se lance avec un raccourci dans le plan courant. Mais lorsque plusieurs plans sont ouverts, les utilisateurs souhaitent qu'elles s'exécutent dans tous les plans. Jusqu'ici, ils avaient une commande qui déclenche l'effet de boucle. Celle-ci a été développée en langage C, il y a pas mal d'années et elle ne fonctionne plus, mais ils n'ont plus les programmes sources. Une fois activée, elle demande la saisie de la fonction à utiliser. J'espère avoir été assez clair dans mes explications.
Excoffon Posté(e) le 23 juin 2023 Auteur Posté(e) le 23 juin 2023 Je précise également que les programmes Lisp sont compilés en .Fas et chargés au lancement d'AutoCad dans AutoCAD.Lsp, donc utilisables dans tous les plans ouverts.
Fraid Posté(e) le 23 juin 2023 Posté(e) le 23 juin 2023 Citation en langage C Développer C'est bien se que je disais plus haut, c'est possible avec un langage externe. Le C, c'est compliqué, mais tu dois pouvoir le faire en VBA, Javasript ou en Python, en .net aussi mais pas facile non plus. Après, vouloir tout faire avec un seul programme, quand celui ci ne fonctionne plus, plus rien fonctionne. Je te conseil de partitionner tes lisps, c'est plus facile à maintenir. https://github.com/Fraiddd
Excoffon Posté(e) le 23 juin 2023 Auteur Posté(e) le 23 juin 2023 Les Lisp sont partitionnés en une vingtaine de fichiers. L'ensemble de l'application fait plus de 50000 lignes de code.
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