# Changer toutes les hachures du type SOLID en hachures du type USER

**URL:** https://dessein-tech.com/t/changer-toutes-les-hachures-du-type-solid-en-hachures-du-type-user/10983
**Category:** AutoCAD support
**Tags:** support, lisp, programmation, expert_elite
**Created:** 2026-07-22T15:04:33Z
**Posts:** 2

## Post 1 by @Patrick — 2026-07-22T15:04:34Z

Suite à une [question](https://forums.autodesk.com/t5/autocad-tous-produits-forum/remplacer-les-hachures-solide-par-des-user-45-et-espacement-0-06/td-p/14208004) posée sur le forum AutoCAD Autodesk un petit Lisp ci-dessous pour changer toutes les hachures du type SOLID en hachures du type USER.

[SolidToUser.lsp](/uploads/short-url/f5k5bkSbaXonnfAoZki1wufTaEA.lsp) (1,9 Ko)

```
(defun c:SolidToUser ( / ss i ent obj hSpace hAngle count)
  (vl-load-com)
  
  ;; Astuce : on utilise un filtre de sélection pour ne prendre que les Hachures ET qui sont "SOLID"
  (prompt "\nSélectionnez les hachures SOLID à remplacer <Entrée pour traiter tout le dessin> : ")
  (if (not (setq ss (ssget '((0 . "HATCH") (2 . "SOLID")))))
    (setq ss (ssget "_X" '((0 . "HATCH") (2 . "SOLID")))) ; Sélection globale si l'utilisateur fait Entrée
  )

  (if ss
    (progn
      ;; On demande à l'utilisateur l'espacement et l'angle pour la nouvelle hachure
      (setq hSpace (getdist "\nSpécifiez l'espacement des lignes pour la hachure USER <1.0>: "))
      (if (not hSpace) (setq hSpace 1.0))
      
      (setq hAngle (getangle "\nSpécifiez l'angle (en degrés) pour la hachure USER <0>: "))
      (if (not hAngle) (setq hAngle 0.0))

      (setq count 0)
      ;; Boucle à travers la sélection
      (repeat (setq i (sslength ss))
        (setq ent (ssname ss (setq i (1- i))))
        (setq obj (vlax-ename->vla-object ent))

        ;; La méthode magique : vla-SetPattern (Objet TypeDeMotif "NomDuMotif")
        ;; Type 1 = acHatchPatternTypeUserDefined (Défini par l'utilisateur)
        ;; Le nom importe peu pour le type 1, on met conventionnellement "_USER"
        (vla-SetPattern obj 1 "_USER")
        
        ;; On applique le nouvel espacement et l'angle
        (vla-put-PatternSpace obj hSpace)
        (vla-put-PatternAngle obj hAngle)
        
        ;; On recalcule la géométrie et on met à jour l'affichage
        (vla-Evaluate obj)
        (vla-Update obj)
        
        (setq count (1+ count))
      )
      (princ (strcat "\nTerminé ! " (itoa count) " hachure(s) SOLID modifiée(s) en USER."))
    )
    (princ "\nAucune hachure SOLID n'a été trouvée ou sélectionnée.")
  )
  (princ)
)

(princ "\nCommande chargée. Tapez SOLIDTOUSER pour l'exécuter.")
(princ)
```

---

## Post 2 by @Patrick — 2026-07-22T15:06:13Z

Pour modifier le motif d’une hachure en Visual LISP, AutoCAD oblige à utiliser la méthode **`vla-SetPattern`**. Cette méthode recalcule la géométrie interne de la hachure, ce qu’un simple changement de nom ne pourrait pas faire.

De plus, il y a un petit «&nbsp;piège&nbsp;» à anticiper : une hachure `SOLID` n’a pas besoin d’échelle, d’espacement ou d’angle. En revanche, une hachure `USER` (qui trace des lignes) **exige un espacement** sous peine de générer une erreur ou de s’afficher de manière invisible
