Danylo Posté(e) le 2 avril 2009 Posté(e) le 2 avril 2009 Bonsoir à tous, Une petite question de faisabilité sur autocad 2008? Est-il possible à partir d'un dessin "A" dwg comportant plusieurs blocs comme une sorte de bibliothèque, de redéfinir un dessin "B" comportant les mêmes nom de bloc?. D'avance merci pour vos lumières.
Bred Posté(e) le 2 avril 2009 Posté(e) le 2 avril 2009 Salut,Je te proposes une manip :- Si tu veux, tu supprimes tous les blocs dans A (pas obligé, mais plus propre)- Surtout tu ne purges pas !!!!- Tu enregistres ce A sous C par exemple.- Tu fais un copie Windows de tout B (Ctrl+C)- Tu vas dans C, et tu colle (Ctrl+V) Ainsi, ton dessin C sera égal au B, mais comme C contiens la définitions des blocs de A dans sa collection, C aura les blocs = A. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Danylo Posté(e) le 3 avril 2009 Auteur Posté(e) le 3 avril 2009 Merci pour ta réponse Bred C'est la première idée que j'ai eu, cependant ça m'oblige à renommer tous mes schémas existants.J'ai fait la manique en insérant B en tant que bloc dans A et ensuite je l'ai décomposé, j'avais ainsi tous les blocs redéfinis et à jours.Cependant je pensais qu'il y avait une routine ou un lien que l'on pouvais faire, en gardant mon fichier A comme référence ou bibliothèques.je vais continuer à chercher.
capde06 Posté(e) le 3 avril 2009 Posté(e) le 3 avril 2009 moi j'utilise la palette outilscomme ca1 ouvrir designcenter (ctrl+2)sélectionner le fichier A qui contient les blocsouvrir la palette outil (ctrl+3)créer éventuellement un ongletfaire glisser les blocs en question du designcenter sur la palette outilset voila le tour est joué Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
Danylo Posté(e) le 3 avril 2009 Auteur Posté(e) le 3 avril 2009 C'est aussi une solution, le soucis c'est que j'ai plus de 500 bloc dans mon dessin 'A', ce qui veut dire que quand je veux redéfinir les blocs dans d'autres schémas, il me faut les faire un par un.En fait je pensais un peu comme un système de Xref, quand on modifie le Xref, sur les autres schéma il est remis à jour. [Edité le 3/4/2009 par Danylo]
thry0 Posté(e) le 3 avril 2009 Posté(e) le 3 avril 2009 Bjr à tous, Une petite astuce qui peut répondre à ton besoin ... Tu crées ton plan B vierge et tu y insères ton plan Acomme pour un bloc "banal" (insérer - bloc - ...) MAIS au moment de choisir le point d'insertiontu fais Echap ! Et tu te retrouves sur ton plan B avec tous les blocs de Amais aussi tous ses calques ... Un petit coté pratique, non ?
Danylo Posté(e) le 4 avril 2009 Auteur Posté(e) le 4 avril 2009 Merci thry0 Ton astuce est intéressante mais ne fonctionne pas dans ce cas, le but étant de redéfinir des blocs déjà existants dans le dessin "B". Mon schéma "B" comporte déjà des blocs nommés... en insérant le bloc bibliothèque , je ne redéfinis pas les blocs de mon dessin courant "B".
lili2006 Posté(e) le 4 avril 2009 Posté(e) le 4 avril 2009 Bonjour à toutes et tous, Bienvenue Danylo, Et en les renommant ? Cf ce post Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 4 avril 2009 Posté(e) le 4 avril 2009 Salut,je n'ai pas le temps de regarder quelque chose de plus élaboré.j'ai fait ça en récupérant 2/3 vieux lisp qui traines...j'ai testé qu'un fois ça a l'air de fonctionner. - tu charges le lisp dans le plan ou tu as les bons blocs.- tu lances "cwb" qui vas te créer sous C: les fichiers de tes blocs- ti mets dans les fichiers support le chemin direct à C:- tu ouvres le plan dans lequel tu veux mettre le blocs à jour- tu recharges le lisp- tu lances "mjb" ... et normalement ça devrais insérer les blocs dans C: et mettre à jours le plan... Attention, si tu veux re-créer une liste de bloc, tu dois supprimer la liste existante. ;;; Mise à jour des blocs - BRED - ; créés wblocs à partir des blocs de la collection (defun c:cwb (/ ACDOC B BLOCKS I LST-B-C NBT P S X) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Blocks (vla-get-Blocks AcDoc) lst-b-c nil attdia (getvar "attdia") attreq (getvar "attreq")) (setvar "attdia" 0) (setvar "attreq" 0) (vlax-for o Blocks (if (not (vl-string-search "*" (vla-get-name o))) (setq lst-b-c (append (list o) lst-b-c)))) (repeat (setq i (length lst-b-c)) (setq b (nth (setq i (1- i)) lst-b-c)) (command "_-INSERT" (vla-get-name b) "_none" '(0 0 0) "1" "1" 0) (setq b (vlax-ename->vla-object (entlast)) p (vla-explode b) p (vlax-safearray->list (vlax-variant-value p)) s (ssadd)) (mapcar '(lambda (x) (ssadd (vlax-vla-object->ename x) s)) p) (setq NBT (strcat "C:\\" (vla-get-name b) ".dwg")) (command "wbloc" NBT "" '(0 0 0) s "") (vla-delete b) ) (setvar "attdia" attdia) (setvar "attreq" attreq) (princ (strcat "\n" (rtos (length lst-b-c)) " Wblocs Créés")) (princ) ) ;;; Prog d'insertion pour Mise à Jour. (defun c:mjb (/ nb) (setvar "cmdecho" 0) (setvar "attdia" 0) (setvar "attreq" 0) (setq lst (list_bloc_plan) nb (length lst)) (Foreach n lst (if (findfile (strcat n ".dwg")) (progn (command "-inserer" (strcat n "=") '(0 0 0) 1 1 0) (command "_erase" (entlast) "") (princ (strcat "\n Patientez : Mise à Jour des Blocs [" (rtos nb)"]")) (setq nb (- nb 1)) ) ) ) (vla-PurgeAll (vla-get-ActiveDocument (vlax-get-acad-object))) (setvar "cmdecho" 1) (princ (strcat "\ Mise à Jour de " (rtos (length lst)) " Blocs !")) (princ) ) ;;; ROUTINE lister tout les noms des blocs/sous-blocs présent dans un dessin (defun list_bloc_plan (/ ACDOC BLOCKS LIST_BLOC) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Blocks (vla-get-Blocks AcDoc) list_Bloc nil) (vlax-for o Blocks (if (not (vl-string-search "*" (vla-get-name o))) (setq list_Bloc (append (list (vla-get-name o)) list_Bloc)))) list_Bloc ) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Danylo Posté(e) le 4 avril 2009 Auteur Posté(e) le 4 avril 2009 RE bonjour tout le monde Bonjour BRED En lançant le lisp j'ai un petit message d'erreur qui apparait "Commande: cwb ; erreur: no function definition: VLAX-GET-ACAD-OBJECT"
lili2006 Posté(e) le 4 avril 2009 Posté(e) le 4 avril 2009 Bonjour à toutes et tous, Et comme ça ? ;;; Mise à jour des blocs - BRED - ; créés wblocs à partir des blocs de la collection (defun c:cwb (/ ACDOC B BLOCKS I LST-B-C NBT P S X) [b][color=#FF0000] (vl-load-com)[/color][/b] (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Blocks (vla-get-Blocks AcDoc) lst-b-c nil attdia (getvar "attdia") attreq (getvar "attreq")) (setvar "attdia" 0) (setvar "attreq" 0) (vlax-for o Blocks (if (not (vl-string-search "*" (vla-get-name o))) (setq lst-b-c (append (list o) lst-b-c)))) (repeat (setq i (length lst-b-c)) (setq b (nth (setq i (1- i)) lst-b-c)) (command "_-INSERT" (vla-get-name b) "_none" '(0 0 0) "1" "1" 0) (setq b (vlax-ename->vla-object (entlast)) p (vla-explode b) p (vlax-safearray->list (vlax-variant-value p)) s (ssadd)) (mapcar '(lambda (x) (ssadd (vlax-vla-object->ename x) s)) p) (setq NBT (strcat "C:\\" (vla-get-name b) ".dwg")) (command "wbloc" NBT "" '(0 0 0) s "") (vla-delete b) ) (setvar "attdia" attdia) (setvar "attreq" attreq) (princ (strcat "\n" (rtos (length lst-b-c)) " Wblocs Créés")) (princ) ) ;;; Prog d'insertion pour Mise à Jour. (defun c:mjb (/ nb) (setvar "cmdecho" 0) (setvar "attdia" 0) (setvar "attreq" 0) (setq lst (list_bloc_plan) nb (length lst)) (Foreach n lst (if (findfile (strcat n ".dwg")) (progn (command "-inserer" (strcat n "=") '(0 0 0) 1 1 0) (command "_erase" (entlast) "") (princ (strcat "\n Patientez : Mise à Jour des Blocs [" (rtos nb)"]")) (setq nb (- nb 1)) ) ) ) (vla-PurgeAll (vla-get-ActiveDocument (vlax-get-acad-object))) (setvar "cmdecho" 1) (princ (strcat "\ Mise à Jour de " (rtos (length lst)) " Blocs !")) (princ) ) ;;; ROUTINE lister tout les noms des blocs/sous-blocs présent dans un dessin (defun list_bloc_plan (/ ACDOC BLOCKS LIST_BLOC) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Blocks (vla-get-Blocks AcDoc) list_Bloc nil) (vlax-for o Blocks (if (not (vl-string-search "*" (vla-get-name o))) (setq list_Bloc (append (list (vla-get-name o)) list_Bloc)))) list_Bloc ) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Danylo Posté(e) le 5 avril 2009 Auteur Posté(e) le 5 avril 2009 Salut tout le monde Merci Bred c'est parfait! Ca fonctionne très bien et en plus c'est rapide.
Bred Posté(e) le 5 avril 2009 Posté(e) le 5 avril 2009 merci à lili d'avoir corriger. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lili2006 Posté(e) le 5 avril 2009 Posté(e) le 5 avril 2009 Bonjour à toutes et tous, merci à lili d'avoir corriger. Heu, "corrigé" est un bien grand mot,... Mais merci à toi tout de même de l'avoir souligné, ;) Marche super bien, Surement une utilité un jour, Merci Bred, :P Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 5 avril 2009 Posté(e) le 5 avril 2009 Marche super bien,... attention quand même, c'est du bricolage fais en 2 minutes.Je n'ai pas vérifié les déclarations et modifications de variables, ni testé avec des cas spécifiques. (en plus c'est un mélange entre de l'auto-lisp et du v-lisp, c'est mal écrit, c'est laid, pas très fin et pas convivial.... désolé pour mes maitres lispeur du forum de proposer un truc comme ça... mais je suis vraiment trop pris en ce moment pour passer plus de temps....) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Danylo Posté(e) le 6 avril 2009 Auteur Posté(e) le 6 avril 2009 Bon soir tout le monde Ton lisp fonctionne bien, j'ai noté quelques erreur (dont j'ignore la cause), que certains blocs au moment de l'export sur le C:, n'avaient plus leur point d'insertion sur 0,0,0.J'ai recommencé l'opération une deuxième fois, ça a très bien fonctionner.Peut être est ce un problème de variable...Dans tous les cas merci pour ton aide Bred
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