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

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

Помогите пожалуйста в написании програмки по поиску и замене текста

Ответ
Поиск в этой теме
Непрочитано 14.11.2012, 00:26
Помогите пожалуйста в написании програмки по поиску и замене текста
Hishnik
 
Регистрация: 14.11.2012
Сообщений: 22

Есть расчет здания с множеством значений площади сечения арматуры в разных точка, так вот хотелось бы что бы была возможность нажатием одной кнопки все цифры:
-от "0" и до "20,42" (обычный текст) заменить на надпись "2о16"(два стержня диаметром 16);
-от "20,43" и до "30,15" заменить на "2о18";
-от "30,16" и до "44,32" заменить на "2о20";
-и так далее.
Ну и по возможность новому тексту придать различные цвета
Если есть возможноть помогите решить проблему, либо кто может уже видел програмку или лисп что то на это похожее?


Есть вариант замены через быстрый выбор, но очень долго и приходиться выполнять много однотипных действий.

Вот как это делаю:

1. захожу в быстрый выбор

2. тип объекта(текст); свойста(содержимое); оператор(* Поиск с глобальными символами); Значение([0-9].[0-9][0-9])

3.потом в свойствах выбранного текста меняю на 2∅16 ну и цвет меняю.

Но для того чтобы выбрать предел цифр: 0-20.10 надо выполнить это действие 4 раза, т.е. значение будет менять следующим образом: 1)[0-9].[0-9][0-9]; 2)1[0-9].[0-9][0-9]; 3)20.0[0-9]; 4)20.10.

Вопрос: можно ли это как нибудь автоматизировать написанием макроса в адаптации панели при создании кнопки?

Последний раз редактировалось Hishnik, 14.11.2012 в 11:30.
Просмотров: 8218
 
Автор темы   Непрочитано 15.11.2012, 08:58
#21
Hishnik


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Строку
Код:
[Выделить все]
 (setq se (ssget ":S" '((0 . "text"))))
надо заменить на
Код:
[Выделить все]
 (setq se (ssget "_:S" '((0 . "text"))))
Если мне не изменяет мой склероз

Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Спасибо, Алексей наверно так мне не на чем проверить
Спасибо! ребята по вашему коду заработало все!
Единственное: 1) при разных свойствах текста(цифр) надо выбрать каждый тип свойст для их преобразования в диаметры
2)И после выхода сообщения "Подождите идет обработка..." Оно само не закрывается по окончанию, надо нажать "ok"
Ну и на этом спасибо главное работает!



Цитата:
Сообщение от gomer Посмотреть сообщение
Hishnik, внимательно копируйте код! Вот вам с цветом
Код:
И Вам большое спасибо! Все работает! просто при копировании (со страницы темы) и вставки кода в блокнот как то странно копировалось в 2 строки всего. А когда скопировал при написании ответов на тему того же самого кода вставилось хорошо, как у Олега
Hishnik вне форума  
 
Непрочитано 15.11.2012, 10:01
#22
VVA

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


Цитата:
Сообщение от Hishnik Посмотреть сообщение
Либо я что то не понял в использовании Batch Find & Replace Text, либо незнаю что.
Цитата:
Сообщение от VVA Посмотреть сообщение
Нужно мышкой выделить что на что меняешь, даже если в списке всего лишь один вариант
Получил ответ от автора. Это баг программы. Будет исправлен в ближайшее время.
Цитата:
Hi Vladimir,

As far as I know, you should not need to select any items in the list of find/replace pairs, i.e. the program should work correctly after clicking 'OK' to the dialog in your fig1.png image; however, I will look into verifying this when I get some time. If I'm honest, the BFind program is in desperate need of an update as there are many other bugs that have been reported since the last release, however, I just haven't had a chance to go through the code.

Kind Regards,

Lee
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 16.11.2012, 09:38
#23
Hishnik


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


Цитата:
Сообщение от gomer Посмотреть сообщение
Hishnik, внимательно копируйте код! Вот вам с цветом

Код:
[Выделить все]
 (defun dxf (asc ent)
;;; возвращает dxf-код примитива добавляет или меняет его значение
;;; (dxf '(1 . "hello") (car (entsel)))
  (if (listp asc)
    (dxf
      -1
      (entmod
	(if (dxf (car asc) ent)
	  (subst
	    (cons (car asc) (cdr asc))
	    (cons (car asc) (dxf (car asc) ent))
	    (entget ent)
	  )
	  (cons asc (entget ent))
	)
      )
    )
    (cond
      ((eq 'ENAME (type ent)) (dxf asc (entget ent)))
      (T (cdr (assoc asc ent)))
    )
  )
)


(defun c:test ()

  ((lambda (adoc)

     (vla-StartUndoMark adoc)

     (foreach en (vl-remove-if
		   'listp
		   (mapcar 'cadr (ssnamex (ssget '((0 . "TEXT")))))
		 )

       ((lambda	(lst)
	  (dxf (cons 1 (car lst)) en)
	  (dxf (cons 62 (cdr lst)) en)
	)
	 ((lambda (num)
	    (cond
	      ((< num 20.43) '("2%%c16" . 1))
	      ((< num 30.15) '("2%%c18" . 3))
	      (T '("2%%c20" . 5))
	    )
	  )
	   (atof (vl-string-subst "." "," (dxf 1 en)))
	 )
       )
     )
     (vla-EndUndoMark adoc)

   )
    (progn (vl-load-com)
	   (vla-get-ActiveDocument (vlax-get-acad-object))
    )
  )

  (princ)

)
На что заменить эти строки мне
Код:
[Выделить все]
 	      ((< num 94.92) '("4%%c20*" . 24))
	      (T '("error" . 5))
чтобы значение выше 94.92 отставались такими же т.е. выводил цифры же, а не менял на то что в кавычках в строке (T '("error" . 5))
Hishnik вне форума  
 
Непрочитано 16.11.2012, 20:16
#24
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Hishnik Посмотреть сообщение
чтобы значение выше 94.92 отставались такими же т.е. выводил цифры же, а не менял на то что в кавычках в строке
уберите строку 45, а строки 38, 39 замените на
Код:
[Выделить все]
 (if (car lst)
  (progn
    (dxf (cons 1  (car lst)) en)
    (dxf (cons 62 (cdr lst)) en)
  )
)
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помогите пожалуйста в написании програмки по поиску и замене текста



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
Помогите найти перекодировщик текста из юникода в читаемый Михаил5 AutoCAD 10 02.12.2005 18:25
Помогите пожалуйста найти 3d дорожные знаки Julija Автомобильные и железные дороги, мосты, тоннели и организация движения 1 26.08.2005 16:28