FastFiber

multitext naar single text waardoor er lost text ontstaat?(Opgelost)

Gestart door balletje23, vr 04 03 2011, 14:30:35

Vorige topic - Volgende topic

balletje23


(Met Lisp multitext naar single text waardoor er lost text ontstaat?
Hoe moet de lsp werken: zodra ik Multi text selecteer en in commandoregel m2s verandert
De zin van multitext naar single text

bv

--deze zin zit in 1 multitext-
autocad 2010 is een leuke tekenen programma
verder is hij geschikt voor Installaties .

nu wil ik de zin hierboven allemaal single text hebben.
Dus elke text moet los van elkaar zijn

Wie kan voor mij zo'n lisp maken

HofCAD

Beste Balletje23,

Even BOEM van http://www.cadsite.be/smf/index.php?topic=2740.msg14315#msg14315
veranderen en je krijgt:

(defun c:M2Sall( / s1 i en)
(command "select" "ALL" "")
(setq s1 (ssget "P"))
(setq i 0)
(repeat (sslength s1)
(setq en (cdr (cadr (entget (ssname s1 i)))))
(if (= en "MTEXT")
(command "_EXPLODE" (ssname s1 i)))
(setq i (1+ i))
)
(princ)
)

of
(defun c:M2Sall( / s1 i)
(setq s1 (ssget "_X" '((0 . "MTEXT"))))
(setq i 0)
(repeat (sslength s1)
(command "_EXPLODE" (ssname s1 i))
(setq i (1+ i))
)
(princ)
)


Als je de Mtext zelf wil selecteren, dan moet je de regels van selectie veranderen.

(defun c:M2S( / s1 i en)
(setq s1 (ssget))
(setq i 0)
(repeat (sslength s1)
(setq en (cdr (cadr (entget (ssname s1 i)))))
(if (= en "MTEXT")
(command "_EXPLODE" (ssname s1 i)))
(setq i (1+ i))
)
(princ)
)

of
(defun c:M2S( / s1 i)
(setq s1 (ssget '((0 . "MTEXT"))))
(setq i 0)
(repeat (sslength s1)
(command "_EXPLODE" (ssname s1 i))
(setq i (1+ i))
)
(princ)
)




Met vriendelijke groet, HofCAD CSI.

PS http://www.theswamp.org/index.php?topic=29430.0;all
ACADcadabra

EddyBeerke

Citaat van: HofCAD op vr 04 03 2011, 15:17:45
Beste Balletje23,

Even BOEM van http://www.cadsite.be/smf/index.php?topic=2740.msg14315#msg14315

Volgens mij gaat dit niet helemaal goed hoor!
De tekst die in de Mtext staat en die meerdere regels heeft wordt niet 1 meerdere texten!
Volgens mij moet je de textstring in een nieuwe dtext zetten met de eigenschappen van de Mtext.
Hierbij moet bij elke return een spatie komen.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

HofCAD

Citaat van: EddyBeerke op vr 04 03 2011, 15:56:28
Volgens mij gaat dit niet helemaal goed hoor!
De tekst die in de Mtext staat en die meerdere regels heeft wordt niet 1 meerdere texten!
Volgens mij moet je de textstring in een nieuwe dtext zetten met de eigenschappen van de Mtext.
Hierbij moet bij elke return een spatie komen.
Beste Eddy,

Heb je dit gecontroleerd? :mrgreen:
Als ik de voorbeeld tekst met twee regels
AutoCAD 2010 is een leuke teken programma,
verder is hij geschikt voor Installaties.

via MTEXT in een tekening plaats.
Dan krijg ik via M2Sall of via M2S twee text entiteiten,
waarbij een regel AutoCAD 2010 is een leuke teken programma,
is en de andere regel verder is hij geschikt voor Installaties. is.


Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Reimer

Ik denk dat EddyBeerke graag ieder woord in een aparte text wil hebben staan. Hoewel dit aanvankelijk voor mij ook niet geheel duidelijk was, maar anders kan hij gewoon eXplode gebruiken.

Reimer

balletje23

hoi Allemaal.

Hofcad de lsp heb ik voor mijn tekeningen gebruikt, deze werken goed voor mijn Mteksten  :vreegoe:,
alleen blijkt dat sommige mtext eenmaal naar single text  nog steeds aan elkaar zitten.

Graag zou ik dan ook dat de single teksten met spacies als losse tekst worden.



HofCAD


Citaat van: balletje23 op vr 04 03 2011, 14:30:35
Hoe moet de lsp werken: zodra ik Multi text selecteer en in commandoregel m2s verandert
De zin van multitext naar single text

bv

--deze zin zit in 1 multitext-
autocad 2010 is een leuke tekenen programma
verder is hij geschikt voor Installaties .

nu wil ik de zin hierboven allemaal single text hebben.
Dus elke text moet los van elkaar zijn

Wie kan voor mij zo'n lisp maken
Citaat van: balletje23 op za 05 03 2011, 22:07:30
hoi Allemaal.

Hofcad de lsp heb ik voor mijn tekeningen gebruikt, deze werken goed voor mijn Mteksten  :vreegoe:,
alleen blijkt dat sommige mtext eenmaal naar single text  nog steeds aan elkaar zitten.

Graag zou ik dan ook dat de single teksten met spacies als losse tekst worden.
Beste Balletje23,

Dat is moeilijker, omdat ik nog weet hoe je de 'woorden' van een 'zin'
netjes achter elkaar moet plaatsen.
(defun c:M2S (/       @ADD-TO-SET @Str->Lst   s1
     i       LastE Temp CopySet  j   en
     ed       n TxtLst
    )
 (defun @ADD-TO-SET (/ Next)
   (while (setq Next (entnext LastE))
     (ssadd Next CopySet)
     (setq LastE (entnext LastE))
   )
   (setq LastE (entlast))
 )
 (defun @Str->Lst (f_string / f_ls f_str f_len f_loop f_cur)
   (setq f_ls nil
 f_str ""
   )
   (setq f_loop 0)
   (repeat (strlen f_string)
     (progn
(setq f_loop (1+ f_loop))
(setq f_cur (substr f_string f_loop 1))
(if (= (ascii f_cur) 32)
 (if (/= f_str "")
   (progn (setq f_ls (append f_ls (list f_str)))
  (setq f_str "")
   )
 )
 (setq f_str (strcat f_str f_cur))
)
     )
   )
   (if (/= f_str "")
     (setq f_ls (append f_ls (list f_str)))
   )
   f_ls
 )
 (if (setq s1 (ssget "_X" '((0 . "MTEXT"))))
   (progn
     (setq i 0)
     (setq LastE (entlast))
     (setq temp LastE)
     (repeat (sslength s1)
(command "_EXPLODE" (ssname s1 i))
(setq CopySet (ssadd))
(@ADD-TO-SET)
(setq j 0)
(repeat (sslength CopySet)
 (setq en (ssname CopySet j))
 (setq ed (entget en))
 (setq n      0
TxtLst (@Str->Lst (cdr (assoc 1 ed)))
 )
 (repeat (length TxtLst)
   (entmake
     (list '(0 . "TEXT")
   '(100 . "AcDbEntity")
   (cons 67 (cdr (assoc 67 ed)))
   (cons 410 (cdr (assoc 410 ed)))
   (cons 8 (cdr (assoc 8 ed)))
   '(100 . "AcDbText")
   (cons 10 (cdr (assoc 10 ed)))
   (cons 40 (cdr (assoc 40 ed)))
   (cons 1 (nth n TxtLst))
   (cons 50 (cdr (assoc 50 ed)))
   (cons 41 (cdr (assoc 41 ed)))
   (cons 51 (cdr (assoc 51 ed)))
   (cons 7 (cdr (assoc 7 ed)))
   (cons 71 (cdr (assoc 71 ed)))
   (cons 72 (cdr (assoc 72 ed)))
   (cons 11 (cdr (assoc 11 ed)))
   (cons 210 (cdr (assoc 210 ed)))
   '(100 . "AcDbText")
   (cons 73 (cdr (assoc 73 ed)))
     )
   )
   (setq n (1+ n))
 )
 (entdel en)
 (setq j (1+ j))
)
(setq i (1+ i))
     )
   )
 )
 (princ)
)


Met vriendelijke groet, HofCAD CSI.
ACADcadabra

balletje23

Hoi Hofcad,

Wat goed dat je ook in de weekend mensen helpt :vreegoe:
Ik heb de lsp voor Mtext gebruikt maar dan gaan alle teksten overelkaar lopen.
En als je dit bij een single text gebruikt werkt het niet,

Graag zou ik dat, als ik een aantal teksten of zinnen selecteer en dan  maakt het niet uit Mtext of singletext, dat
ze allemaal lost van elkaar gaan zitten maar wel in hetzelfde positie blijven zitten.

En inderdaad het is niet makkelijk wat ik vraag :lol:.



HofCAD

Citaat van: balletje23 op zo 06 03 2011, 21:49:32
Hoi Hofcad,

Wat goed dat je ook in de weekend mensen helpt :vreegoe:
Ik heb de lsp voor Mtext gebruikt maar dan gaan alle teksten overelkaar lopen. :twisted: :twisted:
En als je dit bij een single text gebruikt werkt het niet, :twisted: :twisted:

Graag zou ik dat, als ik een aantal teksten of zinnen selecteer en dan  maakt het niet uit Mtext of singletext, dat
ze allemaal lost van elkaar gaan zitten maar wel in hetzelfde positie blijven zitten.

En inderdaad het is niet makkelijk wat ik vraag :lol:.
Beste Balletje23,

Met carnaval kun je beter uit de kroeg blijven. :twisted: :twisted: :twisted: :twisted:
Dat alle teksten overelkaar lopen had ik je al reeds gemeld. :twisted: :twisted: :twisted: :twisted: :twisted:
Een lichte verbetering :oops: t.a.v. de positie staat in de attachment.
Een spatie wordt daarbij: 1 maal de Dimscale waarde.

Citaat van: balletje23 op vr 04 03 2011, 14:30:35
Hoe moet de lsp werken: zodra ik Multi text selecteer en in commandoregel m2s verandert
De zin van multitext naar single text

bv

--deze zin zit in 1 multitext-
autocad 2010 is een leuke tekenen programma
verder is hij geschikt voor Installaties .

nu wil ik de zin hierboven allemaal single text hebben.
Dus elke text moet los van elkaar zijn

Wie kan voor mij zo'n lisp maken
Het ging dacht ik over een commando M2S, en nu gaat het eens niet meer over MTEXT? :roll: :roll: :roll: :roll: :roll: :roll: :roll:

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

HofCAD

Beste Lezers,

Ik wil graag tekstregels (zowel Mtext en Text entiteiten) met AutoLisp omzetten
in losse woorden met als entiteit het type Text.
Met het commando S2W (Sentence to Words) worden de geselecteerde
teksten via het begrenzingsteken (delimiter) spatie omgezet naar losse woorden.

Om overbodig werk te voorkomen, kan U beter kijken naar de attachment.
Een van de schoonheidsprobleemjes is de afstand tussen de woorden, daar deze
altijd een afstand heeft van: 1 maal de Dimscale waarde.

Met vriendelijke groeten, HofCAD CSI.

PS Enig testen is nog wel nodig.
Zie bijv. de Text en de Mtext uit resp. TryTxt.lsp en TryTxt2.lsp.
ACADcadabra

HofCAD

Voor een andere benadering zie de attachment.
Dit programma is slechts geldig voor 'Single-Line Left-Justified Text'
en is van Lee Mac http://www.theswamp.org/index.php?topic=37370.msg423991#msg423991

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

HofCAD

Er waren nog steeds problemen wanneer de tekst niet links uitgelijnd was.
Ik denk dat je deze problemen kan oplossen door tekst entiteiten eerst
om te zetten naar Mtext entiteiten.
Ik gebruik daarvoor TXT2MTXT  van DotSoft.
http://www.theswamp.org/index.php?topic=5909.msg73232#msg73232
Na gebruik van S2W  zijn alle veranderde Text en Mtext entiteiten links
uitgelijnd.

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

balletje23

Citaat van: HofCAD op do 10 03 2011, 15:46:13
Er waren nog steeds problemen wanneer de tekst niet links uitgelijnd was.
Ik denk dat je deze problemen kan oplossen door tekst entiteiten eerst
om te zetten naar Mtext entiteiten.
Ik gebruik daarvoor TXT2MTXT  van DotSoft.
http://www.theswamp.org/index.php?topic=5909.msg73232#msg73232
Na gebruik van S2W  zijn alle veranderde Text en Mtext entiteiten links
uitgelijnd.

Met vriendelijke groet, HofCAD CSI.

oke ik ga morgen of anders in weekend even kijken. bedankt alvst voor je snelle reactie,
had het beetje druk dus vandaar late reactie!!

balletje23

Citaat van: HofCAD op di 08 03 2011, 22:02:15
Voor een andere benadering zie de attachment.
Dit programma is slechts geldig voor 'Single-Line Left-Justified Text'
en is van Lee Mac http://www.theswamp.org/index.php?topic=37370.msg423991#msg423991

Met vriendelijke groet, HofCAD CSI.

Hofcad ik denk dat dit lisp goed werkt, ondanks dat je aan bepaalde voorwaarde moet voldoen,
vindt ik het toch goed. Bedankt weer voor alle reactiesss.

en Iedereen die heeft geholpen thx  :vreegoe: :mrgreen: zonder jullie was het echt lastig geweest !! toppie