Aller au contenu

Coordonnées dernier point dans fichier texte


Messages recommandés

Posté(e)

Bonjour.

 

Je souhaiterais pouvoir créer un programme en LISP qui écrirait, dans un fichier texte, les coordonnées du dernier point qui vient juste d'être créé.

 

J'ai trouvé ce programme qui me paraît être un très bon point de départ:

 

(defun c:PO2TXT (/ file points c i) ;POints to TeXT 
 (setq nomfic "C:/test/CoordPoint.txt")
 (setq file (open nomfic "w"))

 (setq points (ssget) i 0)
 (repeat (sslength points)
   (if (= "POINT" (cdr (assoc 0 (entget (ssname points i)))))
     (setq c (cdr (assoc 10 (entget (ssname points i))))
    i (1+ i)
     )
   )
   (write-line
     (strcat (rtos (car c)) " ; "
      (rtos (cadr c)) " ; "
      (rtos (caddr c))
     ) file)
 )
 (close file)
 (Princ)
)

 

Mais je n'arrive pas à remplacer la sélection des points à l'écran (visiblement la commande ssget) par la sélection d'un seul qui est le dernier créer (peut-être avec la commande entlast).

 

Merci beaucoup.

Posté(e)

Si je remplace ta fonction

(defun c:PO2TXT (/ file points c i) ;POints to TeXT 
 (setq nomfic "C:/test/CoordPoint.txt")
 (setq file (open nomfic "w"))

 (setq points (ssget '((0 . "POINT"))) i 0)
 (cond(points
(setq dernier(cdr (assoc 10 (entget (ssname points(1-(sslength points)))))))	
(write-line
  (strcat (rtos (car dernier)) " ; "
	  (rtos (cadr dernier)) " ; "
	  (rtos (caddr dernier))
	  ) file)
))
 (close file)
 (Princ)
)

Cela devrait fonctionner pour le dernier point créé dans une sélection (je crois que l'ordre de création est pris en compte).

Si tu veux le dernier point créé dans le dessin entier, je peux te changer la formule.... ou toi-même en replacant :

(ssget '((0 . "POINT")))

par

(ssget "_X" '((0 . "POINT")))

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Merci beaucoup pour le coup de main.

 

J'ai utilisé le code avec la variante (ssget "_X" '((0 . "POINT")))

 

Pour pouvoir tester j'ai créé un nouveau fichier puis créer 3 points avec la commande point en saisissant les coordonnées à la main puis j'ai lancer le LISP.

 

Mais c'est le premier point créer qui est écrit dans le fichier texte et pas le dernier.

Posté(e)

Ah ben oui, je donnais le premier au lieu du dernier !

J'avais testé la première routine mais point (!) la seconde version. :P

Merci Olivier.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é