sechanbask Posté(e) le 16 novembre 2011 Posté(e) le 16 novembre 2011 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
VDH-Bruno Posté(e) le 16 novembre 2011 Posté(e) le 16 novembre 2011 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éthodesUne 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ésCela 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) 7Exemple pour changer sa couleur en rouge (index couleur 1)_$ (vla-put-color NouvCalque 1) nilObtenir le nom du calque_$ (vla-get-name NouvCalque) "ToTo" Modifier le nom du calque en TaTa_$ (vla-put-name NouvCalque "TaTa") nil Bonne continuationA+ (Ps: Tu verra une fois que l'on a compris l'idée c'est assez simple) Apprendre => Prendre => Rendre
Carboleum Posté(e) le 17 novembre 2011 Posté(e) le 17 novembre 2011 (Ps: Tu verra une fois que l'on a compris l'idée c'est assez simple) Avec des explications et illustrations comme celle-ci, c'est en effet assez simple. Merci! Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
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