PHILPHIL Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 bonjour il existe le lisp RB_2_02 de Patrick_35 qui passe toutes les entites des blocs dans le calque 0. auriez vous l'inverse ? j'ai des blocs composés de blocs, que je décompose, pas de soucis et ils sont bien implantés dans un calque bien nommé, donc on sait ce que c'est. par contre ces blocs sont composés d'entités toutes dessinées sur le calque 0 ZERO ( haaaaaa grrrrr). donc une fois décomposé je ne sais plus ce que c'est. avez vous un lisp qui remettrais les entites internes des blocs dans le calque d'implantation de celui ci. pour que une fois décomposé pour certains je sache leurs utilités. en le faisant en sélectionnant plusieurs blocs en meme temps Merci Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Eric Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 Bonjour, Sans lisp, il y a la commande XPLODE avec l'option "Hérite du bloc parent" qui permet de décomposer les blocs et que les objets à l'intérieur qui étaient sur le calque 0 se mettent sur le calque du bloc. Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
didier Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 grillé... même réponse qu'Éric. Éternel débutant... Mon site perso : Programmer dans AutoCAD
lecrabe Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 Hello J ai une routine "RB_Layer_0_BLOCK" derivee de RB v2.02 (du regrette Patrick_35) qui met les entites de 1er niveau sur un calque specifique "0_BLOCK" (qui doit exister avant l execution de la routine) ---- Mais cela ne traite pas les sous-blocs ! ---- Mais tu peux l executer une 2eme fois sur la meme selection pour traiter les sous-blocs de niveau 2 ---- etc Cependant cette routine "RB_Layer_0_BLOCK" m a deja rendu des services pour justement apres un "simple" DECOMPOSER / _EXPLODE avoir les entites de 1er niveau sur ce fameux calque "0_BLOCK" (voire de 2eme niveau !? si double execution) La Sante, Bye, lecrabe ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Routine : RB_Zero_ByLayer ;; ;; Routine modifiee ;; --> RB_Layer_0_BLOCK pour TOUT mettre sur le Calque "0_BLOCK" ;; qui DOIT EXISTER !! ;; ;; Vers US/English Minimum par Patrice B. ;; ;; Micro-Modif pour V.... ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Version SPECIALE de "RB/RB_Calque" avec RETOUR sur le Calque ZERO ;;; ;;; ET on "touche" aux Couleurs, Types de Lignes, Epaisseurs ---> <DuCalque> ;;; ;;; MLINE et Attribut --> <DuCalque> ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Remise en Mode <DuBloc> et sur le Calque ZERO de TOUS les Blocs/Symboles (insert) ;;; ou bien d'une Selection classique de Blocs/Symboles ;;; ;;; Mise en EVIDENCE des 4 "Forcages" : Calque 0 , Couleur , Type de Ligne , Epaisseur ;;; pour commentaire EVENTUEL si on desire ne FORCER que 1/2/3 propriete(s) ... ;;; ;;;================================================================= ;;; ;;; RB.LSP V2.02 ;;; ;;; Refait les Blocs de la Couleur <DuBloc> (+ Type de Ligne + Epaisseur ) ;;; et "retour" sur le Calque 0 de TOUTES les entites ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;================================================================= ;; (defun c:RB_Layer_0_BLOCK ( / *errrb* bl ent js lst nombl doc s sel) (defun c:RB_Zero_ByLayer ( / *errrb* bl ent js lst nombl doc s sel) (defun *errrb* (msg) (or (member (strcase msg) '("FUNCTION CANCELLED" ""QUIT / EXIT ABORT"" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) (vla-endundomark doc) (setq *error* s) (princ) ) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (vla-get-effectivename bl) (vla-get-name bl) ) ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq s *error* *error* *errrb* ) ;; (princ "\nSelectionnez les blocs <Tout les blocs> : ") (princ "\n!! Please create BEFORE the Layer '0_BLOCK' !! \nSelect Blocks <Tout/all Blocks> : ") (if (setq sel (ssget (list (cons 0 "insert")))) (progn (vlax-for bl (setq sel (vla-get-activeselectionset doc)) (or (member (setq nom (nombl bl)) lst) (setq lst (cons nom lst)) ) ) ; (foreach nom lst ; (if js ; (setq js (strcat js "," nom)) ; (setq js nom) ; ) ; ) (vla-delete sel) ) (setq js "*") ) ; ---------------------------------------------------------------- ; Modifications dans la table des blocs ; ---------------------------------------------------------------- (vlax-for bl (vla-get-blocks doc) (and (eq (vla-get-islayout bl) :vlax-false) (or (eq js "*") (member (vla-get-name bl) lst) ) (vlax-for ent bl ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;--- Forcer sur Calque / Layer 0 ;; (vla-put-layer ent "0") (vla-put-layer ent "0_BLOCK") ;;;--- Forcer la couleur sur Dubloc / ByBlock ;; (vla-put-color ent 0 ) ;; ByBlock ;; (vla-put-color ent 256 ) ;; ByLayer ;;;--- Forcer le type de ligne sur Dubloc / ByBlock ;; (vla-put-linetype ent "ByBlock") ;; ByBlock ;; (vla-put-linetype ent "ByLayer") ;; ByLayer ;;;--- Forcer l'epaisseur de ligne sur Dubloc / ByBlock ;; (vla-put-lineweight ent -2) ;; ByBlock ;; (vla-put-lineweight ent -1) ;; ByLayer ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ) ) ) ;;; ------ Avec un REGEN ------ (vla-regen doc acAllViewports) (vla-endundomark doc) (setq *error* s) (princ) ) ;; (setq nom_lisp "RB") ;; (setq nom_lisp "RB_Zero_ByLayer") (setq nom_lisp "RB_Layer_0_BLOCK") (if (/= app nil) (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp) (princ (strcat "..." nom_lisp " loaded/charge ")) (princ (strcat "\n" nom_lisp ".LSP Loaded/Charge... " nom_lisp " to run/pour l executer. "))) (princ (strcat "\n" nom_lisp ".LSP Loaded/Charge... " nom_lisp " to run/pour l executer. "))) (setq nom_lisp nil) (princ) Autodesk Expert Elite Team
PHILPHIL Posté(e) le 3 février 2023 Auteur Posté(e) le 3 février 2023 hello merci, ca peut servir en effet. sauf que je ne veux pas forcement les exploser tous, mais forcement ranger les entites ailleurs que sur zero. Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Eric Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 Avec XPLODE on ne les explose pas tous, on sélectionne ceux qu'on veut décomposer ou alors je n'ai pas compris la question. 🤔 Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
PHILPHIL Posté(e) le 3 février 2023 Auteur Posté(e) le 3 février 2023 hello je voudrais changer les entites des blocs sélectionnes vers un nouveau calque. puis apres coup pour certains je les explose. FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
lecrabe Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 Hello @PHILPHIL Que penses tu du Lisp modifie de Patrick_35 ? A la ligne 113, tu peux modifier le nom du calque !? Bye, lecrabe Autodesk Expert Elite Team
Eric Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 Sinon, il y a peut-être ce lisp qui pourrait fonctionner. https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/change-block-or-nested-block-color-to-block-layer-color/m-p/6007706#M338454 Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
PHILPHIL Posté(e) le 3 février 2023 Auteur Posté(e) le 3 février 2023 hello lecrabe je viens de tester et je n'arrive pas a le modifier correctement. je récupère bien un nom de calque d'un bloc, mais apres il le redistribue a toutes les entites des tous les autres blocs sélectionnés FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
lecrabe Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 Hello @PHILPHIL Mais c le but de la routine : mettre tous les entites de 1er niveau des blocs selectionnes dans le calque "0_BLOCK" ! Apres tu fais un Decomposer / _Explode ... Donc les entites de 1er niveau des blocs selectionnes dans le calque "0_BLOCK" ... Mais j ai sans doute mal compris ta demande !? Bye, lecrabe Autodesk Expert Elite Team
PHILPHIL Posté(e) le 3 février 2023 Auteur Posté(e) le 3 février 2023 hello lecrabe tous les blocs ne sont pas implantes dans le meme calque. avec le Lisp de Eric, je devrais m'en tirer. pour le moment il travail un bloc a la fois, quand je l'aurais modifie pour sélectionner plusieurs blocs, je le remettrais ici. merci a tous, Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
lecrabe Posté(e) le 3 février 2023 Posté(e) le 3 février 2023 Hello Ah OK ... Merci pour ta future version amelioree ! Bon WE, La Sante, Bye, lecrabe Autodesk Expert Elite Team
PHILPHIL Posté(e) le 4 février 2023 Auteur Posté(e) le 4 février 2023 Hello mise a jour du lisp BELTB. replace les entités d'un bloc dans le meme calque que celui dans lequel il est implanté. s'il y a fonction : BELTB - un par un BELTB_1_00 - plusieurs a la fois BELTB_1_00_ducalque - plusieurs a la fois couleur en DUCALQUE et épaisseur de ligne en DUCALQUE Phil BELTB.lsp 1 FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
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