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

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

Как можно править несколько однострочных текстов сразу?

Ответ
Поиск в этой теме
Непрочитано 24.08.2007, 12:38 #1
Как можно править несколько однострочных текстов сразу?
DiamonD
 
Moscow-Ufa
Регистрация: 24.08.2007
Сообщений: 13

Суть проблемы. Раскопировал множество чертежей, в каждом куча надписей в однострочном тексте. Все эти надписи во всех чертежах должны отличаться. Очень напрягает открывать каждую строчку однострочного текста и менять необходимую цифру.
Можно ли выделить сразу несколько (или все) эти надписи и открыть их например в текстовом редакторе, где гораздо проще редактировать? И не надо каждый раз тыкать по строкам текста на чертеже.
Просмотров: 7675
 
Непрочитано 24.08.2007, 12:56
#2
Хмурый


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


Если тексты в чертеже содержат слово ХУм, которое надо заменить на слово ХУч, надо пользовать команду _find
Хмурый вне форума  
 
Непрочитано 24.08.2007, 12:57
#3
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


А можно выделить тексты и в properties изменить поле Contents
__________________
:diablo: Truth is out there
X-DeViL вне форума  
 
Непрочитано 24.08.2007, 12:57
#4
RomaV


 
Регистрация: 21.03.2007
Санкт-Петербург
Сообщений: 2,662


Можно! Выделяй нужные строчки текста, потом в панели свойст в поле "contents" пиши что тебе надо, везде будет поменяно.
RomaV вне форума  
 
Непрочитано 24.08.2007, 13:00
#5
RomaV


 
Регистрация: 21.03.2007
Санкт-Петербург
Сообщений: 2,662


Как не пытайся быстро написать ответ, один хрен Хмурый впереди!
Наверно деньги на этом делает :?:
RomaV вне форума  
 
Непрочитано 24.08.2007, 13:04
#6
Хмурый


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


Цитата:
Сообщение от RomaV
Как не пытайся быстро написать ответ, один хрен Хмурый впереди!
Наверно деньги на этом делает :?:
Мопед не мой. Я только разместил об'яву.
PS У меня всё равно скоро трафик скончается
Хмурый вне форума  
 
Автор темы   Непрочитано 24.08.2007, 13:57
#7
DiamonD


 
Регистрация: 24.08.2007
Moscow-Ufa
Сообщений: 13


Всем большое спасибо!
Про contents-то это понятно, а вот команда find мне очень помогла!
DiamonD вне форума  
 
Непрочитано 24.08.2007, 14:03
#8
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


по сообщению не совсем понятно, что же хочется получить в итоге.
1. какие-то надписи в одном чертеже изменить одинаково
2. Надписи в одном чертеже изменить, чтобы они отличались толко последней цифрой.
3. Надписи в разных чертежах изменить, чтобы в каждом отдельном получить одинаковые, а в разных чтобы отличались.
4. Надписи в разных чертежах изменить, чтобы в каждом отдельном отличались , а в разных получить одинаковые. (сам не понял, что сказал )5. Ещё что-нить.

Если нужно, например, составить спецификацию, где обозначения изеняются, то сначала копируем скоко надо, потом через ExpressTools нумеруем с префиксом. (знатоки скажут как). Если надо кипу файлов перелопатить, то это уже через программные средства (т.е. создать спец. файл exe).
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 24.08.2007, 14:34
#9
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,192
<phrase 1=


есть такая пришлепка к акаду - MTMEDIT Мансура Мамкина - можно редактировать сразу несколько однострочных текстов в одном окне редактора.
__________________
apel.fas
Apelsinov вне форума  
 
