Aller au contenu

Programmes Lisp sur plusieurs plans ouverts


Excoffon

Messages recommandés

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.

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

 

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 3 minutes, 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.

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
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Citation

le pb principal, c'est de basculer automatiquement dans le deuxième plan ouvert

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

 

Lien vers le commentaire
Partager sur d’autres sites

Citation

en langage C

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.

 

Lien vers le commentaire
Partager sur d’autres sites

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é