Aller au contenu

Splitter un dwg [RESOLU]


William44850

Messages recommandés

Bonjour,

Y a t'il un moyen rapide pour créer 1 fichier dwg par calque ?

Par exemple, j'ai un dwg composé de 3 calques (A, B et C) et je veux obtenir 1 dwg qui s'appelle A, 1 qui s'appelle B et enfin "C".

J'essaie aussi à partir de FME...et je ne trouve ni avec l'un ni avec l'autre.

Je vous remercie par avance

Lien vers le commentaire
Partager sur d’autres sites

Hello

SVP tu vas utiliser cette excellente routine "LayerToDwg_2" de notre Grand Maitre Gilles !

En plus elle te permet de choisir les Calques a traiter ... MERCI Gilles !

La Sante, Bye, lecrabe

PS: Routine tiree de mon stock de 3001 routines ...

 


;;
;; LAYERTODWG par GC (gile) version 2.0 pour Patrice B.
;;
;; Cree un fichier DWG pour chaque calque selectionne
;; 
;; Commande au clavier LAYERTODWG_2
;;
;; ATTENTION: svp verifier votre systeme d'unites
;; 

(defun c:LayerToDwg_2 (/ acdoc layers prefix name llst ss) 

  (vl-load-com)

  (setq acdoc  (vla-get-ActiveDocument (vlax-get-acad-object))
        layers (vla-get-Layers acdoc)
        prefix (getvar 'dwgprefix)
  )

  (vlax-for l layers
    (setq name (vla-get-Name l))
    (if (not (wcmatch name "*|*"))
      (setq llst (cons name llst))
    )
  )

  (setq llst (vl-sort llst '<)
        llst (ListBox "LayerToDwg"
                 "Selectionnez les calques a traiter "
                 (mapcar 'cons llst llst)
                 2
        )
  )

  (foreach name llst
    (if (ssget "_X" (list '(410 . "Model") (cons 8 name)))
      (progn
        (setq ss (vla-get-ActiveSelectionSet acdoc))
        (vla-Wblock acdoc (strcat prefix name ".dwg") ss)
        (vla-delete ss)
      )
    )
  )

  (princ)
)


;; ListBox par GC
;; 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 deroulante
;;        1 = liste choix unique
;;        2 = liste choix multipes
;;
;; Retour : la cle de l'option (flag = 0 ou 1) ou la liste des cles des options (flag = 2)
;;
;; Exemple d'utilisation
;; (listbox "Presentation" "Choisir une presentation" (mapcar 'cons (layoulist) (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
)

;; str2lst
;; Transforme un chaine avec separateur en liste de chaines
;;
;; Arguments
;; str : la chaine a transformer en liste
;; sep : le separateur
;;
;; Exemples
;; (str2lst "a b c" " ") -> ("a" "b" "c")
;; (str2lst "1,2,3" ",") -> ("1" "2" "3")
;; (mapcar 'read (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)
  )
)

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é