DenisHen Posté(e) le 26 janvier 2017 Posté(e) le 26 janvier 2017 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)
didier Posté(e) le 26 janvier 2017 Posté(e) le 26 janvier 2017 Coucou pourquoi programmer quand ça existe en natif ? commande XPLODE option cAlquepar contre il est possible d'avoir à isoler les calques.. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
sbosarl Posté(e) le 26 janvier 2017 Posté(e) le 26 janvier 2017 (modifié) 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é le 26 janvier 2017 par sbosarl
philsogood Posté(e) le 26 janvier 2017 Posté(e) le 26 janvier 2017 hellovoici 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
DenisHen Posté(e) le 26 janvier 2017 Auteur Posté(e) le 26 janvier 2017 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)
DenisHen Posté(e) le 26 janvier 2017 Auteur Posté(e) le 26 janvier 2017 @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)
Raph_38 Posté(e) le 2 mars 2017 Posté(e) le 2 mars 2017 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 !
Steven Posté(e) le 2 mars 2017 Posté(e) le 2 mars 2017 Coucou pourquoi programmer quand ça existe en natif ? commande XPLODE option cAlquepar 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é 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.
Steven Posté(e) le 2 mars 2017 Posté(e) le 2 mars 2017 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.
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