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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Редактирование неск-их строк однострочного текста одновренно

Редактирование неск-их строк однострочного текста одновренно

Ответ
Поиск в этой теме
Непрочитано 28.12.2005, 00:31
Редактирование неск-их строк однострочного текста одновренно
DDlis
 
Регистрация: 03.02.2005
Сообщений: 583

У кого-нибудь есть прога, которая бы редактировала несколько строк однострочного текста одновременно и в ней небыло бы ограничения по кол-ву редактируемых строк?
Просмотров: 13514
 
Непрочитано 02.01.2006, 16:02
#21
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


for Fatty:
-----------
Хорошая программа. Но как бы в ней изменить шрифт отображения редактируемых текстов. На мониторе с большим разрешением буковки маленькие. Еле видно.
forMA вне форума  
 
Непрочитано 02.01.2006, 21:20
#22
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от forMA
for Fatty:
-----------
Хорошая программа. Но как бы в ней изменить шрифт отображения редактируемых текстов. На мониторе с большим разрешением буковки маленькие. Еле видно.
Попробую поставить BOLD шрифт, только попозже
У меня монитор 17 поэтому вроде как нормально отображается


~'J'~
fixo вне форума  
 
Непрочитано 02.01.2006, 21:21
#23
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от DDlis
Спасибо большое, стало гораздо удобней.
Буду рад если все останется в норме

~'J'~
fixo вне форума  
 
Непрочитано 02.01.2006, 22:11
#24
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Облегченная версия с жирным шрифтом:

Код:
[Выделить все]
(defun make-dcl-editor (alist / cnt fn )
(setq fname (vl-filename-mktemp  "txt-edit.dcl"))
;;;(setq fname (strcat (getvar "dwgprefix") "txt-edit.dcl"));for debug only
(setq fn (open fname "w"))
(write-line (strcat "medit : dialog {label= \"MULTIPLE SINGLE TEXT EDITOR\"" ";") fn)

(setq cnt 1)
(repeat (length alist)
  (write-line (strcat ":edit_box {key =" "\""(strcat "ed" (itoa cnt))"\"" ";") fn)
    (write-line "width = 80; height = 1;is_bold = true;fixed_width_font = true;}" fn)
  (setq cnt (1+ cnt)))
      (write-line "spacer_1;"  fn)
	(write-line "ok_cancel;{}}" fn)
  (close fn)
  
(princ))

(defun run-dcl (alist / idx_dcl  cnt  key_list ret_list start)
 (setq idx_dcl (load_dialog "txt-edit.dcl"))
 (setq idx_dcl (load_dialog fname)) 
 (new_dialog "medit" idx_dcl)

 (setq cnt 0)
 (repeat (length alist)
   (setq key_list (cons (strcat "ed" (itoa (1+ cnt))) key_list))	
  (set_tile (strcat "ed" (itoa (1+ cnt)))
	    (vl-princ-to-string (nth cnt alist)))
   (setq cnt (1+ cnt)))
  (setq  key_list (reverse key_list))

  (setq num 0)
  (repeat (length key_list)
    (action_tile (nth num key_list) 
    "(setq ret_list (cons (get_tile $key) ret_list))")

(setq num (1+ num)))
 (action_tile "accept"    "(done_dialog 1)")
 (action_tile "cancel" "(done_dialog 0)")

 (start_dialog)
  (unload_dialog idx_dcl)
  (vl-file-delete fname)
  (reverse ret_list)
)

