Aller au contenu

Information perso sur toutes les entités


Messages recommandés

Posté(e)

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."

Posté(e)

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

Posté(e)

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

Posté(e)

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."

Posté(e)

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 ascii

avec 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 savoir

qui est qui...

 

La solution que j'ai utilisé pour un gros lisp (d'ailleurs en pause en ce moment car d'autres

objectifs): 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ée

et 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...

Posté(e)

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 >= 1000

1000 Chaîne ASCII (jusqu'à 255 octets) dans les données étendues

1001 Nom d'application enregistré (chaîne ASCII de 31 octets au maximum) pour les données étendues

1002 Chaîne de contrôle de données étendues (“{“ ou ““)

1003 Nom du calque des données étendues

1004 Tranche d'octets (jusqu'à 127 octets) dans les données étendues

1005 Identificateur d'entité dans les données étendues ; chaîne de 16 chiffres hexadécimaux au maximum

1010 Point dans les données étendues

DXF: valeur X (suivie par les groupes 1020 et 1030)

APP: point 3D

1020, 1030 DXF : valeurs Y et Z d'un point

1011 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 3D

1021, 1031 DXF : valeurs Y et Z d'un positionnement du système général

1012 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 3D

1022, 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 3D

1023, 1033 DXF : valeurs Y et Z d'une direction dans l'espace général

1040 Valeur en virgule flottante en double précision dans les données étendues

1041 Valeur de la distance dans les données étendues

1042 Facteur d'échelle dans les données étendues

1070 Entier signé sur 16 bits dans les données étendues

1071 Entier long signé sur 32 bits dans les données étendues

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é