Aller au contenu

Changer calque hachure


Messages recommandés

Posté(e)

Bonjour,

 

J'ai un lisp qui permet de supprimer toutes les hachures d'un dessin, même dans les blocs :

 

 (defun c:effhatch ()
(vl-load-com)
(setq a (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
(vlax-for bl a
(vlax-for ent bl
(if (= (vla-get-objectname ent) "AcDbHatch")
(vla-delete ent)
)
)
)
(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acActiveViewport)

 

Je voudrais l'adapter pour qu'il ne sélectionne que les hachures "solides", qu'il les passe en couleur ducalque et qu'il les mette sur un calque "hachure". Quelqu'un pourrait m'aider ?

 

[Edité le 4/4/2007 par LUDWIG]

Autocad 2021 - Revit 2022 - Windows 10

Posté(e)

Salut,

 

Ton LISP ne devait fonctionner que pour les hachures dans les blocs.

En voici un autre qui, pour toutes les hachures "SOLID" du dessin (y compris dans des blocs), met les hachures sur le calque "hachures" en couleur "DuCalque".

 

Edit : ajout d'un groupe d'annulation.

 

(defun c:layhatch (/ doc ss n ent a bl)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vl-load-com)
 (if (tblsearch "LAYER" "hachure")
   (progn
     (vla-StartUndoMark doc)
     (setq a (vla-get-blocks doc)
     )
     (vlax-for	bl a
(vlax-for ent bl
  (if (and (= (vla-get-objectname ent) "AcDbHatch")
	   (= (vla-get-PatternName ent) "SOLID")
      )
    (progn
      (vla-put-Layer ent "hachure")
      (vla-put-color ent acByLayer)
    )
  )
)
     )
     (vla-regen doc acActiveViewport)
     (vla-EndUndoMark doc)
   )
   (alert "Le calque \"hachure\" n'existe pas.")
 )
 (princ)
)

[Edité le 4/4/2007 par (gile)]

 

[Edité le 4/4/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)
Ton LISP ne devait fonctionner que pour les hachures dans les blocs.

Et non (gile)

Fait un

(vla-get-name (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) 0))

Et c'est l'espace objet :o

Maintenant, si tu prends l'item 1, tu trouveras le premier onglet de présentation ;)

 

Pour répondre à Ludwig, le lisp devra aussi modifier les blocs ou seulement ce qui est sur le dessin ?

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

merci les pros !

 

J'avais cherché de mon côté et trouvé le vla-get-patternName, mais je ne savais pas quelles étaient les méthodes pour changer la couleur et le calque.

 

Patrick_35, c'est bien ça que je cherchais : que les hachures solides, qu'elles soient dans un bloc ou non, soient affectées par le lisp.

 

Merci encore

Autocad 2021 - Revit 2022 - Windows 10

  • 1 mois après...
Posté(e)

Voici une version du programme qui permet de gérer les hachures créé avec ALLPLAN (expérience avec un architecte)

 

 (defun c:LayerSolidHathInBlocks	(/ doc ss n ent a bl)
;http://www.cadxp.com/sujetXForum-14601.htm
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vl-load-com)
 (if (not (tblsearch "LAYER" "Hachures à cacher"))
   (entmake (list (cons 0 "LAYER")
	   (cons 100 "AcDbSymbolTableRecord")
	   (cons 100 "AcDbLayerTableRecord")
	   (cons 2 "Hachures à cacher")
	   '(70 . 3)
	   '(62 . -7)
	   (cons 6 "Continuous")
	   '(290 . 0)
	   )))
 (vla-StartUndoMark doc)
 (setq	a (vla-get-blocks doc)
 )
 (vlax-for bl a
   (vlax-for ent bl
     (if (and (= (vla-get-objectname ent) "AcDbHatch")
       (or (= (vla-get-PatternName ent) "SOLID,_I")
                  (= (vla-get-PatternName ent) "SOLID"))
  )
(progn
  (vla-put-Layer ent "Hachures à cacher")
  (vla-put-color ent acByLayer)
)
     )
   )
 )
 (vla-regen doc acActiveViewport)
 (vla-EndUndoMark doc)

 (princ)
)

 

Le programme suivant liste tous les noms des hachures.

 (defun c:QuiSOLID	(/ doc ss n ent a bl)
;http://www.cadxp.com/sujetXForum-14601.htm
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vl-load-com)
 (vla-StartUndoMark doc)
 (setq	a (vla-get-blocks doc)
 )
 (vlax-for bl a
   (vlax-for ent bl
     (if (= (vla-get-objectname ent) "AcDbHatch")
(print (vla-get-PatternName ent)
)
     )
   )
 )
 (vla-EndUndoMark doc)

 (princ)
)

 

[Edité le 19/5/2007 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é