willy95 Posté(e) le 10 février 2022 Posté(e) le 10 février 2022 Bonjour les amis, Je suis a la recherche d'un petit lisp assez simple pour avoir a choisir dans autocad , par selection des points sous forme de "bloc point " TCPOINT et d'exporter les XY et Z (de l'etiquette ALT) dans un fichier au format CSV (Matricule,X,Y,Z). J'ai bien essayer de composé ce code mais je ne suis pas au niveau et donc je vous sollicite pour me filer un coup de main. Ne soyez pas trop brutale dans vos remarques sur mon pseudo code si dessous qui ne fonctionne pas car j'ai vraiment du mal : (defun c:CSV ( / fn in lst ss ) (if (and (setq ss (ssget '((0 . "POINT")))) (setq fn (getfiled "Creation du fichier" "" "csv" 1)) ) (while (< n len_1) (setq xyz1 (nth n lst_r)) (setq t1 (strcat (rtos (car xyz1))" "(rtos (cadr xyz1))" "(rtos (caddr xyz1)))) (write-line t1 f1) (setq n (+ n 1)) ) ) (princ) ) En vous remerciant par avance.
Luna Posté(e) le 10 février 2022 Posté(e) le 10 février 2022 (modifié) Coucou, Est-ce moi ou bien il manque une partie du code ? Tu utilises des variables non déclarées... Essaye quelque chose comme chat (non testé) : (defun c:CSV (/ *error* jsel i name filename file mat pt) (defun *error* (msg) (if file (close file)) (princ msg) ) (if (and (setq jsel (ssget '((0 . "INSERT") (2 . "TCPOINT") (66 . 1)))) (setq filename (getfiled "Création du fichier CSV" "" "csv" 1)) (setq file (open filename "W")) (write-line "Handle;Matricule;X;Y;Z") ) (repeat (setq i (sslength jsel)) (setq name (ssname jsel (setq i (1- i))) pt (cdr (assoc 10 (entget name))) mat (getpropertyvalue name "MAT") ) (write-line (strcat (cdr (assoc 5 (entget name))) ";" mat ";" (rtos (car pt) 2 2) ";" (rtos (cadr pt) 2 2) ";" (rtos (caddr pt) 2 2) ) file ) ) ) (if file (close file)) (princ) ) Bisous, Luna Modifié le 11 février 2022 par Luna Modification du code : (handent name)
willy95 Posté(e) le 11 février 2022 Auteur Posté(e) le 11 février 2022 Bonjour, Tout d'abord un grand Merci Luna pour ta piste de code qui m'aide à aller sur la bonne voie, en revanche je n'obtient qu'un fichier vide et un message d'erreur (type d'argument incorrect: stringp <Nom d'entité: 1f48fb16930>) et j'avoue que j'essaie de modifier à gauche et à droite les lignes de codes sans résultat, je me tape la tête contre les murs. Si quelqu'un peu me comprendre et m'aider à compléter ou corrigé ce code pour qu'il fonctionne. Merci par avance.
(gile) Posté(e) le 11 février 2022 Posté(e) le 11 février 2022 Salut, il y a 11 minutes, willy95 a dit : un message d'erreur (type d'argument incorrect: stringp <Nom d'entité: 1f48fb16930>) Ce message veut dire que l'expression attends une chaine (stringp) mais reçoit un nom d'entité ou ename (<Nom d'entité: 1f48fb16930>). Pour trouver d'où vient une erreur, je rappelle l'utilisation des fonction "Arrêt sur erreur" et "Source de la dernière interruption" du menu "Débogage" de l'éditeur Visual LISP. Voit ce screencast. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Luna Posté(e) le 11 février 2022 Posté(e) le 11 février 2022 Coucou, En effet je ne devait pas être bien réveillée à ce moment, désolée... Du coup j'ai remplacé la ligne (handent name) par (cdr (assoc 5 (entget name))) Je ne sais pas pourquoi j'avais utilisé la fonction (handent), j'avais probablement déjà réfléchis à la fonction inverse qui nécessite de sélectionner un objet basé sur son handle... Normalement tu ne devrais plus avoir de soucis 😉 J'ai modifié mon code au-dessus ! Bisous, Luna
philsogood Posté(e) le 11 février 2022 Posté(e) le 11 février 2022 haha!! faut arréter de coder la nuit et dormir @Luna 😛 Phil Projeteur Revit Indépendant - traitement des eaux/CVC
lecrabe Posté(e) le 11 février 2022 Posté(e) le 11 février 2022 Hello @Luna @(gile) Mais Luna ne dort pas comme Gilles ... Tous les deux sont somnambules ... Le 2eme cerveau code en Lisp / VLisp pendant que le 1er se repose puis vice-versa ... La Sante, Bye, lecrabe 1 Autodesk Expert Elite Team
Luna Posté(e) le 11 février 2022 Posté(e) le 11 février 2022 Hihi, Bon j'avoue il m'est déjà arrivé de me lever à 4h pour tester une ligne de code puis de retourner me coucher une fois avoir trouvé une solution... Mais bon...c'est mieux chat que de ne pas dormir à cause d'un problème non résolu...! M'en vais faire une mini-sieste pour récupérer quelques minutes de sommeil ! 🙂 Bisous, Luna 1
Patrick Emin Posté(e) le 11 février 2022 Posté(e) le 11 février 2022 il y a 6 minutes, Luna a dit : Hihi, Bon j'avoue il m'est déjà arrivé de me lever à 4h pour tester une ligne de code puis de retourner me coucher une fois avoir trouvé une solution... Ah ! On les reconnait les passionné(e)s ! mon site perso Dessein-Tech
willy95 Posté(e) le 11 février 2022 Auteur Posté(e) le 11 février 2022 Merci beaucoup, cela fonctionne après la modification donnée par Luna et un petit rajout pour récupérer la valeur de l'étiquette "ALT" (car mon point est en 2D avec 0 pour valeur Z) : (setq alt (getpropertyvalue name "ALT")) Je reste un passionné aussi mais qui n'a pas toutes les connaissances requises, je réfléchis énormément, je passe beaucoup de temps à modifier pour y arrivé mais le résultat est tellement plaisant que toute votre aide me fait du bien, alors MERCI beaucoup. Encore Merci...c'est top
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