JVC Posté(e) le 29 juin 2022 Posté(e) le 29 juin 2022 Bonjour à tous et à toutes, Mon plan contient plusieurs hachures dans des calques différents. Il faudrait que je puisse générer le contour de ses hachures et les placer dans le meme calque que les hachures. Cependant, la fonction "générer le contour" le créer automatiquement dans le calque courant. Existe il une commande sous autocad Map ou Covadis pour faire cette opération ? Par avance merci Citer Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
Luna Posté(e) le 29 juin 2022 Posté(e) le 29 juin 2022 Coucou, Pourquoi ne pas simplement faire un SELECTSIMILAR sur les hachures (avec au minimum les paramètres de "Calque" et "Nom d'objet" cochés), puis de lancer la commande HATCHGENERATEBOUNDARY en ligne de commande ce qui va générer un contour pour chacune des hachures sélectionnées (PICKFIRST=1 évidemment !) et les conserver dans le jeu de sélection courant. Il suffit donc ensuite de modifier le calque associé pour ces nouveaux objets via la palette des propriétés 🙂 Sinon on peut résumer cela avec ce petit LISP : (defun c:HGBL (/ layer jsel) (and (setq layer (cdr (assoc 8 (entget (car (entsel "\nSélectionner un objet du calque souhaité : ")))))) (setq jsel (ssget (list '(0 . "HATCH") (cons 8 layer)))) (null (command-s "_HATCHGENERATEBOUNDARY" jsel "")) (setq jsel (ssget "_I")) (null (command-s "_CHPROP" jsel "" "_Layer" layer "")) ) (princ) ) Il est basique donc il ne permet pas de gérer pour chaque hachure la génération d'un contour avec le bon calque, il permet de gérer un seul calque mais sur un ensemble d'objets. Donc si tu ne veux pas te prendre la tête, tu lances la commande MULTIPLE, puis tu donnes le nom de la commande que tu veux répéter (HGBL donc) et ainsi la commande va tourner en boucle jusqu'à ce que tu appuies sur ECHAP. Concernant la commande HGBL (HatchGenerateBoundaryLayer), la première question requiert de sélectionner une entité (sans filtre) pour récupérer le nom du calque qui sera défini pour les nouveaux contours de hachures et pour filtrer la sélection des hachures sur ce calque uniquement. La seconde question requiert de sélectionner autant d'entités que tu souhaites, en prenant en compte la présélection et en filtrant la sélection pour ne conserver que les hachures appartenant au calque spécifié précédemment. Ensuite le programme va générer les contours pour l'ensemble des hachures et modifier la propriété de Calque des objets nouvellement créés pour les mettre dans le même calque que les hachures sélectionnées. Bisous, Luna Citer
JVC Posté(e) le 30 juin 2022 Auteur Posté(e) le 30 juin 2022 Bonjour Luna, Merci de ton retour, en fait il faudra malgré tout selectionner une hachure et recliquer sur le contour pour lui attribuer le nom du calque ? Citer Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
Luna Posté(e) le 30 juin 2022 Posté(e) le 30 juin 2022 La commande HATCHGENERATEBOUNDARY garde en sélection l'ensemble des contours nouvellement créés... As-tu bien essayé tout ce que j'ai proposé ? Quel est le soucis précisément ? Bisous, Luna Citer
JVC Posté(e) le 30 juin 2022 Auteur Posté(e) le 30 juin 2022 Merci Luna de ton retour, Si j'ai bien utilisé ton programme lisp (encore merci d'avoir pris la peine de me le transmettre !!), il a fallu que je clique encore sur les hachures pour créer le contour dans le bon calque. Au final, j'ai donc generer tous les contours en une fois avec HAtchgenerateboundary, puis utiliser la fonction copier les propriétés sur les entités ! Grace à toi , j'ai pu decouvrir la fonction Multiple ! top ! Bonne fin de journée 🙂 Citer Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
Luna Posté(e) le 30 juin 2022 Posté(e) le 30 juin 2022 Alors... Comme je l'ai dit...Mon programme nécessite la sélection d'une seule et unique entité en premier lieu afin de récupérer le nom du calque (parce que le programme a besoin du nom du calque pour l'affecter aux contours qui devront être créés !!). Et ensuite, tu peux sélectionner TOUTES les hachures qui appartiennent à ce calque (pas juste une seule !!). De plus, la seconde sélection est filtrée, donc tu peux y aller en mode gros bourrin et sélectionner tous tes objets de ton dessin, seul les hachures qui sont sur le calque que tu as spécifié juste avant seront sélectionnées !! Donc grosso merdo l'idée c'est tu cliques une première fois sur 1 hachure que tu veux traiter, puis tu sélectionnes ton dessin entier 😉 Et ensuite, chat aussi je l'ai dit...mon programme n'est qu'un simple résumé de ce que j'ai dit précédemment par rapport à la commande HATCHGENERATEBOUNDARY, c'est-à-dire que les nouveaux contours restent sélectionnés à la fin donc il suffit juste de modifier le calque une seule fois pour le jeu de sélection... Bisous, Luna Citer
JVC Posté(e) le 30 juin 2022 Auteur Posté(e) le 30 juin 2022 Oui, je n'ai pas été suffisament precis 😞 Chaque hachure se trouve dans un calque different et chaque calque ne contient qu'une hachure 🙂 En tout cas, chapeau pour ton script 🙂 Citer Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
CTZen Posté(e) le 1 juillet 2022 Posté(e) le 1 juillet 2022 Hello ! Essai ce lisp (je ne sais plus de qui il vient, c'est très surement de ce forum ... et comme toujours c'est une tuerie !). Je l'utilise depuis quelques années déjà ! tu tape "hbound", tu sélectionnes toutes tes hachures, tu valides ... et hop Miracle : tous les contours sont recréés dans le calque de la hachures qu'ils entourent et en plus ils sont associatifs ! (defun c:hbound (/ ss echo n ent elast lay) (princ "\nSélectionnez les hachures (Entrée, Espace ou clic droit pour toutes") (if (or (setq ss (ssget '((0 . "HATCH")))) (setq ss (ssget "_X" '((0 . "HATCH")))) ) (progn (setq echo (getvar 'cmdecho) n -1 ) (setvar 'cmdecho 0) (while (setq ent (ssname ss (setq n (1+ n)))) (setq elast (entlast) lay (assoc 8 (entget ent)) ) (if (= 0 (cdr (assoc 97 (entget ent)))) (vl-catch-all-apply '(lambda () (command "_.hatchedit" ent "_boundary" "_polyline" "_yes") ) ) ) (while (setq elast (entnext elast)) ((lambda (l) (entmod (subst lay (assoc 8 l) l)) ) (entget elast) ) ) ) (setvar 'cmdecho echo) ) ) (princ) ) 1 Citer AutoCAD Map 3D 2025 Covadis 18.3c + AutoPiste Windows 11 Famille v.24H2 - 64 bits Toujours à l'affût des bonnes astuces
lecrabe Posté(e) le 1 juillet 2022 Posté(e) le 1 juillet 2022 Hello @CTZen Mais il te manque l entete dans ton Lisp ... C bien sur notre grand maitre Gilles ! http://cadxp.com/topic/46849-hachures-capricieuses/ ;; ;; Routine: HBound par GC ;; ;; RecReer Contour de Hachures sur Calque des Hachures + Hachures ;; ;; Ce LISP recree les contours des hachures en mettant le contour dans le calque de la hachure ;; et la hachure est associative a ce contour. ;; Teste et approuve sur des fichiers avec plusieurs centaines de hachures ! ;; La Sante, Bye, lecrabe Citer Autodesk Expert Elite Team
CTZen Posté(e) le 1 juillet 2022 Posté(e) le 1 juillet 2022 Merci pour l'entête je vais l'ajouter de suite ! Citer AutoCAD Map 3D 2025 Covadis 18.3c + AutoPiste Windows 11 Famille v.24H2 - 64 bits Toujours à l'affût des bonnes astuces
JVC Posté(e) le 4 juillet 2022 Auteur Posté(e) le 4 juillet 2022 Salut @CTZen, Merci , c'est exactement ce qu'il me fallait 🙂 Mais pourquoi donc ni AutoCAD MAP, ni Covadis ne sont en mesure de mettre à dispo toutes les commandes / Lisp que vous créez ? Citer Windows 10 Autocad Map 3D 2022/Covadis 17 QGIS 3.10 et +
Messages recommandés