Aller au contenu

[Résolu] Décomposer un bloc dans son calque d'insertion


DenisHen

Messages recommandés

Bonjour à la communauté...

 

Aujourd'hui, j'ai un petit souci avec des blocs... J'ai plusieurs fois le même bloc insérer dans différents calques.

 

Mon client, ne voulant pas de blocs dans le dessin, me demande de les décomposer dans leur "niveau" (je subodore qu'il a MicroStation) respectif.

 

J'ai tenté de faire un LISP, mais je n'y arrive pas, trop complexe pour moi. Il m'est donc venu l'idée que ce LISP existe peut-être déjà...

 

Donc, si quelqu'un a ça sous le coude, je suis preneur...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

bonjour

contenu annulé (reponse de base avec un lisp non complet)

 

rajout pour le fun à 13h10

(defun c:boumtran(/ i i2); expose avec transfer vers calque courant et couleur 
 (setq i2 0)
 (setq sel1 (ssget))
  (repeat (sslength sel1)
 (setq ert (ssname sel1 i2)) 
(command "_explode" ert)
 (setq sel (ssget "_P"))
 (setq i 0)
(setq cal (getvar "clayer"))
(repeat (sslength sel)
 (setq er0 (ssname sel i))
 
(setq er2 (entget er0) )

(setq er2 (subst (cons 8 cal) (assoc 8 er2) er2));;calque
(if (= nil (assoc 62 er2))(setq er2 (append er2 (list (cons 62 256))))
				   (setq er2 (subst (cons 62 256) (assoc 62 er2) er2))
		)

(entmod er2)
(setq i (+ 1 i) )
 )
 (setq i2 (+ 1 i2) ) )
(princ)
)

Modifié par sbosarl
Lien vers le commentaire
Partager sur d’autres sites

hello

voici ce que j'ai en stock

++

;; usegomme 08-09-2008

;; decompose en concervant le calque de l'objet

;; et concerve les calques internes au bloc autre que 0

(defun c:dec (/ js ent lent  typent ss ca ca0 ca2 i1 i2)

 (setvar "cmdecho" 0)

 (setq ca0 (cdr (assoc 70 (tblsearch "layer" "0"))))

 (if (>= ca0 4)(command "_layer" "_u" "0" ""))

 (setq js (ssget))

 (setq i1 0)

 (repeat (sslength js)

   (setq ent (ssname js i1))

   (setq lent (entget ent))

   (setq typent (cdr (assoc 0 lent)))

   (setq ca (cdr (assoc 8 lent))) 

   (command "_explode" ent)

   (if (not (zerop (getvar "cmdactive")))(command))   

   (if (and (setq ss (ssget "p"))(/= typent "3DSOLID")

     (/= typent "SURFACE")(/= typent "REGION"))

     (progn

       (setq i2 0)

       (repeat (sslength ss)

         (setq ent (ssname ss i2))


        (setq ca2 (cdr (assoc 8 (entget ent))))

        (if ( = ca2 "0")

         (command "_change" ent "" "_p" "_layer" ca "") 

           )       

         (setq i2 (1+ i2))   

       )

     )

   )

   (setq i1 (1+ i1))

 )

 (if (>= ca0 4)(command "_layer" "_lo" "0" "")) 

 (setvar "cmdecho" 1)

 (princ)

) 

Projeteur Revit Indépendant - traitement des eaux/CVC

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, et merci à vous de m'aider...

 

@didier : merci, je ne connaissais pas cette commande. Je m'en vais la tester.

 

@sbosarl : merci pour le code, mais il ne décompose pas tous les blocs et ne place pas toutes les entités des blocs décomposés dans le bon calque.

 

Pour mon LISP, je pensais sélectionner tout les blocs, les redéfinir un par un dans le calque de leur insertion puis décomposer ce bloc, et ensuite, passer au bloc suivant...

 

Mais c'est au niveau de la redéfinition des entités composant les blocs que je n'arrive pas à définir dans le bon calque...

 

Mais grâce à didier, ce n'est plus la peine de me casser la tête...

 

Encore merci...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

@philsogood : merci, it's so good, ça fait exactement ce que je cherche... Mais je ne comprend pas beaucoup ton LISP...

 

Encore merci à vous...

 

EDIT : je comprend un peu mieux, ça ne fonctionne pas que pour les blocs...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

il y a aussi la commande BURST du menu express

 

Elle décompose les blocs sans les changer de calques (accessoirement elle décompose les blocs avec attributs en convertissant les valeurs d'attributs en texte)

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

pourquoi programmer quand ça existe en natif ?

 

commande XPLODE option cAlque

par contre il est possible d'avoir à isoler les calques..

 

amicalement

 

Salut Didier,

 

En fait, avec la commande XPLODE, lorsqu'on choisi l'option "cAlque" les objets restent bien sur le calque où a été inséré le bloc mais les objets reprennent leur couleur initiale. De ce fait, si lors de la création du bloc, les objets ont été mis en DUBLOC, DUBLOC, DUBLOC, les objets redeviennent en couleur DUBLOC tout en restant sur le calque d'insertion du bloc.

 

Toutefois, si on prend l'option "Hérite du bloc parent", la couleur des objets conserve la couleur du calque sur lequel a été inséré le bloc.

 

Amitié wink.gif

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Le lisp proposé par Philsogood à le même effet que Xplode avec l'option "cAlque".

Si les objets de base sont en couleur DUBLOC, ceux-ci restent bien sur le calque où a été insérer le bloc mais ils ne conservent pas la couleur du calque où a été insérer le bloc.

 

Le mieux reste la commande des Express Tools comme l'a proposé neptune38.

Lorsque le bloc est décomposé, les objets restent sur le calque où a été inséré le bloc mais ils conservent aussi la couleur du calque.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

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é