Fraid Posté(e) le 22 mars 2021 Partager Posté(e) le 22 mars 2021 Bonjour, Je souhaiterai pouvoir supprimer une XDATA en vla.je ne trouve pas de méthode adaptée.vla-delete supprime l'objet qui contient les xdatas. je prend pour exemple, la transparence des calques sous la forme 1071 (32 bit integer)que l'on récupère ainsi ;;;Arg: vla-object issu d'une collection de calques) (defun getlaytransparency (lay / xtypeOut xdataOut dot) (vla-GetXData lay "AcCmTransparency" 'xtypeOut 'xdataOut) (if xdataOut (setq dot (fix (/ (- 33554687 (cadr (mapcar 'vlax-variant-value (vlax-safearray->list xdataOut))))) 2.55)) (setq dot 0) ) dot ) mais si je voulais supprimer cette xdata (pour mettre la transparence a 0). comment s'y prendre? https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 22 mars 2021 Partager Posté(e) le 22 mars 2021 HelloHUMOUR: tu as trop de XDATA, je te propose le Lisp suivant ...Bonne Semaine, La Sante, Bye, lecrabe "fatigue" ;;; Commande au clavier : DeleteAllXdata ;;; ATTENTION : c TRES DANGEUREUX car c GLOBAL / GENERAL (parce que "X") ;;; Ne surtout pas ECRASER le DWG courant (defun C:DeleteAllXdata ( / curass countr) (setq curass (ssget "X" '((-3 ("*")))) countr 0 ) (if curass (repeat (sslength curass) (DelXdata (ssname curass countr) '("*")) (setq countr (1+ countr)) ) ) (princ) ) (defun DelXdata (ent app / entlst tmplst) (setq entlst (entget ent app)) (foreach memb (cdr (assoc -3 entlst)) (setq tmplst (cons -3 (list (cons (car memb) nil))) entlst (subst tmplst (assoc -3 entlst) entlst) entlst (entmod entlst) ) ) ) Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 22 mars 2021 Auteur Partager Posté(e) le 22 mars 2021 Merci :D ça c'est dans mes cordes, par contre il me semble que cela n'efface pas les xdata des calques.. c'est bien du vla que je veux faire, pour que cela tourne avec un objet dbx. https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 22 mars 2021 Partager Posté(e) le 22 mars 2021 Salut, Pour modifier plus facilement les xdata (et plus généralement pour rendre plus "LISP friendly" les variants et autres joyeusetés), tu trouveras en bas de cette page une petite bibliothèque de routines nommée AutomationHelpers qui contient, entre autre, deux fonctions : gc:GetXdata et gc:SetXdata qui, respectivement, retournent ou prennent en argument une liste DXF.Pour supprimer toutes les données pour une application, tu fais simplement (gc:setxdata '((1001 . "NomApplication"))). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 22 mars 2021 Auteur Partager Posté(e) le 22 mars 2021 Pour supprimer toutes les données pour une application, tu fais simplement (gc:setxdata '((1001 . "NomApplication"))). Merci, je pouvais toujours chercher une méthode...2 jours la dessus... https://github.com/Fraiddd 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