LUDWIG Posté(e) le 24 mars 2005 Posté(e) le 24 mars 2005 :D Bonjour !!! Et oui je n'en finis plus avec mes questions... Ce matin : j'ai fait un entget et je veux mettre le résultat dans un fichier txt. Mais j'ai l'impression que parceque c'est une liste et pas une chaine, ça ne marche pas. Y-a-til un moyen de transformer une liste en chaine ? Autocad 2021 - Revit 2022 - Windows 10
Tramber Posté(e) le 24 mars 2005 Posté(e) le 24 mars 2005 transfostrli(transfostrli chaîne) Transforme une liste d’atomes sous forme de chaîne et séparés par une virgule en une liste (transfostrli "0,24.0,48") (0 24.0 48) (defun transfostrli (nom / compt01 lettre chaine chainesortie) (setq compt01 1 chaine "" chainesortie nil) (repeat (- (strlen nom) 1) (if (/= (setq lettre (substr nom compt01 1)) ",") (setq chaine (strcat chaine lettre)) (setq chainesortie (cons (read chaine) chainesortie) chaine "")) (setq compt01 (1+ compt01)) ) (setq lettre (substr nom compt01 1) chaine (strcat chaine lettre) chainesortie (reverse (cons (read chaine) chainesortie))) ) transfolistr(transfolistr liste) Transforme une liste en une chaîne d’atomes séparés par une virgule (transfolistr '(0 24.0 48)) "0,24.0,48" (defun transfolistr (liloc / a result) (setq a 1 result (vl-princ-to-string (nth 0 liloc) )) (repeat (1-(length liloc)) (setq result (strcat result "," (vl-princ-to-string (nth a liloc) )) a (1+ a))) result) Cadeau, extrait des Trambertools, que la planète entière s'arrache :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 24 mars 2005 Posté(e) le 24 mars 2005 ...mais bon, pour ton cas précis, va falloir boucler avec FOREACH, par exemple et ca n'est pas très adapté. Dans un ENTGET, tu n'as que des paquets de 2, alors mes fonctions vont pas être l'apanacée Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 24 mars 2005 Posté(e) le 24 mars 2005 Comme le dit Tramber, avec un foreach, et ce n'est pas gagné. Il va falior imaginer tous les cas envisageable et c'est selon le type d'entité sélectionnée @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 24 mars 2005 Posté(e) le 24 mars 2005 Ludwig Voici un truc que j'utilise pour me faciliter les constitutions d'objet avec (entmake) dans mes routines.Si ça peut t'inspirer, tant mieux, ça rejoint ta demande. (defun c:dxf2file ( / oldim obj lst_pair grp_el typ_el ch1 ch2 ch msg ent fc f_open) (setq ent 0 oldim (getvar "dimzin")) (setvar "dimzin" 0) (while (not (listp ent)) (if user-dxf (setq msg "\nEntite/ - Choix de l'objet à lister ses codes DXF: ") (setq msg "\n/Sous-entite - Choix de l'objet à lister ses codes DXF: ") ) (initget "Entite Sous-entite") (if user-dxf (setq ent (nentsel msg)) (setq ent (entsel msg)) ) (if (eq ent "Sous-entite") (setq user-dxf T)) (if (eq ent "Entite") (setq user-dxf nil)) ) (cond (ent (setq obj (entget (car ent)) ch "") (while obj (setq lst_pair (car obj)) (setq grp_el (car lst_pair) typ_el (cdr lst_pair)) (cond ((eq (type grp_el) 'INT) (setq ch1 (itoa grp_el)) ) ((eq (type grp_el) 'REAL) (setq ch1 (rtos grp_el 2 4)) ) ((eq (type grp_el) 'STR) (setq ch1 grp_el) ) ((eq (type grp_el) 'ENAME) (setq ch1 "") ) (T (setq ch1 "") ) ) (cond ((eq (type typ_el) 'INT) (setq ch2 (itoa typ_el)) ) ((eq (type typ_el) 'REAL) (setq ch2 (rtos typ_el 2 4)) ) ((eq (type typ_el) 'STR) (setq ch2 typ_el) ) ((eq (type typ_el) 'ENAME) (setq ch2 "") ) ((eq (type typ_el) 'LIST) (setq ch2 (strcat (rtos (car typ_el) 2 4) " " (rtos (cadr typ_el) 2 4) (if (caddr typ_el) (strcat " " (rtos (caddr typ_el) 2 4)) ""))) ) (T (setq ch2 "") ) ) (if (eq (type typ_el) 'LIST) (setq ch (strcat ch "(" ch1 " " ch2 ")\n")) (setq ch (strcat ch "(" ch1 " . " ch2 ")\n")) ) (setq obj (cdr obj) ch1 "" ch2 "") ) (setq fc (getfiled "Fichier texte à créer" (getvar "dwgname") "txt" 1)) (setq f_open (open fc "w")) (write-line ch f_open) (close f_open) ) ) (setvar "dimzin" oldim) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
BIM G CO Posté(e) le 25 mars 2005 Posté(e) le 25 mars 2005 (vl-prin1-to-string data) Arguments data Any AutoLISP data. Return Values A string containing the printed representation of data as if displayed by prin1. Examples _$ (vl-prin1-to-string "abc")"\"abc\""_$ (vl-prin1-to-string "c:\\acadwin")"\"C:\\\\ACADWIN\""_$ (vl-prin1-to-string 'my-var)"MY-VAR" ou (vl-princ-to-string data) Arguments data Any AutoLISP data. Return Values A string containing the printed representation of data as if displayed by princ. Examples _$ (vl-princ-to-string "abc")"abc"_$ (vl-princ-to-string "c:\\acadwin")"C:\\ACADWIN"_$ (vl-princ-to-string 'my-var)"MY-VAR" Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
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