Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 15/01/2012 dans Messages

  1. Salut, Ce que tu utilises est une macro de commande, pas un LISP. Dans ta macro c'est l'astérisque (*) qui définit les noms de bloc. L'astérisque est un caractère générique pour "tous". Si tu veux sélectionner tous les blocs dynamiques avec une macro, il faut remplacer l'astérisque par une chaîne entre guillemets contenant tous les noms dynamiques du dessin séparés par des virgules et ajouter : `*U* à la fin pour sélectionner aussi les blocs anonymes issus des blocs dynamiques : ssx;;b;"bloc1,bloc2,bloc3,`*U*";;xplode;p;;g;h; En LISP, on peut faire mieux : rendre les blocs dynamiques statiques sans les décomposer ce qui permet de conserver des blocs avec leurs éventuels attributs. C'est ce que fait la commande DYN2STAT ci-dessous. (defun c:dyn2stat (/ unic ss) (defun unic (name / n) (setq n 1) (while (tblsearch "block" (strcat name "_" (itoa n))) (setq n (1+ n)) ) (strcat name "_" (itoa n)) ) (if (ssget "_X" '((0 . "INSERT"))) (progn (setq n 0) (vlax-for b (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object) ) ) ) (if (= (vla-get-IsDynamicBlock B) :vlax-true) (vla-ConvertToStaticBlock b (unic (vla-get-EffectiveName B)) ) ) ) (vla-Delete ss) ) ) )
    1 point
×
×
  • 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é