Непрочитано 24.08.2007, 14:42
#10
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Писал года 4 назад под свои нужды(acad 2000). Должно работать и в новых версиях
Код:
[Выделить все]
(defun C:es_texteditor (/ nabor-string list-newstring)
  (vl-load-com)
  (setq	acad-document (vla-get-activedocument (vlax-get-acad-object))
	modelsp	      (vla-get-modelspace acad-document)
	papersp	      (vla-get-paperspace acad-document)
  ) ;_ end of setq
  (vla-startundomark acad-document)


  (if
    (setq nabor-string
	   (ssget
	     '(
	       (0 . "text")
	      )
	   ) ;_ end of ssget
    )					;setq




     (progn

       (setq nabor-string
	      (mapcar 'vlax-ename->vla-object
		      (vl-remove-if
			'listp
			(mapcar
			  'cadr
			  (ssnamex nabor-string)

			)		;mapcar

		      )			;vl-remove-if
	      )				;mapcar
       )				;setq
     )					;progn
     (addtext)
  )					;if

  (setq	ms-interval
	 (cond
	   (
	    (getreal
	      (strcat
		"\nВведите межстрочный интервал<1.67H"
		" = "
		(rtos (* 1.670 (vla-get-height (car nabor-string))))
		" >:"
	      ) ;_ end of strcat
	    ) ;_ end of getreal
	   )
	   (t (* 1.670 (vla-get-height (car nabor-string))))
	 )				;cond
  )					;setq


  (if
    (> (length nabor-string) 1)

     (setq sort-list (sortirovka nabor-string))

     (setq sort-list
	    (list
	      (list (vlax-safearray->list
		      (vlax-variant-value
			(vla-get-insertionpoint (car nabor-string))
		      ) ;_ end of vlax-variant-value
		    ) ;_ end of vlax-safearray->list
		    (vla-get-textstring (car nabor-string))
	      ) ;_ end of list
	    ) ;_ end of list
     )					;setq


  ) ;_ end of if
  (setq first-string (car sort-list))
  (openfile sort-list)



  (new-text list-newstring
	    (caar sort-list)
	    (property-list first-string)
  ) ;_  end of_new-text
  (mapcar 'vla-delete nabor-string)
  (vla-endundomark acad-document)
  (vla-regen acad-document acActiveViewport)

  (princ)
)					;defun

;;;***************************************************************************
;;;***************************************************************************

(defun addtext (/ text-hight ins-point rotation-angle)
					
  (setq	text-hight
	 (cond
	   (
	    (getreal (strcat "\nВведите высоту текста"
			     "<"
			     (rtos (getvar "textsize"))
			     ">:"
		     ) ;_ end of strcat
	    ) ;_ end of getreal
	   )
	   (t
	    (getvar "textsize")
	   )
	 )				;cond
  )					;setq

  (setq	ins-point
	 (cond
	   (
	    (getpoint "\nУкажите точку вставки текста:")
	   )
	   (t
	    (getvar "lastpoint")
	   )
	 )				;cond
  )					;setq

  (setq	rotation-angle
	 (cond
	   (
	    (getreal "\nВведите угол поворота текста<0>:")
	   )
	   (t
	    0
	   )
	 )				;cond
  )					;setq

  (setq	nabor-string
	 (list
	   (vla-addtext
	     (cond
	       (
		(zerop (vla-get-activespace acad-document))
		papersp
	       )
	       (t modelsp)
	     ) ;_ end of cond
	     (chr 32)
	     (vlax-3d-point ins-point)
	     text-hight
	   ) ;_ end of vla-addtext
	 ) ;_ end of list
  ) ;_ end of setq
  (vla-put-rotation
    (car nabor-string)
    (cvunit rotation-angle "degree" "radian")
  ) ;_ end of vla-put-rotation
)					;defun

;;;***********************************************************

(defun sortirovka (lst)
  (setq	ang-pov	     (vla-get-rotation (car lst))
	coord-string (mapcar (function (lambda (x)
					 (list
					   (vlax-safearray->list
					     (vlax-variant-value
					       (vla-get-insertionpoint x)
					     ) ;_ end of vlax-variant-value
					   ) ;_ end of vlax-safearray->list
					   (vla-get-textstring x)
					 ) ;_ end of list
				       ) ;_ end of lambda
			     ) ;_ end of function
			     lst
		     ) ;_ end of mapcar
  ) ;_ end of setq
  (cond

    (
     (equal ang-pov 1.5708 0.001)
     (vl-sort coord-string
	      (function	(lambda	(x y)
			  (< (caar x)
			     (caar y)
			  ) ;_ end of <
			) ;_ end of lambda
	      ) ;_ end of function
     ) ;_ end of vl-sort
    )


    (
     (equal ang-pov 4.71239 0.0001)
     (vl-sort coord-string
	      (function	(lambda	(x y)
			  (> (caar x)
			     (caar y)
			  ) ;_ end of >
			) ;_ end of lambda
	      ) ;_ end of function
     ) ;_ end of vl-sort
    )


    (
     (or
       (and
	 (>= ang-pov 0)
	 (< ang-pov (* pi 0.5))
       )				;and
       (and
	 (> ang-pov (* 1.5 pi))
	 (< ang-pov (* 2 pi))
       )				;and
     )					;or

     (vl-sort coord-string
	      (function	(lambda	(x y)
			  (> (cadar x)
			     (cadar y)
			  ) ;_ end of >
			) ;_ end of lambda
	      ) ;_ end of function
     ) ;_ end of vl-sort
    )

    (
     t
     (vl-sort coord-string
	      (function	(lambda	(x y)
			  (< (cadar x)
			     (cadar y)
			  ) ;_ end of <
			) ;_ end of lambda
	      ) ;_ end of function
     ) ;_ end of vl-sort
    )
  )					;cond

)					;defun
;;;***********************************************************
(defun openfile	(srt)


  (setq	file-name (vl-filename-mktemp
		    "x"
		    (vl-filename-directory
		      (findfile "acad.exe")
		    ) ;_ end of vl-filename-directory
		    ".txt"
		  ) ;_ end of vl-filename-mktemp
  )					
;
  (setq descrt (open file-name "w"))
  (mapcar '(lambda (p)
	     (write-line (cadr p) descrt)
	   ) ;_ end of lambda
	  srt
  ) ;_ end of mapcar
  (close descrt)

