Aller au contenu

- Transformer en série des calques en wbloc


Messages recommandés

Posté(e)

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.

Posté(e)

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

Posté(e)

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

 

Posté(e)

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

Posté(e)

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

Posté(e)

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 "

Posté(e)

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

Posté(e)

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 "

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é