Des motifs de hachurage AutoCAD ?

Une question qui revient assez fréquemment sur les forums est celle de trouver des motifs de hachure pour AutoCAD®. Alors si vous faites d’une recherche sur des moteurs de recherche, vous allez en trouver quelques-unes. J’avais souvenir que notre ami @REBCAO nous en avait fourni, voici le lien vers son catalogue. Les hachures sont-elles téléchargeables @REBCAO ? (je les aie sur mon disque, date 2010 apparemment, mais est-ce que je peux les publier ?)

Et un autre fichier de hachures ici.

Si vous avez des fichiers de hachures AutoCAD® ou des liens vers des fichiers, vous pouvez les proposer en réponse à cette discussion.

Alternativement, si vous avez utilisé une application qui permet de générer un fichier PAT à partir d’une hachure existante dans un dessin AutoCAD®, ça serait intéressant de savoir si la chose est vraiment praticable et quel résultat vous avez obtenu.

2 « J'aime »

Bonjour Patrick,

Depuis le 1er Janvier 2025, je suis à la retraite et j’ai donc fermé mon système de paiement… Mais je reste bien sur actif et je continue à suivre les actus (Forums) et mes anciens clients…

C’est pourquoi, je réponds en mettant à disposition certains de mes outils gratuitement.

Je rappelle que je possède de très nombreuses applications pour réaliser des QUANTITATIFS, des METRES, des fichiers GABARITS et bien d’autres… La plupart sont illustrés par des vidéos… et au bas de cette page…

Voici mon .ZIP qui contient plus de 700 fichiers .PAT et mon catalogue .PDF ainsi que la procédure « d’install. »
Hachures_REBCAO.zip (3,2 Mo)
Catalogue des Hachures (plus de 680 Motifs PAT et AutoCAD).pdf (2,2 Mo)

Bien Amicalement,
Christian

PS : je t’autorise à diffuser mon « Virus de Hachures » moyennant un TRES gros chèque… :blush:

4 « J'aime »

Super ! Merci beaucoup ! :+1:t2:

De plus il me semble que le format .PAT est compatible avec Revit®, ce qui va intéresser beaucoup de monde !

1 « J'aime »

Bonjour,

J’ai retrouvé les différents sujets sur CADXP à l’époque qui m’ont permis de développer ce CATALOGUE.

Est-ce qu’il y a moyen d’accéder à notre cher FEU CADXP en ligne ?

Au départ, j’avais plus de 1 000 motifs de HACHURES !!! Et le problème avec les DOUBLONS, TRIPLONS… c’est qu’il y avait des fichiers .PAT avec des noms différents mais qui représentaient le même MOTIF !!!

J’avais demandé un Ch’Tit coup de main à plusieurs Membres Volontaires pour faire le TRI à partir du VISUEL du MOTIF !

Sacré boulot et je vous remercie encore pour cette aide. Patrick tu en faisais partie.

Et tout ça, ça date de plus de 20 ans ! :slightly_smiling_face: J’avais commencé ce PROJET en Avril 2005… Sans doute un POISSON D’AVRIL !

Merci.
Christian

1 « J'aime »

@REBCAO je vais regarder dans les archives de Cadxp, ça daterait de avril 2005 donc, tu te rappelles éventuellement dans quel forum de Cadxp c’était ?

Salut Patrick, @Patrick

Oui, j’ai les 3 sujets du moins les dossiers suivants :

5455-catalogue-de-hachures-pat-à-votre-bon-coeur
5729-catalogue-de-hachures-suite
5763-catalogue-de-hachures

Ils sont dans le dossier : …cadxp_aspiree\cadxp.com*topic*

Alors j’avais bien dézippé la fichier qui avait aspiré CADXP, mais lorsque je veux isoler ces 3 dossiers, les pages ne s’affichent qu’en mode texte !!!

Je te remercie.
Christian

1 « J'aime »

@REBCAO Merci, j’ai retrouvé la discussion qui tient sur deux pages sur le site CADxp, donc je vous fournis ici-dessous le PDF des deux pages de discussion, ainsi qu’une analyse par intelligence artificielle de cette discussion.

Combiner des résultats.pdf (4,8 Mo)

