(gile) Posté(e) le 15 juin 2006 Posté(e) le 15 juin 2006 Peut-être, que j'enfonce un porte ouverte, mais je suis tellement content de ma découverte, que j'ai envie de la partager. Bruno Toniutti m'avais fait remarqué ici qu'en utilisant (vlax-get objet 'coordinates) il était retourné une liste de coordonnées plus directement exploitable en LISP que le variant retourné par (vla-get-coordinates objet). Je viens de découvrir qu'il en est de même avec (vlax-invoke ...), attention, pas (vlax-invoke-method ...) qui retourne aussi un variant. Par exmple : (setq liste_objets (vlax-invoke bloc 'explode))retourne directement la liste des objets composant bloc, que jusque là, j'obtenais en faisant : (setq liste_objets (vlax-safearray->list (vlax-variant-value (vla-explode bloc) ) ) ) Et aussi, (vlax-invoke ...) accepte comme argument une liste là où (vla- ...) et (vlax-invoke-method ...) demandent un variant : (vlax-invoke ModSpace 'addRegion liste_objets)fonctionne comme : (vla-addRegion ModSpace (vlax-make-variant (vlax-SafeArray-fill (vlax-make-SafeArray vlax-vbObject (cons 0 (- (length liste_objets) 1)) ) liste_objets ) ) ) En espérant que cela puisse être aussi profitable à d'autres. [Edité le 15/6/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 15 juin 2006 Posté(e) le 15 juin 2006 Ca va être utilie à plus d'un :laugh: Je ne connaissais pas cette manière et qui est bien plus courte :cool:A tester, mais ça ne fonctionne que pour des listes type variants ? :exclam: Ce qui est fou, je viens de regarder dans l'aide, le vlax-get et vlax-methode ne sont pas dans l'aide :o . On peut en déduire un vlax-put, un vlax-create, un vlax-curve , etc... ??? :casstet: En tout cas, un grand merci pour ta déduction @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 15 juin 2006 Auteur Posté(e) le 15 juin 2006 Extrait de l'aide pour vlax-invoke-method : This function was known as vlax-invoke prior to AutoCAD 2000 C'est la même chose pour vlax-get-property et vlax-put-property, peut-être une survivance d'avant l'introduction de variant et safearray dans le VisualLISP ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 16 juin 2006 Posté(e) le 16 juin 2006 Pratique ! tiens, une citation du Visual_Lisp_Developers_Bible : Examples: (vlax-invoke-method objLine “Move” point1 point2) (vla-Move objLine point1 point2) (vlax-invoke objLine “Move” point1 point2) All of these of these examples do the same thing. This is generally true for most AutoCAD objects, but not for objects created from imported TypeLib interfaces or external applications or ActiveX components. You should use the first form for working with external application objects, however you can use the second form for internal objects. The third form is a leftover from R14 for compatibility only. Effectivement, c'est un reste du passé... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 16 juin 2006 Posté(e) le 16 juin 2006 Effectivement, c'est un reste du passé... Ce qui veut dire que logiquement, dans les futurs versions, on risque de ne plus trouver ces fonctionnalités ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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