Aller au contenu

pour trouver un calque quand ya plein de présentation


Messages recommandés

Posté(e)

Hello

 

Effacer un calque quand mon fichier comporte l'espace objet et qu'une ou deux présentation, ça va.

 

généralement j'active et je dégelle tous les calques et j'utilise la selection rapide, et je fini par trouver les objets sur les calques ciblés (qu'ils soient ou non imbriqué ou dans un bloc ...)

 

Par contre quand dans un fichier j'ai 40 présentations, là ça se complique, avec ma méthode faudrait les passer en revue 1 à 1 : Arf !

 

Existe il une astuce, qui permettrait de connaitre les objets qui sont sur un calque et qui indiquerait sur quelle présentation ils se trouvent ?

Posté(e)

Bonjour,

 

Existe il une astuce, qui permettrait de connaitre les objets qui sont sur un calque et qui indiquerait sur quelle présentation ils se trouvent ?

 

Avec ceci et l'aimable participation de (gile)

 

; str2lst
;; Transforme un chaine avec séparateur en liste de chaines
;;
;; Arguments
;; str : la chaine à transformer en liste
;; sep : le séparateur
;;
;; Exemples
;; (str2lst "a b c" " ") -> ("a" "b" "c")
;; (str2lst "1,2,3" ",") -> ("1" "2" "3")
(defun str2lst (str sep / pos)
 (if (setq pos (vl-string-search sep str))
   (cons
     (substr str 1 pos)
     (str2lst (substr str (+ (strlen sep) pos 1)) sep)
   )
   (list str)
 )
)
;; ListBox (gile)
;; Boite de dialogue permettant un ou plusieurs choix dans une liste
;;
;; Arguments
;; title : le titre de la boite de dialogue (chaîne)
;; msg ; message (chaîne), "" ou nil pour aucun
;; keylab : une liste d'association du type ((key1 . label1) (key2 . label2) ...)
;; flag : 0 = liste déroulante
;; 1 = liste choix unique
;; 2 = liste choix multipes
;;
;; Retour : la clé de l'option (flag = 0 ou 1) ou la liste des clés des options (flag = 2)
;;
;; Exemple d'utilisation
;; (listbox "Présentation" "Choisir une présentation" (mapcar 'cons (layoutlist) (layoutlist)) 1)
(defun ListBox (title msg keylab flag / tmp file dcl_id choice)
 (setq
   tmp (vl-filename-mktemp "tmp.dcl")
   file (open tmp "w")
 )
 (write-line
   (strcat "ListBox:dialog{label=\"" title "\";")
   file
 )
 (if (and msg (/= msg ""))
   (write-line (strcat ":text{label=\"" msg "\";}") file)
 )
 (write-line
   (cond
     ((= 0 flag) "spacer;:popup_list{key=\"lst\";")
     ((= 1 flag) "spacer;:list_box{key=\"lst\";")
     (T "spacer;:list_box{key=\"lst\";multiple_select=true;")
   )
   file
 )
 (write-line "}spacer;ok_cancel;}" file)
 (close file)
 (setq dcl_id (load_dialog tmp))
 (if (not (new_dialog "ListBox" dcl_id))
   (exit)
 )
 (start_list "lst")
 (mapcar 'add_list (mapcar 'cdr keylab))
 (end_list)
 (action_tile
   "accept"
   "(or (= (get_tile \"lst\") \"\")
     (if (= 2 flag)
       (progn
         (foreach n (str2lst (get_tile \"lst\") \" \")
           (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))
         )
         (setq choice (reverse choice))
       )
       (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab)))
     )
   )
   (done_dialog)"
 )
 (start_dialog)
 (unload_dialog dcl_id)
 (vl-file-delete tmp)
 choice
)
(defun c:Why_by_Layer ( / def_lay key lst_lay lay js n dxf_ent)
 (setq def_lay (tblnext "LAYER" T) key 0)
 (setq lst_lay (list (cons (itoa (setq key (1+ key))) (cdr (assoc 2 def_lay)))))
 (while (setq def_lay (tblnext "LAYER"))
   (setq lst_lay (cons (cons (itoa (setq key (1+ key))) (cdr (assoc 2 def_lay))) lst_lay))
 )
 (setq lay (listbox "Calques existants" "Choisir les calques à supprimer" lst_lay 2))
 (foreach el lay
   (setq js (ssget "_X" (list (cons 8 (cdr (assoc el lst_lay))))))
   (if js
     (repeat (setq n (sslength js))
       (setq dxf_ent (entget (ssname js (setq n (1- n)))))
       (princ
         (strcat
           "\nL'objet " (cdr (assoc 0 dxf_ent))
           " est sur le calque " (cdr (assoc 8 dxf_ent))
           " et dans la présentation " (cdr (assoc 410 dxf_ent))
         )
       )
     )
   )
 )
 (prin1)
)

 

Tu as la possibilité de sélectionner plusieurs calques avec "Maj/Shift" dans la boite de dialogue.

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

Posté(e)

Hello

 

Merci bcp.

Moi qui n'a encore jamais utilisé une routine lisp, cela va me faire une bonne intro sur le sujet. Le temps que je m'y retrouve et vous retourne mon appréciation.

Posté(e)

Avec ceci et l'aimable participation de (gile)

Tu as la possibilité de sélectionner plusieurs calques avec "Maj/Shift" dans la boite de dialogue.

Bonjour,

si tu me permet j'ai une petite remarque : la boite de dialogue qui s'ouvre est trop petite, je n'arrive pas a distinguer les calques !!!

Y-t-il moyen de l’agrandir ?

 

Bon je l'ai quand même essayé et ça ma donné comme seul résultat dans la fenêtre texte :

L'objet LWPOLYLINE est sur le calque BUS COULOIR et dans la présentation Model

L'objet MTEXT est sur le calque BUS COULOIR et dans la présentation Model

L'objet LWPOLYLINE est sur le calque BUS COULOIR et dans la présentation Model

 

Quel est le but de ton lisp ?

Répond-il à la demande de zou ?

 

Existe il une astuce, qui permettrait de connaitre les objets qui sont sur un calque et qui indiquerait sur quelle présentation ils se trouvent ?

 

Merci d'avance pour tes explications

 

Salvatore

" 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é