FastFiber

tekst exporteren naar txt-bestand

Gestart door Markske, vr 25 11 2005, 10:26:44

Vorige topic - Volgende topic

Markske

Hoi,

Ik heb een tekening met heel veel tekst (losse single-line text regeltjes).
Die tekst-regeltjes zou ik graag in een txt-bestandje willen converteren.
Iemand enig idee of dat zou kunnen?

Groetjes,
Markske

Reimer

Hoi Markske,

de onderstaande lisp-routine heb ik ooit gedownload. Deze werkt niet voor dimensions.
Ik heb nog niet onderzocht waarom het uitvoerbestand voor mij vaak op een onlogische plek wordt neergezet. Ik moet altijd even zoeken op mijn PC.

Groeten,
Reimer

define program name and localize variables
(defun C:TXTOUT (/ FN2 FD2 KWD2 SS2 CTR2 SSQTY2 OBJD2 OBTXT2)
(setq FN2 (getstring "\nText export file name: ")) ;get file name
(if (setq FD2 (open FN2 "r")) ;if file can be found
(progn
(close FD2) ;close file
(initget "Overwrite Append Cancel") ;initialize allowable keywords
(setq KWD2 (getkword "\nFile exists! Overwrite, Append or Cancel <O/a/c>: "))
)
)
(if (= "Cancel" KWD2) ;if user response was Cancel
(prompt "\nOperation cancelled at user's request.") ;prompt to confirm
(progn
(if (= "Append" KWD2) ;if user response was Append
(progn
(setq FD2 (open FN2 "a")) ;open file for appending
(prompt (strcat "\nFile \"" FN2 "\" now ready for appending."));and confirm
)
(progn
(setq FD2 (open FN2 "w")) ;else open file for (over)writing
(prompt (strcat "\nFile \"" FN2 "\" now open.")) ;and confirm
)
)
(prompt "\nPick text objects to export: ") ;prompt to select text
;select only TEXT & MTEXT
(setq SS2 (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>")))
CTR2 0 ;initialize counter CTR2 to zero
SSQTY2 (sslength SS2) ;find size of selection set
)
(repeat SSQTY2 ;repeat for each object
(setq OBJD2 (entget (ssname SS2 CTR2)) ;extract object data
OBTXT2 (cdr (assoc 1 OBJD2)) ;extract string value
CTR2 (1+ CTR2) ;increment counter
)
(write-line OBTXT2 FD2) ;write string to file
) ;end REPEAT
(close FD2) ;close file
(if (= "Append" KWD2) ;\inform user
(prompt (strcat "\n" (itoa SSQTY2) " lines appended to file.")); >of number
(prompt (strcat "\n" (itoa SSQTY2) " lines written to file.")) ;/ of lines
)
) ;end PROGN
) ;close "(if (= "Append"..."
(princ) ;exit quietly
)

Markske

Citaat van: Reimer op vr 25 11 2005, 10:54:25
Hoi Markske,

de onderstaande lisp-routine heb ik ooit gedownload. Deze werkt niet voor dimensions.
Ik heb nog niet onderzocht waarom het uitvoerbestand voor mij vaak op een onlogische plek wordt neergezet. Ik moet altijd even zoeken op mijn PC.

Groeten,
Reimer

define program name and localize variables
(defun C:TXTOUT (/ FN2 FD2 KWD2 SS2 CTR2 SSQTY2 OBJD2 OBTXT2)
(setq FN2 (getstring "\nText export file name: ")) ;get file name
(if (setq FD2 (open FN2 "r")) ;if file can be found
(progn
(close FD2) ;close file
(initget "Overwrite Append Cancel") ;initialize allowable keywords
(setq KWD2 (getkword "\nFile exists! Overwrite, Append or Cancel <O/a/c>: "))
)
)
(if (= "Cancel" KWD2) ;if user response was Cancel
(prompt "\nOperation cancelled at user's request.") ;prompt to confirm
(progn
(if (= "Append" KWD2) ;if user response was Append
(progn
(setq FD2 (open FN2 "a")) ;open file for appending
(prompt (strcat "\nFile \"" FN2 "\" now ready for appending."));and confirm
)
(progn
(setq FD2 (open FN2 "w")) ;else open file for (over)writing
(prompt (strcat "\nFile \"" FN2 "\" now open.")) ;and confirm
)
)
(prompt "\nPick text objects to export: ") ;prompt to select text
;select only TEXT & MTEXT
(setq SS2 (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>")))
CTR2 0 ;initialize counter CTR2 to zero
SSQTY2 (sslength SS2) ;find size of selection set
)
(repeat SSQTY2 ;repeat for each object
(setq OBJD2 (entget (ssname SS2 CTR2)) ;extract object data
OBTXT2 (cdr (assoc 1 OBJD2)) ;extract string value
CTR2 (1+ CTR2) ;increment counter
)
(write-line OBTXT2 FD2) ;write string to file
) ;end REPEAT
(close FD2) ;close file
(if (= "Append" KWD2) ;\inform user
(prompt (strcat "\n" (itoa SSQTY2) " lines appended to file.")); >of number
(prompt (strcat "\n" (itoa SSQTY2) " lines written to file.")) ;/ of lines
)
) ;end PROGN
) ;close "(if (= "Append"..."
(princ) ;exit quietly
)


Hoi Reimer,

Bedankt voor je snelle reactie  :D

maar... zelf ben ik nog niet zo in het lisp-gebeuren  :?
daarom volgend vraagje:
ik kopieer gewoon jouw lisp-tekst, plak ik die dan in een kladblokje, en sla ik die dan op als bv. "exporttekst.lsp"
laad dit bestand dan in ACAD via appload. (tot zover lukt het nog)
maar... welk commando moet ik nu ingeven om deze lisp te doen werken?

Groetjes,
Markske

Markske

hoi Reimer,

ik heb iets te vroeg gereageerd  :D

je lisp werkt PERFECT!!!!  :D

ik moest gewoon "TXTOUT" intypen...

Nogmaals bedankt!!!

Groetjes,
Markske

HofCAD

Citaat van: Reimer op vr 25 11 2005, 10:54:25
Hoi Markske,

de onderstaande lisp-routine heb ik ooit gedownload. Deze werkt niet voor dimensions.
Ik heb nog niet onderzocht waarom het uitvoerbestand voor mij vaak op een onlogische plek wordt neergezet. Ik moet altijd even zoeken op mijn PC.
Groeten,
Reimer


------------- ~\\|//~ ------------
------------- (o)-(o) -------------
-------ooO---(_)---Ooo--------


Beste Reimer,

Stel dat U het uitvoerbestand Teksten.txt in de map C:\Temp wil hebben, antwoord U dan op de vraag
'Text export file name:' met C:\\Temp\\Teksten.txt ???????

Groetjes HofCAD CSI
ACADcadabra

Reimer

Bedankt Hofcad.

Na het posten van de lisp was ik daar zelf ook net achter gekomen. Voorheen gaf ik alleen een bestandsnaam op en dan moest ik altijd even zoeken waar het bestand was neergezet.
Ik werk nogal eens met lange padnamen, en dan is het ingeven van het complete pad wel wat veel werk.

Groeten,
Reimer.