Aller au contenu

Transformer bloc en wbloc


esbe

Messages recommandés

Bon ok, le titre n'est pas clair !!

j'aimerai savoir si c'est possible de creer avec wbloc ou d'extraire tous les blocs d'un fichier, "automatiquement", biensur...vous connaissez mon goût pour la paresse ;)

 

j 'ai fait un recherche rapide car je crois avoir vu passer un lisp de ce genre mais je ne l'ai pas retrouvé !

 

Merci à tous

Lien vers le commentaire
Partager sur d’autres sites

...est-ce celui-là ..??

MOVE .lsp

Permet d'afficher tous les blocs d'un même fichier en un seul clic.

 

((lambda ( / prefix pt_ins last_pt obj ll ur lg)

(setvar "cmdecho" 0)

(setvar "attreq" 0)

(vl-load-com)

(setq prefix (strcat (vl-filename-directory (getfiled "Sélectionner un fichier DWG TEMOIN" "" "dwg" 16)) "\\"))

(setq pt_ins (getpoint "\nPoint d'insertion pour le 1er Bloc? <0.0,0.0,0.0>: "))

(if (null pt_ins) (setq pt_ins '(0.0 0.0 0.0)))

(setq last_pt nil)

(foreach dwg (vl-directory-files prefix "*.dwg" 1)

(command "_.-insert" (strcat "\"" prefix dwg "\"") "_none" pt_ins "1.0" "1.0" "0.0")

(setq Obj (vlax-ename->vla-object (entlast)))

(vla-GetBoundingBox Obj 'll 'ur)

(setq ll (safearray-value ll))

(setq ur (safearray-value ur))

(if last_pt

(progn

(command "_.move" (entlast) "" "_none" (list (car ll) (cadr pt_ins) (caddr pt_ins)) "_none" pt_ins)

(setq lg (distance (list (car ll) (cadr pt_ins) (caddr pt_ins)) pt_ins))

)

(setq lg 0.0)

)

 

(setq pt_ins (list (+ lg (car ur)) (cadr pt_ins) (caddr pt_ins)))

(setq last_pt pt_ins)

)

(command "_.zoom" "_all")

(command "_.zoom" "_extents")

(setvar "attreq" 1)

(setvar "cmdecho" 1)

(prin1)

))

 

Lien vers le commentaire
Partager sur d’autres sites

Merci Yalta

 

je ne veux pas les afficher mais les transformer en fichier (comme avec wbloc) pour les recuperer ds une biblio !!

Mon soucis c'est que je suis toujours pressée donc je creer des blocs pour un projet mais j'ai rarement le temps d'en faire des wbloc à chaque fois pour les réutiliser ds un projet similaire d'où l'usage intensif de copier/coller inter fichier, peu

donc j'aimerai quand un projet est fini lancer un programme pour que tous les blocs utilisé ds ce fichier deviennent des dwg independants

Là c'est plus clair

 

@+

Lien vers le commentaire
Partager sur d’autres sites

Voiçi celui que j'utilise.

 

;|

WBL.lsp Bob Abernethy, dba/CADesigner ©1998

Create a wblocked dwg without keeping block in the original dwg

Predefined insertion point set to 0,0,0 can be setup by removing

comma on line below ;COMMENT2 and placing a comma in front

of line below ;COMMENT1

Directory set to D:\BLDIR (@ COMMENT 0) - Directory MUST BE predefined

change directory pointed to in line below COMMENT0 to point to

the directory of your choice

Wblock name given WILL overwrite if SAME filename is in directory

|;

 

;COMMENT0

(setq bldir "D:\\bldir\\")

 

(defun ERR (s)

(if (/= s "Function cancelled \n\n")

(if (= s "quit / exit abort")

(princ)

(alert " >> Error <<")

)

)

(setvar "expert" XPRT)

(command "undo" "back")

(setq *error* olderr)

(princ)

)

 

 

(defun c:wbl (/ title)

(setq dcl_id (load_dialog "wbl.dcl"))

(if (not (new_dialog "wbl" dcl_id))

(exit)

)

(action_tile "blkname" "(setq blkname $value)")

(action_tile "accept" "(done_dialog 1)")

(if (equal (start_dialog) 1)

(do_wblock)

)

(unload_dialog dcl_id)

(princ)

)

 

(defun do_wblock (/ bklname blkss blkpt)

(setq olderr *error*

*error* err

)

(setq ce (getvar "cmdecho"))

(setq osm (getvar "osmode"))

(setvar "cmdecho" 0)

(setq xprt (getvar "expert"))

(setvar "expert" 2)

(setvar "filedia" 0)

(command "undo" "mark")

(command "ucs" "w")

(prompt "\nSelect entities to wblock")

(setq blkss (ssget))

(setq blkpt (getpoint "\nPoint d'Insertion ... "))

;COMMENT1

(command "_block" blkname blkpt blkss "")

;COMMENT2

; (command "_block" blkname (list 0 0 0) blkss "")

(command "oops")

(command "_wblock" (strcat bldir blkname) blkname)

(command "undo" "back")

(setvar "filedia" 1)

(setvar "expert" xprt)

(setvar "osmode" osm)

(setvar "cmdecho" ce)

(setq *error* olderr)

(princ)

)

*****************************************************************

// WBL.DCL Dialogue Wblock , Bob Abernethy 1998

// Change D:\\BLDIR to your directory

 

wbl : dialog {

label = "Nom du Wblock ";

initial_focus = "blkname";

: edit_box {

edit_width = 20;

key = "blkname";

label = "Nom du Wblock: ";

allow_accept = true;

is_default = true;

}

: paragraph {

: text_part {

label = " ";

}

: text_part {

label = "Après avoir nommé le wblock, selectionné OK";

}

: text_part {

label = " ";

}

: text_part {

label = "NOTE:";

}

: text_part {

label = "Wblock est placé dans D:\\BLDIR";

}

}

 

ok_cancel;

}

 

 

:)

Lien vers le commentaire
Partager sur d’autres sites

Salut

Voici celle dont je me sers

 

@+

 

(defun c:wbl(/ bl cmd doc)
 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)) cmd (getvar "cmdecho"))
 (vla-startundomark doc)
 (setvar "cmdecho" 0)
 (setq bl (tblnext "block" t))
 (while bl
   (if (and (not (eq (logand (cdr (assoc 70 bl)) 1) 1))
            (not (eq (logand (cdr (assoc 70 bl)) 4) 4))
            (not (eq (logand (cdr (assoc 70 bl)) 16) 16))
            (not (vl-string-search "AVE_" (strcase (cdr (assoc 2 bl))))))
     (command "_.wblock" (strcat (getvar "dwgprefix") (cdr (assoc 2 bl))) (cdr (assoc 2 bl)))
   )
   (setq bl (tblnext "block"))
 )
 (setvar "cmdecho" cmd)
 (vla-endundomark doc)
 (princ)
)

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

