Matt666 Posté(e) le 20 juillet 2009 Posté(e) le 20 juillet 2009 Salut à tous !J'ai une petite question... Est-il possible de sauvgarder une information dans une entité, en sachant que celle ci ne fait pas partie de la liste SSGET ? Je me creuse la tête pour trouver un moyen de faire un lisp qui permettrait de cacher des entités temporairement. Donc dans de déplacer l'entité dans un calque temporaire gelé. Le problème c'est que pour afficher l'entité je dois retrouver son calque d'origine. D'où l'information à sauvegarder. Par exemple rajouter dans la liste SSGET l'ancien calque utilisé pour l'entité... Je ne vois pas... Je sèche !Pour corser le tout (comme d'habitude), je cherche une solution en autoLISP... Et encore pourquoi pas avec les VL machin, disponibles grâce aux équivalences de GILE... :o Merci à vous ! "Chacun compte pour un, et nul ne compte pour plus d'un."
(gile) Posté(e) le 20 juillet 2009 Posté(e) le 20 juillet 2009 Salut, Regarde du côté des données étendues (xdata). en "pur AutoLISP" :;; enregistrer ton application (clé des xdata) (regapp "MON_APPLI") ;; ajouter la donnée étendue à l'entité (ent) (setq elst (entget ent)) (entmod (append elst (list (list -3 (list "MON_APPLI" (cons 1000 "NomDuCalque")))) ) ) ;; récupérer la valeur de la donnée etendue (cdadr (assoc "MON_APPLI" (cdr (assoc -3 (entget ent (list "MON_APPLI")))))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Matt666 Posté(e) le 20 juillet 2009 Auteur Posté(e) le 20 juillet 2009 Génial ! Merci GILE ça fonctionne très bien !! :D "Chacun compte pour un, et nul ne compte pour plus d'un."
(gile) Posté(e) le 20 juillet 2009 Posté(e) le 20 juillet 2009 Je suis content que ça te plaise. Les bouts de code que j'ai donné sont un peu "brut".Tu peux trouver ici un lien donné par didier-AD vers une bibliothèque de routines pour l'utilisation des xdata. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Matt666 Posté(e) le 20 juillet 2009 Auteur Posté(e) le 20 juillet 2009 Merci pour ces infos GILE !Autre chose (je sais je suis un peu pénible...), peut-on avoir une liste avec plusieurs groupes ?J'arrive très bien à créer un Xdata avec une information. Maintenant j'essaie de passer avec plusieurs infos, et là rien à faire...Pour l'instant j'ai ceci :(-3 ("ESSAI" (1000 . "Essai 1000")))Et j'aimerai arriver à ceci :(-3 ("ESSAI" (1000 . "Essai 1000")(1001 . "Essai 1001")(1002 . "Essai 1002"))) Si tu pouvais juste me dire si c'est possible, et si oui, c'est mon petit prog qui déconne. "Chacun compte pour un, et nul ne compte pour plus d'un."
bseb67 Posté(e) le 20 juillet 2009 Posté(e) le 20 juillet 2009 Salut Matt666, pour les xdata et c'est la même chose pour les dxf normaux,le premier définit le type de données, pour ton cas 1000 = chaine de caractères asciiavec 255 caractères maximum. Le code 1001 = Nom d'application enregistré (chaîne ASCII de 31 octets au maximum) pour les données étendues Si tu vas dans l'aide tu trouvera ces infos. Si tu veux stocker plusieurs chaines, utilise 1000 autant de fois, mais après comment savoirqui est qui... La solution que j'ai utilisé pour un gros lisp (d'ailleurs en pause en ce moment car d'autresobjectifs): mettre des couples d'xdatas.EX:(1000 . "MA_DONNEE1")(1000 . "chainesuper")(1000 . "MA_DONNEE2")(1000 . "lechatfaitdodo")(1000 . "MA_DONNEE3")(1000 . "lechienlemange") ceci je peux le retrouver sous cette forme(1000 . "MA_DONNEE2")(1000 . "lechatfaitdodo")(1000 . "MA_DONNEE3")(1000 . "lechienlemange")(1000 . "MA_DONNEE1")(1000 . "chainesuper") Mais je garde toujours le principe d'un code 1000 pour définir le nom de la donnéeet puis le couple contenant la donnée. Ainsi on s'en fout de l'enchainement. Par contre il faut être juste sur l'ajout et la modification. J'espère avoir apporté un peu de lumière ;) Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
Matt666 Posté(e) le 20 juillet 2009 Auteur Posté(e) le 20 juillet 2009 Aaah ok je comprends mieux...Merci bseb67 ! "Chacun compte pour un, et nul ne compte pour plus d'un."
Patrick_35 Posté(e) le 20 juillet 2009 Posté(e) le 20 juillet 2009 alut Un exemple concret avec les xdatas Tu choisis une fenêtre avec des calques gelés dans la fenêtre(setq sel (entget (car (entsel)) '("ACAD")))et pour voir les xdatas(assoc 3- sel)Tu remarqueras que le code 1003 correspond aux calques gelés Extrait de l'aide au sujet des codes >= 10001000 Chaîne ASCII (jusqu'à 255 octets) dans les données étendues1001 Nom d'application enregistré (chaîne ASCII de 31 octets au maximum) pour les données étendues1002 Chaîne de contrôle de données étendues (“{“ ou ““)1003 Nom du calque des données étendues1004 Tranche d'octets (jusqu'à 127 octets) dans les données étendues1005 Identificateur d'entité dans les données étendues ; chaîne de 16 chiffres hexadécimaux au maximum1010 Point dans les données étendues DXF: valeur X (suivie par les groupes 1020 et 1030) APP: point 3D1020, 1030 DXF : valeurs Y et Z d'un point1011 Positionnement du système général en 3D dans les données étendues DXF: valeur X (suivie par les groupes 1021 et 1031) APP: point 3D1021, 1031 DXF : valeurs Y et Z d'un positionnement du système général1012 Déplacement du système général en 3D dans les données étendues DXF: valeur X (suivie par les groupes 1022 et 1032) APP: vecteur 3D1022, 1032 DXF : valeurs Y et Z du premier coin (dans le SCG)1013 Direction du système général en 3D dans les données étendues valeur X (suivie par les groupes 1022 et 1032) APP: vecteur 3D1023, 1033 DXF : valeurs Y et Z d'une direction dans l'espace général1040 Valeur en virgule flottante en double précision dans les données étendues1041 Valeur de la distance dans les données étendues1042 Facteur d'échelle dans les données étendues1070 Entier signé sur 16 bits dans les données étendues1071 Entier long signé sur 32 bits dans les données étendues @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Matt666 Posté(e) le 20 juillet 2009 Auteur Posté(e) le 20 juillet 2009 Ok, merci ! Très intéressants ces petits tuyaux ! "Chacun compte pour un, et nul ne compte pour plus d'un."
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