;
  (vlax-invoke-method
    (vlax-get-or-create-object "wscript.shell")
    "run"
    (strcat "notepad.exe\ " file-name)
    1
    :vlax-true
  ) ;_ end of vlax-invoke-method


;
  (setq deskr2 (open file-name "r"))
  (while
    (setq new-string
	   (read-line deskr2)
    ) ;_ end of setq
     (setq list-newstring
	    (cons new-string list-newstring)
     ) ;_ end of setq
  ) ;_ end of while
  ;;while
  (setq list-newstring (reverse list-newstring))
  (close deskr2)
  
  (vl-file-delete file-name)
) ;_ end of defun

;;;***********************************************************
;;;***********************************************************

(defun property-list (fstr)
  (setq	first-text
	 (mapcar 'vlax-ename->vla-object
		 (mapcar 'cadr
			 (ssnamex
			   (ssget "x"
				  (list
				    '(0 . "text")
				    (cons 10 (car fstr))
				    (cons 1 (cadr fstr))
				  ) ;_ end of list
			   ) ;_ end of ssget
			 ) ;_ end of ssnamex
		 ) ;_ end of mapcar
	 ) ;_ end of mapcar
  )					;setq


  (setq	list-property
	 '("Alignment"	    "Backward"	     "Height"
	   "Layer"	    "Linetype"	     "LinetypeScale"
	   "Lineweight"	    "ObliqueAngle"   "Rotation"
	   "ScaleFactor"    "StyleName"	     "Thickness"
	   "Color"	    "UpsideDown"
	  )
  ) ;_ end of setq
  (setq	list-property
	 (mapcar (function
		   (lambda (x)
		     (list
		       x
		       (apply (read (strcat "vla-get-" x))
			      first-text
		       ) ;_ end of apply
		     ) ;_ end of list
		   ) ;_ end of lambda
		 ) ;_ end of function
		 list-property
	 ) ;_ end of mapcar
  ) ;_ end of setq
) ;_ end of defun


;;;**************************************************************************
;;;***********************************************************

(defun new-text	(lst-str inspt lst-prp)
  (setq i 0)
  (foreach j lst-str
    (if
      (/= j "")
       (progn
	 (setq n-txt
		(vla-addtext
		  (cond	(
			 (zerop (vla-get-activespace acad-document))
			 papersp
			)
			(t modelsp)
		  )			
		  j			


		  (vlax-3d-point
		    (polar inspt
			   (- (cadr (assoc "Rotation" lst-prp)) (/ pi 2))
			   (* ms-interval i)
		    ) ;_  end of_polar
		  ) ;_ end of vlax-3d-point
		  (cadr (assoc "Height" lst-prp))
		)			;vla-addtext
	 )				;setq

	 (mapcar
	   (function
	     (lambda (y)
	       (eval (cons (read (strcat "vla-put-" (car y)))
			   (list n-txt (cadr y))
		     ) ;_ end of cons
	       ) ;_ end of eval
	     ) ;_ end of lambda
	   ) ;_ end of function
	   lst-prp
	 ) ;_ end of mapcar
	 (if
	   (/= (cadar lst-prp) 0)
	    (vla-put-textalignmentpoint
	      n-txt
	      (vlax-3d-point
		(polar
		  (vlax-safearray->list
		    (vlax-variant-value
		      (vla-get-textalignmentpoint
			(car first-text)
		      ) ;_ end of vla-get-TextAlignmentPoint
		    ) ;_ end of vlax-variant-value
		  )			;vlax-safearray
		  (- (cadr (assoc "Rotation" lst-prp)) (/ pi 2))
		  (* ms-interval i)
		) ;_ end of polar
	      ) ;_ end of vlax-3d-point
	    ) ;_ end of vla-put-TextAlignmentPoint
	 )				;if

       )				;progn
    )					;if								
    (setq i (1+ i))
  )					;foreach
)					;defun
Эдуард вне форума  
 