[!Note]
Cet article est une synthèse réalisée à l’aide de l’intelligence artificielle d’une discussion archivée sur le site archive.org provenant du site CADxp.com qui est désormais hors ligne. Il est destiné à pallier la perte consécutive à cette fermeture en fournissant un résumé et un lien vers le contenu original.

:sparkles: 1. Introduction : Un Projet Collaboratif de la Communauté CADxp
En 2005, une simple demande d’aide pour dédoublonner une collection de hachures sur le forum CADxp s’est transformée en un projet communautaire exemplaire. Cette discussion illustre non seulement la puissance de l’entraide, mais aussi comment des approches de résolution différentes peuvent converger pour créer une ressource d’une richesse inattendue, bénéfique pour tous.
Le thème central de la discussion était la création collaborative d’une bibliothèque de motifs de hachures complète et exempte de doublons, destinée aux utilisateurs de logiciels de CAO Autodesk®. Au-delà de cet objectif principal, plusieurs thèmes connexes ont émergé, notamment la gestion des ressources numériques, l’établissement de standards de nommage pour les fichiers, et l’importance de la mutualisation des efforts pour enrichir les outils de l’ensemble de la communauté.
La synthèse qui suit retrace le déroulement chronologique des échanges, de l’appel initial à la résolution finale, afin de mettre en lumière les étapes clés qui ont mené ce projet à son terme.

2. Résumé Chronologique de la Discussion
Ce résumé suit pas à pas les échanges entre les membres du forum CADxp, depuis la formulation du problème jusqu’à sa résolution collective. L’objectif est de reconstituer la dynamique du projet et de comprendre comment les contributions de chacun ont façonné le résultat final.

2.1 L’Appel Initial et la Problématique
Le 29 avril 2005, l’utilisateur rebcao lance un appel à la communauté. Son objectif est de finaliser un catalogue de motifs de hachures, mais il se heurte à une difficulté majeure : la présence d’un très grand nombre de doublons au sein de sa collection.
Pour résoudre ce problème de manière efficace, il propose une méthode de travail collaborative. Il met à disposition un document visuel présentant l’ensemble des motifs et un tableau de suivi, invitant des volontaires à se répartir les pages du document pour identifier visuellement les doublons et les consigner.

2.2 La Mobilisation de la Communauté
L’appel de rebcao reçoit rapidement un écho favorable. L’utilisateur Pako est l’un des premiers à réagir. Qualifiant la tâche avec humour de « vrai travail de moine », il propose une approche alternative : fusionner la collection de rebcao avec son propre catalogue, qui contient déjà 417 motifs uniques et vérifiés.
Parallèlement, d’autres membres se portent volontaires pour participer à la vérification manuelle initialement proposée :

  • Tramber (modérateur) prend en charge la page 1.
  • Esbe se propose pour la page 2.
  • Willfrca s’engage à vérifier la page 6.
    À la suite d’une question posée par un modérateur, rebcao clarifie un point essentiel : l’identification des doublons doit se faire sur une base graphique (l’apparence du motif) et non sur le nom des fichiers, qui peut être trompeur.

2.3 Le Tournant : Une Fusion® qui Redéfinit le Projet
La discussion prend un tournant décisif lorsque Pako annonce avoir terminé de son côté le travail d’élimination des doublons. Son intervention ne fut pas une simple contribution, mais un pivot méthodologique qui a transformé la nature du projet. En fusionnant les deux collections, il a résolu le problème central de manière quasi instantanée.
Le résultat de son travail est un catalogue unique et dédoublonné de 540 motifs, composé de ses 417 motifs originaux auxquels s’ajoutent 123 nouveaux motifs issus de la collection de rebcao. Cette action proactive a court-circuité la laborieuse vérification manuelle page par page, transformant le projet d’une phase de détection en une phase de consolidation et d’enrichissement.

2.4 L’Évolution du Projet : Vers une Meilleure Standardisation
Une fois le problème des doublons résolu, la discussion s’oriente vers la standardisation du catalogue. Un débat s’engage sur les conventions de nommage à adopter pour les motifs de hachures. Deux approches principales sont proposées :

