Aller au contenu

Generer les contours de hachures automatiquement dans le calque des hachures


JVC
 Partager

Messages recommandés

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

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 ?

 

 

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

Lien vers le commentaire
Partager sur d’autres sites

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 🙂

 

 

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 🙂

 

Windows 10

Autocad Map 3D 2022/Covadis 17

QGIS 3.10 et +

Lien vers le commentaire
Partager sur d’autres sites

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)
)

 

  • Like 1

AutoCAD Map 3D 2023 (26.0.37.2 base T.53.0.0)
Covadis 17.1h + AutoPiste
Windows 11 Famille v.21H2 - 64 bits

Toujours à l'affût des bonnes astuces

Lien vers le commentaire
Partager sur d’autres sites

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

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
 Partager

×
×
  • 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é