mouais.mouais Posté(e) le 7 février 2008 Posté(e) le 7 février 2008 Bonjour, J'ai une macro qui me permet d'insérer un bloc avec une répétition * : la commande est répétée jusqu'à ce que l'utilisateur appuie sur Echap. *^C^C-INSERER;MON_NOM_DE_BLOC;E;1;R;0; Le problème, c'est que si le bloc n'existe pas dans le dessin, autocad indique qu'il n'a pas trouvé le bloc et la commande recommence en boucle. Et il est impossible de l'arrêter (Ctrl-C ou Echap ne répondent pas) Bilan, on est obligé de tuer autocad (à moins que l'on ait défini BARRESTACHES à 1 et que l'on appuie sur Alt-Tab).Attention, pour tuer Autocad, il faut préalablement réduire la fenêtre avec les touches Windows-M (je vous le dit parce si vous essayez, vous risquez d'être embêté). Comment pourrai-je faire pour stopper la macro ? Est-ce que INSERER peut retourner une info utilisable dans une expression conditionnelle ? Merci pour votre aide ! Thomas
(gile) Posté(e) le 7 février 2008 Posté(e) le 7 février 2008 Salut, Je ne suis pas sûr qu'on puisse tester la présence d'un bloc dans la collection en Macro/Diesel. Si tu es sur une version pleine, on peu faire ça en LISP, mais le plus simple est de mettre ton bloc (fichier créé avec WBLOC) dans un répertoire du chemin de recherche et il sera toujurs disponible. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 7 février 2008 Posté(e) le 7 février 2008 Salut Une astuce d'un vieux routier ;)Tu mets le chemin complet pour le nom du bloc. Par exemple*^c^c_.-insert;"c:/test/dwg/armoire/bobine/bob1.dwg";_s[i];[/i]1;_r;0; Si le bloc est existant dans le dessin, Autocad l'insère sans le redéfinir.S'il n'existe pas, il va le rechercher à l'emplacement désigné et l'insérer. ps :Le chemin complet peut-être mis avec des guillements afin de permettre les espaces dans les noms de répertoires et/ou fichiers.La version de la macro que je donne est le même que la tienne mais en langage international (cela permet d'être tranquille lors de changement de version et nos amis canadiens sont contents). _.-insert = .-inserer_s = scale = échelle_r = rotate = rotation @+ Edit : correction d'une faute d'orthographe [Edité le 7/2/2008 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 7 février 2008 Posté(e) le 7 février 2008 Peut être une ruse en employant la variable "INSNAME"En plus cela permettrait à la macro de fonctionner avec n'importe quel bloc (sans attribut et sans espace dans le nom) INSNAME contient le dernier nom utilisé ET valide de la commande INSERER. Ce qui pourrait donner: *^C^C_.-INSERT;$M=$(if,$(strlen,$(getvar,insname)),$(getvar,insname),$(eval,^C^C));/1;1;0; Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
mouais.mouais Posté(e) le 7 février 2008 Auteur Posté(e) le 7 février 2008 Merci, ça fonctionne parfaitement ! Thomas
bonuscad Posté(e) le 8 février 2008 Posté(e) le 8 février 2008 Ben, on saura jamais quelle solution a résolu ton problème :exclam: Le chemin complet ou l'usage de "insname".... Les LTésiens resteront sur leur faim. :mad: à moins que la précision soit apportée. :P Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
mouais.mouais Posté(e) le 8 février 2008 Auteur Posté(e) le 8 février 2008 Oups... Mille excuses, j'ai posté un peu vite. J'ai implémenté la solution de Patrick, qui remplit parfaitement son office. Et j'ai copié sur mon bureau la solution de Bonuscad pour l'analyser plus finement en temps perdu car il me faut comprendre les expressions LISP. Je ne connais que la signification de l'acronyme LISP :-), pas plus. Pour l'utilisation d'un langage structuré, je me suis contenté de VBA. Merci en tout cas ! Thomas
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