SLW210 Posted August 21, 2012 Posted August 21, 2012 I am look for a LISP to convert texts (dtext mainly) with several words to each word its own text. I thought there once was a LISP like this, but my searches have come up empty. In the attached drawing, I have the top text (white), what I need is for it to be in individual texts, as the lower texts (red). Quote
ReMark Posted August 21, 2012 Posted August 21, 2012 Any formatting or special characters? Is all the text left-justified or does it vary? Might be of some interest....http://www.theswamp.org/index.php?topic=37370.0 Quote
ReMark Posted August 21, 2012 Posted August 21, 2012 A couple of possible solutions here.....http://forums.autodesk.com/t5/AutoCAD-2000-2000i-2002-Archive/Any-way-to-explode-single-line-text-into-individual-words/td-p/118061 Or how about Shatter.lsp found here? http://forums.cadalyst.com/showthread.php?t=4054 Quote
SLW210 Posted August 21, 2012 Author Posted August 21, 2012 Thanks, ReMark....As Expected Lee Mac's S2W.lsp works a treat for now, AFAIK they should all be LEFT justified as in the example drawing, if I find some that aren't I can remedy that easy enough. Those other two, CHOP.lsp just hangs and Shatter.lsp made each word a 0 (at least on AutoCAD 2011). Quote
Lee Mac Posted August 21, 2012 Posted August 21, 2012 As Expected Lee Mac's S2W.lsp works a treat for now Excellent to hear SLW Here is an updated version of the code found here, the following should work with all Text justification (except Aligned / Middle / Fit): [color=GREEN];;------------------=={ Sentence to Words }==-----------------;;[/color] [color=GREEN];; ;;[/color] [color=GREEN];; Converts a selection of Text objects into separate Text ;;[/color] [color=GREEN];; objects for each word, retaining all properties of the ;;[/color] [color=GREEN];; original objects. ;;[/color] [color=GREEN];;------------------------------------------------------------;;[/color] [color=GREEN];; Author: Lee Mac, Copyright © 2012 - www.lee-mac.com ;;[/color] [color=GREEN];;------------------------------------------------------------;;[/color] ([color=BLUE]defun[/color] c:s2w ( [color=BLUE]/[/color] _splitwords _textwidth ang dxf ent enx fun inc lst pnt sel spc tot wid ) ([color=BLUE]defun[/color] _splitwords ( str [color=BLUE]/[/color] pos ) ([color=BLUE]if[/color] ([color=BLUE]setq[/color] pos ([color=BLUE]vl-string-position[/color] 32 str)) ([color=BLUE]cons[/color] ([color=BLUE]cons[/color] 1 ([color=BLUE]substr[/color] str 1 pos)) (_splitwords ([color=BLUE]substr[/color] str ([color=BLUE]+[/color] pos 2)))) ([color=BLUE]list[/color] ([color=BLUE]cons[/color] 1 str)) ) ) ([color=BLUE]defun[/color] _textwidth ( enx ) (([color=BLUE]lambda[/color] ( lst ) ([color=BLUE]-[/color] ([color=BLUE]caadr[/color] lst) ([color=BLUE]caar[/color] lst))) ([color=BLUE]textbox[/color] enx)) ) ([color=BLUE]if[/color] ([color=BLUE]setq[/color] sel ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color] '((0 . [color=MAROON]"TEXT"[/color]) (-4 . [color=MAROON]"<NOT"[/color]) (-4 . [color=MAROON]"<OR"[/color]) (72 . 3) (72 . 4) (72 . 5) (-4 . [color=MAROON]"OR>"[/color]) (-4 . [color=MAROON]"NOT>"[/color])))) ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] inc ([color=BLUE]sslength[/color] sel)) ([color=BLUE]setq[/color] ent ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] inc ([color=BLUE]1-[/color] inc))) enx ([color=BLUE]entget[/color] ent) tot 0.0 lst [color=BLUE]nil[/color] ) ([color=BLUE]foreach[/color] item (_splitwords ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 1 enx))) ([color=BLUE]setq[/color] dxf ([color=BLUE]entget[/color] ([color=BLUE]entmakex[/color] ([color=BLUE]subst[/color] item ([color=BLUE]assoc[/color] 1 enx) enx))) wid (_textwidth dxf) tot ([color=BLUE]+[/color] tot wid) lst ([color=BLUE]cons[/color] ([color=BLUE]cons[/color] dxf wid) lst) ) ) ([color=BLUE]if[/color] ([color=BLUE]<[/color] 1 ([color=BLUE]length[/color] lst)) ([color=BLUE]progn[/color] ([color=BLUE]setq[/color] wid (_textwidth enx) spc ([color=BLUE]/[/color] ([color=BLUE]-[/color] wid tot) ([color=BLUE]float[/color] ([color=BLUE]1-[/color] ([color=BLUE]length[/color] lst)))) lst ([color=BLUE]reverse[/color] lst) ang ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 50 enx)) ) ([color=BLUE]if[/color] ([color=BLUE]and[/color] ([color=BLUE]=[/color] 0 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 72 enx))) ([color=BLUE]=[/color] 0 ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 73 enx))) ) ([color=BLUE]setq[/color] pnt ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 enx))) ([color=BLUE]setq[/color] pnt ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 11 enx))) ) ([color=BLUE]cond[/color] ( ([color=BLUE]=[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 72 enx)) 0) ([color=BLUE]setq[/color] fun ([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]+[/color] spc ([color=BLUE]cdr[/color] a)))) ) ( ([color=BLUE]=[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 72 enx)) 1) ([color=BLUE]setq[/color] fun ([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]+[/color] spc ([color=BLUE]/[/color] ([color=BLUE]+[/color] ([color=BLUE]cdr[/color] a) ([color=BLUE]cdr[/color] b)) 2.0))) pnt ([color=BLUE]polar[/color] pnt ([color=BLUE]+[/color] ang [color=BLUE]pi[/color]) ([color=BLUE]/[/color] ([color=BLUE]-[/color] wid ([color=BLUE]cdar[/color] lst)) 2.0)) ) ) ( ([color=BLUE]=[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 72 enx)) 2) ([color=BLUE]setq[/color] fun ([color=BLUE]lambda[/color] ( a b ) ([color=BLUE]+[/color] spc ([color=BLUE]cdr[/color] b))) pnt ([color=BLUE]polar[/color] pnt ([color=BLUE]+[/color] ang [color=BLUE]pi[/color]) ([color=BLUE]-[/color] wid ([color=BLUE]cdar[/color] lst))) ) ) ) ([color=BLUE]mapcar[/color] ([color=BLUE]function[/color] ([color=BLUE]lambda[/color] ( a b [color=BLUE]/[/color] dxf ) ([color=BLUE]setq[/color] dxf ([color=BLUE]car[/color] a) dxf ([color=BLUE]subst[/color] ([color=BLUE]cons[/color] 10 pnt) ([color=BLUE]assoc[/color] 10 dxf) dxf) dxf ([color=BLUE]subst[/color] ([color=BLUE]cons[/color] 11 pnt) ([color=BLUE]assoc[/color] 11 dxf) dxf) pnt ([color=BLUE]polar[/color] pnt ang (fun a b)) ) ([color=BLUE]entmod[/color] dxf) ) ) lst ([color=BLUE]append[/color] ([color=BLUE]cdr[/color] lst) '(([color=BLUE]nil[/color] . 0.0))) ) ([color=BLUE]entdel[/color] ent) ) ) ) ) ([color=BLUE]princ[/color]) ) Quote
SLW210 Posted August 21, 2012 Author Posted August 21, 2012 I have a few old drawings done previous to my employment with column headings of several words in 1 text and varying spacing to align with the columns. Needless to say that looks like heck and I MUST fix them. I had to work on other things this afternoon, but tomorrow I will be using this quite a lot. I reworked one drawing today and your LISP worked very very well. Hopefully it will get a good workout tomorrow. Quote
Lee Mac Posted August 21, 2012 Posted August 21, 2012 That's great to hear SLW, I always like to know that a program that I have written is being put to good use and, by removing some of the more tedious drafting jobs, boosting the morale of it's operator Quote
fervour Posted January 6, 2015 Posted January 6, 2015 I have a sentence in mtext and all the words are separated with TAB spacer. What is the modification to make so that it only breaks the tabs between words and not regular spaces. Thank you. Quote
hanhphuc Posted January 7, 2015 Posted January 7, 2015 (edited) I have a sentence in mtext and all the words are separated with TAB spacer. What is the modification to make so that it only breaks the tabs between words and not regular spaces. Thank you. hi fervour welcome to CADtutor & happy new year. im not sure, if you can post an example so other members could assist. perhaps vl-string-translate : Replaces characters in a string with a specified set of characters? (vl-string-translate source-set dest-set str) Or --> this? Edited January 7, 2015 by hanhphuc Link added Quote
Lee Mac Posted January 7, 2015 Posted January 7, 2015 Cross-reference: http://www.theswamp.org/index.php?topic=44128.msg536629#msg536629 Quote
fervour Posted January 7, 2015 Posted January 7, 2015 Thanks Lee. I have extended my inquiries on theswamp thread. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.