Aeropix1908 Posté(e) le 8 septembre Posté(e) le 8 septembre Bonjour à tous, J'ai régulièrement des plans architectes à traiter mais j'ai des grandes difficultés avec des hachures qui se trouvent à l'intérieur des blocs. Je voudrais supprimer toutes ces hachures sans avoir à ouvrir chaque bloc : Il faut que je puisse supprimer toutes les hachures qui sont dans les blocs tels que le mobilier, les voitures, les arbres, les locaux, etc. MAIS il ne faut pas supprimer les hachures qui sont dans les blocs d'éléments de construction tels que les murs ou similaires. Auriez-vous une solution ? Merci d'avance pour votre précieuse aide. Citer
rebcao Posté(e) le 8 septembre Posté(e) le 8 septembre Bonjour, @Aeropix1908 SI par hasard les hachures du BLOC se trouvait sur un calque ce serait déjà pas mal ! Peux-tu publier un exemple ? Je te remercie. Christian Citer Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
didier Posté(e) le 8 septembre Posté(e) le 8 septembre Bonjour @Aeropix1908 OK, ça devrait le faire. Par contre, comment devra-t-on sélectionner les blocs dont il faut supprimer les hachures contenues ? Par clic sur le bloc ? Tous les blocs du dessin ? Par choix des noms ? Actuellement, je choisis de cliquer sur un bloc, ça irait ? De cette façon, on peut sélectionner des blocs sans connaitre leurs noms. Amicalement 2024-09-08_16-26-51.mp4 Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
Aeropix1908 Posté(e) le 9 septembre Auteur Posté(e) le 9 septembre Bonjour @rebcao, Les hachures ne sont pas sur des calques spécifiques "hachures". Elles sont sur toutes sortes de calques. Bonjour @didier, Concernant la sélection de bloc, je ne sais pas justement. Si on choisi tous les blocs du dessin, les murs seront sélectionnés (et il ne faut pas supprimer les hachures des murs). Les sélectionner un à un est beaucoup trop long en temps (centaines de blocs par étages). Les sélectionner par nom me semble difficile puisque je connais pas les noms. Vous trouvez un extrait de plan dans l'exemple ci-joint. L'objectif est de supprimer les hachures du mobilier/locaux (les hachures blanches dans cette exemple). Mais il ne faut pas supprimer les hachures rouges/grises des murs. Exemple.dwg Citer
(gile) Posté(e) le 9 septembre Posté(e) le 9 septembre Salut, Le LISP suivant supprime toutes les hachures des blocs qui ne sont pas sur le calque "Constr - Murs". Code modifié (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *block* (setq *blocks* (vla-get-Blocks *acdoc*))) (or *layers* (setq *layers* (vla-get-Layers *acdoc*))) (defun c:aeropix (/ *error* name lst) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (princ (strcat "\nErreur: " msg)) ) (vla-EndUndoMark *acdoc*) (princ) ) (vla-StartUndoMark *acdoc*) (vlax-for obj (vla-get-ModelSpace *acdoc*) (if (and (= (vla-get-ObjectName obj) "AcDbBlockReference") (/= (vla-get-Layer obj) "Constr - Murs") (null (member (setq name (vla-get-Name obj)) lst)) ) (setq lst (cons name lst)) ) ) (foreach n lst (setq blk (vla-item *blocks* n)) (vlax-for obj blk (if (and (= (vla-get-Lock (vla-Item *layers* (vla-get-Layer obj))) :vlax-false ) (= (vla-get-ObjectName obj) "AcDbHatch") ) (vla-delete obj) ) ) ) (vla-regen *acdoc* acActiveViewport) (*error* nil) ) Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 9 septembre Posté(e) le 9 septembre Bonjour @Aeropix1908 Ah OK, il aurait fallu commencer par là ! (comme souvent) Cette façon de faire n'est pas l'utilisation classique des blocs. Chaque bloc est différent et inséré qu'une seule fois. Moi, je suis parti sur un cas classique et du coup je suis hors sujet. Essayez le LSP de l'ami (gile), si ça vous va tant mieux, sinon, revenez questionner et je retravaillerai ma routine au niveau du jeu de sélection. Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
Aeropix1908 Posté(e) le 13 septembre Auteur Posté(e) le 13 septembre Je n'avais encore jamais utilisé de LISP : grande découverte pour ma part. Je viens de réussir à utiliser celui de gile ci-dessus et je dois dire que ça semble très pratique mais je suis pas prêt de pouvoir en créer par moi-même malheureusement (j'ai vraiment de la peine avec la programmation). Par contre, ce LISP supprime toutes les hachures de mon exemple y.c. celles des murs, ce que je ne souhaite pas. En fait, je reçois des plans d'architectes de la part d'architectes différents et les calques sont très souvent mal gérés, c'est à dire que les objets/blocs/symboles/dessin/ligne/etc. ne sont pas sur les bons calques. Je pense qu'il ne faut donc pas créer un LISP sur une base de calques. J'imagine qu'il faut bien utiliser des critères pour créer un LISP. Peut-être est-il possible de faire quelque chose avec les couleurs ? Par exemple supprimer toutes les hachures sauf celles de couleurs rouge et noirs ? Et je pourrais ensuite modifier si besoin le code couleur dans le LISP en fonction des projets et de ce que je dois supprimer comme hachures ? 1 Citer
didier Posté(e) le 13 septembre Posté(e) le 13 septembre Bonjour @Aeropix1908 Il suffit de décomposer ces blocs dont le nom commence par mur… Commande décomposer et au message choix des objets, créer un filtre 'fi et choisir nom de bloc et renseigner mur* Tous les blocs murs seront décomposés, de toute façon ce n'est pas très utile de les laisser sous forme de blocs. Citer Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 13 septembre Posté(e) le 13 septembre il y a 38 minutes, Aeropix1908 a dit : Par contre, ce LISP supprime toutes les hachures de mon exemple y.c. celles des murs, ce que je ne souhaite pas. C'était un oubli, j'ai modifié le LISP ci-dessus. Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Messages recommandés