Oli35 Posté(e) le 15 avril 2005 Posté(e) le 15 avril 2005 Bonjour à tous ! Avant un beau week-end ensoleillé, une petite question aux spécialistes ès routines : Y a-t-il un moyen d'extraire tous les blocs d'un fichier sans passer par la case wbloc, un peu contraignante ? Merci d'avance... Olivier
Tramber Posté(e) le 15 avril 2005 Posté(e) le 15 avril 2005 Avant qu'il y ait la moindre réponse basée sur du lisp : -i?ENTREE x2 tu obtiens la liste des blocs. copier-coller dans Excel et c'est parti pour un script du genre : -w nom1 = -w nom2 = -w nom3 = -w nom4 = Plusieurs inconvénients :FILEDIA doit être à zéroOn suppose que le répertoire par défaut est vide de ces blocs, moyennant quoi il ne demande pas si on veut écraser la définition et n'interromps pas le script. L'enfance de l'art quand on a l'habitude. Suivre mon lien de signature pour apprendre à faire des scripts avec un tableur. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 15 avril 2005 Posté(e) le 15 avril 2005 Voici une réponse basée sur le lisp (defun record_dwg (name / nam_file) (cond ((not (wcmatch (cdr (assoc 2 name)) "`**")) (if (not prefix) (progn (setq nam_file (getfiled "Dessin bibliothèque" (cdr (assoc 2 name)) "dwg" 1)) (setq prefix (substr nam_file 1 (- (strlen nam_file) (strlen (cdr (assoc 2 name)))))) ) (setq nam_file (strcat prefix (cdr (assoc 2 name)))) ) (command "_.-wblock" nam_file (cdr (assoc 2 name))) ) ) ) (defun c:blk2dwg ( / first_blk l_blk n_blk prefix) (setq first_blk (tblnext "BLOCK" T)) (cond (first_blk (setq l_blk (list first_blk)) (while (setq n_blk (tblnext "BLOCK")) (setq l_blk (cons n_blk l_blk)) ) (setvar "FILEDIA" 0) (foreach n l_blk (record_dwg n)) (setvar "FILEDIA" 1) ) (T (princ "\nPas de blocs définis!") ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Oli35 Posté(e) le 15 avril 2005 Auteur Posté(e) le 15 avril 2005 Merci à tous deux je pense que je vais tester les deux méthodes... Bon week end... Olivier
lecrabe Posté(e) le 15 avril 2005 Posté(e) le 15 avril 2005 Bonsoir à tous Je suis en retard pour la réponse ... Sorry !!! :o Voici donc la routine de l'excellent site www.dotsoft.comque j'utilise depuis très longtemps sur toutes les versions d'AutoCAD :) Cependant je ne l'ai pas encore testée avec AutoCAD 2006, donc ? :casstet: Le Décapode "wblock" ; ----------------------------------------------------------------------; (Wblocks all local block definitions to target path); Copyright © 2000 DotSoft, All Rights Reserved; Website: http://www.dotsoft.com; ----------------------------------------------------------------------; DISCLAIMER: DotSoft Disclaims any and all liability for any damages; arising out of the use or operation, or inability to use the software.; FURTHERMORE, User agrees to hold DotSoft harmless from such claims.; DotSoft makes no warranty, either expressed or implied, as to the; fitness of this product for a particular purpose. All materials are; to be considered ‘as-is’, and use of this software should be; considered as AT YOUR OWN RISK.; ---------------------------------------------------------------------- (defun c:wblockm () (setq cmdecho (getvar "CMDECHO")) (setvar "CMDECHO" 0) ; (if (not dos_getdir) (setq path (getstring "\nDS> Target Folder: " T)) (setq path (dos_getdir "Target Folder" (getvar "DWGPREFIX"))) ) (if (/= path nil) (progn (if (= (substr path (strlen path) 1) "\\") (setq path (substr path 1 (1- (strlen path)))) ) (princ "\nDS> Building List of Blocks ... ") (setq lst nil) (setq itm (tblnext "BLOCK" T)) (while (/= itm nil) (setq nam (cdr (assoc 2 itm))) (setq pass T) (if (/= (cdr (assoc 1 itm)) nil) (setq pass nil) (progn (setq ctr 1) (repeat (strlen nam) (setq chk (substr nam ctr 1)) (if (or (= chk "*")(= chk "|")) (setq pass nil) ) (setq ctr (1+ ctr)) ) ) ) (if (= pass T) (setq lst (cons nam lst)) ) (setq itm (tblnext "BLOCK")) ) (setq lst (acad_strlsort lst)) (princ "Done.") ; (foreach blk lst (setq fn (strcat path (chr 92) blk)) (if (findfile (strcat fn ".dwg")) (command "_.WBLOCK" fn "_Y" blk) (command "_.WBLOCK" fn blk) ) ) ) ) ; (setvar "CMDECHO" cmdecho) (princ)) Autodesk Expert Elite Team
Oli35 Posté(e) le 18 avril 2005 Auteur Posté(e) le 18 avril 2005 Cool ! En revanche, à chaque fois, map vient court-circuiter en demandant si l'on souhaite exporter les données autocad map, m'obligeant à effectuer une entrée "hors programme"... Y a-t-il un moyen de désactiver cette fenêtre ?Merci Olivier
lecrabe Posté(e) le 18 avril 2005 Posté(e) le 18 avril 2005 Bonjour Tout à fait exact, Mr OLI35 et malheureusement je n'ai pas de solution, car même avec la variable EXPERT monté à 5 (cinq) cela ne change RIEN du tout !!! au comportement de MAP (bien sur) alors que cela agit correctement au niveau d'AutoCAD :o Si qq'un a une solution, nous sommes preneurs :) Il nous faudrait une variable MAPEXPERT !!! Le Décapode Autodesk Expert Elite Team
DenisHen Posté(e) le 1 juin 2006 Posté(e) le 1 juin 2006 Génial Lecrabe, ta routine est exellente (mais je n'ai pas MAP...) Donc, pas de question hors routine... Merci... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant