Tramber Posté(e) le 27 juillet 2009 Posté(e) le 27 juillet 2009 Besoin rapide et urgent ! "{\\fBiondi|b0|i0|c0|p2;\\W1.5;1}" Voilà un exemple de textstring dont j'ai besoin d'extraire, s'il existe, uniquement le code W1.5 (facteur de largeur). Fatigué comme je suis à cette heure, je n'y arrive plus.... je me bats un peu avec vl-string-search "\\W" et j'y suis presque mais je ne suis pas contre un petit coup de pouce ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 27 juillet 2009 Posté(e) le 27 juillet 2009 Coucou je fais ce genre de test mais pas en visual (setq tempo "{\\fBiondi|b0|i0|c0|p2;\\W1.5;1}" ) (setq n 1) (setq test (substr tempo n 2)) (while (/= "\\W" test) (setq n (1+ n)) (setq test (substr tempo n 2)) ) (setq valeur (substr temp ( + 2 n) 3)) tu en fais ce que tu veux... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
PHILPHIL Posté(e) le 27 juillet 2009 Posté(e) le 27 juillet 2009 hello tramber didier dans ce LISp ( désole je ne sais plus qui l'a ecrit )tu dois pourvoir avoir la solution pour recuperer le text du "MTEXT' c'est le "STR" a+ phil (defun C:MTXT0 ( ;;;/ SS N TXT E_LST STR START END LST ) (while (not (setq SS (ssget '((0 . "MTEXT")))))) (repeat (setq N (sslength SS)) (setq TXT (ssname SS (setq N (1- N))) E_LST (entget TXT) STR (apply 'strcat (mapcar 'cdr (append (vl-remove-if-not '(lambda (X) (= (car X) 3)) E_LST) (list (assoc 1 E_LST)))) ) ) (while (setq START (vl-string-search "{\\" STR)) (setq STR (vl-string-subst "" "{" (vl-string-subst "" "}" STR START) START)) ) (setq START 0) (while (setq START (vl-string-search "\\" STR START)) (cond ((= "\\P" (substr STR (1+ START) 2)) (setq START (1+ START) END (1+ START) ) ) ((= "\\L" (substr STR (1+ START) 2)) (setq END (+ (vl-string-search "L" STR START) 2))) ((= "\\l" (substr STR (1+ START) 2)) (setq END (+ (vl-string-search "l" STR START) 2))) (t (setq END (+ (vl-string-search ";" STR START) 2))) ) (setq STR (vl-string-subst "" (substr STR (1+ START) (- END START 1)) STR)) ) (setq LST NIL) (if (< 250 (strlen STR)) (progn (while (< 249 (strlen STR)) (setq LST (cons (cons 3 (substr STR 1 250)) LST) STR (substr STR 251) ) ) (setq LST (reverse (cons (cons 1 STR) LST))) ) (setq LST (cons (cons 1 STR) LST)) ) (setq E_LST (append (vl-remove-if '(lambda (X) (or (= (car X) 3) (= (car X) 1))) E_LST) LST)) (entmod E_LST) ) (princ) ) FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 27 juillet 2009 Posté(e) le 27 juillet 2009 Salut, J'arrive peut-être un peu trop tard...(if (setq pos (vl-string-search "\\W" str)) (substr str (+ 2 pos) (- (vl-string-search ";" str pos) pos 1)) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 28 juillet 2009 Auteur Posté(e) le 28 juillet 2009 Pas mal les gars ! mon(if(vl-string-search "\\W" index) (progn (setq adroite(substr index(+ (vl-string-search "W" index) 2))) (setq facteur(atof(vl-string-right-trim (substr adroite(+ (vl-string-search ";" adroite) 1)) adroite)))..... est un peu lourd :cool: Merci Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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