Qqs trucs sur Autocad et d'autres logiciels DAO...
Accueil Initiation Méthodologie Variables Comment faire ? Lisps Sommaire
Soft & liens Revit 2020 CVC sur autocad Linux CloudCompare Initiation à Autolisp Blog

2 mots sur Vlisp

Il a fallut que je me confronte à Vlisp pour accéder aux propriétés de blocs dynamiques. Franchement c'est ... un peu particulier...

Alors comme d'ab, je ne vais pas prétendre en dire plus ou mieux que les tous bons dans le domaine, vous trouverez en fin de page un lien ver le forum spécialisé.

Alors, pour commencer, Vlisp est une extention d'autolisp, donc, en tant que telle, pour pouvoir l'utiliser il faut charger les fonctions avec

(vl-load-com)

puis déclarer que l'on va travailler dans le document acctif

(setq doc-vba (vla-get-activedocument (vlax-get-acad-object)))

Pour un objet donné on avait vu son nom et et ses propriétés contenu dans leur code DXF. En fait, il y a en plus, ou plutot en paralelle, un nom VBA, et des propriétés VBA. Pour accéder au nom DXF de l'entité il fallait utiliser (ssname +n° d'ordre dans un jeu de sélection
Pour les fonctions VBA, il faut convertir le jeu de sélection en jeu de sélection VBA, et en extraire l'entité VBA

(setq sel-vba (vla-get-activeselectionset doc-vba)) ; sel-vba est le selection set courant de doc
(setq ent-vba (vla-item sel-vba 0)) ;ent-vba est le 1er élément de sel-vba

Il faudra penser à détruire ce jeu de sélection VBA avec (vla-delete sel-vba)

C'est après que ça se complique. Toutes les fonctions changent, et je les trouvent pas super lisible. Je vous renvoie donc une foi de plus vers la prose du maitre. ou les bases de la syntaxe sont expliquées.

Dump

Le Dump est une copie de données brutes d'un objet.... Ou plutot une erruption quand on voie la quantité de chose qu'on obtient sur une cote ou un bloc..

La commande pour ça est: (vlax-dump-object obj [T]) .... (jetez un coup d'oeil à l'aide VBA )

Si vous avez suivi, on est maintenant capable d'écrire un code pour sortir le dump d'un objet sélectioné. Quand on a vu la fonction pour les codes DXF, on pouvait se permettre de le faire sur une petite quandtité d'objets selectionné, mais le dump est un peu plus important en terme de nombre de lignes retournés, on va donc le ne faire que sur un seul objet.
Voici le code que j'ai fait.

dans le post de (gile), on peu retenir cette citation:

De plus, pour chaque propriété et méthode de l'API AutoCAD une fonction directe spécifique a été définie :
vla-get-<NomDeLaPropriete>, vla-put-<NomDeLaPropriete> et vla-<NomDeLaMethode>

il est donc important de pouvoir observer toutes les propriétés aux quelles on peu prétendre accéder grace à la fonction qu'on vient de créer

Je ne dis pas que c'est la panacé universelle, et je préfère m'en passer, mais il y a des cas ou il n'y à pas moyen de faire sans les fonctions Vlisp. Ceux qui conaisse VisualBasic serons sans doute moins dérouté que moi pour construire des programmes en pur Vlisp, mais pour un débutant, je ne suis pas sur qu'on puisse s'en sortir sans aide.

Ces 2 mots posés, il est temps pour vous d'approfondir tout ça en parcourant le forum dédié au Visual lisp. Les post épeinglés en tête sont essentiels si vous voullez aller plus loin, et de poser vos questions le cas échéant à des gens qui seront capable d'y répondre.

 

lien vers cadXP