Générer contours hachures sur leur calque respectif avec LISP AutoCAD

Comment générer automatiquement les contours de hachures dans AutoCAD, en plaçant chaque contour sur le calque d’origine de sa hachure parente, et ce, pour des hachures réparties sur des calques différents ?

La commande native HATCHGENERATEBOUNDARY (ou _HATCHEDIT avec l’option _Boundary) dans AutoCAD crée par défaut les contours des hachures sur le calque courant. Ceci pose un problème majeur lorsque vous avez de nombreuses hachures réparties sur des calques différents et que vous souhaitez que chaque contour généré réside sur le même calque que sa hachure parente.

Voici une approche experte pour résoudre ce défi, en commençant par une méthode manuelle pour des cas simples, puis en présentant une solution LISP robuste pour une automatisation complète.

1. Méthode Manuelle (pour un calque unique ou peu de hachures)

Si vous n’avez qu’un petit nombre de hachures ou si toutes les hachures à traiter sont sur le même calque, vous pouvez utiliser la procédure suivante :

  1. Sélectionner les hachures :
    • Utilisez la commande SELECTSIMILAR.
    • Dans les paramètres de SELECTSIMILAR (tapez SE puis S pour Settings), assurez-vous que les options « Calque » et « Nom d’objet » sont cochées.
    • Sélectionnez une hachure du calque que vous souhaitez traiter. Toutes les hachures similaires sur ce même calque seront sélectionnées.
  2. Générer les contours :
    • Lancez la commande HATCHGENERATEBOUNDARY (ou _HATCHEDIT, puis choisissez l’option _Boundary, puis _Polyline, et enfin _Yes pour rendre le contour associatif).
    • Les nouveaux contours sont créés et restent sélectionnés.
  3. Modifier le calque des contours :
    • Avec les contours toujours sélectionnés, ouvrez la palette des propriétés (PROPERTIES ou CTRL+1).
    • Changez la propriété « Calque » pour attribuer aux contours le calque d’origine des hachures.

Cette méthode doit être répétée pour chaque groupe de hachures sur un calque différent, ce qui peut être fastidieux.

2. Solution Experte LISP (pour calques multiples et automatisation)

Pour une gestion efficace de hachures réparties sur de multiples calques, la solution la plus performante est l’utilisation d’un programme LISP dédié. Le LISP suivant, attribué à Gilles (GC), est une référence dans la communauté AutoCAD pour cette tâche :

Avantages de ce LISP :

  • Automatisation complète : Traite toutes les hachures sélectionnées en une seule fois.
  • Respect du calque d’origine : Chaque contour est automatiquement placé sur le calque de sa hachure parente.
  • Associativité : Les contours générés sont associatifs à leurs hachures, ce qui signifie qu’ils se mettront à jour si la hachure est modifiée.

Code LISP (hbound.lsp) :

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

Procédure d’utilisation du LISP :

  1. Enregistrer le LISP :
    • Copiez le code ci-dessus et collez-le dans un éditeur de texte (comme le Bloc-notes).
    • Enregistrez le fichier sous un nom significatif, par exemple hbound.lsp, dans un répertoire accessible par AutoCAD (par exemple, votre dossier de support personnel).
  2. Charger le LISP dans AutoCAD :
    • Dans AutoCAD, tapez APPLOAD et appuyez sur Entrée.
    • Cliquez sur le bouton « Contenu… » sous « Groupes de démarrage » pour ajouter le LISP à la liste des applications à charger au démarrage d’AutoCAD (facultatif, mais recommandé pour un usage fréquent).
    • Cliquez sur « Charger » et naviguez jusqu’à votre fichier hbound.lsp pour le charger manuellement.
  3. Exécuter la commande LISP :
    • Dans la ligne de commande d’AutoCAD, tapez hbound et appuyez sur Entrée.
    • Le programme vous invitera à « Sélectionnez les hachures ». Vous pouvez sélectionner manuellement les hachures souhaitées, ou appuyer sur Entrée (ou Espace, ou clic droit) pour sélectionner toutes les hachures du dessin (_X selection set).
    • Validez votre sélection.

Le LISP va alors itérer sur chaque hachure sélectionnée, recréer son contour en tant que polyligne, et s’assurer que ce nouveau contour est placé sur le même calque que la hachure d’origine, tout en maintenant l’associativité.

Bonnes Pratiques :

  • Organisation des LISP : Créez un dossier dédié pour tous vos fichiers LISP et ajoutez ce dossier aux chemins de recherche des fichiers de support d’AutoCAD (OPTIONS > onglet « Fichiers » > « Chemin de recherche des fichiers de support »).
  • Test : Toujours tester de nouveaux LISP sur une copie de votre dessin ou sur un fichier de test avant de l’appliquer à des projets critiques.

Cette solution LISP est la plus efficace et la plus professionnelle pour gérer la génération de contours de hachures sur leurs calques respectifs, même avec des centaines de hachures réparties sur de multiples calques.