stephan35 Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 Bonjour à tous, Après avoir repiqué du code pour modifié des attributs en vlisp, j'ai un problème de mise à jour,qlqun peut-il m'aider svp ? (if(=(vla-get-ObjectName i)"AcDbAttributeDefinition") (progn (print "x") (print (vla-get-height i)) (vla-put-height i (* (vla-get-height i) scala)) (vla-update i) ) ) J'ai du oublié un truc ? :casstet: Merci !
Patrick_35 Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 Salut Essaye(entupd (vlax-vla-object->ename i)) ps : je n'ai pas encore trouvé l'intérêt du vla-update, tout comme le Highlight qui ne fonctionne pas vraiment sur des attributs et donc je suis obligé d'utiliser redraw :( @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 1 mars 2007 Auteur Posté(e) le 1 mars 2007 Ok, merci ! Moi qui pensait trouver l'équivalent de (entmod ...)(entupd ...)(redraw ... 1) en vlisp :casstet: Pffff ! A+
stephan35 Posté(e) le 1 mars 2007 Auteur Posté(e) le 1 mars 2007 Opps, Parler trop vite .... ça ne marche pas ! Je cherche un peu ! Merci
Patrick_35 Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 Le entmod=vla-putLe entupd fonctionne, c'est la mise à jour graphique de l'entité modifiéSinon, uniquement en vla, il faut utilser un (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acAllViewports)Et puis le vlisp n'est pas forcement l'aboutissement. Il faut se servir de ce qui est le plus pratique et le plus simple. Ca ne me dérange absolument pas de mélanger dans mes lisps autolisp et vlisp.C'est le résultat qui compte. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 1 mars 2007 Auteur Posté(e) le 1 mars 2007 Je dois être un peu trop cartésien .... Pour moi seul l'entmod compte et fonctionnait dans les lisps .... Donc je faisais un entmod de mon entget modifié, puis un regen global .... Et puis le vlisp n'est pas forcement l'aboutissement. Il faut se servir de ce qui est le plus pratique et le plus simple. Ca ne me dérange absolument pas de mélanger dans mes lisps autolisp et vlisp. On m'aurait menti ???donc pas la peine de me tuer à la tache basculement Lisp > Vlisp ? :casstet: Quel est l'intérêt du Vlisp dans ce cas ? :casstet: Je peu conserver mes programmes Lisp ? :casstet:
Patrick_35 Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 Le vlisp est beaucoup plus puissant qu'autolisp et permet pas exemple de modifier des tables dans autocad , ce que ne sait pas forcement faire autolisp.De plus, j'évite autant que possible d'utiliser un command et de modifier les variables, et c'est aussi pour cela que le vlisp est intéressant.Ensuite, si tu veux jouer avec les activex, les réacteurs, les vlax-curve-*** ou encore les vlax-ldata-***, le vlisp s'imposeEncore une chose, il me semble aussi q'une instruction en vlisp est plus rapide qu'un command. J'ai du le lire quelque part, mais je ne sais plus où. Donc, pour ce qui est du mélange des genres, si la mise à jour d'une entité en autolisp me permet d’éviter un regen, même en vla, j’utilise autolisp.Le highlight ne marche pas sur un attribut en vlisp, j'utilise redraw.Je recherche à qui appartient une entité d'un (nentsel), j'utilise(cdr (assoc 2 (entget (car (last(nentsel))))))qui est plus simple à mon gout qu'un(setq att (vlax-ename->vla-object (car (nentsel)))) (vla-get-name (vla-objectidtoobject (vla-get-database att)(vla-get-ownerid att)))Voila quelques exemple, il y en a sûrement d'autres. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 Ah oui, un autre exemple qui me revient en mémoire est la sélection d'entités et surtout avec l'utilisation des filtres. Reste en autolisp car avec le vlisp, cela devient vite une galère. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lovecraft Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 bonjour, Je vois que vous parliez d'autolisp et Vlisp.savez vous , ou l'on peut trouver les equivalences autolisp ====> Vlisp.Merci d'avance de vos réponses.LB http://www.youtube.com/user/CADMINATOR?feature=mhee
Patrick_35 Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 C'est à dire ?Une expression autolisp reste ce quelle est. De même pour le vlispLe tout se complète et se retrouve même en doublon.Si c'est pour traduire un (gervar "cmdecho") en (vlax-invoke (vla-get-activedocument (vlax-get-acad-object)) 'getvariable "cmdecho"), reste avec le getvar.Si c'est pour trouver à quoi correspond les vla-***, il y a une logiqueTu prends la base qui est (setq a (vlax-get-acad-object))Avec un (vlax-dump-object a t), tu as tout ce qui est possible de faireSur toutes les Valeurs de propriétés, tu peux faire des vla-put-*** et vla-get-***Sur toutes les Méthodes prises en charge, tu fais un vla-***En propriété, pas exemple tu vois activedocument, ce qui correspond au dessin en cours. Donc pour pouvoir l'utiliser, un (vla-get-activedocument a) me permet d'être sur le dessin courantEn méthode, je trouve aussi par exemple quitDonc un (vla-quit a) me fait quitter autocad.Donc pour continuer sur les propriétés, je rechercher par exemple les calques de mon dessin courant(setq b (vla-get-activedocument a)) --> je suis sur le dessin courant(setq c (vla-get-layers b)) --> je trouve la table des calques(setq d (vla-item c "un_calque")) --> j'ai les données du calque "un_calque" Si tu veux voir plus en détail toutes ces expressions ainsi que leurs syntaxes, tu lances le module vba (alt+f11), ensuite f2 pour l’explorateur d’objets et dans la bibliothèque, tu vas sur Autocad, et là, tu trouves ton bonheur et les mêmes données qu’avec le (vlax-dump-object …) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
stephan35 Posté(e) le 1 mars 2007 Auteur Posté(e) le 1 mars 2007 bonjour, Je vois que vous parliez d'autolisp et Vlisp.savez vous , ou l'on peut trouver les equivalences autolisp ====> Vlisp.Merci d'avance de vos réponses.LB J'ai un pdf qui explique en détail le vlisp, cependant, malheureusement, on ne peut pas parler de correspondance .... Si tu souhaites ce fichier,donne moi ton adresse courriel en precisant en toute lettre arobase et point pour eviter les spamsou par message privé
lovecraft Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 Je vous remercie pour l'attention que vous avez apportez à mon appel.... ;)Voici mon mail, car je suis interressé par ton fichier PDF.l point barraud arobase wanadoo point frMerci http://www.youtube.com/user/CADMINATOR?feature=mhee
(gile) Posté(e) le 1 mars 2007 Posté(e) le 1 mars 2007 Salut, Je suis complètement d'accord avec Patrick_35, même si souvent j'essaye de consever une "cohérence" pour le langage utilisé dans un LISP. Je pense qu'il faut voir Visual LISP comme une extension d'AutoLISP plutôt que comme une alternative à celui-ci. En VisualLISP on utilise forcément les fonctions LISP "de base" (les opérateurs, les fonctions de traitement des listes, etc.). Certaines propriétés ne sont accessibles que par les fonctions vla-* (Centroid, propriétés de blocs dynamiques...), d'autres ne le sont que par les listes entget (l'entité ayant servi à faire une fenêtre polygonale, par exemple) et dans certains cas on ne peut éviter d'utiliser un command (certaines nouvelles commandes 2007 n'ont pas (encore ?) d'équivalent en Vlisp). Pour ce qui est de la rapidité d'exécution, j'ai pu remarquer que command est pratiquement toujours plus lent, les fonction vla-* semblent être aussi rapide que les entmake, entmod. [Edité le 1/3/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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