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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Альтернатива Find&Replace

Альтернатива Find&Replace

Ответ
Поиск в этой теме
Непрочитано 16.05.2006, 12:27 #1
Альтернатива Find&Replace
Alekseenko_Igor
 
теплотехника
 
Регистрация: 16.05.2006
Сообщений: 2

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

Заранее благодарен всем кто откликнется помочь - это бы мне очень помогло!
Просмотров: 2837
 
Непрочитано 16.05.2006, 17:27
#2
ытя


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


В первом приближении
Код:
[Выделить все]
(defun c:100to1 (/ ss		; selection set
		   mask		; маска для замены
		   txt_data	; данные текущего текста
		   txt_name	; имя текущ. текста
		   txt		; знчение текущего текста
		   i j n
		 )
  (setq mask (strcat(itoa(getint "Что меняем :"))"-"); Ввести заменяемый индекс
	j (getint "Начальный индекс <1> :")
        ss (ssget '((0 . "TEXT")))
	i 0	
	)
  (if (not j)(setq j 1))
  (while ss 
    (setq n (sslength ss))
    (repeat n
      (setq txt_name (ssname ss i)
	    txt_data (entget txt_name)
	    txt	     (cdr (assoc 1 txt_data))
	    txt	     (vl-string-subst (strcat(itoa j)"-") mask txt)
	    txt_data (subst (cons 1 txt) (assoc 1 txt_data) txt_data)
	    i	     (1+ i)
      ); setq
      (entmod txt_data)
      (entupd txt_name)      
    ); repeat
    (setq ss (ssget '((0 . "TEXT")))	  
	  i 0	  
	  j (1+ j)
	); setq
  ); while
 ); defun
ытя вне форума  
 
Автор темы   Непрочитано 17.05.2006, 10:16
#3
Alekseenko_Igor

теплотехника
 
Регистрация: 16.05.2006
Сообщений: 2


Большое спасибо! При небольшом изменении я получил именно то что я хочу (трудно коротко и понятно поставить задачу) - мне это очень ускорит некоторую часть работы!
Alekseenko_Igor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Альтернатива Find&Replace

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