D'après ce que j'ai put lire

Celui de Yalta te demande un fichier témoin pour écrire les blocs dans ce répetoire

Celui de X13 écrit les blocs dans le répetoire D:\bldir et suivant une sélection des blocs

Le mien écrit les blocs dans le répertoire du dessin qui est actif

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Hello Patrick pardonnes mon silence mais je n'ai plus le loisir de suivre en direct les messages !!!

 

Je ne suis pas sure d'avoir tout compris !! :exclam:

un fichier témoin pour écrire les blocs dans ce répetoire

et

Le mien écrit les blocs dans le répertoire du dessin qui est actif

C'est le "qui est actif " que je ne pije/pige pas (Heu...pardon, je cale sur l'argot écrit )

 

Sinon merci de ta réponse ;)

 

J'avoue, je n'ai pas eu le temps e tester tout cela, je suis à plein temps ds une agence, en ce moment , et c'est + que du plein tps , bref je ne vois plus le jour, au sens propre !! Ce n'est pas l'enfer parce que c'est interessant mais çà limite mes "à coté" preferés en ces lieux !!

 

 

Lien vers le commentaire
Partager sur d’autres sites

un fichier témoin pour écrire les blocs dans ce répetoire

Tu choisis un fichier dans un répertoire, et les blocs sont mis dans ce répertoire

 

Le mien écrit les blocs dans le répertoire du dessin qui est actif

en clair avec la variable dwgprefix, ce qui veux dire dans le répertoire où tu as ouvert le dessin actuel dont tu cherches à extraire les blocs

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é