Автор темы   Непрочитано 24.08.2007, 14:44
#11
DiamonD


 
Регистрация: 24.08.2007
Moscow-Ufa
Сообщений: 13


Цитата:
Сообщение от Bull
по сообщению не совсем понятно, что же хочется получить в итоге.
Допустим есть обозначения 214АБ, 215АВ, 219АГ и тд. Копируем 214АБ сколько надо, затем???... Я менял командой find.
2Apelsinov а где можно взять MTMEDIT?
DiamonD вне форума  
 
Непрочитано 24.08.2007, 15:42
#12
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,192
<phrase 1=


Цитата:
Сообщение от DiamonD
а где можно взять MTMEDIT?
http://dwg.ru/dnl/2390
http://www.alx.ncn.ru/body.php?lang=en&part=download
__________________
apel.fas
Apelsinov вне форума  
 
Автор темы   Непрочитано 24.08.2007, 15:50
#13
DiamonD


 
Регистрация: 24.08.2007
Moscow-Ufa
Сообщений: 13


Спасибо!
DiamonD вне форума  
 
Непрочитано 25.08.2007, 21:05
#14
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от Эдуард
Писал года 4 назад под свои нужды(acad 2000). Должно работать и в новых версиях
2007. Программа запускается, спрашивает селектировать текст, может собрать в кучку разные однострочные тексты, отредактировать их или добавить, но как запустить остальные функции?
Vova вне форума  
 
Непрочитано 27.08.2007, 10:24
#15
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от DiamonD
Допустим есть обозначения 214АБ, 215АВ, 219АГ и тд. Копируем 214АБ сколько надо, затем???...
_TCOUNT (та самая команда из экспрессов) так не позволит. Можно, если бы нужно было, скажем, АБ214, АБ215, АБ216 или АБ214, АБ216, АБ218 (равномерное возрастание ТОЛЬКО цифр). Оно позволяет или в начале, или в конце добавлять. Ну, или просто переписать. Т.е. копируешь любой текст, он тебе пишет "214-215-216..."

Иначе уже предложенные lisp'ы или другие создать.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 27.08.2007, 12:25
#16
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


> Vova
Цитата:
но как запустить остальные функции?
C:es_texteditor - основная функция-команда. Остальные функции вспомогательные вызываются из кода основной. По отдельности смысла не имеют.
Эдуард вне форума  
 
Непрочитано 27.08.2007, 13:45
#17
Игорь Богаченко

геодезист, генпланист
 
Регистрация: 26.09.2006
Калуш, Украина
Сообщений: 33
<phrase 1= Отправить сообщение для Игорь Богаченко с помощью Skype™


Установите ToolPac, он многие задачи решит, в том числе и с вашим текстом.
Игорь Богаченко вне форума  
 
Непрочитано 27.08.2007, 19:33
#18
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 537
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


Цитата:
Сообщение от Bull
Цитата:
Сообщение от DiamonD
Допустим есть обозначения 214АБ, 215АВ, 219АГ и тд. Копируем 214АБ сколько надо, затем???...
_TCOUNT (та самая команда из экспрессов) так не позволит. Можно, если бы нужно было, скажем, АБ214, АБ215, АБ216 или АБ214, АБ216, АБ218 (равномерное возрастание ТОЛЬКО цифр). Оно позволяет или в начале, или в конце добавлять. Ну, или просто переписать. Т.е. копируешь любой текст, он тебе пишет "214-215-216..."
а объясни мне как она действует,т.е что такое х,у?у меня также пронумеровать нужно ПГ1,ПГ2,...а он может только на порядковые числительные..буквы-нет
Hans667 вне форума  
 
Непрочитано 20.10.2007, 22:02
#19
maximas

проектирование. автоматика
 
Регистрация: 18.10.2007
Литва
Сообщений: 104


может подойдет ? командой из express tools dtext переделать в mtext, ну а потом менять текст, все будет в одном поле. Ха
maximas вне форума  
 
Непрочитано 20.10.2007, 22:38
#20
Кулик Алексей aka kpblc
Moderator

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


А даты? Кстати, txt2mtxt в ET работают не очень, есть вариант замены: http://dwg.ru/f/showthread.php?t=13148, пост №21
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как можно править несколько однострочных текстов сразу?

Размещение рекламы