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

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

нужен лисп с заменой текста

Ответ
Поиск в этой теме
Непрочитано 09.08.2007, 14:29 #1
нужен лисп с заменой текста
Rwb
 
Инженер-конструктор
 
Казань
Регистрация: 25.07.2006
Сообщений: 16

вобщем такая ситуация. есть два столбца оба с текстом (цыфры). есть ли у кого лисп с заменой текста ..весь столбец поменять на другой..но только содержимое текста..не сами столбцы. у меня есть лисп на замену одного текста другим..но работает только с одним объектом..а хотелось бы оптом)))
заранее спасибо
Просмотров: 7523
 
Непрочитано 09.08.2007, 14:34
#2
Кулик Алексей aka kpblc
Moderator

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


_find ?
---
Добавлено:
Покажи файл и свой код. И где затык.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.08.2007, 15:10
#3
Rwb

Инженер-конструктор
 
Регистрация: 25.07.2006
Казань
Сообщений: 16


вот код..но я его не сам писал..нашел на просторах интернета...
Код:
[Выделить все]
(vl-load-com)
(defun C:CiTy ()
  (prompt "\nВыберите текст для копирования:")
  (setq ss nil)
  (setq e1 nil)
  (setq name "")


  (setq	ss (ssget '(
		    (-4 . "<OR")
		    (0 . "DIMENSION")
		    (0 . "TEXT")
		    (0 . "MTEXT")
		    (-4 . "OR>")
		   )
	   )
  )



  (if ss
    (progn

      (setq sslen nil)
      (setq e nil)
      (setq k nil)
      (setq sslen (sslength ss))
      (setq i 0)

      (repeat sslen
	(setq e (entget (ssname ss i)))
	(setq k (cdr (assoc 1 e)))
	(setq name (strcat name " " k))
	(setq i (+ i 1))
      )
      (setq name (vl-string-left-trim " " name))




      (prompt "\nВыберите текст для замены:")


      (setq e1 (ssget '(
			(-4 . "<OR")
			(0 . "DIMENSION")
			(0 . "TEXT")
			(0 . "MTEXT")
			(-4 . "OR>")
		       )
	       )
      )
      (if e1
	(progn
	  (setq e1len (sslength e1))
	  (setq i 0)
	  (while (< i e1len)
	    (setq ename (ssname e1 i))	;entity name
	    (setq elist (entget ename))	;entity data list

	    (setq elist (subst (cons 1 name) (assoc 1 elist) elist))
	    (setq elist11 (cons 1 name))
	    ;;(print elist11)
	    (entmod elist)
	    (entupd ename)
;;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(setq vin (entget ename))
(setq vinname nil)
(setq vinname (assoc '330 vin))
(if vinname
	  (setq vinname (cdr vinname))
)
(if vinname
    (setq *acadObjvin* (vlax-ename->vla-object vinname))
  )
  (if (and vinname
	   (vlax-method-applicable-p *acadObjvin* 'Evaluate)
      )
    (progn
      (vlax-invoke-method *acadObjvin* 'Evaluate)
    )
  )
;;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	    (setq i (1+ i))
	  )				;while
	)

	(prompt "\nНичего не выбрано. Заканчиваю...")

      )
      (print)
 ;________________________________________________________________________

    )

    (prompt "\nНичего не выбрано. Заканчиваю...")

  )


  (princ)
)
[/code]
Rwb вне форума  
 
Непрочитано 29.07.2008, 14:36
#4
Om81

Хочу быть фотографом :)
 
Регистрация: 21.10.2005
Москва, Кисловодск
Сообщений: 2,538
<phrase 1=


Чтобы не создавать тему: возможен-ли лисп (а может, уже где-то есть) для перевода текста с английской раскладки клавиатуры на русскую. Т.е. имеется куча файлов, в которых как-бы набирали по-русски текст, забыв переключить язык. Вот пример:
Код:
[Выделить все]
1/ D yfcnjzotv fkm,jvt hfphf,jnfyf rjycnherwbz gthtrhsnbz yf jnvtnrt 0/000 bylbdblefkmyjuj ;bkjuj ljvf yf exfcnrt 41
Объекты - "текст".
Заранее благодарен.
__________________
Камень на камень, кирпич на кирпич..
Om81 вне форума  
 
Непрочитано 29.07.2008, 14:44
#5
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,826
<phrase 1=


Куча файлов где забыли переключить раскладку??? Это как-так печатали, случаем у вас тама не слепые работают??
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 29.07.2008, 14:55
#6
VVA

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


Om81, Здесь по просьбе Алана выкладывал функцию trans-layer-from-rus-to-translit перевода с русского на траслит.
Тебе нужно правильно переписать соответсвия и все.
Что-то типа такого (сначала откуда, потом куда)
Код:
[Выделить все]
(setq translit
'(("F" "А")("<" "Б")("D" "В")("U" "Г")("L" "Д")("T" "Е") и т.д.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.07.2008, 14:58
#7
Om81

Хочу быть фотографом :)
 
Регистрация: 21.10.2005
Москва, Кисловодск
Сообщений: 2,538
<phrase 1=


Спасибо большое! Думаю, разберусь.
__________________
Камень на камень, кирпич на кирпич..
Om81 вне форума  
 
Непрочитано 29.07.2008, 15:07
#8
VVA

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


Если что стучи, поможем
*** Добавлено
Вот отдельная ф-ция. Только соответсвия перепиши

Код:
[Выделить все]
;;; вызов ( trans-from-rus-to-translit  "ПРОверка wiNdows подлинности") 
(defun trans-from-rus-to-translit   ( str / translit)(vl-load-com)  
;;;  http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;;  Соответствие символов взято с translit.ru
;;;  по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;;  name - исходная строка 
;;;  возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "V")("Г" "G")("Д" "D")("Е" "E")("Ё" "YO")("Ж" "ZH")("З" "Z") 
  ("И" "I")("Й" "J")("К" "K")("Л" "L")("М" "M")("Н" "N")("О" "O")("П" "P")("Р" "R")("С" "S") 
  ("Т" "T")("У" "U")("Ф" "F")("Х" "X")("Ц" "C")("Ч" "CH")("Ш" "SH")("Щ" "SHH")("Ъ" "#")("Ы" "Y") 
  ("Ь" "'")("Э" "JE")("Ю" "JU")("Я" "JA")("а" "a")("б" "b")("в" "v")("г" "g")("д" "d")("е" "e") 
  ("ё" "yo")("ж" "zh")("з" "z")("и" "i")("й" "j")("к" "k")("л" "l")("м" "m")("н" "n")("о" "o")("п" "p") 
  ("р" "r")("с" "s")("т" "t")("у" "u")("ф" "f")("х" "x")("ц" "c")("ч" "ch")("ш" "sh")("щ" "shh")("ъ" "#")("ы" "y") 
  ("ь" "'")("э" "je")("ю" "ju")("я" "ja"))) 
    
   (apply 'strcat 
        (mapcar '(lambda (x / sym) 
              (if (setq sym (assoc x translit)) 
                (cadr sym) 
                x 
              ) ;_ конец if 
            ) ;_ конец lambda 
           (mapcar 'chr (vl-string->list str)) 
        ) ;_ конец mapcar 
      ) ;_ конец apply
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.07.2008, 15:20
#9
Om81

