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

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

Выборка одинакового текста

Ответ
Поиск в этой теме
Непрочитано 04.03.2007, 13:36 #1
Выборка одинакового текста
master_vlad
 
Регистрация: 19.03.2004
Сообщений: 172

Подскажите плз, какой макрос повесить на кнопку, что бы указанием одного односторочного текста можно было выделить остальные односточные тексты с таким же содержимым (без учета угла поворота, заркальности и пр. только по содежимому).

find и qselect не предлагать, т.к. долго
Просмотров: 3096
 
Непрочитано 04.03.2007, 15:42
#2
forMA


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


С макросом на кнопку придется тебе долго ждать. Вот есть программа на LISP выполняющая похожую задачу....Подойдет?

Код:
[Выделить все]
(defun c:modfind (/ adoc selset string _kpblc-get-active-space-obj radius)
  (defun _kpblc-get-active-space-obj ()
    (if  (and (zerop (vla-get-activespace adoc))
       (= :vlax-false (vla-get-mspace adoc))
       ) ;_ end of and
      (vla-get-paperspace adoc)
      (vla-get-modelspace adoc)
      ) ;_ end of if
    ) ;_ end of defun
  (vl-load-com)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark adoc)
  (if (and (setq string (getstring t "\nВведите искомую маску <Выход> : "))
     (setq radius (getdist "\nРадиус окружности <Выход> : "))
     (setq
       selset (ssget
         (list '(0 . "TEXT")
         (cons 1
               (strcat "*" string "*")
               ) ;_ end of cons
         (cons 410
               (if (or (= (getvar "tilemode") 1)
                 (/= (getvar "cvport") 1)
                 ) ;_ end of or
           "Model"
           (getvar "ctab")
           ) ;_ end of if
               ) ;_ end of cons
         ) ;_ end of list
         ) ;_ end of ssget
       ) ;_ end of setq
     ) ;_ end of and
    (foreach item (vl-remove-if 'listp (mapcar 'cadr (ssnamex selset)))
      (vla-addcircle
  (_kpblc-get-active-space-obj)
  (vlax-3d-point
    (cdr (assoc (if (= (cdr (assoc 72 (entget item))) 0)
      10
      11
      ) ;_ end of if
          (entget item)
          ) ;_ end of assoc
         ) ;_ end of cdr
    ) ;_ end of vlax-3d-point
  radius
  ) ;_ end of vla-addcircle
      ) ;_ end of foreach
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
forMA вне форума  
 
Непрочитано 04.03.2007, 16:05
#3
Vova

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


Стандартная команда Qselect, для ускорения используй Ctrl+C Ctrl+V
Vova вне форума  
 
Автор темы   Непрочитано 04.03.2007, 16:46
#4
master_vlad


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


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

Vova
1. выделить текст
2. в редакторе выделить
3. Ctrl+C
4. закрыть редактор
5. qselect
6. Object type -> text
7. Properties -> Contents
8. Value -> Ctrl+V, [ok]
это слишком долго для чертежа содержащего 9099 марок
master_vlad вне форума  
 
Непрочитано 04.03.2007, 16:55
#5
Денис Флюстиков


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


Как вариант макрос на кнопку
^C^C^P(defun C:tmp_Den ()(sssetfirst nil (ssget (list (assoc 1 (entget (car (entsel "Выберите текст - образец")))))))(princ))(princ);tmp_Den
Денис Флюстиков вне форума  
 
Автор темы   Непрочитано 04.03.2007, 17:07
#6
master_vlad


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


Денис Флюстиков ага!!! оно самое, спасибо!!!!
master_vlad вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выборка одинакового текста