Approche de Pako Approche de rebcao
Numérotation : Pako préfère nommer les motifs par des numéros séquentiels. Il soutient que cette méthode simplifie la gestion des fichiers et que l’aperçu visuel du motif est plus important que son nom descriptif. Nommage par Catégorie : rebcao propose de regrouper les motifs par familles (Bois, Verre, Parquet, etc.). Cette approche vise à faciliter la recherche pour les utilisateurs qui ne disposent pas du catalogue visuel, leur permettant de trouver un motif par sa fonction.

Un modérateur ajoute une suggestion qualitative importante : en cas de doublons entre des motifs anglo-saxons (en unités impériales) et métriques, il faut privilégier les versions métriques, mieux adaptées au public francophone du forum.

2.5 L’Aboutissement du Projet Collaboratif
Dans les jours qui suivent, les résultats des vérifications manuelles continuent de parvenir à rebcao, comme ceux de Willfrca pour la page 6. Ces contributions, bien que rendues moins critiques par l’intervention de Pako, servent à affiner et valider le catalogue final.
En centralisant ces nouvelles informations, rebcao révise à la hausse l’estimation de la taille de la collection. Il indique que le nombre total de motifs uniques, une fois tous les apports compilés, approcherait finalement les 700. Ce chiffre témoigne de la richesse exceptionnelle du fonds commun, dépassant largement le total déjà impressionnant de 540 motifs établi par Pako.
La discussion se conclut sur la promesse de rebcao : une fois le travail de tri et de renommage terminé, le catalogue final et enrichi sera publié et rendu accessible à tous dans la rubrique de téléchargement du site CADxp. Cette conclusion prometteuse est le fruit d’une dynamique de collaboration dont les facteurs de réussite méritent d’être analysés.

3. Facteurs Clés de la Réussite du Projet
Le succès de cette initiative repose sur la convergence de plusieurs facteurs qui illustrent la force d’une communauté active et solidaire.

  1. L’Initiative et l’Organisation : Le rôle de rebcao a été fondamental. Il a non seulement identifié un besoin partagé, mais il a surtout su rendre le problème divisible en proposant une méthode de travail structurée et en fournissant les outils collaboratifs indispensables (catalogue visuel, tableau de suivi).
  2. La Réactivité et l’Entraide de la Communauté : La mobilisation a été quasi immédiate. Plusieurs membres (Pako, Esbe, Willfrca, Tramber) se sont portés volontaires sans hésitation, démontrant la vitalité de la communauté CADxp et la volonté de ses membres de s’entraider.
  3. La Contribution Décisive d’un Membre : L’intervention de Pako a été le principal accélérateur du projet. La raison de son efficacité réside dans sa capacité à capitaliser sur un travail préalable : sa propre bibliothèque de 417 motifs, déjà organisée et dédoublonnée. En offrant cet actif préexistant à la communauté, il a transformé un effort collectif laborieux en une simple opération de fusion et d’enrichissement.

4. Conclusion
Cette discussion sur le forum CADxp est un exemple remarquable de la manière dont un besoin individuel, une fois partagé au sein d’un espace spécialisé, peut se transformer en un projet collectif porteur de valeur pour l’ensemble d’une communauté. L’initiative de rebcao, combinée à la réactivité et aux compétences des autres membres, a permis de créer une ressource de haute qualité, bien plus riche que ce qu’un utilisateur seul aurait pu accomplir.
Les lecteurs souhaitant consulter l’intégralité des échanges peuvent se référer à la discussion d’origine sur le forum CADxp, datant d’avril et mai 2005.