Хочу быть фотографом :)
 
Регистрация: 21.10.2005
Москва, Кисловодск
Сообщений: 2,538
<phrase 1=


Что-то он в первом случае при вызове команды (со скобками) выдает "nil", а с этой пишет "слишком мало аргументов".
__________________
Камень на камень, кирпич на кирпич..
Om81 вне форума  
 
Непрочитано 29.07.2008, 16:24
#10
VVA

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


Om81,
Код:
[Выделить все]
;;; вызов (trans-from-en-to-rus  "1/ D yfcnjzotv fkm,jvt hfphf,jnfyf rjycnherwbz gthtrhsnbz yf jnvtnrt 0/000 bylbdblefkmyjuj ;bkjuj ljvf yf exfcnrt 41")
;;; http://dwg.ru/f/showthread.php?t=13063
(defun trans-from-en-to-rus (str / translit)
  (vl-load-com)
;;;  по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;;  name - исходная строка 
;;;  возвращается преобразованная 
  (setq	dict
	 '(("F" "А")("<" "Б")("D" "В")("U" "Г")("L" "Д")
	   ("T" "Е")("~" "Ё")(":" "Ж")("P" "З")("B" "И")
	   ("Q" "Й")("R" "К")("K" "Л")("V" "М")("Y" "Н")
	   ("J" "О")("G" "П")("H" "Р")("C" "С")("N" "Т")
	   ("E" "У")("A" "Ф")("{" "Х")("W" "Ц")("X" "Ч")
	   ("I" "Ш")("O" "Щ")("}" "Ъ")("S" "Ы")("M" "Ь")
	   ("\"" "Э")(">" "Ю")("Z" "Я")("f" "а")("," "б")
	   ("d" "в")("u" "г")("l" "д")("t" "е")("`" "ё")
	   (";" "ж")("p" "з")("b" "и")("q" "й")("r" "к")
	   ("k" "л")("v" "м")("y" "н")("j" "о")("g" "п")
	   ("h" "р")("c" "с")("n" "т")("e" "у")("a" "ф")
	   ("[" "х")("w" "ц")("x" "ч")("i" "ш")("o" "щ")
	   ("]" "ъ")("s" "ы")("m" "ь")("'" "э")("." "ю")
	   ("z" "я")
	  )
  )
  (apply 'strcat
	 (mapcar '(lambda (x / sym)
		    (if	(setq sym (assoc x dict))
		      (cadr sym)
		      x
		    ) ;_ конец if 
		  ) ;_ конец lambda 
		 (mapcar 'chr (vl-string->list str))
	 ) ;_ конец mapcar 
  ) ;_ конец apply
)

(defun C:En2Rus ( / ss lst)
  (vl-load-com)
  (and (setq ss (ssget "_:L" '((0 . "*TEXT"))))
       (setq lst
       (mapcar (function vlax-ename->vla-object)
	            (vl-remove-if (function listp)
		      (mapcar (function cadr) (ssnamex ss))))
	     )
       (mapcar '(lambda(x)
		  (vla-put-TextString x
		    (trans-from-en-to-rus (vla-get-TextString x))
		    )
		  )
	       lst
	       )
       )
  (princ)
  )
Пример
Код:
[Выделить все]
(trans-from-en-to-rus  "1/ D yfcnjzotv fkm,jvt hfphf,jnfyf rjycnherwbz gthtrhsnbz yf jnvtnrt 0/000 bylbdblefkmyjuj ;bkjuj ljvf yf exfcnrt 41")
Вернет
Цитата:
"1/ В настоящем альбоме разработана конструкция перекрытия на отметке 0/000 индивидуального жилого дома на участке 41"
*** Добавлено
Добавил команду En2Rus
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 29.07.2008 в 16:32. Причина: Добавлена команда En2Rus
VVA вне форума  
 
Непрочитано 29.07.2008, 17:17
#11
Om81

Хочу быть фотографом :)
 
Регистрация: 21.10.2005
Москва, Кисловодск
Сообщений: 2,538
<phrase 1=


Спасибо, понял. А так, чтобы он выделенный текст заменял на том-же месте, возможно сделать?
__________________
Камень на камень, кирпич на кирпич..
Om81 вне форума  
 
Непрочитано 29.07.2008, 17:45
#12
VVA

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


