Aller au contenu

Sélectionner un objet ET le MText si celui-ci contient un champ faisant référence à cet objet


Messages recommandés

Posté(e)

Bonjour,

 

Suite à cette demande à laquelle j'ai apporté une solution.

 

Mais celle ci ne me convient pas, car pas vraiment fiable

 

Ce que je voudrais plutôt réaliser: C'est pouvoir, lors d'une sélection d'objet, si celui ci a été utilisé pour réaliser un champ dynamique (donc l'ID de l'objet a été utilisé pour réaliser le lien avec le Mtext) ajouter par exemple avec (ssadd) automatiquement ce Mtext à la sélection.

 

Je suis un peu perdu avec le dictionnaire ACAD_FIELD.

 

Donc pour résumer, obtenir le (handle) de l'entité MText si celui contient l'ID d'objet de l'entité sélectionnée.

 

J'ai remarqué aussi que (entmod) sur le code DXF (1 . "string" ) n'a aucun effet si un champ (field) a été utilisé. Comment dés lors mettre à jour ce code DXF si une autre chaine (autre que le champ) fait partie de la définition.

 

J'espère pouvoir obtenir une réponse au moins à ma première question.

Merci.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Je vous remercie tout deux, mais je crois que vous n'avez saisie ma demande.

 

Pour imager, imaginez que je sélectionne un objet, si celui-ci à servir pour construire un champ dynamique, je voudrais que ce champ soit sélectionné AUSSI (un peu à la façon qu'un groupe)

 

Je cherche toujours...

 

Pour l'instant je suis parti dans cette direction (bonne , pas bonne !)

 

(setq vla_obj (vlax-ename->vla-object (car (entsel))))
(if (eq (vlax-get-property vla_obj 'HasExtensionDictionary) ':vlax-true)
(setq
	vla_dict (vla-GetExtensionDictionary vla_obj)
	hand (vlax-get-property (vla-GetObject vla_dict "SURF2") 'Handle)
)
)

 

mais un (entget (handent hand)) ne me retourne pas le résultat escompté :(

j'ai l'impression de tourner en rond dans ces dictionnaires

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut

 

Attache la ceinture ;)

 

Le plus simple (pour l'instant) est de balayer les objets qui ont des champs.

 

Pour tester sur un objet avec champ

(setq old (entget (cdr (assoc 360 (entget (car (nentsel)))))))
(setq ent (entget (cdr (last
		 (vl-remove-if-not '(lambda(x)(eq (car x) 360))
				   (entget (cdr (assoc 360 (entget (cdr (assoc 360 old))))))
		 )
	       )
	  )
  )
)
(assoc 331 ent) ; L'objet recherché

 

@+

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

Posté(e)

Salut Patrick,

 

Cela fonctionne, mais pas dans le sens que je désire. Ton sens: Sélection Champs -> Entité

Je voulais faire l'inverse: Sélection Entité -> Champs (si utilisé... bien sur ! donc l'ID de l'entité dans le champ.)

 

Je continu de chercher de mon coté. ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut,

 

Je crains qu'il n'y ait pas de solution directe dans le sens que tu veux.

 

À ma connaissance, il n'y a pas de de données liée à l'objet cible du champ (ni xdata, ni dictionnaire d'extension).

 

Je ne vois qu'une solution, sélectionner tous les mtextes (voire les textes simples, les attributs, les valeurs dans les tableaux) et pour chaque texte rechercher s'il contient un champ objet ayant le même ObjectId que l'objet source.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Je ne vois qu'une solution, sélectionner tous les mtextes (voire les textes simples, les attributs, les valeurs dans les tableaux) et pour chaque texte rechercher s'il contient un champ objet ayant le même ObjectId que l'objet source.

 

Après avoir fureter un peu partout, je crois que la solution est malheureusement celle que tu cite. :(

 

Reste plus qu'a ...!

 

Merci de ta réponse

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é