VDH-Bruno Posté(e) le 27 octobre 2011 Posté(e) le 27 octobre 2011 Bonsoir à tous, Je me lance en ActiveX et je me suis enfin décidé à lâcher mon bon vieux fichier d’aide version R14 (français), pour les fichiers d’aides plus actuels mais en anglais, la bonne nouvelle c’est qu’à force d’insister je commence timidement à déchiffrer l’anglais.. La mauvaise c’est que je ne saisie pas encore bien toutes les subtilités de language.. J’aurais une question de syntaxe toute bête à soumettre au sujet d’ActiveX, prenons un code simple (qui peut ce généraliser à la plupart des propriétés) par exemple rendre le calque 0 inactif dans le dessin courant. Pour faire cela j’ai testé qu’avec ActiveX deux syntaxes sont possibles. La syntaxe avec vlax du type:(vlax-put-property object property argument) ou (vlax-get-property object property) Le code;; Calque 0 courant avec syntaxe vlax- (defun calque0 (/ document calques) (vl-load-com) (setq document (vlax-get-property (vlax-get-acad-object) 'activedocument)) (setq calques (vlax-get-property document 'layers)) (vlax-put-property document 'activelayer (vla-item calques "0")) ) Ou privilégier la syntaxe vla du type:(vla-put-propr object argument) ou (vla-get-propr object) Le code;; Calque 0 courant avec syntaxe vla- (defun calque0 (/ document calques) (vl-load-com) (setq document (vla-get-activedocument (vlax-get-acad-object))) (setq calques (vla-get-layers document)) (vla-put-activelayer acaddocument (vla-item calques "0")) ) Mes questions sont les suivantes pourquoi faire 2 syntaxes, laquelle privilégier, et sont elles toujours possible.. (à priori je suis tenté de dire oui). Merci à ceux qui pourront m’éclairer.Bruno Apprendre => Prendre => Rendre
(gile) Posté(e) le 27 octobre 2011 Posté(e) le 27 octobre 2011 Salut, Il n'y a pas deux mais trois syntaxes, les deux que tu cites plus la plus ancienne : vlax-get, vlax-put, vlax-invoke. Les fonction vla-* ne fonctionnent qu'avec l'API COM d'AutoCAD.Si tu utilises des objets COM externes (application Excel par exemple) il faut utiliser les fonctions vlax-get-property, vlax-put-property, vlax-invoke-method. Ces méthodes peuvent aussi être utilisées avec des listes de propriétés, par exemple pour copier les propriétés d'un objet sur un autre :(foreach p '(Layer Color LineType) (vlax-put-property obj1 p (vlax-get-property obj2 p))) Les "vieilles" methodes vlax-get, vlax-put, vlax-invoke dont Autodesk promet depuis belle lurette la suppression (ce qu'il ne fait heureusement pas) s'utilisent comme les "nouvelles" méthodes vlax-*, mais présentent parfois un avantage certain quand les propriétés ou les arguments des méthodes sont des collections : elle prennent ou retournent ces collections sous forme de listes LISP plutôt que de variants ou safearrays.Par exemple :(vlax-get- circle 'Center) retourne une liste de 2 réels là où (vlax-get-property circle 'Center) ou (vla-get-Center circle) retournent un variant qui contient un safearray de doubles (nombres réels). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 27 octobre 2011 Posté(e) le 27 octobre 2011 J'oubliais, les fonctions vla-* ont un avantage : elles permettent d'éviter plus facilement les fautes d'orthographe quand on utilise l'éditeur Visual LISP en s'affichant en bleu si elles sont correctement orthographiée ce que ne font pas les propriétés et méthodes sous forme de symboles ou de chaînes.De plus, elles permettent l'accès direct à l'aide avec Ctrl+F1, enfin permettaient jusqu'à la version 2010 (merci encore à Autodesk pour la nouvelle aide :angry: ). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
VDH-Bruno Posté(e) le 27 octobre 2011 Auteur Posté(e) le 27 octobre 2011 Merci (gile) pour ta réactivité et toutes ces précisions je vais tester et décortiquer tes exemples. Histoire de m’imprégner un peu plus de tous cela..A+ Bruno Apprendre => Prendre => Rendre
Tramber Posté(e) le 28 octobre 2011 Posté(e) le 28 octobre 2011 Bonjour, Je te conseille aussi la lecture de ce sujet très intéressant. Des pistes de réflexions... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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