Om81,
Цитата:
*** Добавлено
Добавил команду En2Rus
Посмотри еще раз #10
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.07.2008, 18:12
#13
Om81

Хочу быть фотографом :)
 
Регистрация: 21.10.2005
Москва, Кисловодск
Сообщений: 2,538
<phrase 1=


Все, разобрался! Огромное спасибо!
__________________
Камень на камень, кирпич на кирпич..
Om81 вне форума  
 
Непрочитано 30.07.2008, 10:16
#14
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Может есть у кого в заначке макрос на кнопку при выполнении которого, все существующиет тексты в чертеже наклонялись на 15 градусов, абсолютно все...

а то архитектор попросил, а я привык прямыми буквами писать...

буду благодарствовать
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 30.07.2008, 10:19
#15
VVA

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


dextron3,
Код:
[Выделить все]
(SSSETFIRST nil (ssget "_X" '((0 . "TEXT"))))
Потом идешь в свойства и меняешь угол наклона
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.07.2008, 10:58
#16
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, спасибо, премного благодарен,

Offtop: а как Вы используете заливку когда заливаете сложные участки где разрыв не возможно найти, а хотелось бы залить и не париться, к примеру заливка фасада где 1000 окон, и столько же архитектурных форм, существует ли какойнибудь волшебный лисп...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 30.07.2008, 11:21
#17
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Вопрос про редактор.
Может возможно такое создать с помощью лиспа или это надо .exe делать на каком асме чтоб быстрей работало? Или можно подправить чтото в самом каде?
Вобщем задача такая:
Есть ряд однострочных текстов. Примерное содержание следующее:
12В5-21-10
12В5-21-8
12В5-21-4
12В5-21-9
...
12В5-21-3

Нужно заменить допустим на:
12В5-31-10
12В5-31-8
12В5-31-4
12В5-31-9
...
12В5-31-3
Если выбрать весь ряд текстов то в свойствах содержимое будет естественно *РАЗЛИЧНЫЕ*
А хочется чтобы в свойствах в поле содержимое отразилось примерно так:
12В5-31-**
т.е те символы которые совпадают по содержимому и по расположению отобразились а то что не совпадает заменилось звездочкой (*).
Получается мне удобно будет поменять ряд 12В5-31-** на 12В5-41-** а не выбирать каждый текст по отдельности править.
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 30.07.2008, 11:41
#18
Кулик Алексей aka kpblc
Moderator

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


dextron3, HPGAPTOL не то?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.07.2008, 12:01
#19
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


,,,,,,,
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 30.07.2008, 12:18
#20
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,826
<phrase 1=


Цитата:
Сообщение от Shoorup Посмотреть сообщение
Вопрос про редактор.
Может возможно такое создать с помощью лиспа или это надо .exe делать на каком асме чтоб быстрей работало? Или можно подправить чтото в самом каде?
Вобщем задача такая:
Есть ряд однострочных текстов. Примерное содержание следующее:
12В5-21-10
12В5-21-8
12В5-21-4
12В5-21-9
...
12В5-21-3

Нужно заменить допустим на:
12В5-31-10
12В5-31-8
12В5-31-4
12В5-31-9
...
12В5-31-3
Если выбрать весь ряд текстов то в свойствах содержимое будет естественно *РАЗЛИЧНЫЕ*
А хочется чтобы в свойствах в поле содержимое отразилось примерно так:
12В5-31-**
т.е те символы которые совпадают по содержимому и по расположению отобразились а то что не совпадает заменилось звездочкой (*).
Получается мне удобно будет поменять ряд 12В5-31-** на 12В5-41-** а не выбирать каждый текст по отдельности править.
Команда _find набираем в Найти "12В5-21-" в заменить на "12В5-31-" выбираем участок где менять или говорим что на всем чертеже. И кнопка заменить все
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > нужен лисп с заменой текста

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