Aller au contenu

Wbloc multiple


Oli35

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

On 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

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

 

Bonsoir à tous

 

Je suis en retard pour la réponse ... Sorry !!! :o

 

Voici donc la routine de l'excellent site www.dotsoft.com

que 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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

 

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

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

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)

Lien vers le commentaire
Partager sur d’autres sites

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é