Aller au contenu

Messages recommandés

Posté(e)

Salut,

Je n'arrive pas à hachurer en vl...

J'arrive à créer l'objet hachure (ex repiqué)

(setq vla_hatch (vla-addhatch
	      (vla-get-modelSpace
		(vla-get-activeDocument (vlax-get-acad-object)))
	      acHatchPatternTypePredefined
	      "SOLID"
	      :vlax-false))

 

mais pour l'appliquer à un contour.... je ne comprends pas l'aide...

j'ai l'impression qu'il faut que j'utilise vla-AppendInnerLoop....

 

pour info, ma forme à hachurer esr une région.

 

merci d'avance !

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Salut Bred,

 

C'est ça, AppendOuterLoop pour faire la boucle extérieur du contour de hachure et AppendInnerLoop pour les ilots intérrieurs.

 

Les arguments sont l'objet hachure et un variant (safearray) de tous les objets constituant le contour fermé.

Comme d'hab, pour éviter de faire un variant on peut utiliser vlax-invoke avec une liste.

 

Dans ton exemple, avec reg = la region à hachurer (vla-object) :

 

(vlax-invoke vla_hatch 'AppendOuterLoop (list reg)) 

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

Posté(e)

OK !

je vais essayer ça.

merci ! :P :D

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Alors ça fonctionne...

mais que pour des entités avec une normale sur les Z à 1 j'ai l'impression... :mad:

 

J'ai dans l'idée de faire une bascule de ma région avant de la hachurer, mais j'ai une erreur avec (vla-put-normal ... :

 

avec ent une region en vla-objet :

(vla-put-normal ent (vlax-3D-point '(0 0 1)))

; erreur: Le serveur ActiveX a renvoyé une erreur: Le type ne correspond pas

 

une idée ???...

merci.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Il semble que pour les régions la propriété Normal soit en lecture seule.

 

De toutes façon ça serait plutôt la normale de vla_hatch qu'il faudrait changer avant de fair le AppendOuterLoop :

 

(vla-put-Normal vla_hatch (vla-get-Normal reg)) 

 

Mais il subsiste un problème sur lequel je bute encore : celui de l'élévation. Je n'arrive pas à récupérer cellede la région : cette propriété n'est pas disponible pour les regions et les seules coordonnées qu'on pourrait récupérer sont celles du Centroid mais il faut que la région soit dans le plan du SCU courant.

 

Donc, peut-être passer par un Explode de la region ou un changement de SCU.

 

PS : j'ai aussi essayé avec les matrices de transformation : même problème d'élévation.

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

Posté(e)

merci (gile),

 

Il semble que pour les régions la propriété Normal soit en lecture seule.

L'aide ne dit rien de tel j'ai l'impression :mad:

 

...ou un changement de SCU.

c'est ce que je voudrais éviter !

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Je pense avoir trouvé un moyen en passant par un Explode :

 

En tout cas, les hachures en Visual LISP, c'est pas de la tarte, et les régiions, comme les solides 3d semblnt être un dommaine réservé d'AutoCAD pour la programmation.

 

(setq reg (vlax-ename->vla-object (car (entsel))))
(setq norm (vlax-get reg 'Normal))
(setq expl (vlax-invoke reg 'explode))
(setq vla_hatch	(vla-addhatch
	  (vla-get-modelSpace
	    (vla-get-activeDocument (vlax-get-acad-object))
	  )
	  acHatchPatternTypePredefined
	  "SOLID"
	  :vlax-false
	)
)
(vla-put-Normal vla_hatch (vlax-3d-point norm))
(vla-put-Elevation
 vla_hatch
 (caddr (trans (vlax-curve-getStartPoint (car expl)) 0 norm))
)
(vlax-invoke vla_hatch 'AppendOuterLoop expl)
(mapcar 'vla-delete expl) 

 

[Edité le 8/9/2007 par (gile)]

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

Posté(e)

Et bin !!!...

comme d'habitude !

Je cherchais, et je n'en étais trés loin !

encore merci !

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

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é