jot002 Posté(e) le 24 mars 2006 Posté(e) le 24 mars 2006 Bonjour, J'ai un dessin Autocad 2004 . dwg avec de nombreux calques. J'aimerai faire de chacun de ceux-ci un dessin individuel. Je sais que par le moyen du wbloc on peut y arriver.Mais comment le faire en série car j'ai de nombreux calques. Merci pour les conseils.
bonuscad Posté(e) le 24 mars 2006 Posté(e) le 24 mars 2006 Essayes ceci ! ((lambda ( / def_lay nam_lay js) (setq def_lay (tblnext "LAYER" T)) (setq nam_lay (cdr (assoc 2 def_lay))) (cond ((setq js (ssget "_X" (list (cons 8 nam_lay)))) (command "_.-wblock" (strcat (getvar "dwgname") "$" nam_lay) "" "*0.0,0.0,0.0" js "") ) ) (while (setq def_lay (tblnext "LAYER")) (setq nam_lay (cdr (assoc 2 def_lay))) (cond ((setq js (ssget "_X" (list (cons 8 nam_lay)))) (command "_.-wblock" (strcat (getvar "dwgname") "$" nam_lay) "" "*0.0,0.0,0.0" js "") ) ) ) (prin1) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fabcad Posté(e) le 24 mars 2006 Posté(e) le 24 mars 2006 ou ceci (defun c:layers-to-wblocs (/ first unplan i lg-list-layers fichier js layer rep-cou lesplan)(setvar "filedia" 0)(setvar "cmddia" 0)(setvar "cmdecho" 0)(command "-calque" "ACtif" "*" "Libérer" "*" "Déverrouiller" "*" "")(setq rep-cou (getvar "DWGPREFIX"))(setq first T)(while (setq unplan (tblnext "layer" first)) (setq first nil) (setq lesplan (append lesplan (list (cdr (assoc 2 unplan))))));fin while(setq lg-list-layers (length lesplan))(setq i 0)(while (< i lg-list-layers) (setq layer (nth i lesplan)) (setq filtre (list (cons 8 layer))) (setq js (ssget "X" filtre)) (setq fichier (strcat rep-cou layer)) (command "-wbloc" fichier "" "0,0" js "")(setq i (+ i 1)));fin while(princ)(setvar "filedia" 1)(setvar "cmddia" 1)(setvar "cmdecho" 1));fin defun
bonuscad Posté(e) le 24 mars 2006 Posté(e) le 24 mars 2006 Fabcad a pris la précaution de mettre les calques actif liberé et déverrouillé.Chose que je n'ai point faite :( Mais il est facile de le rajouter :exclam: Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 24 mars 2006 Posté(e) le 24 mars 2006 Il me semble qu'il est juste nécessaire de dévérouiller tous les calques (ssget "_X") agit sur les calques inactifs et gelés, c'est (ssget "_A") qui ne sélectionne pas les calques gelés (mais sélectionne les calque inactifs) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
salvanorigatore Posté(e) le 28 mars 2006 Posté(e) le 28 mars 2006 Bonjour,Est ce que on peut faire la même chose mais avec la possibilité de choisir le ou les calques qu’on veut traiter ?Merci par avance. ;) " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
(gile) Posté(e) le 28 mars 2006 Posté(e) le 28 mars 2006 En sélectionnant un objet sur le (ou les) calque(s) à traiter : (defun c:lay2wbl (/ echo lay_ss lay_name lay_lst ent_ss) (setq echo (getvar "cmdecho")) (setvar "cmdecho" 0) (prompt "\nSelectionnez les calques.") (setq lay_ss (ssget)) (repeat (setq ct (sslength lay_ss)) (setq lay_name (cdr (assoc 8 (entget (ssname lay_ss (setq ct (1- ct)))))) ) (if (not (member lay_name lay_lst)) (setq lay_lst (cons lay_name lay_lst)) ) ) (mapcar '(lambda (x) (command "_.-layer" "_unlock" x "") (cond ((setq ent_ss (ssget "_X" (list (cons 8 x)))) (if (not (findfile (strcat (getvar "dwgname") "$" x ".dwg"))) (command "_.-wblock" (strcat (getvar "dwgname") "$" x) "" "*0.0,0.0,0.0" ent_ss "" ) ) ) ) ) lay_lst ) (setvar "cmdecho" echo) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
salvanorigatore Posté(e) le 29 mars 2006 Posté(e) le 29 mars 2006 Bonjour,Merci (gile) c’est exactement ce qu’il me fallait, impeccable. :D P.S. Merci aussi a bonuscad et Fabcad. Bonne journée à tous. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
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