Bred Posté(e) le 7 septembre 2007 Posté(e) le 7 septembre 2007 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...
(gile) Posté(e) le 8 septembre 2007 Posté(e) le 8 septembre 2007 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
Bred Posté(e) le 8 septembre 2007 Auteur Posté(e) le 8 septembre 2007 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...
Bred Posté(e) le 8 septembre 2007 Auteur Posté(e) le 8 septembre 2007 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...
(gile) Posté(e) le 8 septembre 2007 Posté(e) le 8 septembre 2007 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
Bred Posté(e) le 8 septembre 2007 Auteur Posté(e) le 8 septembre 2007 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...
(gile) Posté(e) le 8 septembre 2007 Posté(e) le 8 septembre 2007 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
Bred Posté(e) le 8 septembre 2007 Auteur Posté(e) le 8 septembre 2007 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...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant