Aller au contenu

cherche ordre d\'affichage des calques


Moon_LS

Messages recommandés

Bonjour!

 

Voila je viens d'avoir Autocad2006 et je voudrai savoir si il existe un gestionnaire qui permet de placer les calques dans un certain ordre d'affichage (option impossible a faire sous 2004 sous lequel je travaillé précédemment).

 

Merci d'avance!!

 

 

Lien vers le commentaire
Partager sur d’autres sites

L'ordre d'affichage des calques faisait partie des voeux de l'AUGI pour AutoCAD 2007.

Mais n'est pas d'actualité.

 

L'ordre d'affichage des noms de calques est alphabétique jusqu'à la quantité gérée par MAXSORT dans la liste déroulante.

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

J'ai bien essayé de pondre un lisp couplé à un DCL pour faire ce genre d'action.

 

Je livre le code, à essayer pour voir si cela convient. Mais je reconnais qu'il n'est pas très aisé d'utilisation et que ce n'est qu'une ébauche (qui à l'air de fonctionner, avec réserve) ;)

 

Jamais testé sous 2006, et je ne sais pas si j'irais plus loin dans la réflexion du développement.

 

Fichier ordrecalque.lsp

(defun ordclqerr (ch)
(cond
	((eq ch "Function cancelled") nil)
	((eq ch "quit / exit abort") nil)
	((eq ch "console break") nil)
	(T (princ ch))
)
(command "_.undo" "_end")
(if (<= sv_und 3) (command "_.undo" "_control" "_one"))
(command "_.undo" "1")
(setq *error* olderr)
(setvar "cmdecho" 1)
(princ)
)
(defun lst2listbox ( lststr lstbox / )
(start_list lstbox)
(mapcar 'add_list lststr)
(end_list)
)
(defun lay_add ( lstlay lstlf / lstnum)
(setq lstnum (read (strcat "(" (get_tile "lst_all_lay") ")")))
(foreach num lstnum
	(if (not (member (nth num lstlay) lstlf))
		(setq lstlf (cons (nth num lstlay) lstlf))
	)
)
(lst2listbox lstlf "lst_sel_lay")
lstlf
)
(defun lay_sub ( lstlf / lstnum lstote)
(setq lstnum (read (strcat "(" (get_tile "lst_sel_lay") ")")))
(setq lstote (mapcar '(lambda (num) (nth num lstlf)) lstnum))
(foreach layername lstote
	(setq lstlf
		(append (reverse (cdr (member layername (reverse lstlf))))
			(cdr (member layername lstlf))
		)
	)
)
(lst2listbox lstlf "lst_sel_lay")
lstlf
)
(defun makelaylists (/ layname ss cvpname xdlist vpldata sortlist name templist)
(if (= (setq tilemode (getvar "tilemode")) 0)
	(progn
		(setq ss
			(ssget "_x"
				(list (cons 0 "VIEWPORT")
					(cons 69 (getvar "CVPORT"))
				)
			)
		) 
		(setq cvpname (ssname ss 0))
		(setq xdlist (assoc -3 (entget cvpname '("acad"))))
		(setq vpldata (cdadr xdlist))
	)
)
(setq sortlist nil)
(setq templist (tblnext "LAYER" T))
(while templist
	(setq name (cdr (assoc 2 templist)))
	(setq sortlist (cons name sortlist))
	(setq templist (tblnext "LAYER"))
) 
(if (>= (getvar "maxsort") (length sortlist))
	(setq sortlist (acad_strlsort sortlist))
	(setq sortlist (reverse sortlist))
)
)
(defun c:ordrecalque ( / sv_und olderr dcl_id lstlay lstlf t_xwt ok_cmd lst_order file_o)
(setvar "CMDECHO" 0)
(if (<= (setq sv_und (getvar "undoctl")) 3)
	(command "_.undo" "_control" "_all")
)
(command "_.undo" "_group")
(setq olderr *error* *error* ordclqerr)
(setq dcl_id (load_dialog "ordrecalque.dcl"))
(if (new_dialog "ordrecalque" dcl_id)
	(progn
		(setq lstlay (makelaylists) lstlf '())
		(lst2listbox lstlay "lst_all_lay")
		(lst2listbox lstlf "lst_sel_lay")
		(action_tile "pick_add" "(setq lstlf (lay_add lstlay lstlf))")
		(action_tile "pick_sub" "(setq lstlf (lay_sub lstlf))")
		(action_tile "xwt_frt" "(setq t_xwt $value)")
		(action_tile "accept" "(done_dialog 1)")
		(setq ok_cmd (start_dialog))
		(if (= ok_cmd 1)
			(setq lst_order lstlf)
		)
	)
)
(cond
	(lst_order
		(setq file_o (open (strcat (getvar "TEMPPREFIX") "$ordrecalque.txt") "w"))
		(if t_xwt (write-line "T" file_o) (write-line "nil" file_o))
		(foreach n lst_order (write-line n file_o))
		(close file_o)
	)
	(T (princ "\nLa commande a échouée."))
)
(command "_.undo" "_end")
(if (<= sv_und 3) (command "_.undo" "_control" "_one"))
(command "_.undo" "1")
(setq *error* olderr)
(if (not go_ordlay) (load "go_ordlay.lsp"))
(go_ordlay)
(setvar "CMDECHO" 1)
(princ)
)

fichier go_ordlay.lsp

(defun go_ordlay ( / file_o file_ini lay lst_order t_xwt dxf_67 js)
(cond
	((findfile (setq file_o (strcat (getvar "TEMPPREFIX") "$ordrecalque.txt")))
		(setq file_ini (open file_o "r") lst_order (list))
		(while (setq lay (read-line file_ini))
			(setq lst_order (cons lay lst_order))
		)
		(if (read (car lst_order))
			(setq t_xwt T)
			(setq t_xwt nil)
		)
		(close file_ini)
		(if (eq (getvar "CVPORT") 1)
			(setq dxf_67 '(67 . 1))
			(setq dxf_67 '(67 . 0))
		)
		(while lst_order
			(setq js (ssget "_X" (list dxf_67 (cons 8 (car  lst_order)))))
			(if (not (null js))
				(progn
					(sssetfirst nil js)
					(ai_draworder "_front")
				)
			)
			(setq lst_order (cdr lst_order))
		)
		(cond
			(t_xwt
				(setq js (ssget "_X" (list dxf_67 '(0 . "WIPEOUT"))))
				(if (not (null js))
					(progn
						(sssetfirst nil js)
						(ai_draworder "_front")
					)
				)
				(setq js (ssget "_X" (list dxf_67 '(0 . "TEXT"))))
				(if (not (null js))
					(progn
						(sssetfirst nil js)
						(ai_draworder "_front")
					)
				)
				(setq js (ssget "_X" (list dxf_67 '(0 . "MTEXT"))))
				(if (not (null js))
					(progn
						(sssetfirst nil js)
						(ai_draworder "_front")
					)
				)
			)
		)
	)
	(T (princ "\nIl n'y a pas de liste de calques."))
)
(prin1)
)

 

fichier ordrecalque.dcl

ordrecalque : dialog {
 label= "Sélection des calques à ordonner pour l'affichage";
 : column {
   : row {
     : list_box {
       label = "Liste des Calques";
       key = "lst_all_lay";
       width = 25;
       multiple_select = true;
     }
     : column {
         fixed_height = true;
         : button {key = "pick_add"; label = ">";}
         : button {key = "pick_sub"; label = "<";}
     }
     : list_box {
       label = "Calques ordonnés à sousmettre";
       key = "lst_sel_lay";
       width = 25;
       multiple_select = true;
     }
     : column {
       :text {
  label = "Priorité +";
       }
       :text {
  label = "Priorité -";
       }
     }
   }
   : toggle {
label    = "Placer les Textes et Masques au dessus de tout en dernier";
mnemonic = "T";
key      = "xwt_frt";
   }
   ok_cancel;
 }
}

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é