(defun C:TEX ()
  (setvar "cmdecho" 0)
  (setq alist nil
	txt_list nil
	sset nil
	ret_list nil)
   (setq sset (ssget '((0 . "TEXT"))))
  (setq i -1)
  (if (< (sslength sset) 20)
    (progn
  (while (setq en (ssname sset (setq i (1+ i))))
    (setq alist (cons (cdr (assoc 1 (entget en))) alist))))
  (progn
    (alert "Недопустимое количество
    текстовых строк\n")(exit)(princ)))
  (setq alist (reverse alist))
  (make-dcl-editor alist)
  (setq ret_list (run-dcl alist))
    (setq i -1)
  
  (while (setq en (ssname sset (setq i (1+ i))))
    (setq elist (entget en))
    (entmod (subst  (cons 1 (eval (nth i ret_list))) (assoc 1 elist) elist))
    (entupd en))
  
  (setq alist nil
	txt_list nil
	sset nil
	ret_list nil)
  (setvar "cmdecho" 1)
  (princ)
  )
;;;(C:tex);for debug only
(prompt "\nMultiple single line text editor is loaded\n")
(prompt "\nDo not select more than 20 texts\n")
(prompt "\nВ командной строке набери TEX ... \n")
(prin1)

;;; Для компиляции в FAS файл можно использовать :
;;; (vlisp-compile 'st "txt-edit.lsp" "tex.fas")
Рекомендуется изменить по вкусу и в зависимости
от размера экрана

~'J'~
fixo вне форума  
 
Непрочитано 03.01.2006, 06:04
#25
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


for Fatty:
-----------
Сейчас хорошо. Много работаешь- глаза устают.
Большое спасибо. Эта программа редактирования нескольких однострочных текстов интересна по применению. Моя работа вообще насыщена однострочными текстами. Да. Отличная мысль. Спасибо.
forMA вне форума  
 
Непрочитано 03.01.2006, 12:31
#26
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от forMA
for Fatty:
-----------
Сейчас хорошо. Много работаешь- глаза устают.
Большое спасибо. Эта программа редактирования нескольких однострочных текстов интересна по применению. Моя работа вообще насыщена однострочными текстами. Да. Отличная мысль. Спасибо.
Рад помочь,



~'J'~
fixo вне форума  
 
Непрочитано 06.01.2006, 13:15 Привет
#27
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
Сообщение от DDlis
Извиняюсь, что не отвечал. Был в отъезде. MtmdEdit работает только для 2005 а я работаю в 2006 AutoCADе. Нашел Red8Txt, но она редактирует только 8строк, нет ли у кого-нибудь такой же програмки но без ограничений по кол-ву редактируемых строк.
[ATTACH]1136025208.rar[/ATTACH]
Хм значит у меня глюк, и MtmdEdit прекрасно раьотает под 2006
[ATTACH]1136543332.jpg[/ATTACH]
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 12.11.2009, 08:33
#28
JokerrSergh


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


fixo, а можно в эту програмку внести еще изменения?
Хотелось бы, чтобы при выделении текста областью (т.е. сразу несколько строчек, а не по отдельности каждую строчку) в окне редактора строчки располагались бы в последовательности сверху вниз, а не снизу вверх.
Когда выбираешь по отдельности каждую строчку, в окне редактора эти строчки располагаются в той же последовательности, в которой их выбираешь. А когда выделяешь сразу несколько строчек, почему-то в редакторе строчки снизу вверх располагаются.
Заранее благодарен всем, кто откликнется
Вложения
Тип файла: lsp tex.lsp (2.5 Кб, 80 просмотров)
JokerrSergh вне форума  
 
Непрочитано 12.11.2009, 12:11
#29
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Моя старая-старая програмка. Редактирует текст через блокнот (notepad)
Код:
[Выделить все]
(defun C:РТЕКСТ	(/ pk ob f xmax h ug sp A_VER mip_file)
  ;;; Vladimir Azarko (VVA)
  ;;; publishsp on dwg.ru
  ;;; http://forum.dwg.ru/showthread.php?t=5076&page=2
(vl-load-com) 
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setq PICK1 (getvar "UNDOCTL"))
  (cond
    ((= PICK1 0) (command "_.UNDO" "_All"))
    ((= PICK1 3) (command "_.UNDO" "_Control" "_All"))
    (t nil)
  ) ;_ end of cond
  (command "_.UNDO" "_M")
  (setq PICK1 nil)
  (prompt "\nВыберите текст для редактирования ...")
  (while (null PICK1) (setq PICK1 (ssget "_:L" '((0 . "TEXT")))))
  (setq	pk 0
	ob '()
  ) ;_ end of setq
  (repeat (sslength PICK1)
    (setq ug (ssname PICK1 pk)
          sp (entget ug)
          ob (cons (cons ug
                         (if (zerop(cdr(assoc 72 sp)))
                           (cadr (trans (cdr (assoc 10 sp)) ug 1))
                           (cadr (trans (cdr (assoc 11 sp)) ug 1))
                           )
		   ) ;_ end of cons
		   ob
	     )
          )
    (setq pk (1+ pk))
  ) ;_ end of repeat
  (setq PICK1 nil)
  (if (> (length ob) 0)
    (progn
      (setq mip_file (strcat (getvar "TEMPPREFIX") "miptext.txt"))
      (setq f  (open mip_file "w")
	    sp '()
      ) ;_ end of setq
      (repeat (length ob)
	(foreach pk ob
	  (progn
	    (if	(and pk (or (null xmax) (> (cdr pk) xmax)))
	      (setq xmax  (cdr pk)
		    PICK1 pk
	      ) ;_ end of setq
	    ) ;_ end of if
	  ) ;_ end of progn
	) ;_ end of foreach
	(setq ob   (subst nil PICK1 ob)
	      xmax nil
	      sp   (cons PICK1 sp)
	) ;_ end of setq
	(write-line (cdr (assoc 1 (entget (car PICK1)))) f)
      ) ;_ end of repeat
      (setq f (close f))
    ) ;_ end of progn
    (progn
      (alert "\nНе найдено текстовых примитивов. ")
      (quit)
    ) ;_ end of progn
  ) ;_ end of if

  (vlax-invoke-method (setq f (vlax-get-or-create-object "wscript.shell"))
    "run"
    (strcat "notepad.exe\ " mip_file)
    1
    :vlax-true) ;_ end of vlax-invoke-method
  (vlax-release-object f)
  (setq f (open mip_file "r"))
  (foreach pk (reverse sp)
    (progn
      (setq PICK1 (entget (car pk)))
      (if (setq ob (read-line f))
	(setq PICK1 (subst (cons '1 ob) (assoc 1 PICK1) PICK1))
	(setq PICK1 (subst (cons '1 "") (assoc 1 PICK1) PICK1))
      ) ;_ end of if
      (entmod PICK1)
    ) ;_ end of progn
  ) ;_ end of foreach
  (setq ug (cdr (assoc 50 (entget (car (car sp))))))
  (if (> (length sp) 1)
    (setq
        xmax (trans (cdr (assoc 10 (entget(car(car sp))))) (car(car sp)) 1)
        pk (trans (cdr (assoc 10 (entget(car(cadr sp))))) (car(cadr sp)) 1)
        h (abs (cadr (mapcar '- pk xmax)))
    ) ;_ end of setq
    (setq h (* 1.7 (cdr (assoc 40 (entget (car (car sp)))))))
  ) ;_ end of if
  (setq xmax (car (car sp)))
  (while (setq ob (read-line f))
    (command "_.COPY"
	     xmax
	     ""
             "_none"
	     (cdr (assoc 10 (entget xmax)))
             "_none"
	     (polar (cdr (assoc 10 (entget xmax))) (- ug (* 0.5 PI)) h)
    ) ;_ end of command
    (setq xmax	(entlast)
	  PICK1	(entget xmax)
    ) ;_ end of setq
    (setq PICK1 (subst (cons '1 ob) (assoc 1 PICK1) PICK1))
    (entmod PICK1)
  ) ;_ end of while
  (setq PICK1 nil)
  (princ)
) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 19.11.2009 в 11:57. Причина: Новая версия
VVA вне форума  
 
Непрочитано 12.11.2009, 12:27
#30
JokerrSergh


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


VVA, спасибо огромное.
Теперь у меня аж целых 2 програмки
JokerrSergh вне форума  
 
Непрочитано 18.11.2009, 19:48
#31
Залётный


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Моя старая-старая програмка. Редактирует текст через блокнот (notepad)
Код:
[Выделить все]
(defun C:РТЕКСТ	(/ pk ob f xmax h ug sp A_VER mip_file)
  ;;; Vladimir Azarko (VVA)
  ;;; published on dwg.ru
  ;;; http://forum.dwg.ru/showthread.php?t=5076&page=2
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setq PICK1 (getvar "UNDOCTL"))
  (cond
    ((= PICK1 0) (command "_.UNDO" "_All"))
    ((= PICK1 3) (command "_.UNDO" "_Control" "_All"))
    (t nil)
  ) ;_ end of cond
  (command "_.UNDO" "_M")
  (setq PICK1 nil)
  (prompt "\nВыберите текст для редактирования ...")
  (while (null PICK1) (setq PICK1 (ssget "_:L" '((0 . "TEXT")))))
  (setq	pk 0
	ob '()
  ) ;_ end of setq
  (repeat (sslength PICK1)
    (if	(= (cdr (assoc 0 (entget (ssname PICK1 pk)))) "TEXT")
      (setq ob
	     (cons (cons (ssname PICK1 pk)
			 (cadr (trans (cdr (assoc 10 (entget (ssname PICK1 pk)))) (ssname PICK1 pk) 1)  )
		   ) ;_ end of cons
		   ob
	     ) ;_ end of cons
      ) ;_ end of setq
    ) ;_ end of if
    (setq pk (1+ pk))
  ) ;_ end of repeat
  (setq PICK1 nil)
  (if (> (length ob) 0)
    (progn
      (setq mip_file (strcat (getvar "TEMPPREFIX") "miptext.txt"))
      (setq f  (open mip_file "w")
	    sp '()
      ) ;_ end of setq
      (repeat (length ob)
	(foreach pk ob
	  (progn
	    (if	(and pk (or (null xmax) (> (cdr pk) xmax)))
	      (setq xmax  (cdr pk)
		    PICK1 pk
	      ) ;_ end of setq
	    ) ;_ end of if
	  ) ;_ end of progn
	) ;_ end of foreach
	(setq ob   (subst nil PICK1 ob)
	      xmax nil
	      sp   (cons PICK1 sp)
	) ;_ end of setq
	(write-line (cdr (assoc 1 (entget (car PICK1)))) f)
      ) ;_ end of repeat
      (setq f (close f))
    ) ;_ end of progn
    (progn
      (alert "\nНе найдено текстовых примитивов. ")
      (quit)
    ) ;_ end of progn
  ) ;_ end of if

  (vlax-invoke-method (setq f (vlax-get-or-create-object "wscript.shell"))
    "run"
    (strcat "notepad.exe\ " mip_file)
    1
    :vlax-true) ;_ end of vlax-invoke-method
  (vlax-release-object f)
  (setq f (open mip_file "r"))
  (foreach pk (reverse sp)
    (progn
      (setq PICK1 (entget (car pk)))
      (if (setq ob (read-line f))
	(setq PICK1 (subst (cons '1 ob) (assoc 1 PICK1) PICK1))
	(setq PICK1 (subst (cons '1 "") (assoc 1 PICK1) PICK1))
      ) ;_ end of if
      (entmod PICK1)
    ) ;_ end of progn
  ) ;_ end of foreach
  (setq ug (cdr (assoc 50 (entget (car (car sp))))))
  (if (> (length sp) 1)
    (setq h (sqrt
	      (+ (expt (- (cadr (assoc 10 (entget (car (car sp)))))
			  (cadr (assoc 10 (entget (car (cadr sp)))))
		       ) ;_ end of -
		       2
		 ) ;_ end of expt
		 (expt (- (caddr (assoc 10 (entget (car (car sp)))))
			  (caddr (assoc 10 (entget (car (cadr sp)))))
		       ) ;_ end of -
		       2
		 ) ;_ end of expt
	      ) ;_ end of +
	    ) ;_ end of sqrt
    ) ;_ end of setq
    (setq h (* 1.7 (cdr (assoc 40 (entget (car (car sp)))))))
  ) ;_ end of if
  (setq xmax (car (car sp)))
  (while (setq ob (read-line f))
    (command "_.COPY"
	     xmax
	     ""
             "_none"
	     (cdr (assoc 10 (entget xmax)))
             "_none"
	     (polar (cdr (assoc 10 (entget xmax))) (- ug (* 0.5 PI)) h)
    ) ;_ end of command
    (setq xmax	(entlast)
	  PICK1	(entget xmax)
    ) ;_ end of setq
    (setq PICK1 (subst (cons '1 ob) (assoc 1 PICK1) PICK1))
    (entmod PICK1)
  ) ;_ end of while
  (setq PICK1 nil)
  (princ)
) ;_ end of defun
Спасибо.
Давно искал замену для MtmdEdit т.к. он плохо работает с 2008.

Достаточно удобна.
Работает при левом выравнивании текста.
При другом выравнивании текста (правое, центральное) неправильно обрабатываются расстояния между строк. Возможно ли это исправить?
Залётный вне форума  
 
Непрочитано 19.11.2009, 06:20
#32
JokerrSergh


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


VVA
почему-то перестала работать прога. Первый раз запускалась, а теперь не работает. Вот что пишет:
Команда: ртекст

Выберите текст для редактирования ...
Выберите объекты: Противоположный угол: найдено: 23

Выберите объекты:
; ошибка: no function definition: VLAX-GET-OR-CREATE-OBJECT

Автокад 2007 русский
JokerrSergh вне форума  
 
Непрочитано 19.11.2009, 08:08
#33
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Второй строчкой добавить (vl-load-com) в программу.
Do$ вне форума  
 
Непрочитано 19.11.2009, 08:17
#34
JokerrSergh


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


Do$, пасибо, заработало
JokerrSergh вне форума  
 
Непрочитано 19.11.2009, 08:30
#35
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Да не за что. У VVA в подписи ссылка - очень рекомендую почитать, добавить в избранное - подобных вопросов больше не возникнет.
Do$ вне форума  
 
Непрочитано 19.11.2009, 11:57
#36
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Залётный, Обновил #29
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.11.2009, 22:19
#37
Залётный


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Залётный, Обновил #29
Большое спасибо. Всё работает.

Если бы добавить запрос на возможность выравнивания по положению верхней строки и расстояние между строками, это практически полностью заменило бы MtmdEdit с тем преимуществом, что не зависело бы от версии CAD(а).
Залётный вне форума  
 
Непрочитано 23.11.2009, 01:09 Редактор через блокнот
#38
Li6-D


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


Я тоже очень давно написал аналогичный, но более примитивный редактор.
Самая первая версия написана для ACAD10 под DOS и текстовый редактор Лексикон!
Блокнот был уже потом, когда не стало Лексикона.
Не привожу, потому что есть недостатки:
Если выделить рамкой сразу несколько строк, то в Блокноте они будут в непредсказуемом порядке
(т.е. строки связанного текста надо указывать последовательно).
Редактирование идёт строка в строку, но новых строк в процессе редактирования, увы, не добавляется.
+ик: в случае уменьшения количества строк из чертежа удаляются тексты, состоящие из пустых строк, пробелов.
Самое интересное, что этот невидимый мусор не цепляется рамкой (только "_ALL").
Li6-D вне форума  
 
Непрочитано 23.11.2009, 02:03
#39
Залётный


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


Цитата:
Сообщение от Li6-D Посмотреть сообщение
Редактирование идёт строка в строку,
Редактор Владимира вполне подходит для редактирования и добавления больших объёмов однострочного текста. Увы, если в нём всречается пустая строка всё нарушается. Поэтому было бы удобно сначала установить стандартный межстрочный интервал для всех селектированных строк, выполнить выравнвание текста по положению верхней строки, отредактировать текст и после этого уже руками набить пустые строки, где они необходимы. В этом отношении MtmdEdit был великолепен. Онако для набора нового текста, при предварительном налиичии хотя бы одной строки, или редактирования участков текста без пустых строк он вполне выполняет свои функции.
Залётный вне форума  
 
Непрочитано 23.11.2009, 20:53
#40
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


Залётный
Я до сих пор, работая в 2009 пользуюсь MtmdEdit, хоть он и для 2007, посадив его на макрос
^C^C^P(if(not(member "MtmdEdit.arx" (arx)))(arxload "MtmdEdit.arx"));^PTE;
Вложения
Тип файла: rar MtmdEdit.rar (15.6 Кб, 79 просмотров)
kheylan вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Редактирование неск-их строк однострочного текста одновренно