La liste des acteurs (participants ou mentionnés) de cette discussion, classés par ordre chronologique de leur première apparition dans les sources, est la suivante :

  1. Christian / rebcao

    • Statut/Rôle : Initiateur de la discussion, Formateur, Consultant Expert AutoCAD®, Revit® MEP, Inventor®.
    • Première apparition : Il est l’auteur du message initial daté du 29 avril 2005. Il est identifié par la signature « Christian » et l’identifiant « rebcao » (dans l’édition du message).
  2. Pako

    • Statut/Rôle : Membre, contributeur qui travaille sur le catalogue.
    • Première apparition : Son message de salutations et sa proposition de collaboration apparaissent immédiatement après le message initial de Christian. Il est identifié comme Pako.
  3. Bertrand

    • Statut/Rôle : Modérateur, contributeur prenant la page 1.
    • Première apparition : Il intervient en tant que Modérateur en prenant la page 1. Il est ensuite nommé explicitement par Christian/rebcao : « Merci Bertrand… » et répertorié comme participant dans les remerciements finaux.
  4. Esbe

    • Statut/Rôle : Membre, contributrice prenant la page deux.
    • Première apparition : Elle intervient en tant que « Membres 2,1 k # E » en déclarant : « Moi je prends la deux ». Elle est nommée explicitement par Christian/rebcao (rebcao) dans un message ultérieur : « Bonjour Esbe, tu gardes la page N° 2 », et remerciée plus tard.
  5. Wil / Willfrca

    • Statut/Rôle : Membre, contributeur prenant la page 6.
    • Première apparition : Il intervient en tant que « Membres # W » en s’engageant à s’occuper de la page 6 et se signe « Wil ------ the french canadian ». Christian le remercie et l’identifie comme Willfrca.
  6. Tramber

    • Statut/Rôle : Contribuable mentionné pour avoir rendu sa copie (Page 1).
    • Première apparition : Il est mentionné par Christian/rebcao dans un récapitulatif des pages traitées : « Page 1 Tramber il a rendu sa copie… ».

Christian/rebcao fait également référence à « tous les autres qui participent à ce petit projet ».

Bonjour,

Gile sur Cadxp nous avais partagé ce lisp de Larry Schiele pour créer des .pat à partir d’un dessin.
Il faut dessiner avec uniquement des points et des lignes contenus dans un carré 1x1 avec le point bas gauche au 0,0.

;;;CADALYST 10/05 Tip 2065: HatchMaker.lsp Hatch Maker (c) 2005 Larry Schiele

;;;* ====== B E G I N C O D E N O W ======
;;;* HatchMaker.lsp written by Lanny Schiele at TMI Systems Design Corporation
;;;* Lanny.Schiele@tmisystems.com
;;;* Tested on AutoCAD 2002 & 2006. -- does include a 'VL' function -- should work on Acad2000 on up.

;;; Traduction littérale et approximative des invites en français : Gile
;;;   c:drawhatch  remplacer par c:hatchdraw
;;;   c:savehatch  remplacer par c:hatchsave


