Сейчас я скачал еще одну аналогичную утилитку ТXTOUT, на сей раз в виде исходника. Проблема со "слишком длинными" блоками у нее точно такая же. Вот фрагмент исходника на Автолиспе, ответственный за сбор запись текстовых строк в файл:
- Код: Выделить всё
(prompt "\nPick text objects to export: ") ;prompt to select text
;select only TEXT & MTEXT
(setq SS2 (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")...)
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
(Многоточием я заменил кусоче кода со знаком "больше". Тут уже у форумного скрипта проблемы. Он тогда превращает фрагмент кода от знака "меньше" до знака "больше" в <OR>)
Все, на первый взгляд, просто и понятно: выбрали TEXT и MTEXT, получили размер функцией sslength, записали размер в переменную SS2, извлекаем каждый такой объект в OBJD2, вытаскиваем из объекта текст в OBTXT2 и пишем в файл. Ну, и где же, спрашивается, сидит тут ограничение на длину? Вроде бы в ЛИСПе целые числа не однобайтовые. Кто знает?