Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

En raison de l'abandon du VBA, je souhaite apprendre le lisp, pour migrer en partie les outils dont j'ai besoin. dans l'éditeur VBA, il était possible de chercher les méthodes pour les fonctions, avec l'éditeur VLISP est-ce possible ?

 

Sinon, où trouvez-vous les commandes ?

 

Par exemple, une commande pour créer un état de calque ?

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Bonjour,

 

… de chercher les méthodes pour les fonctions, avec l'éditeur VLISP est-ce possible ?

Par exemple, une commande pour créer un état de calque ?

 

Rapidement pour te donner l’idée général.. Chercher les méthodes et propriétés avec Visual Lisp :

 

Soit en tapant dans la Console Visual LISP

_$ (vlax-get-acad-object)
#<VLA-OBJECT IAcadApplication 00d098b4>

Puis en utilisant la fenêtre Inspecter de la fenêtre espion pour me promener dans la nomenclature ActiveX.

 

 

Ou alors à coup de à coups de (vlax-dump-object mon-objet T)

 

Pour les entitées graphiques directement sur la ligne de commande AutoCAD avec l’instruction suivante :

(while (princ (vlax-dump-object (vlax-Ename->Vla-Object (car (entsel))) T)))

 

Et dans le cas d’une entité non graphique cas d’un layer par exemple, en tapant ceci dans Visual LISP :

_$ (vlax-dump-object (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) T)

; IAcadLayers: L'ensemble de tous les calques du dessin
; Valeurs de propriétés:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d098b4>
;   Count (RO) = 28
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0204e2b8>
;   Handle (RO) = "2"
;   HasExtensionDictionary (RO) = -1
;   ObjectID (RO) = 2130365456
;   ObjectName (RO) = "AcDbLayerTable"
;   OwnerID (RO) = 0
; Méthodes prises en charge:
;   Add (1)
;   Delete ()
;   GenerateUsageData ()
;   GetExtensionDictionary ()
;   GetXData (3)
;   Item (1)
;   SetXData (2)
T

 

Là tu repère la méthode (ou propriété) qui t’intéresse (à te lire Add pour ajouter un calque à la table des calques), la tu fais la recherche dans l’aide AutoCAD pour les histoires d’aide voir éventuellement ces 2 discussions récentes sur le forum:

http://cadxp.com/index.php?/topic/30956-connaitre-les-arguments-requis-par-une-methode/

http://cadxp.com/index.php?/topic/33207-resolufichier-daide/

 

 

Les Méthodes

Une fois que tu penses avoir la bonne méthode il faut convertir la syntaxe VBA en syntaxe, lisp (rappels en lisp : une liste syntaxiquement correcte est une suite d’expressions dont la première expression est toujours une fonction et les expressions suivantes sont ses arguments).

 

Dans le cas de la méthode VBA la syntaxe et la suivante :

RetVal = object.Add(Name)

 

En lisp cela donne

(vla-add objet nom) ;retourne l’objet créer au format vla ex : #<VLA-OBJECT IAcadLayer 08d41034>

 

Exemple pour ajouter le calque ToTo à la table des calques:

;; Obtenir un pointeur sur la table des calques
(setq Tcalques (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
;; Creer un calque ToTo
(setq NouvCalque (vla-add Tcalques "ToTo"))

 

 

Les propriétés

Cela fonctionne comme les méthodes sauf que les fonctions manipulant les propriétés se construisent avec vla-get-propriété pour la lecture et vla-put-propriété pour l’écriture.

 

Exemple pour lister toutes les propriétés existante du calque nouvellement créé :

_$ (vlax-dump-object NouvCalque)

; IAcadLayer: Un groupe logique de données comparable à des feuilles transparentes superposables sur un dessin
; Valeurs de propriétés:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d098b4>
;   Description = ""
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0204e2b8>
;   Freeze = 0
;   Handle (RO) = "160CC7"
;   HasExtensionDictionary (RO) = 0
;   LayerOn = -1
;   Linetype = "Continuous"
;   Lineweight = -3
;   Lock = 0
;   Material = "Global"
;   Name = "ToTo"
;   ObjectID (RO) = 2130438648
;   ObjectName (RO) = "AcDbLayerTableRecord"
;   OwnerID (RO) = 2130365456
;   PlotStyleName = "Color_7"
;   Plottable = -1
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 08d430a0>
;   Used (RO) = 0
;   ViewportDefault = 0
T

 

Exemple pour obtenir sa couleur

_$ (vla-get-color NouvCalque)
7

Exemple pour changer sa couleur en rouge (index couleur 1)

_$ (vla-put-color NouvCalque 1)
nil

Obtenir le nom du calque

_$ (vla-get-name NouvCalque)
"ToTo"

Modifier le nom du calque en TaTa

_$ (vla-put-name NouvCalque "TaTa")
nil 

 

Bonne continuation

A+

 

(Ps: Tu verra une fois que l'on a compris l'idée c'est assez simple)

Apprendre => Prendre => Rendre

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é