VDH-Bruno Posté(e) le 28 juin 2013 Partager Posté(e) le 28 juin 2013 Bonjour, Pour faire suite à une discussion qui date un peu, http://cadxp.com/topic/36853-faire-une-liste-des-proprietes-dun-object/page__p__201435__fromsearch__1#entry201435Voici 2 petites fonctions qui devrait éviter l’emploi de listes de propriétées pour obtenir un équivalent à la fonction vlax-dump-object. ;; (bv:property obj check-modify) VDH-Bruno ;; --------------------------------------------------------------------------- ;; Retourne la liste des propriétées de l'objet. Si check-modify est non nil, ;; les propriétées en lecture seules sont omises. ;; Exemples: ;; (bv:property (vlax-ename->vla-object (car(entsel))) nil) ;; --> Retourne la liste de toutes les propriétés consultable de l'objet. ;; (bv:property (vlax-ename->vla-object (car(entsel))) T) ;; --> Retourne la liste de toutes les propriétés modifiable de l'objet. (defun bv:property (obj check-modify) (vl-sort (apply 'append (mapcar '(lambda (x) (if (and (/= x (setq x (vl-string-subst "" "VLA-GET-" x))) (vlax-property-available-p obj x check-modify) ) (list x) ) ) (atoms-family 1) ) ) '< ) ) ;; (bv:method obj) VDH-Bruno ;; --------------------------------------------------------------------------- ;; Retourne la liste des méthodes applicable à l'objet. ;; Exemples: ;; (bv:method (vlax-ename->vla-object (car(entsel)))) (defun bv:method (obj) (vl-sort (apply 'append (mapcar '(lambda (x) (if (and (/= x (setq x (vl-string-subst "" "VLA-" x))) (vlax-method-applicable-p obj x) ) (list x) ) ) (atoms-family 1) ) ) '< ) ) Exemples d’applications sur une entité cercle :$ (setq objCircle (vlax-ename->vla-object (entmakex '((0 . "CIRCLE") (62 . 1) (10 4.0 4.0 0.0) (40 . 1.0))))) #<VLA-OBJECT IAcadCircle 22f58a84> Pour lister toutes les propriétés accessibles en lecture :_$ (bv:property objCircle nil) ("APPLICATION" "AREA" "CENTER" "CIRCUMFERENCE" "COLOR" "DATABASE" "DIAMETER" "DOCUMENT" "HANDLE" "HASEXTENSIONDICTIONARY" "HYPERLINKS" "LAYER" "LINETYPE" "LINETYPESCALE" "LINEWEIGHT" "MATERIAL" "NORMAL" "OBJECTID" "OBJECTNAME" "OWNERID" "PLOTSTYLENAME" "RADIUS" "THICKNESS" "TRUECOLOR" "VISIBLE") Pour lister les seules propriétés accessibles en écriture :_$ (bv:property objCircle T) ("AREA" "CENTER" "CIRCUMFERENCE" "COLOR" "DIAMETER" "LAYER" "LINETYPE" "LINETYPESCALE" "LINEWEIGHT" "MATERIAL" "NORMAL" "PLOTSTYLENAME" "RADIUS" "THICKNESS" "TRUECOLOR" "VISIBLE") Pour obtenir la liste de toutes les méthodes applicable à l’objet cercle :_$ (bv:method objCircle) ("ARRAYPOLAR" "ARRAYRECTANGULAR" "COPY" "DELETE" "ERASE" "GETBOUNDINGBOX" "GETEXTENSIONDICTIONARY" "GETXDATA" "HIGHLIGHT" "INTERSECTWITH" "MIRROR" "MIRROR3D" "MOVE" "OFFSET" "ROTATE" "ROTATE3D" "SCALEENTITY" "SETXDATA" "TRANSFORMBY" "UPDATE" ) A comparer avec l’emploie d’un appel à la fonction vlax-dump-object_$ (vlax-dump-object objCircle T) ; IAcadCircle: Interface AutoCAD Circle ; Valeurs de propriétés: ; Application (RO) = #<VLA-OBJECT IAcadApplication 00d098b4> ; Area = 3.14159 ; Center = (4.0 4.0 0.0) ; Circumference = 6.28319 ; Diameter = 2.0 ; Document (RO) = #<VLA-OBJECT IAcadDocument 0b4dcc20> ; Handle (RO) = "11A" ; HasExtensionDictionary (RO) = 0 ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 22f58894> ; Layer = "0" ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Material = "ByLayer" ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 2130256016 ; ObjectName (RO) = "AcDbCircle" ; OwnerID (RO) = 2130251000 ; PlotStyleName = "Couleur_ 1" ; Radius = 1.0 ; Thickness = 0.0 ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 22f5a6e0> ; Visible = -1 ; Méthodes prises en charge: ; ArrayPolar (3) ; ArrayRectangular (6) ; Copy () ; Delete () ; GetBoundingBox (2) ; GetExtensionDictionary () ; GetXData (3) ; Highlight (1) ; IntersectWith (2) ; Mirror (2) ; Mirror3D (3) ; Move (2) ; Offset (1) ; Rotate (2) ; Rotate3D (3) ; ScaleEntity (2) ; SetXData (2) ; TransformBy (1) ; Update () T A+ Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 28 juin 2013 Partager Posté(e) le 28 juin 2013 Salut, Intéressant (comme d'habitude). Juste un petit rappel :depuis la version 2012, de nouvelles fonctions LISP sont apparues pour lister et modifier les propriétés des objets, voir ici. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 28 juin 2013 Auteur Partager Posté(e) le 28 juin 2013 Bonjour (gile), Merci beaucoup pour la piqure de rappel, car j’avais réagie sur le post…A ma décharge niveau version, j’ai toujours plusieurs trains de retard et si je n’applique pas, je ne mémorise pas... A+Ps : Tes interventions sur ce forum sont toujours très appréciés. Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
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