| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Преобразование однострочного текста в многострочный

Преобразование однострочного текста в многострочный

Ответ
Поиск в этой теме
Непрочитано 24.10.2005, 14:08 #1
Преобразование однострочного текста в многострочный
Sergk
 
инженер-проектировщик
 
Регистрация: 10.03.2005
Сообщений: 54

Такая проблема. Прислали проект, в котором записка , выполненная многострочным текстом взорвана и, естественно, тест стал однострочным. Сейчас необходимо записку править-в виде однострочного текста-проще пойти застрелиться. Отсюда вопрос: каким образом однострочный текст вернуть в многострочный или переконвертировать в любой текстовый редактор?
Просмотров: 97724
 
Непрочитано 24.10.2005, 14:22
1 | #2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,327


Команда "Convert Text to Mtext" из Express Tools
с командной строки
Код:
....
Хмурый вне форума  
 
Непрочитано 24.10.2005, 14:32
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Только эта команда не отслеживает нескольких вещей:
1. Переводы строк - сносятся.
2. Текст добавляется в процессе выбора, а не по точкам вставки.
Можно, наверное, и свое написать, только некогда
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.10.2005, 14:33 Преобразование однострочного текста в многострочный
#4
Sergk

инженер-проектировщик
 
Регистрация: 10.03.2005
Сообщений: 54


Огромное спасибо, а про Express Tools забыл, стыдно
Sergk вне форума  
 
Непрочитано 24.10.2005, 14:34
#5
alisa


 
Регистрация: 09.08.2005
Питер
Сообщений: 302


Я обычно пользуюсь в таких случаях замечательной программкой, которая была здесь на форуме: MtmdEdit 2.2. Можно задавать шаг строк по высоте и менять высоту шрифта. Она удобна еще и тем, что сразу видишь на экране результаты правки. Пользуюсь случаем сказать спасибо Автору (Правда, кажется, работает под ACAD 2002 и 2004).
Надо выделить всю тучу одиночных строк и править текст полностью. Можно тупо выстроить весь текст в одну строку и enter'ом разбивать так, как надо (как в Word). Правда, текст все равно будет однострочным, любую строку после правки можно удалять и править отдельно. Примитивно, конечно, но иногда это единственный выход.
alisa вне форума  
 
Автор темы   Непрочитано 24.10.2005, 14:40
#6
Sergk

инженер-проектировщик
 
Регистрация: 10.03.2005
Сообщений: 54


Переводы строк уже не такая большая проблема, это все лечится просто. Кад- 2005, да и текст мы редактируем в Word, потом в кад вставляем. Спасибо всем, кто откликнулся.
Sergk вне форума  
 
Непрочитано 24.10.2005, 14:44
#7
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,327


А вот переводы строк и порядок следования строк- можно выбрать из контекстного меню . Вызываешь программу
Цитата:
_TXT2MTXT
и затем правой клавишей мыши или "Enter" открываешь опции команды... (в 2004-ом)
Хмурый вне форума  
 
Непрочитано 24.10.2005, 14:51
#8
Денис Флюстиков


 
Регистрация: 20.07.2005
СПб
Сообщений: 89


Посмотри:
http://dwg.ru/dwl/250
где есть функция перевода Текст в МТекст с учетом высоты букв, цвета каждой строчки и дистанции между ними.
Денис Флюстиков вне форума  
 
Непрочитано 24.10.2005, 15:04
#9
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


> Хмурый : Хехе, и я теперь на эти грабли наступил - напрочь забыв о ком.строке
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.10.2005, 15:05
#10
Sergk

инженер-проектировщик
 
Регистрация: 10.03.2005
Сообщений: 54


Про контекстное меню спасибо, если честно не знал, в 2005 каде работает великолепно, теперь проблем нет совсем.
Sergk вне форума  
 
Непрочитано 02.04.2012, 12:37
#11
CHILD_11


 
Регистрация: 10.03.2011
СПб
Сообщений: 101


апну темку.

пользуюсь TXT2MTXT

вопрос: можно ли сделать так, чтобы при выделении нескольких надписей простого текста они преобразовывались в такое же количество надписей многострочного текста?

а данная команда объединит их в одну многострочную надпись.
CHILD_11 вне форума  
 
Непрочитано 12.05.2012, 05:10
#12
evgeny-86


 
Регистрация: 18.10.2011
Сообщений: 9


поддержу CHILD_11. Иногда бывает нужно именно раздельное преобразование текста в мтекст. ждем-с реализации.
evgeny-86 вне форума  
 
Непрочитано 12.05.2012, 16:42
4 | #13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от evgeny-86 Посмотреть сообщение
ждем-с реализации.
Используя Express'овский TXT2MTXT
Код:
[Выделить все]
(defun c:T2MT (/ ss cnt )
  ;;;Convert each text to mtext use express tools command txt2mtxt
  (and
  (setq cnt -1 ss (ssget '((0 . "text"))))
  (repeat (sslength ss)
     (command "_.txt2mtxt" (ssname ss (setq cnt (1+ cnt))) "")
    )
  (command "_draworder" ss "" "_f")
  )
  (princ)
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.12.2014, 10:04
#14
Rudic

Инженер ТГВ
 
Регистрация: 30.04.2013
Чебоксары
Сообщений: 3
<phrase 1=


Доброго дня! Вставил я этот код.
Команда Т2МТ срабатывает и предлагает выбрать объекты, но после нажатия ентер не происходит преобразования. Пишет: Имя объекта: FFA701F0.
Я может что-то делаю неправильно?
Rudic вне форума  
 
Непрочитано 29.12.2014, 10:37
#15
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Rudic Посмотреть сообщение
но после нажатия ентер не происходит преобразования
Эта команда использует Express Tools
Скорее всего, он у тебя не установлен. Набери в командной строке txt2mtxt. Работает?
PS. Проверил #13 на AutoCAD 2015 SP2. Код рабочий
Еще ссылки на команды преобразования текста в МТЕКСТ
Text2MText Upgraded
Help with TEXT
Convert selected texts to Mtexts individually
Improved Text to Mtext
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.12.2014, 10:59
#16
Rudic

Инженер ТГВ
 
Регистрация: 30.04.2013
Чебоксары
Сообщений: 3
<phrase 1=


Я установил Express Tools. Все команды есть, но именно команды txt2mtxt нету. Что делать я не знаю.
Может попробовать вытащить tools с другого автокада?
Rudic вне форума  
 
Непрочитано 29.12.2014, 11:25
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Один из вариантов, без использования ET : http://forum.dwg.ru/showpost.php?p=162618&postcount=21
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.12.2014, 20:35
#18
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Rudic Посмотреть сообщение
Я установил Express Tools. Все команды есть, но именно команды txt2mtxt нету. Что делать я не знаю.
Может попробовать вытащить tools с другого автокада?
из справки
Цитата:
Express menu: Text Convert Text to Mtext
Command Command line: TXT2MTXT
Files Files: leaderex.arx
Поищи leaderex.arx для своей версии Автокада
Еще версия от Dotsoft (без проверки)
Код:
[Выделить все]
; ----------------------------------------------------------------------
;                   (Converts Stack of TEXT to MTEXT)
;            Copyright (C) 1998 DotSoft, All Rights Reserved
;                      Website: www.dotsoft.com
; ----------------------------------------------------------------------
; DISCLAIMER:  DotSoft Disclaims any and all liability for any damages
; arising out of the use or operation, or inability to use the software.
; FURTHERMORE, User agrees to hold DotSoft harmless from such claims.
; DotSoft makes no warranty, either expressed or implied, as to the
; fitness of this product for a particular purpose.  All materials are
; to be considered ‘as-is’, and use of this software should be
; considered as AT YOUR OWN RISK.
; ----------------------------------------------------------------------

(defun col2str (inp)
  (cond
    ((= inp nil)(setq ret "BYLAYER"))
    ((= inp 256)(setq ret "BYLAYER"))
    ((= inp 0)(setq ret "BYBLOCK"))
    ((and (> inp 0)(< inp 255))(setq ret (itoa inp)))
    (t nil)
  )
)

(defun savprop ()
  (setq clayer (getvar "CLAYER"))
  (setq cecolor (getvar "CECOLOR"))
  (setvar "CECOLOR" "BYLAYER")
  (setq celtype (getvar "CELTYPE"))
  (setvar "CELTYPE" "BYLAYER")
  (setq thickness (getvar "THICKNESS"))
  (setvar "THICKNESS" 0)
  (if (>= (atoi (getvar "ACADVER")) 13)
    (progn
      (setq celtscale (getvar "CELTSCALE"))
      (setvar "CELTSCALE" 1.0)
    )
  )
)

(defun resprop ()
  (if (>= (atoi (getvar "ACADVER")) 13)
    (setvar "CELTSCALE" celtscale)
  )
  (setvar "THICKNESS" thickness)
  (setvar "CELTYPE" celtype)
  (setvar "CECOLOR" cecolor)
  (setvar "CLAYER" clayer)
)

(defun textrect (tent / ang sinrot cosrot t1 t2 p1 p2 p3 p4)
  (setq p0 (cdr (assoc 10 tent))
    ang (cdr (assoc 50 tent))
    sinrot (sin ang)
    cosrot (cos ang)
    t1 (car (textbox tent))
    t2 (cadr (textbox tent))
    p1 (list (+ (car p0)
       (- (* (car t1) cosrot) (* (cadr t1) sinrot)))
       (+ (cadr p0)
       (+ (* (car t1) sinrot) (* (cadr t1) cosrot))))
    p2 (list (+ (car p0)
       (- (* (car t2) cosrot) (* (cadr t1) sinrot)))
       (+ (cadr p0)
       (+ (* (car t2) sinrot) (* (cadr t1) cosrot))))
    p3 (list (+ (car p0)
       (- (* (car t2) cosrot) (* (cadr t2) sinrot)))
       (+ (cadr p0)
       (+ (* (car t2) sinrot) (* (cadr t2) cosrot))))
    p4 (list (+ (car p0)
       (- (* (car t1) cosrot) (* (cadr t2) sinrot)))
       (+ (cadr p0)
       (+ (* (car t1) sinrot) (* (cadr t2) cosrot))))
  )
  (list p1 p2 p3 p4)
)

(defun C:TXT2MTXT ( / mwid dset ibrk bitm bent sset rect mlay mcol mlst
                      bins bang tang nins num ndis chnd cent nhnd nstr
                      str pt1 pt2 pt3 dis dvx dvy dvz new)
  (if (< (atoi (getvar "ACADVER")) 13)
    (alert "This Function Requires\nRelease 13 or Higher")
    (progn
      (setq cmdecho (getvar "CMDECHO"))
      (setvar "CMDECHO" 0)
      (command "_.UNDO" "_G")
      (setq mwid 0.0)
      (setq dset (ssadd))
      ;
      (initget "Y N")
      (setq tmp (getkword "\nDS> Include Line Breaks <Y>/N: "))
      (if (/= tmp "N")(setq ibrk "Y")(setq ibrk "N"))
      ;
      (setq bitm (car (entsel "\nDS> Pick Base String: ")))
      (setq bent (entget bitm))
      (setq rect (textrect bent))
      (setq chk (distance (car rect)(cadr rect)))
      (if (> chk mwid)(setq mwid chk))
      ;
      (if (= "TEXT" (cdr (assoc 0 bent))) 
        (progn
          (redraw bitm 3)
          (princ "\nDS> Select Remaining Text: ")
          (setq sset (ssget '((0 . "TEXT"))))
          (if sset
            (progn
              (setq rect (textrect bent))
              (setq orig rect)
              (setq mlay (cdr (assoc 8 bent)))
              (setq mcol (cdr (assoc 62 bent)))
              (setq mlst (list (cdr (assoc 1 bent))))
              ;
              (if (> (cdr (assoc 72 bent)) 0)
                (setq bins (cdr (assoc 11 bent)))
                (setq bins (cdr (assoc 10 bent)))
              )
              (setq bang (cdr (assoc 50 bent)))
              (setq tang (- bang (/ PI 2)))
              (setq nins bins)
              (ssdel bitm sset)
              (while (> (sslength sset) 0)
                (setq num (sslength sset) itm 0)
                (setq ndis 99999999.9)
                (while (< itm num)
                  (setq chnd (ssname sset itm))
                  (setq cent (entget chnd))
                  (if (> (cdr (assoc 72 cent)) 0)
                    (setq cins (cdr (assoc 11 cent)))
                    (setq cins (cdr (assoc 10 cent)))
                  )
                  (setq cdis (distance bins cins))
                  (if (< cdis ndis)
                    (setq ndis cdis nhnd chnd nent cent)
                  )
                  (setq itm (1+ itm))
                )
                (setq dset (ssadd nhnd dset))
                (ssdel nhnd sset)
                ;
                (setq rect (textrect nent))
                (setq chk (distance (car rect)(cadr rect)))
                (if (> chk mwid)(setq mwid chk))
                ;
                (setq nstr (cdr (assoc 1 nent)))
                (setq mlst (append mlst (list nstr)))
              )
              ;
              (entdel bitm)
              (setq num (sslength dset) itm 0)
              (while (< itm num)
                (setq hnd (ssname dset itm))
                (entdel hnd)
                (setq itm (1+ itm))
              )
              ;
              (savprop)
              (setvar "CLAYER" mlay)
              (if (/= mcol nil)
                (setvar "CECOLOR" (col2str mcol))
              )
              (setq mwid (+ mwid (* mwid 0.025)))
              (setq pt1 (car orig))
              (setq pt2 (cadr orig))
              (setq dis (distance pt1 pt2))
              (setq dvx (/ (- (car pt2)(car pt1)) dis))
              (setq dvy (/ (- (cadr pt2)(cadr pt1)) dis))
              (setq pt3 (list dvx dvy 0.0))
              (setq nins (list (car (cadddr orig))
                         (cadr (cadddr orig))
                         (nth 2 (cdr (assoc 10 bent)))))
              ;
              (setq new '((0 . "MTEXT")(100 . "AcDbEntity")(100 . "AcDbMText")))
              (setq new (append new (list (assoc 7 bent))))
              (setq new (append new (list (assoc 8 bent))))
              (setq new (append new (list (cons 10 nins))))
              (setq new (append new (list (cons 11 pt3))))
              (foreach lin mlst
                (if (= ibrk "Y")
                  (if (/= lin (last mlst))
                    (setq lin (strcat lin "\\P"))
                  )
                  (setq lin (strcat lin " "))
                )
                (setq new (append new (list (cons 1 lin))))
              )
              (setq new (append new (list (assoc 40 bent))))
              (setq new (append new (list (cons 41 mwid))))
              (setq new (append new (list (cons 71 1))))
              (setq new (append new (list (cons 72 1))))
              (entmake new)
              (resprop)
              ;
              (setq sset nil)
              (setq dset nil)
              (setq lst nil)
              (command "_.UNDO" "_E")
              (setvar "CMDECHO" cmdecho)
            )
            (redraw bitm 4)
          )
        )
      )
    )
  )
  (setq sset nil)
  (setq mlst nil)
  (princ)
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.05.2017, 10:39
#19
alex2214


 
Регистрация: 01.10.2012
Сообщений: 23


В 2018 автокаде появилась команда объединить текствмтекст
alex2214 вне форума  
 
Непрочитано 26.05.2017, 10:48
#20
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Она в ЕТ уже как минимум с 2000 версии.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Преобразование однострочного текста в многострочный

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск