Aller au contenu

Messages recommandés

Posté(e)

Salut à tous,

 

Je débute en LISP, et je m'attaque peut-être à qq chose de costaud. mais bon Voila :

 

J un polyligne ayant des xdata (3 en tout).

Comment pourrais-je récuperer l'une de c Xdata et l'ecrire dans un texte.

 

Merci pour le coup de pouce. :)

Imposer sa volonté aux autres, c'est force. Se l'imposer à soi-même, c'est force supérieure.

Lao-Tseu

Posté(e)

Salut,

Comment pourrais-je récuperer l'une de c Xdata et l'ecrire dans un texte.

 

Pour récupérer la liste des Xdata la ligne suivante devrait faire l'affaire.

 

(setq l_xdata (assoc -3 (entget (car (entsel "\nChoix d'un objet contenant des XData: ")) (list "[color=red] NOM DE TON APPLICATION[/color]")))) 

 

En retour tu auras les codes DXF (de 1000 à 1071) concernant les données étendues attachés à l'objet.

 

Ces codes ne sont pas unique et peuvent être présent plusieurs fois.

Dans ce cas l'ordre de ces codes multiples est important et l'extraction par (assoc) n'est pas adaptée pour obtenir les valeurs.

 

Ex: (cdr (assoc 1040 (cdadr l_xdata))) retournera que le 1er réel de la liste rencontré.

 

Voir dans la "Documentation du développeur"

 

-> Manuel d'utilisation DXF

-> Concepts DXF avancés

->Données étendues

 

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

Posté(e)

Merci Bonuscad pour le coup de pouce

 

Jusque la, j'ai réussi à récupérer L'xdata voulu :

 

(defun c:XD()

 

(setq l_xdata (assoc -3 (entget (car (entsel "\nChoix d'un objet contenant des XData: ")) (list "SUPF"))))

 

(setq b (cdr (assoc 1000 (cdadr l_xdata))))

 

 

(princ)

 

)

 

Comme il n'y a qu'un seul réel dans la liste, sa ne me pose pas de problème.

 

Par contre à ce stade, mon soucis c que la valeur retourné est de la forme suivante : "00006546"

 

et pour la suite il ne me faut ni les "", ni les 0000 présent devant le nombre.

 

Une idée?

:casstet:

Imposer sa volonté aux autres, c'est force. Se l'imposer à soi-même, c'est force supérieure.

Lao-Tseu

Posté(e)

Voici mon œuvre :

 

(defun c:cc()

 

(setq l_xdata (assoc -3 (entget (car (entsel "\nChoix d'un objet contenant des XData: ")) (list "SUPF"))))

 

(setq b (atoi(cdr (assoc 1000 (cdadr l_xdata)))))

 

 

(setq q(getpoint"\nPosition du texte "))

 

 

(command "texte" q 100 (strcat (rtos b) " m² "))

 

(princ)

 

)

 

Bon ca casse pas des briques, mais c mon petio.

 

Merci Bonuscad

 

 

Imposer sa volonté aux autres, c'est force. Se l'imposer à soi-même, c'est force supérieure.

Lao-Tseu

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é