Aller au contenu

Splitter un dwg [RESOLU]


Messages recommandés

Posté(e)

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

Posté(e)

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

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é