Aller au contenu

Messages recommandés

Posté(e)

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 !

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Le entmod=vla-put

Le 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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:

 

 

Posté(e)

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'impose

Encore 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

C'est à dire ?

Une expression autolisp reste ce quelle est. De même pour le vlisp

Le 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 logique

Tu 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 faire

Sur 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 courant

En méthode, je trouve aussi par exemple quit

Donc 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)
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 spams

ou par message privé

Posté(e)

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

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é