Aller au contenu

Création d\'un fichier bibliothèque à partir de plusieurs fichiers


Messages recommandés

Posté(e)

bonjour à tous,

 

après pas mal de recherche, je ne retrouve plus un Lisp qui permettait de mettre plusieurs fichiers .dwg .

 

Je m'explique :

 

Je possède un grande nombre de petit fichier ".dwg", et je souhaiterais n'en faire qu'un avec tous ses fichiers inséré en tant que bloc avec le nom du bloc correspondant au nom du fichier. Est-ce que vous savez où je peux trouver ça ?

 

par exemple

 

fichiers :

toto1.dwg

toto2.dwg

toto3.dwg

toto4.dwg

toto5.dwg

 

 

vers un fichier avec blocs

toto1

toto2

toto3

toto4

toto5

 

évidement il ne faut pas que les blocs soit les un sur les autres sinon ça perd de sont charmes

 

Posté(e)

Bonjour à toutes et tous,

 

 

Bienvenue tjrsNRV ,

 

Parles-tu de WXREF de (gile) ?

 

;; WXREF (gile)
;; Crée un nouveau fichier DWG avec les objets sélectionnés.
;; Supprime ces objets du dessin courant.
;; Insère le nouveau fichier comme référence externe.

(defun c:wxref
      (/ dcl_id loop prefix insBase ss basePt insPt insTyp filename unit lst opt xref)
 (vl-load-com)
 (defun *error* (msg)
   (or (= msg "Fonction annulée")
       (princ (strcat "\nErreur: " msg))
   )
   (and ss (vla-delete ss))
   (foreach l lst (vla-put-Lock l :vlax-true))
   (vla-EndUndoMark *acdoc*)
   (princ)
 )
 (or *acad* (setq *acad* (vlax-get-acad-object)))
 (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
 (setq dcl_id   (load_dialog "Wxref.dcl")
       loop     2
       prefix   (getvar 'dwgprefix)
       insBase  T
       basePt   '(0. 0. 0.)
       unit     (getvar 'insunits)
       filename (UnicFilename "XREF" prefix ".dwg")
 )
 (while (    (if (not (new_dialog "wxref" dcl_id))
     (exit)
   )
   (start_list "unit")
   (mapcar 'add_list
           '("Sans unités"     "Pouces"          "Pieds"
             "Miles"           "Millimètres"     "Centimètres"
             "Mètres"          "Kilomètres"      "Micropouces"
             "Milles"          "Yards"           "Angströms"
             "Nanomètres"      "Microns"         "Décimètres"
             "Décamètres"      "Hectomètres"     "Gigamètres"
             "Unités astronomiques"              "Parsecs"
            )
   )
   (end_list)
   (set_tile "unit" (itoa unit))
   (set_tile "filename" filename)
   (if ss
     (mode_tile "accept" 0)
     (mode_tile "accept" 1)
   )
   (if insBase
     (progn
       (set_tile "insBase" "1")
       (mode_tile "insPt" 1)
     )
     (progn
       (set_tile "insBase" "0")
       (mode_tile "insPt" 0)
     )
   )
   (set_tile "baseX" (rtos (car basePt)))
   (set_tile "baseY" (rtos (cadr basePt)))
   (set_tile "baseZ" (rtos (caddr basePt)))
   (if insBase
     (progn
       (set_tile "insX" (strcat "X : " (rtos (car basePt))))
       (set_tile "insY" (strcat "Y : " (rtos (cadr basePt))))
       (set_tile "insZ" (strcat "Z : " (rtos (caddr basePt))))
     )
   )
   (if (and insPt (not insBase))
     (progn
       (set_tile "insX" (strcat "X : " (rtos (car insPt))))
       (set_tile "insY" (strcat "Y : " (rtos (cadr insPt))))
       (set_tile "insZ" (strcat "Z : " (rtos (caddr insPt))))
     )
   )
   (action_tile "objSel" "(done_dialog 3)")
   (action_tile "basePt" "(done_dialog 4)")
   (action_tile
     "baseX"
     "(if (setq coord (distof $value))
       (progn
         (if basePt
           (setq basePt (list coord (cadr basePt) (caddr basePt)))
           (setq
             basePt
              (list coord (get_tile \"baseY\") (get_tile \"baseZ\"))
           )
         )
         (if insBase
           (set_tile \"insX\" (strcat \"X : \" $value))
         )
       )
       (progn
         (alert \"Nécéssite un nombre valide\")
         (mode_tile \"baseX\" 2)
       )
     )"
   )
   (action_tile
     "baseY"
     "(if (setq coord (distof $value))
       (progn
         (if basePt
           (setq basePt (list (car basePt) coord (caddr basePt)))
           (setq
             basePt
              (list (get_tile \"baseX\") coord (get_tile \"baseZ\"))
           )
         )
         (if insBase
           (set_tile \"insY\" (strcat \"Y : \" $value))
         )
       )
       (progn
         (alert \"Nécéssite un nombre valide\")
         (mode_tile \"baseY\" 2)
       )
     )"
   )
   (action_tile
     "baseZ"
     "(if (setq coord (distof $value))
       (progn
         (if basePt
           (setq basePt (list (car basePt) (cadr basePt) coord))
           (setq
             basePt
              (list (get_tile \"baseX\") (get_tile \"baseY\") coord)
           )
         )
         (if insBase
           (set_tile \"insZ\" (strcat \"Z : \" $value))
         )
       )
       (progn
         (alert \"Nécéssite un nombre valide\")
         (mode_tile \"baseZ\" 2)
       )
     )"
   )
   (action_tile
     "insBase"
     "(if (= $value \"1\")
       (progn
         (mode_tile \"insPt\" 1)
         (setq insBase T)
         (set_tile \"insX\" (strcat \"X : \" (rtos (car basePt))))
         (set_tile \"insY\" (strcat \"Y : \" (rtos (cadr basePt))))
         (set_tile \"insZ\" (strcat \"Z : \" (rtos (caddr basePt))))
       )
       (progn
         (mode_tile \"insPt\" 0)
         (setq insBase nil)
       )
     )"
   )
   (action_tile "insPt" "(done_dialog 5)")
   (action_tile
     "filename"
     "(if (and (findfile $value) (not (overwrite)))
       (mode_tile \"filename\" 2)
       (setq filename $value)
     )"
   )
   (action_tile "getfile" "(done_dialog 6)")
   (action_tile "unit" "(setq unit (atoi $value))")
   (action_tile
     "accept"
     "(if insBase
       (setq insPt basePt)
       (if (not insPt)
         (setq insPt (list
                       (atof (substr (get_tile \"insX\") 5))
                       (atof (substr (get_tile \"insY\") 5))
                       (atof (substr (get_tile \"insZ\") 5))
                     )
         )
       )
     )
     (if (= (get_tile \"attach\") \"1\")
       (setq opt :vlax-false)
       (setq opt :vlax-true)
     )
     (done_dialog 1)"
   )
   (action_tile "cancel" "(setq ss nil) (done_dialog 0)")
   (setq loop (start_dialog))
   (cond
     ((= loop 3)
      (setq ss (ssget ":L"))
     )
     ((= loop 4)
      (if (setq basePt (getpoint "\nSpécifiez le point de base: "))
        (setq basePt (trans basePt 1 0))
      )
     )
     ((= loop 5)
      (if (setq insPt (getpoint "\nSpécifiez le point d'insertion: "))
        (setq insPt (trans insPt 1 0))
      )
     )
     ((= loop 6)
      (setq filename (getfiled "Créer un fichier DWG" prefix "dwg" 1))
     )
   )
 )
 (unload_dialog dcl_id)
 (if ss
   (progn
     (vla-StartUndoMark *acdoc*)
     (setq ss (vla-get-ActiveSelectionSet *acdoc*))
     (vlax-for o ss
       (vla-Move o (vlax-3d-point basePt) (vlax-3d-point '(0. 0. 0.)))
     )
     (setq iunt (getvar 'insunits))
     (setvar 'insunits unit)
     (vla-Wblock *acdoc* filename ss)
     (setvar 'insunits iunt)
     (vlax-for o ss (vla-delete o))
     (vla-delete ss)
     (setq ss nil)
     (setq xref
            (vla-AttachExternalReference
              (vla-get-ModelSpace *acdoc*)
              filename
              (vl-filename-base filename)
              (vlax-3d-point insPt)
              1.
              1.
              1.
              0.
              opt
            )
     )
     (vla-EndUndoMark *acdoc*)
   )
 )
 (princ)
)

;;; UnicFileneme (gile)
;;; Retourne un chemin complet de fichier unique (incrémenté)
;;;
;;; arguments
;;; pat : modèle du nom de fichier (STR)
;;; dir : chemin du répertoire (STR)
;;; ext : extension (STR)

(defun UnicFilename (pat dir ext / ind res)
 (setq ind 0)
 (while (findfile
          (setq res (strcat dir
                          pat
                          (cond
                            ((                             ((                             (T "_")
                          )
                          (itoa (setq ind (1+ ind)))
                          ext
                  )
          )
        )
 )
 res
) 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

soit ce n'est pas ce que je cherche, soit j'arrive pas à le faire marcher :

 

Commande: WXREF

Erreur: quitter / sortir abandon

 

 

Il ne manquerais pas un DLC ?

 

sechanbask

Posté(e)

Re,

 

Il ne manquerais pas un DLC ?

 

Oups, :cool:

 

// Boite de dialogue Wref
wxref :dialog{
 label = "WXREF";
 :row{
   :boxed_column{
     label = "Source";
     :row{
       :button{label = ">>"; key = "objSel"; fixed_width = true;}
       :text{label = "Choix des objets";}
     }
     :boxed_column{
       label = "Point de base";
       :row{
         :button{label = ">>"; key = "basePt"; fixed_width = true;}
         :text{label = "Choisir un point";}
       }
       :edit_box{label = "X :"; key = "baseX";}
       :edit_box{label = "Y :"; key = "baseY";}
       :edit_box{label = "Z :"; key = "baseZ";}
     }
   }
   :boxed_column{
     label = "Insertion";
     :radio_row{
       :radio_button{label = "Attacher"; key = "attach"; value = "1";}
       :radio_button{label = "Superposer"; key = "overlay";}
     }
     :boxed_column{
       label = "Point d'insertion";
       :toggle{label = "Utiliser le point de base"; key = "insBase"; value = "1";}
       :row{
         :button{label = ">>"; key = "insPt"; fixed_width = true; is_enabled = false;}
         :text{label = "Choisir un point";}
       }
       :text{key = "insX";}
       :text{key = "insY";}
       :text{key = "insZ";}
     }
   }
 }
 :boxed_column{
   label = "Destination";
   :text{label = "Nom et chemin du fichier";}
   :row{
     :edit_box{key = "filename"; edit_width = 54;}
     :button{label = "..."; key = "getfile"; fixed_width = true;}
   }
   :popup_list{label = "Unité d'insertion"; key = "unit"; edit_width = 30;}
 }
 ok_cancel;
} 

 

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

merci mais effectivement, ça en correspond pas à ma demande.

 

Je ne souhaite pas faire u Xref avec des objets que je sélectionne dans autocad. Je souhaite insérer dans un fichier plusieurs fichier en tant que blocs.

Posté(e)

près de 1200 blocs ça risque d'être long...

Posté(e)
Je souhaite insérer dans un fichier plusieurs fichier en tant que blocs.

 

Cette réponse ? sur un sujet d'insertion en masse...

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

Posté(e)

Re,

 

Quel est vraiment ton but ?

 

En fonction, tu peux peut être utiliser le Désign Center pour créer une palette de ces 1200 blocs, et ensuite les glisser-déposer sur ton fichier synthèse ?

 

Mais ça risque d'être long aussi,...

 

Après, j'ai fait une biblio type mosaïque avec LibMenu et ça va bien (pas loin de 4000 fichiers),..

 

http://img.ahst.fr/data/images/bibliopers.jpg

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

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é