(defun c:hatchdraw (/)
  (command "_undo" "_begin")
  (setq os (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (command "_ucs" "_w")
  (command "_pline" "0,0" "0,1" "1,1" "1,0" "_c")
  (command "_zoom" "_c" "0.5,0.5" 1.1)
  (setvar "OSMODE" os)
  (setvar "SNAPMODE" 1)
  (setvar "SNAPUNIT" (list 0.01 0.01))
  (command "_undo" "_end")
  (alert
    "Dessiner le modèle dans un carré de 1x1 \nen utilisant uniquement des POINTS et des LIGNES..."
  )
  (princ)
)

(defun c:hatchsave (/        round    dxf      listtofile        user     selset   selsetsize        ssnth    ent
                    entinfo  enttype  pt1      pt2      dist     angto    angfrom  xdir     ydir     gap      deltax
                    deltay   angzone  counter  ratio    factor   hatchname         hatchdescr        filelines
                    filelines         filename scaler   scaledx  scaledy  rf       x        y        h        _ab
                    _bc      _ac      _ad      _de      _ef      _eh      _fh      dimzin
                   )
;;;* BEGIN NESTED FUNCTIONS
  (defun round (num)
    (if (>= (- num (fix num)) 0.5)
      (fix (1+ num))
      (fix num)
    )
  )
  (defun dxf (code enameorelist / vartype)
    (setq vartype (type enameorelist))
    (if (= vartype (read "ENAME"))
      (cdr (assoc code (entget enameorelist)))
      (cdr (assoc code enameorelist))
    )
  )
  (defun listtofile (textlist filename doopenwithnotepad asappend / textitem file retval)
    (if (setq file (open filename
                         (if asappend
                           "a"
                           "w"
                         )
                   )
        )
      (progn (foreach textitem textlist (write-line textitem file))
             (setq file (close file))
             (if doopenwithnotepad
               (startapp "notepad" filename)
             )
      )
    )
    (findfile filename)
  )
;;;* END NESTED FUNCTIONS
  (princ
    (strcat "\n."                                           "\n 0,1 ----------- 1,1"
            "\n |                | "                        "\n | Lignes et      | "
            "\n | points doivent | "                        "\n | être accrochés | "
            "\n | au plus proche | "                        "\n | 0.01           | "
            "\n |                | "                        "\n 0,0 ----------- 1,0"
            "\n."
            "\nNota: Les lignes doivent être dessinées entre 0,0 et 1,1 et sur une grille de 0.01."
           )
  )
  (textscr)
  (getstring "\nTaper [ENTER] pour continuer...")
  (princ
    "\nSelectionnez un modèle de 1x1 constitué de lignes et/ou de points pour un  nouveau motif de hachures..."
  )
  (while (not (setq selset (ssget (list (cons 0 "LINE,POINT"))))))
  (setq ssnth      0
        selsetsize (sslength selset)
        dimzin     (getvar "DIMZIN")
  )
  (setvar "DIMZIN" 11)
  (if (> selsetsize 0)
    (princ "\nAnalyse des entités...")
  )
  (while (< ssnth selsetsize)
    (setq ent     (ssname selset ssnth)
          entinfo (entget ent)
          enttype (dxf 0 entinfo)
          ssnth   (+ ssnth 1)
    )
    (cond ((= enttype "POINT")
           (setq pt1      (dxf 10 entinfo)
                 fileline (strcat "0," (rtos (car pt1) 2 6) "," (rtos (cadr pt1) 2 6) ",0,1,0,-1")
           )
           (princ (strcat "\n" fileline))
           (setq filelines (cons fileline filelines))
          )
          ((= enttype "LINE")
           (setq pt1     (dxf 10 entinfo)
                 pt2     (dxf 11 entinfo)
                 dist    (distance pt1 pt2)
                 angto   (angle pt1 pt2)
                 angfrom (angle pt2 pt1)
                 isvalid nil
           )
           (if (or (equal (car pt1) (car pt2) 0.0001) (equal (cadr pt1) (cadr pt2) 0.0001))
             (setq deltax  0
                   deltay  1
                   gap     (- dist 1)
                   isvalid t
             )
             (progn (setq ang     (if (< angto pi)
                                    angto
                                    angfrom
                                  )
                          angzone (fix (/ ang (/ pi 4)))
                          xdir    (abs (- (car pt2) (car pt1)))
                          ydir    (abs (- (cadr pt2) (cadr pt1)))
                          factor  1
                          rf      1
                    )
                    (cond ((= angzone 0)
                           (setq deltay (abs (sin ang))
                                 deltax (abs (- (abs (/ 1.0 (sin ang))) (abs (cos ang))))
                           )
                          )
                          ((= angzone 1)
                           (setq deltay (abs (cos ang))
                                 deltax (abs (sin ang))
                           )
                          )
                          ((= angzone 2)
                           (setq deltay (abs (cos ang))
                                 deltax (abs (- (abs (/ 1.0 (cos ang))) (abs (sin ang))))
                           )
                          )
                          ((= angzone 3)
                           (setq deltay (abs (sin ang))
                                 deltax (abs (cos ang))
                           )
                          )
                    )
                    (if (not (equal xdir ydir 0.001))
                      (progn (setq ratio  (if (< xdir ydir)
                                            (/ ydir xdir)
                                            (/ xdir ydir)
                                          )
                                   rf     (* ratio factor)
                                   scaler (/ 1
                                             (if (< xdir ydir)
                                               xdir
                                               ydir
                                             )
                                          )
                             )
                             (if (not (equal ratio (round ratio) 0.001))
                               (progn (while (and (<= factor 100) (not (equal rf (round rf) 0.001)))
                                        (setq factor (+ factor 1)
                                              rf     (* ratio factor)
                                        )
                                      )
                                      (if (and (> factor 1) (<= factor 100))
                                        (progn (setq _ab (* xdir scaler factor)
                                                     _bc (* ydir scaler factor)
                                                     _ac (sqrt (+ (* _ab _ab) (* _bc _bc)))
                                                     _ef 1
                                                     x   1
                                               )
                                               (while (< x (- _ab 0.5))
                                                 (setq y (* x (/ ydir xdir))
                                                       h (if (< ang (/ pi 2))
                                                           (- (+ 1 (fix y)) y)
                                                           (- y (fix y))
                                                         )
                                                 )
                                                 (if (< h _ef)
                                                   (setq _ad x
                                                         _de y
                                                         _ae (sqrt (+ (* x x) (* y y)))
                                                         _ef h
                                                   )
                                                 )
                                                 (setq x (+ x 1))
                                               )
                                               (if (< _ef 1)
                                                 (setq _eh     (/ (* _bc _ef) _ac)
                                                       _fh     (/ (* _ab _ef) _ac)
                                                       deltax  (+ _ae
                                                                  (if (> ang (/ pi 2))
                                                                    (- _eh)
                                                                    _eh
                                                                  )
                                                               )
                                                       deltay  (+ _fh)
                                                       gap     (- dist _ac)
                                                       isvalid t
                                                 )
                                               )
                                        )
                                      )
                               )
                             )
                      )
                    )
                    (if (= factor 1)
                      (setq gap     (- dist (abs (* factor (/ 1 deltay))))
                            isvalid t
                      )
                    )
             )
           )
           (if isvalid
             (progn (setq fileline (strcat (angtos angto 0 6)
                                           ","
                                           (rtos (car pt1) 2 8)
                                           ","
                                           (rtos (cadr pt1) 2 8)
                                           ","
                                           (rtos deltax 2 8)
                                           ","
                                           (rtos deltay 2 8)
                                           ","
                                           (rtos dist 2 8)
                                           ","
                                           (rtos gap 2 8)
                                   )
                    )
                    (princ (strcat "\n" fileline))
                    (setq filelines (cons fileline filelines))
             )
             (princ
               (strcat "\n * * * Ligne avec angle non valide " (angtos angto 0 6) (chr 186) " proscrit. * * *")
             )
           )
          )
          ((princ (strcat "\n * * * Entite non valide " enttype " proscrit(e).")))
    )
  )
  (setvar "DIMZIN" dimzin)
  (if (and filelines
           (setq hatchdescr (getstring t "\nDécrivez brièvement ce motif de hachures: "))
           (setq filename (getfiled "Fichier de hachures"
                                    "c:\\perso\\hachure\\hachure phil\\"
 ; Chemin du dossier des hachures personnalisées[/surligneur]
                                    "pat"
                                    1
                          )
           )
      )
    (progn (if (= hatchdescr "")
             (setq hatchdescr "Modèle de hachures personnalisé")
           )
           (setq hatchname (vl-filename-base filename)
                 filelines (cons (strcat "*" hatchname "," hatchdescr) (reverse filelines))
           )
           (princ "\n============================================================")
           (princ (strcat "\nAttendez que le fichier de hachures soit créé SVP...\n"))
           (listtofile filelines filename nil nil)
           (command "_delay" 1500) ; Délai requis pour que le fichier soit créé et trouvé (stupide, mais requis)
           (if (findfile filename)
             (progn (setvar "HPNAME" hatchname)
                    (princ (strcat "\nLe motif de hachures '" hatchname "' est prêt pour l'utilisation !"))
             )
             (progn (princ "\nImpossible de créer le fichier de hachures:") (princ (strcat "\n " filename)))
           )
    )
    (princ (if filelines
             "\nAbandon."
             "\nImpossible de créer le motif de hachures avec les entités sélectionnées."
           )
    )
  )
  (princ)
)

(princ "\n ************************************************************** ")
(princ "\n** **")
(princ "\n* HatchMaker.lsp written by Lanny Schiele -- enjoy! *")
(princ "\n* *")
(princ "\n* Taper DRAWHATCH pour avoir l'environment de dessin. *")
(princ "\n* Taper SAVEHATCH pour enregistrer le motif créé. *")
(princ "\n** **")
(princ "\n ************************************************************** ")
(princ)



J’ai testé sur un AutoCAD® 2025, il fonctionne bien.

1 « J'aime »