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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Поиск слова(предложения) во всех файлах AutoCad

Поиск слова(предложения) во всех файлах AutoCad

Ответ
Поиск в этой теме
Непрочитано 27.09.2009, 16:48 #1
Поиск слова(предложения) во всех файлах AutoCad
h0h01
 
Регистрация: 19.01.2009
Сообщений: 24

Существует ли функция поиска слова(предложения) в нескольких десятках файлов одновременно, и заменой его на друрое сразу во всех файлах? Если да, то как ею пользоваться, и нужно ли открывать все эти файлы вручную?
Заранее благодарен.
Просмотров: 15135
 
Непрочитано 27.09.2009, 18:10
#2
Vova

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


Команда _Find. Файлы надо открывать
Vova вне форума  
 
Непрочитано 28.09.2009, 10:50
#3
Suvor

Инженер
 
Регистрация: 07.08.2007
Беларусь
Сообщений: 27


Существует программа Archivarius 3000. Вкратце принцип действия таков: задаем нужную папку, программа индексирует находящиеся внутри файлы (понимает около 200 типов файлов) и сохраняет результат в собственную базу. При необходимости можно обновить базу для изменившихся и новых файлов.

При запросе на поиск слов или фраз Archivarius 3000 ищет в собственной базе. У меня порядка 10000 файлов DWG, поиск занимает буквально 1-2 секунды.
Suvor вне форума  
 
Автор темы   Непрочитано 28.09.2009, 11:09
#4
h0h01


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


Спасибо за ответ, окно выскакивает, но фразу почему-то не находит, может я что-то нетак делаю...
-Открываю пачку файлов, потом пишу _Find, потом в графу "Fing text string" ввожу искомую фразу, а в графу "Replace with" фразу, на которую надо заменить, потом кликаю Find, но ничего не находит
-Archivarius 3000 пока не пробовал, но сейчас попробую.
h0h01 вне форума  
 
Непрочитано 28.09.2009, 11:23
#5
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от h0h01 Посмотреть сообщение
Спасибо за ответ, окно выскакивает, но фразу почему-то не находит, может я что-то нетак делаю...
-Открываю пачку файлов, потом пишу _Find, потом в графу "Fing text string" ввожу искомую фразу, а в графу "Replace with" фразу, на которую надо заменить, потом кликаю Find, но ничего не находит
Команда _find работает только с активным документом. (как работает, какие можно задавать маски и т.д. - можно почитать в справке..) Что бы автоматически искать / менять текст во множестве файлов, не обойтись без программирования.. (VBA, Lisp) И такого рода программы уже создавались. (Mass Update, например)..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 28.09.2009, 11:34
#6
zenon

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


Цитата:
Сообщение от h0h01 Посмотреть сообщение
Спасибо за ответ, окно выскакивает, но фразу почему-то не находит, может я что-то нетак делаю...
-Открываю пачку файлов, потом пишу _Find, потом в графу "Fing text string" ввожу искомую фразу, а в графу "Replace with" фразу, на которую надо заменить, потом кликаю Find, но ничего не находит
-Archivarius 3000 пока не пробовал, но сейчас попробую.
см.
Нажмите на изображение для увеличения
Название: FindRE.JPG
Просмотров: 397
Размер:	32.0 Кб
ID:	26580
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 28.09.2009, 13:09
#7
h0h01


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


Archivarius 3000 Ничего не находит
А по примеру тоже ничего, правда у меня стоит Mechanics, а слова находятся в тех.требованиях,- может в этом проблема(после расчленения тоже ничего не получилось) ?
h0h01 вне форума  
 
Непрочитано 28.09.2009, 16:34
#8
Хмурый


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


h0h01, а Настройки (options) команды _find посмотреть? Может там выключен поиск для объектов нужного типа
Хмурый вне форума  
 
Непрочитано 28.09.2009, 16:42
#9
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от h0h01 Посмотреть сообщение
Archivarius 3000 Ничего не находит
А по примеру тоже ничего, правда у меня стоит Mechanics, а слова находятся в тех.требованиях,- может в этом проблема(после расчленения тоже ничего не получилось) ?
Ну, объекты Mechanics с помощью обычного _find не найти.. Скорее всего, там должна быть какая-то утилита для этого (как, например в СПДС - на рисунке..). А когда расчленяются они - что за объекты получаются (если в окне свойств посмотреть)?
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 144
Размер:	50.7 Кб
ID:	26596  
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 28.09.2009, 16:57
#10
Vova

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


Какой версии автокад, и есть-ли на нем Service pack? В 2009 без оного команда Find работает некорректно
Vova вне форума  
 
Непрочитано 28.09.2009, 17:14
#11
zenon

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


h0h01, посмотри здесь может поможет
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 28.09.2009, 18:50
#12
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013


засунь следующий код (программа поиска и замены текста в чертеже) в acad.mnl:
Код:
[Выделить все]
 ;-============-; 
    ;- Text  Find -; 
    ;-    *~*     -; 
    ;  Written by -; 
    ; Mark Mercier ; 
    ;   05-06-09   ; 
    ;-============-; 

(defun c:tfind2 () 
  (tfind2fun nil nil 0) 
) ;_ end of defun 

(defun tfind2fun (inputF inputR caseSn / goto goWhile strinF strinR selSet selTxt searep case count error) 
    ; 01 Create selection set. GOTO 02 if success, or GOTO 08 if fail 
    ; 02 Check passed input. If both nil, GOTO 03. If first string and second nil, GOTO 06. If both strings, GOTO 07. Otherwise, return error and GOTO 08 
    ; 03 Display menus and obtain data from user. If Search, GOTO 04. If Replace, GOTO 05 
    ; 04 Search option selected. Prompt user for single search term. GOTO 06 
    ; 05 Replace option selected. Prompt user for search term and replace term. GOTO 07 
    ; 06 One string has been passed. Assume automatic search. GOTO FINISH 
    ; 07 Two strings have been passed. Assume automatic replace. GOTO FINISH 
    ; 08 FINISH. Return errors or messages if needed. 
  (vl-load-com) 
  (setq goTo 1) 
  (setq goWhile 1) 
  (setq count 0) 
  (if (not (mlml (list caseSn) (list 0 1))) 
    (progn (setq goWhile nil) (princ "\nCase selection not recognized.")) 
  ) ;_ end of if 
  (if (= caseSn 0) 
    (setq case "N") 
    (setq case "Y") 
  ) ;_ end of if 
  (while goWhile 
    (cond 
      ((= goTo 1) 
       (if (setq selSet (extTxtPt (ssget "X"))) 
         (setq goTo 2) 
         (setq error "\nSelection set not found." 
               goTo  8 
         ) ;_ end of setq 
       ) ;_ end of if 
      ) 
      ((= goTo 2) 
    ; Check input, pass to whatever. 
       (cond 
         ((and (= inputF nil) (= inputR nil)) 
          (setq goTo 3) 
         ) 
         ((and (= (type inputF) 'STR) (= inputR nil)) 
          (setq strinF inputF) 
          (setq goTo 6) 
         ) 
         ((and (= (type inputF) 'STR) (= (type inputR) 'STR)) 
          (setq strinF inputF) 
          (setq strinR inputR) 
          (setq goTo 7) 
         ) 
         (t 
          (setq error "\nPassed arguments are not accepted.") 
          (setq goTo 8) 
         ) 
       ) ;_ end of cond 
      ) 
      ((= goTo 3) 
    ; Obtain desired option from user 
       (while (not 
                (mlml (list (setq searep (strcase (getstring nil "\nSelect option [Find/Replace/Quit/Case]: ")))) 
                      (list "F" "FIND" "R" "REPLACE" "Q" "QUIT" "C" "CASE") 
                ) ;_ end of mlml 
              ) ;_ end of not 
       ) ;_ end of while 
       (cond 
         ((mlml (list searep) (list "F" "FIND")) 
          (setq goTo 4) 
         ) 
         ((mlml (list searep) (list "R" "REPLACE")) 
          (setq goTo 5) 
         ) 
         ((mlml (list searep) (list "Q" "QUIT")) 
          (setq goTo 8) 
         ) 
         ((mlml (list searep) (list "C" "CASE")) 
          (while (not (mlml (list (setq case (strcase (getstring nil "\nCase sensitive? [Yes/No]: ")))) 
                            (list "Y" "YES" "N" "NO") 
                      ) ;_ end of mlml 
                 ) ;_ end of not 
          ) ;_ end of while 
         ) 
       ) ;_ end of cond 
      ) 
      ((= goTo 4) 
    ; Obtain search string from user, set to strinF 
       (while (eq "" (setq strinF (getstring t "\nEnter search term: ")))) 
       (setq goTo 6) 
      ) 
      ((= goTo 5) 
    ; Obtain search string and replace string from user, set to strinF and strinR respectively 
       (while (eq "" (setq strinF (getstring t "\nEnter find term: ")))) 
       (while (eq "" (setq strinR (getstring t "\nEnter replace term: ")))) 
       (setq goTo 7) 
      ) 
      ((= goTo 6) 
    ; Search drawing for strinF 
       (cond 
         ((mlml (list case) (list "Y" "YES")) 
    ; Compare using (vl-string-search strinF input), view selection 
    ; use "while" to get all search occurances 
          (foreach selVar selSet 
            (if (vl-string-search strinF (nth 0 selVar)) 
              (progn 
                (setq count (1+ count)) 
                (if (/= (getvar "ctab") (caddr selVar)) 
                  (command "ctab" (caddr selVar)) 
                ) ;_ end of if 
                (command "zoom" "c" (trans (cadr selVar) 0 1) (* 32 (nth 3 selVar))) 
                (getstring "\nPress 'Enter' to continue: ") 
              ) ;_ end of progn 
            ) ;_ end of if 
          ) ;_ end of foreach 
         ) 
         ((mlml (list case) (list "N" "NO")) 
    ; Compare using (vl-string-search (strcase strinF) (strcase input)), view selection 
    ; use "while" to get all search occurances 
          (foreach selVar selSet 
            (if (vl-string-search (strcase strinF) (strcase (nth 0 selVar))) 
              (progn 
                (setq count (1+ count)) 
                (if (/= (getvar "ctab") (caddr selVar)) 
                  (command "ctab" (caddr selVar)) 
                ) ;_ end of if 
                (command "zoom" "c" (trans (cadr selVar) 0 1) (* 32 (nth 3 selVar))) 
                (getstring "\nPress 'Enter' to continue: ") 
              ) ;_ end of progn 
            ) ;_ end of if 
          ) ;_ end of foreach 
         ) 
       ) ;_ end of cond 
       (if (= count 0) 
         (setq error "\nNo matches found.") 
         (setq error (strcat (itoa count) " matches found.")) 
       ) ;_ end of if 
       (setq goTo 8) 
      ) 
      ((= goTo 7) 
    ; Replace strinF with strinR 
       (cond 
         ((mlml (list case) (list "Y" "YES")) 
    ; Compare using (vl-search-string strinF input), modify using (vl-string-subst) within a while loop 
          (foreach selVar selSet 
            (setq selTxt (nth 0 selVar)) 
            (setq seaLoc 0) 
            (while (setq seaLoc (vl-string-search strinF selTxt seaLoc)) 
              (setq selTxt (vl-string-subst strinR strinF selTxt seaLoc)) 
              (setq seaLoc (+ seaLoc (strlen strinR))) 
              (setq count (1+ count)) 
            ) ;_ end of while 
            (vla-put-textstring (vlax-ename->vla-object (nth 4 selVar)) selTxt) 
          ) ;_ end of foreach 
         ) 
         ((mlml (list case) (list "N" "NO")) 
    ; Compare using (vl-string-search (strcase strinF) (strcase input)), modify using (vl-string-subst) within a while loop 
          (foreach selVar selSet 
            (setq selTxt (nth 0 selVar)) 
            (setq seaLoc 0) 
            (while (setq seaLoc (vl-string-search (strcase strinF) (strcase selTxt) seaLoc)) 
              (setq selTxt (strcat (substr selTxt 1 seaLoc) strinR (substr selTxt (+ 1 seaLoc (strlen strinF))))) 
              (setq seaLoc (+ seaLoc (strlen strinR))) 
              (setq count (1+ count)) 
            ) ;_ end of while 
            (vla-put-textstring (vlax-ename->vla-object (nth 4 selVar)) selTxt) 
          ) ;_ end of foreach 
         ) 
       ) ;_ end of cond 
       (if (= count 0) 
         (setq error "\nNo occurances found.") 
         (setq error (strcat (itoa count) " occurances modified.")) 
       ) ;_ end of if 
       (setq goTo 8) 
      ) 
      ((= goTo 8) 
       (if error 
         (princ error) 
       ) ;_ end of if 
       (setq goWhile nil) 
      ) 
    ) ;_ end of cond 
  ) ;_ end of while 
  (princ) 
) ;_ end of defun 

(defun mlml (inSMLChar inSMLStri / returnVarMS toCheck chkWith) 
  (setq returnVarMS nil) 
  (if (and (= (type inSMLChar) 'list) 
           (= (type inSMLStri) 'list) 
      ) ;_ end of and 
    (progn 
      (foreach toCheck inSMLStri 
        (foreach chkWith inSMLChar 
          (if (eq toCheck chkWith) 
            (setq returnVarMS t) 
          ) ;_ end of if 
        ) ;_ end of foreach 
      ) ;_ end of foreach 
    ) ;/progn 
  ) ;_ end of if 
  returnVarMS 
)   ; Checks a list to see if a member of that list is the same as a member of another list. Returns T or nil 

(defun extTxtPt (ssList / subVar getEnt entTyp entTxt entPnt entLay entHgt grp66 entAtt getEntAtt entAttTyp uniLst) 
  (setq uniLst nil) 
  (setq subVar 0) 
  (if ssList 
    (repeat (sslength ssList) 
      (setq getEnt (entget (cadr (car (ssnamex ssList subVar))))) 
      (setq entTyp (cdr (assoc 0 getEnt))) 
      (cond 
        ((or (= entTyp "TEXT") (= entTyp "MTEXT")) 
         (setq entTxt (cdr (assoc 1 getEnt))) 
         (setq entPnt (cdr (assoc 10 getEnt))) 
         (setq entHgt (cdr (assoc 40 getEnt))) 
         (setq entLay (cdr (assoc 410 getEnt))) 
         (setq entNam (cdr (assoc -1 getEnt))) 

         (setq uniLst (append uniLst (list (list entTxt entPnt entLay entHgt entNam)))) 
        ) 
        ((= entTyp "INSERT") 
         (setq grp66 (assoc 66 getEnt)) 
         (if grp66 
           (progn 
             (setq entAtt (entnext (cdr (assoc -1 getEnt)))) 
             (setq getEntAtt (entget entAtt)) 
             (setq entAttTyp (cdr (assoc 0 getEntAtt))) 
           ) ;_ end of progn 
         ) ;_ end of if 
         (while (= entAttTyp "ATTRIB") 
           (setq entTxt (cdr (assoc 1 getEntAtt))) 
           (setq entPnt (cdr (assoc 10 getEntAtt))) 
           (setq entHgt (cdr (assoc 40 getEntAtt))) 
           (setq entLay (cdr (assoc 410 getEntAtt))) 
           (setq entNam (cdr (assoc -1 getEntAtt))) 

           (setq uniLst (append uniLst (list (list entTxt entPnt entLay entHgt entNam)))) 

    ; Get next entity. 
           (setq entAtt (entnext (cdr (assoc -1 getEntAtt)))) 

    ; Get ent and ent type 
           (setq getEntAtt (entget entAtt)) 
           (setq entAttTyp (cdr (assoc 0 getEntAtt))) 
         ) ;_ end of while 
        ) 
        (t 
        ) 
      ) ;_ end of cond 
      (setq subVar (1+ subVar)) 
    ) ;_ end of repeat 
  ) ;_ end of if 
  uniLst 
)   ; Return list of all text-based objects (Text, MText, Attribute) in the current drawing

а после этот (код запускает поиск и замену определенного текста):
Код:
[Выделить все]
(tfind2fun "Искомый текст" "Другой текст" 0)
где 0 - без учена регистра, 1 - с учетом регистра


Потом этот (код закрывает текущий чертеж с сохраненем):
Код:
[Выделить все]
(command "_.vbastmt" "ThisDrawing.Close True")
Открывай нужные файлы, текст автоматически заменится, файл сохранится и закроется.
Потом эту самодеятельность надо будет удалить
Nike вне форума  
 
Автор темы   Непрочитано 29.09.2009, 16:22
#13
h0h01


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


Спасибо огромное за советы!
буду пробовать... как только получится чего, то отпишу результаты
h0h01 вне форума  
 
Непрочитано 22.10.2009, 14:50
#14
Electra

Инженер-антрополог
 
Регистрация: 16.02.2009
Moscow
Сообщений: 97


Цитата:
Сообщение от h0h01 Посмотреть сообщение
Спасибо огромное за советы!
буду пробовать... как только получится чего, то отпишу результаты
ну как результаты?
Electra вне форума  
 
Непрочитано 12.07.2020, 20:53
#15
Бульмен


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


Цитата:
Сообщение от Suvor Посмотреть сообщение
Существует программа Archivarius 3000. Вкратце принцип действия таков: задаем нужную папку, программа индексирует находящиеся внутри файлы (понимает около 200 типов файлов) и сохраняет результат в собственную базу. При необходимости можно обновить базу для изменившихся и новых файлов.

При запросе на поиск слов или фраз Archivarius 3000 ищет в собственной базе. У меня порядка 10000 файлов DWG, поиск занимает буквально 1-2 секунды.
Suvor вне форума вставить имя Обратить внимание модератора на это сообщение
А у меня она находит от силы 10% dwg-файлов.

Посоветуйте программу поиска в dwg-файлах. Причём созданных не только автокадом, но и всякими сторонними утилитами.
Версия автокада 2019.
Кроме betntey view и dwgsee я ничего не нашёл, чтобы прям показывало найденное слово на чертеже
Бульмен вне форума  
 
Непрочитано 12.07.2020, 21:28
#16
Кулик Алексей aka kpblc
Moderator

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


Эт как "показать"? Учитывая, что работа выполняется не в текущем документе?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.07.2020, 22:12
#17
Бульмен


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


"Работа" вообще не производится. Более того, не установлен. Но нужно найти в dwg-файлах нужный текст и посмотреть, где этот текст находится.
P.S. Странные вопросы задаёте.
В dwgsee pro не работали что ли?

"Работа" вообще не выполняется. Более того, автокад даже не инсталлирован на компе.
Нужно просто найти заданный текст в массиве dwg-файлов и посмотреть, где он находится на чертеже

Последний раз редактировалось Кулик Алексей aka kpblc, 13.07.2020 в 08:21.
Бульмен вне форума  
 
Непрочитано 13.07.2020, 01:17
#18
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


видимо, смесь акадовского (_find) поисковика текста и внешней БД - чтобы кликнул и открылся файл (при необходимости), переключилось на нужное пространство и позиционировало по тексту в центре.
Сергей812 вне форума  
 
Непрочитано 13.07.2020, 05:36
#19
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,075


Цитата:
Сообщение от Бульмен Посмотреть сообщение
у меня она находит от силы 10% dwg-файлов.
Скорее всего, это файлы формата AutoCAD 2000: в нем текстовые строки сохранялись как текст внутри файла. Поздние форматы уже сжаты/зашифрованы.

Я когда-то для себя такую штуку делал:
Код:
[Выделить все]
<html>
<head><meta name=vs_targetSchema content="HTML 4.0">
<style>
.fileLink {
	color: blue;
	cursor: hand;
	text-decoration: underline;
}
</style>

<script language=jscript>

function onSelectPath()
{
	try {
		var sh = new ActiveXObject("Shell.Application");
		var folder = sh.BrowseForFolder(0, "", 0);
		if(folder)
			txt_Path.value = folder.Items().Item().Path;
	} catch(e) {
	}
}

// Оформительские штучки
function CLEAR_STATUS()
{
	p_Status.innerHTML = "";
}

function PRINT_STATUS_GRREN(s)
{
	p_Status.innerHTML += "<font color=green><b>" + s + "</b></font><br>";
}

function PRINT_STATUS_RED(s)
{
	p_Status.innerHTML += "<font color=red><b>" + s + "</b></font><br>";
}

function PRINT_STATUS_ERROR(s)
{
	PRINT_STATUS_RED("Ошибка: " + s);
}

function CLEAR_RESULT()
{
	p_Result.innerHTML = "";
}

function PRINT_RESULT_FILE(fileName)
{
	var re = new RegExp("\\\\", "g");
	var fileNameJS = fileName.replace(re, "\\\\");

	p_Result.innerHTML += "<span class=fileLink onclick=\"Run('" + fileNameJS + "');\">" + fileName + "</span><br>"; 
}

function PRINT_RESULT_FOLDER(folderName)
{
	p_Result.innerHTML += "<b>" + folderName + "</b><br>";
}

function PRINT_RESULT(s)
{
	p_Result.innerHTML += s + "<br>";
}

// объект, собирающий и выводящий найденные строки
function ResultPrinter()
{
	this.MaxLines = 10;
	this.CurrLine = 0;
	this.Lines = new Array();

	this.formatLine = function(s)
	{
		return "<font color=green>&nbsp;&nbsp;&nbsp;" + s + "</font>";
	}

	this.addLine = function(s)
	{
		if(this.CurrLine < this.MaxLines){
			this.Lines.push(s);
			this.CurrLine++;
		} else if(this.CurrLine == this.MaxLines) {
			this.Lines.push("...");
			this.CurrLine++;
		}
	}

	this.printLines = function()
	{
		for(var i = 0; i < this.Lines.length; i++)
			PRINT_RESULT(this.formatLine(this.Lines[i]));
	}
}


// Объекты доступа к ACAD
var g_Acad     = null;
var g_Document = null;
// Объект доступа к файловой системе
var g_FSO  = null;
// Объект выдачи результатов поиска в файле
var g_ResultPrinter = null;
// Собственно шаблон поиска
var g_RegExp = null;

// Проверка расширения
function isAutocadFile(fileName)
{
	return g_FSO.GetExtensionName(fileName).toLowerCase() == "dwg";
}

// Поиск в текстах
function findInText(text)
{
	var txt = text.TextString;
	if(g_RegExp.test(txt)) {
		g_ResultPrinter.addLine(txt);
		return true;
	} else {
		return false;
	}
}

// Поиск в мтекстах
function findInMText(mtext)
{
	var txt = mtext.TextString;
	if(g_RegExp.test(txt)) {
		g_ResultPrinter.addLine(txt);
		return true;
	} else {
		return false;
	}
}

// Поиск в атрибутах
function findInAttribute(attribute)
{
	var txt = attribute.TextString;
	if(g_RegExp.test(txt)) {
		g_ResultPrinter.addLine(txt);
		return true;
	} else {
		return false;
	}
}


// Поиск в атрибутах вставленного блока
function findInAttributeReference(attributeReference)
{
	var txt = attributeReference.TextString;
	if(g_RegExp.test(txt)) {
		g_ResultPrinter.addLine(txt);
		return true;
	} else {
		return false;
	}
}

// Поиск в таблицах
function findInTable(table)
{
	var result = false;
	for(var row = 0; row < table.Rows; row++)
		for(var col = 0; col < table.Columns; col++) {
			var txt = table.GetText(row, col);
			if(g_RegExp.test(txt)) {
				g_ResultPrinter.addLine(txt);
				result |= true;
			} 
		}
	return result;
}

// Поиск в блоках
function findInBlock(block)
{
	var result = false;
	var ents = new Enumerator(block);
	for(; !ents.atEnd(); ents.moveNext()) {
		var ent = ents.item();
		result |= findInEntity(ent);
	}
	return result;
}

</script>

<script language=VBScript>
function findInBlockReference(blockReference)
	findInBlockReference = false

'	if blockReference.HasAttributes then
'		attrs = blockReference.GetAttributes
'		For i = LBound(attrs) To UBound(attrs)
'			window.alert(attrs(i).TextString())
'		    'findInBlockReference = findInBlockReference and findInAttributeReference(attrs(i))
'		Next
'	end if

	set block = g_Document.Blocks.Item(blockReference.Name)
	findInBlockReference = findInBlockReference and findInBlock(block)
end function
</script>

<script language=JScript>
// Поиск в очередном объекте ACAD
function findInEntity(ent)
{
	var result = false;	
	switch(ent.ObjectName){
	case "AcDbText":
		result |= findInText(ent);
		break;
	case "AcDbMText":
		result |= findInMText(ent);
		break;
	case "AcDbTable":
		result |= findInTable(ent);
		break;
	case "AcDbBlockReference":
		result |= findInBlockReference(ent);
		break;
	default:
		break;
	}
	return result;
}

// Поиск в модели или на листе
function findInSpace(space)
{
	var result = false;
	var ents = new Enumerator(space);
	for(; !ents.atEnd(); ents.moveNext()) {
		var ent = ents.item();
		result |= findInEntity(ent);
	}
	return result;
}

// Поиск внутри файла
// null, если ничего не найдено
function findInFile(fileName)
{
	var result = false;
	try {
		g_Document = g_Acad.Documents.Open(fileName, true);
		g_ResultPrinter = new ResultPrinter();
		
		result |= findInSpace(g_Document.ModelSpace);
		result |= findInSpace(g_Document.PaperSpace);
	} catch (error) {
		//PRINT_STATUS_ERROR(error.desctiption + ". Файл: " + fileName);
		PRINT_STATUS_ERROR("Ошибка в файле: " + fileName);
	} finally {
		try { g_Document.Close(false); } catch(error) {}
		return result;
	}
}


// Собственно поиск - в каталоге и в подкаталогах
function Find(folder)
{
	PRINT_RESULT_FOLDER(folder.Path);

	// Поиск в файлах
	var files = new Enumerator(folder.Files);
	for(; !files.atEnd(); files.moveNext()) {
		var file = files.item();
		if(isAutocadFile(file.Path))
			if(findInFile(file.Path)) {
				PRINT_RESULT_FILE(file.Path);
				g_ResultPrinter.printLines();
			}
	}

	// Поиск в подкаталогах
	var subFolders = new Enumerator(folder.SubFolders);
	for(; !subFolders.atEnd(); subFolders.moveNext()) {
		var subFolder = subFolders.item();
		Find(subFolder);
	}
}


// Обработчик кнопки ПОИСК
function onFind()
{
	try {
		CLEAR_STATUS();
		CLEAR_RESULT();

		g_Acad   = new ActiveXObject("Autocad.Application");
		g_Acad.Visible = true;
		g_FSO    = new ActiveXObject("Scripting.FileSystemObject");
		g_RegExp = new RegExp(txt_Pattern.value, "i");
		var folder = g_FSO.GetFolder(txt_Path.value);
		Find(folder);
	} catch(error) {
		PRINT_STATUS_RED("ОШИБКА: " + error.description);
	} finally {
		try { g_Acad.Quit(); } catch(error) {}
		try { g_FSO = null;  } catch(error) {}
	}
}

// Запуск файла по ссылке
function Run(fileName)
{
	try {
		var sh = new ActiveXObject("WScript.Shell");
		sh.Run("\"" + fileName + "\"");
	} catch (error) {
	}
}

</script>
</head>
<body>
<p>Искать текст:</p>
<p><input id=txt_Pattern type=text style="width:100%;"></p>
<p>Где искать:</p>
<p><input id=txt_Path type=text value="C:\" style="width:100%;">
 <input id=btn_SelectPath type=button value=Выбрать... onclick="onSelectPath();" ></p>
<p>
 <input id=btn_Find type=button value=Искать onclick="onFind();"></p>
<p>
<hr width="100%" size=1>
<p id=p_Status></p>
<hr width="100%" size=1>
<p id=p_Result></p>
</body>
</html>
Для поиска загружает новое скрытое окно автокада, открывает в нем файлы, ищет в них текст и собирает список найденных. Открыть найденный файл будет можно по гиперссылке. Поиск через JavaScript, так что поддерживаются его регулярные выражения. Сохранить с расширением HTA и запустить как обычную программу.

P.S.
Сейчас у меня Автокада нет, если что не контачит - не помогу.
Нубий-IV вне форума  
 
Непрочитано 13.07.2020, 08:24
#20
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Бульмен Посмотреть сообщение
Более того, автокад даже не инсталлирован на компе.
DWG формат зашифрован и просто так вскрытию не поддается. Надо устанавливать либо ACAD, либо nanoCAD, либо что-то еще, что открывает dwg-файлы и позволяет их программно обрабатывать. Ну или изучай методы программной работы с DwgTrueView - может, чего и получится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.07.2020, 09:28
#21
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ну или изучай методы программной работы с DwgTrueView - может, чего и получится.
API for DWG TrueView
Цитата:
The official Autodesk position is that DWG TrueView has not been designed
nor tested for use as an ActiveX Control; however, based on its
architecture, some things just happen to work.
что в принципе логично - если они выпускают упрощенную платную LT c порезанным наглухо API, то ожидать нормальной поддержки API по обработке данных в бесплатном просмоторщике...)
Сергей812 вне форума  
 
Непрочитано 13.07.2020, 19:06
#22
Бульмен


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


Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Скорее всего, это файлы формата AutoCAD 2000: в нем текстовые строки сохранялись как текст внутри файла. Поздние форматы уже сжаты/зашифрованы.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
DWG формат зашифрован и просто так вскрытию не поддается.
Я в курсе.

Что мой вопрос не простой.
Если бы вопрос был простым - я бы и региться тут не стал: просто бы нагуглил ответ.
Кроме dwgsee pro в природе существуют утилиты, которые могут искать текст внутри dwg-файлов и при этом имеют встроенный просмотрщик, который понимает ЛЮБЫЕ dwg-файлы (в том числе созданные не автокадом) и может ВИЗУАЛЬНО показать, где этот текст находится на чертеже?

----- добавлено через ~22 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Надо устанавливать либо ACAD, либо nanoCAD, либо что-то еще, что открывает dwg-файлы
кроме dwgsee pro пока что ничего не нашёл, что могло бы искать заданный текст внутри dwg-файлов (причём формата как версии 2000-х так и 2019 года)и показывать положение найденного текста в чертеже.

Поэтому решил обратиться за помощью на главный форум автокадчиков рунета.
Бульмен вне форума  
 
Непрочитано 13.07.2020, 19:41
#23
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


перегнать всё в dxf и искать по тексту https://www.opendesign.com/guestfile...file_converter
trir вне форума  
 
Непрочитано 13.07.2020, 20:47
#24
Бульмен


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


Цитата:
Сообщение от trir Посмотреть сообщение
и искать по тексту
Мне нужно автопозиционирование в нужное место чертежа, где найден текст, по клику мышки.
Т.е. нужно, чтобы "ищейка" по совместительству была бы ещё и вьювером.

Просто найти ответ на вопрос "Есть ли заданный текст в данном файле?" мне недостаточно. Мне нужно ещё увидеть, где на чертеже данный текст находиться. По клику мышки по найденному тексту.

Открывать вручную каждый из более 100 тыс файлов в вручную искать требуемый текст не катит.

Последний раз редактировалось Бульмен, 13.07.2020 в 20:53.
Бульмен вне форума  
 
Непрочитано 13.07.2020, 21:24
#25
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


загнать всё в БД
trir вне форума  
 
Непрочитано 13.07.2020, 21:53
#26
Бульмен


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


Цитата:
Сообщение от trir Посмотреть сообщение
загнать всё в БД
Пардон?
Бульмен вне форума  
 
Непрочитано 13.07.2020, 22:06
#27
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Бульмен Посмотреть сообщение
Пардон?
один раз пропарсить чертежи, загнать в БД: хэндл элемента , имя файла (отдельная таблица), текст из данного элемента, а также характеристики файла (для возможности оперативного обновления БД в дальнейшем). А дальше уже дело техники
Цитата:
Сообщение от Бульмен Посмотреть сообщение
Мне нужно ещё увидеть, где на чертеже данный текст находиться. По клику мышки по найденному тексту.
получить по искомому тексту выборку из БД, открыть нужный файл в том же акаде, позиционировать на элементе с текстом по его хэндлу. Только это уже другая ветка - программирование.

А чем вас
Цитата:
Сообщение от Бульмен Посмотреть сообщение
dwgsee pro
не устроил?
Сергей812 вне форума  
 
Непрочитано 14.07.2020, 05:57
#28
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Открывать вручную каждый из более 100 тыс файлов
а что за чертежи?

Цитата:
Только это уже другая ветка - программирование.
можно и без программирования - одним ogr'ом обойтись

Последний раз редактировалось trir, 14.07.2020 в 07:30.
trir вне форума  
 
Непрочитано 14.07.2020, 21:44
#29
Бульмен


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А чем вас dwgsee pro не устроил?
Он не может показывать сразу все найденные фрагменты как превью.
Поэтому я не могу сопоставить визуально, чем найденное в одном файле отличается от найденного в другом файле. Т.е. прога одновременно может показывать только один файл.
И то, чтобы посмотреть фрагменты чертежа, где находятся в найденные тексты, приходится действовать в 3 этапа:
1) Кликом по имени в списке найденных файлов открывать файл
2) В открытом файле запускать поиск текста
3) кликом по найденному тексту с списке найденного переходить в нужное место чертежа
А хотелось бы "одним кликом" по найденному фрагменту в списке результатов сразу попадать в нужное место нужного файла, без промежуточных шагов

----- добавлено через ~47 мин. -----
Нагуглил такую штуку.
Называется ToolPac.
Никто не юсал?
А то пробную версию они скачать не дают, а 275$ за "кота в мешке" отдавать не хочется.
Бульмен вне форума  
 
Непрочитано 14.07.2020, 23:37
#30
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


в БД можно увидеть всё сразу
trir вне форума  
 
Непрочитано 15.07.2020, 01:25
#31
Бульмен


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


Цитата:
Сообщение от trir Посмотреть сообщение
в БД можно увидеть всё сразу
Я Вас не понимаю.
Скажите название софта, который Вы юсаете
Бульмен вне форума  
 
Непрочитано 15.07.2020, 06:00
#32
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


SSMS
https://habr.com/ru/post/307294/
trir вне форума  
 
Непрочитано 15.07.2020, 07:52
#33
Кулик Алексей aka kpblc
Moderator

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


SSMS нередко можно заменить на dbForge (на русском бесплатная, насколько я помню)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.07.2020, 08:28
#34
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
на русском бесплатная, насколько я помню
нет, просто есть бесплатная Express-версия
в принципе есть много разных СУБД и IDE https://en.wikipedia.org/wiki/Spatial_database
trir вне форума  
 
Непрочитано 15.07.2020, 19:31
#35
Бульмен


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


Цитата:
Сообщение от trir Посмотреть сообщение
в БД можно увидеть всё сразу
Вы не очень поняли мою задачу. Мне не просто нежно увидеть искомое в виде текста в списке найденного. Или в виде списка файлов, в которых стопудово есть, что я ищу.
Мне нужно визуально видеть: где (в каком окружении)на чертеже находится искомый текст.

Т.е. чтобы ищейка имела встроенный вьювер, способный выводить сразу все найденные фрагменты в виде "черепицы" из миниатюр, содержащих фрагмент чертежа, в которых найден искомый мной текст

Последний раз редактировалось Бульмен, 15.07.2020 в 20:17.
Бульмен вне форума  
 
Непрочитано 15.07.2020, 20:43
#36
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Мне нужно визуально видеть: где (в каком окружении)на чертеже находится искомый текст.
я это и имел ввиду, правда картинка будет в общем координаьном пространстве
trir вне форума  
 
Непрочитано 17.07.2020, 10:48
#37
Бульмен


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


Цитата:
Сообщение от trir Посмотреть сообщение
я это и имел ввиду
Назовите название программы
Бульмен вне форума  
 
Непрочитано 17.07.2020, 10:51
#38
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


SQL Server Management Studio
https://hsto.org/files/318/932/3b5/3...2abb815180.PNG

+ QGIS (но тут проблемы, если нет СК)
https://hsto.org/files/af1/91a/a44/a...8cf2293ab2.PNG

AutoCAD Map/Civil 3D FDO
https://wiki.gis-lab.info/images/a/ad/Scr_map3d_7.JPG

Загрузка в БД через OGR

Последний раз редактировалось trir, 17.07.2020 в 10:59.
trir вне форума  
 
Непрочитано 17.07.2020, 20:19
#39
Vova

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


Цитата:
Сообщение от Бульмен Посмотреть сообщение
Мне нужно визуально видеть: где (в каком окружении)на чертеже находится искомый текст.
А можно пояснить, какие слова должны быть заменены на другие в аж 100 тысячах файлов?
Почему-то этот вопрос никто не задает, хотя предлагаются разные программы. Даже если будет вьювер и вы сможете увидеть окружение. Допустим, текст с новыми словами окажется больше старого и налезет на окружающую геометрию. Придется файл открывать для редактирования. И так окажется тысячи раз. Сколько версий автокадов поменялось за 100000 файлов? В каком автокаде сохраняться? Далее, во все исправленные файлы надо вносить изменения и отсылать старым получателям. И у все должен быть автокад соответствующей версии. Наверное, по многим из такой прорвы файлов уже что-то сделано. Что именно?
Vova вне форума  
 
Непрочитано 17.07.2020, 22:21
#40
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Vova Посмотреть сообщение
А можно пояснить, какие слова должны быть заменены на другие в аж 100 тысячах файлов?
Почему-то этот вопрос никто не задает, хотя предлагаются разные программы.
а где был разговор про замену? речь идет о наличие удобной искалки с предпросмотрами в этих 100500 файлов, которая позволит, видимо, не заниматься систематизацией данных в этих файлах - а сразу находить нужные фрагменты по текстовым включениям.
Сергей812 вне форума  
 
Непрочитано 17.07.2020, 22:56
#41
Бульмен


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


Цитата:
Сообщение от Vova Посмотреть сообщение
А можно пояснить, какие слова должны быть заменены на другие в аж 100 тысячах файлов?
Не понял.
Почему Вы меня об этом спрашиваете?
Я о замене ничего не говорил.

----- добавлено через ~31 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а где был разговор про замену? речь идет о наличие удобной искалки с предпросмотрами в этих 100500 файлов, которая позволит, видимо, не заниматься систематизацией данных в этих файлах - а сразу находить нужные фрагменты по текстовым включениям.
Вы правильно меня поняли
Нужна банальная искалка текста.
Но чтобы результаты поиска отображались не просто как список имён файлов, а как набор превьюшек, в которых содержится искомый текст.
Чтобы не нужно было открывать каждый найденный файл, и вручную искать где же находится на чертеже то, что я ищу

Последний раз редактировалось Бульмен, 17.07.2020 в 23:28.
Бульмен вне форума  
 
Непрочитано 18.07.2020, 00:06
#42
Vova

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


Ну да, разговора о замене текста у автора Бульмен не было, а только у первооткрывателя темы h0h01
Бульмен развил эту тему.

Цитата:
Сообщение от Бульмен Посмотреть сообщение
Открывать вручную каждый из более 100 тыс файлов в вручную искать требуемый текст не катит.
Тогда остается только один вопрос: что нарисовано в этих 100 000 файлах? На этом форуме все автокадчики и все выпускают чертежи в разных областях, но с таким количеством файлов вряд ли встречались. Бульмен, удовлетвори любопытство, плиз
Vova вне форума  
 
Непрочитано 18.07.2020, 04:41
#43
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,075


Цитата:
Сообщение от Vova Посмотреть сообщение
с таким количеством файлов вряд ли встречались
Например, поиск аналогов в базе чертежей предприятия. Хотя бы в виде поиска текста (молчу уж про похожую графику).
Нубий-IV вне форума  
 
Непрочитано 18.07.2020, 09:33
#44
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Например, поиск аналогов в базе чертежей предприятия. Хотя бы в виде поиска текста
предприятие настолько нищее, что ищет готовый вариант корпоративного решения на dwg.ru?) Поиск текста вполне решаемый вопрос даже в виде надстройки к тому же акаду с прикрученной БД, а вот хотелка
Цитата:
Сообщение от Бульмен Посмотреть сообщение
Мне нужно визуально видеть: где (в каком окружении)на чертеже находится искомый текст.
это уже не
Цитата:
Сообщение от Бульмен Посмотреть сообщение
банальная искалка текста.
а совершенно иное))
Сергей812 вне форума  
 
Непрочитано 18.07.2020, 14:32
#45
Бульмен


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


Цитата:
Сообщение от Vova Посмотреть сообщение
Тогда остается только один вопрос: что нарисовано в этих 100 000 файлах? На этом форуме все автокадчики и все выпускают чертежи в разных областях, но с таким количеством файлов вряд ли встречались. Бульмен, удовлетвори любопытство, плиз
Просто за 15 лет на "файлопомойке" сервера отдела накопилось.
Проектов много (под сотню). В каждом проекте до десятков файлов. Каждый файл имеет до полсотни версий. В каждой версии по несколько листов.
Ну может про 100 тыс я "загнул" - я просто не хотел ограничиваться, ну т.е. чтобы возможностей программы поиска мне хватило с "запасом" (который, как известно, карман не тянет).

Да даже если файлов всего 20 шт - и то, вручную открывать каждый и вручную искать уже проблема.

Я даже пробовал скопировать все файлы в один и пользоваться штатным поиском автокада в открытом чертеже. Система начинает жутко тормозить. Ибо с трудом "переваривает" 20 х 7 = 140 листов формата А0. А комп у меня не топовый по конфигруации.
Так что копировать все DWG-шечки в один файл не вариант

----- добавлено через ~5 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
предприятие настолько нищее, что ищет готовый вариант корпоративного решения на dwg.ru?)
А где ещё можно искать?
Ведь dwg.ru - главный ресурс рунета по автокаду, где как не здесь смогут что-то посоветовать?

И причём тут "нищее предприятие"?
Я не говорил, что хочу получить такую программу бесплатно (хотя если есть бесплатные - то зачем платить?).
Я просил просто озвучить название программы.
Если она реально делает, то что нам нужны, мы готовы купить её.

----- добавлено через ~11 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а вот хотелка

Цитата:
Мне нужно визуально видеть: где (в каком окружении)на чертеже находится искомый текст.
это уже не
Цитата:
банальная искалка текста.
а совершенно иное))
Спасибо, кэп.
Если бы мне нужна была "банальная искалка текста" - я бы и региться не стал на dwg.ru, чтобы задать свой вопрос.
"банальная искалка текста" в DWG-файлах находиться в гугле за 2 клика мышкой.

А вот чтобы программа поиска умела показывать, где находиться на чертеже искомый текст (причём даже при отсутствии на компе установленного автокада) - таких программ, кроме DWGsee Pro, что-то не нагуглил.

Чем не устраивает DWGsee Pro - Я Вам уже писал.
Повторяться не буду.
Бульмен вне форума  
 
Непрочитано 18.07.2020, 15:07
#46
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Бульмен Посмотреть сообщение
Спасибо, кэп.
Если бы мне нужна была "банальная искалка текста" - я бы и региться не стал на dwg.ru, чтобы задать свой вопрос.
"банальная искалка текста" в DWG-файлах находиться в гугле за 2 клика мышкой.
а иного и не будет - если бы была публичная программа, способная самостоятельно заниматься каталогизацией файлопомойки, она бы вылезла в поиске, имхо. Обычно наоборот - управляют документами, а не как в вашем случае - продолжать любовно и дальше вести файлопомойку с надеждой на какую то чудо программу, способную вывалить кучу картинок-превьюшек по одному щелчку. Как она (программа), например, будет разбираться с повторяющимися десятки раз одним и теми же фрагментами в
Цитата:
Сообщение от Бульмен Посмотреть сообщение
Каждый файл имеет до полсотни версий
?
Или потом окажется, что программа еще графический контент должна анализировать вокруг найденных слов?)
Сергей812 вне форума  
 
Непрочитано 18.07.2020, 16:19
#47
Бульмен


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
программа, способная самостоятельно заниматься каталогизацией
Не порите чуши
Где я писал про каталогизацию?

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Обычно наоборот - управляют документами
"Лучше быть богатым и здоровым, чем бедным и больным"(с)?
Слышали, знаем.


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а не как в вашем случае - продолжать любовно и дальше вести файлопомойку
Это не мой случай. Вы ошибаетесь.
Не я её создавал. Но мне с ней работать.
Ваши предложения?

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Как она (программа), например, будет разбираться с повторяющимися десятки раз одним и теми же фрагментами
Ей не надо разбираться. Ей нужно просто найти все эти фрагменты и показать их.
Бульмен вне форума  
 
Непрочитано 18.07.2020, 16:30
#48
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Бульмен Посмотреть сообщение
Где я писал про каталогизацию?
потому что даже если найдется программа, способная делать в фоновом режиме превьюшки вокруг заданного поиском текста в dwg файлах - ну выдаст она
Цитата:
Сообщение от Бульмен Посмотреть сообщение
В каждом проекте до десятков файлов. Каждый файл имеет до полсотни версий.
десятки-сотни-тысячи превьюшек.. и следующий логичный вопрос будет - а как это каталогизировать во вменяемом виде с минимальными трудозатратами) У нас тоже руководство проектного отдела "озаботилось" как то наведением порядка в файлопомойке - убрать лишние копии, переименовать файлы в единый вид и т.п. Когда посмотрели общее количество файлов всех типов в папке проектов - где то 300+ тысяч... Руководство сказало - ну этим вопросом займемся как-нибудь потом, может быть, когда будет свободное время
Сергей812 вне форума  
 
Непрочитано 18.07.2020, 18:59
#49
Бульмен


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
У нас тоже руководство проектного отдела "озаботилось" как то наведением порядка в файлопомойке - убрать лишние копии, переименовать файлы в единый вид и т.п. Когда посмотрели общее количество файлов всех типов в папке проектов - где то 300+ тысяч... Руководство сказало - ну этим вопросом займемся как-нибудь потом, может быть, когда будет свободное время
Вот я тоже озадачивался чёткой структуризацией файлов у себя на домашнем компе.
Раскладывал всё по папочкам.
За много лет структура так разрослась, что я уже не мог удерживать постоянно в голове все её нюансы.
И потом, любая структура, как как прокрустово ложе, снижает гибкость. Ведь часто нужно чтобы один и тот же файл лежал сразу в нескольких папках. А потом. Всё течёт, всё меняется. Сегодня этот файл лежит у Вас в одной папке, а через 5 лет - в другой.
Я экспериментировал с тегами. Они в какой-то степени облегчают жизнь, но когда тегов становится больше сотни, то такая же фигня.
И как-то в книге по программированию я прочитал главные принципы организации информации. И там в частности была глава "быстрый поиск бьёт организацию" и установил к себе на комп программу Everything, которая находит за доли секунды файл среди миллиона. Нужно лишь соблюдать 3-4 правила именования файлов.
Поэтому необходимость помнить всю разветвленную структуру папок отвалилась.

Мне проще и быстрей сделать 3-4 пробных поиска и найти нужный файл, чем долго лазить по дереву папок ища "куда же я положил этот файл?"

Поэтому хотел бы найти "быстропоиск" для автокада.
Чтобы вводишь текст и он показывает превьюшки всех мест всех файлов, где этот текст найден
Бульмен вне форума  
 
Непрочитано 19.07.2020, 13:15
#50
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


3 страницы текста ни о чем. Штатных средств для поиска с превью нет, публичных программ нет. Нужно писать что то своё, но это другая ветка форума. О чем тут ещё можно дискутировать...
Boxa вне форума  
 
Непрочитано 19.07.2020, 14:59
#51
Бульмен


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
публичных программ нет
Точно? Зуб даёте?
Тогда тему можно закрывать.
Бульмен вне форума  
 
Непрочитано 19.07.2020, 15:56
#52
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Boxa Посмотреть сообщение
3 страницы текста ни о чем. Штатных средств для поиска с превью нет, публичных программ нет. Нужно писать что то своё, но это другая ветка форума. О чем тут ещё можно дискутировать...
Просто хотелки растут - от вполне вменяемых
Цитата:
Сообщение от Бульмен Посмотреть сообщение
Просто найти ответ на вопрос "Есть ли заданный текст в данном файле?" мне недостаточно. Мне нужно ещё увидеть, где на чертеже данный текст находиться. По клику мышки по найденному тексту.
до создания превьюшек без открытия акада, и даже вообще без любых дополнительных установленных программ для работы с dwg) Если первое вполне решаемое - пропарсить в консольной версии того же акада эти файлы и внести в БД, то второе - это уже скорее вступать в ряды разработчиков альтернативы Аутодеска... врятли ТС потянет финансово подобное, имхо)
Сергей812 вне форума  
 
Непрочитано 19.07.2020, 16:52
#53
Бульмен


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Просто хотелки растут - от вполне вменяемых
Цитата:
Просто найти ответ на вопрос "Есть ли заданный текст в данном файле?" мне недостаточно. Мне нужно ещё увидеть, где на чертеже данный текст находиться. По клику мышки по найденному тексту.
до создания превьюшек без открытия акада
Скажите
Скажите! А разве слова "нужно ещё увидеть, где на чертеже данный текст находиться" не предполагают, что поисковик должен уметь показывать фрагменты чертежа?
Где Вы увидели "рост" хотелок?

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
второе - это уже скорее вступать в ряды разработчиков альтернативы Аутодеска.
Вы считаете, что ГОТОВОГО решения в виде продаваемой программы нет?
Вы в этом абсолютно уверены? Изучали данный вопрос?
Я же нашёл DWG see, которая позволяет "увидеть, где на чертеже данный текст находиться" "без открытия акада, и даже вообще без любых дополнительных установленных программ для работы с dwg" . Правда делает она это не по одному клику. О чём я Вам и сказал выше.

Так вот.

Если есть DWG See, то неужели она единственная в своём роде?

Как думаете?

Последний раз редактировалось Бульмен, 19.07.2020 в 16:58.
Бульмен вне форума  
 
Непрочитано 19.07.2020, 17:18
#54
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Бульмен Посмотреть сообщение
Скажите! А разве слова "нужно ещё увидеть, где на чертеже данный текст находиться" не предполагают, что поисковик должен уметь показывать фрагменты чертежа?
Где Вы увидели "рост" хотелок?
рост хотелок с уровня надстройки для того же акада до полноценной отдельной программы с собственной поддержкой dwg формата.

Цитата:
Сообщение от Бульмен Посмотреть сообщение
Вы считаете, что ГОТОВОГО решения в виде продаваемой программы нет?
Вы в этом абсолютно уверены? Изучали данный вопрос?
Я же нашёл DWG see, которая позволяет "увидеть, где на чертеже данный текст находиться" "без открытия акада, и даже вообще без любых дополнительных установленных программ для работы с dwg" . Правда делает она это не по одному клику. О чём я Вам и сказал выше.
нужно будет - себе просто напишу надстройку к акаду в виде палитры, куда будут выводиться найденные значения и открываться по щелчку файлы с позиционированием на найденном значении. Но в настоящее время это невостребованно как то...
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Поиск слова(предложения) во всех файлах AutoCad

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск фрагмента текста в текстовых файлах Nike Разное 23 14.05.2019 07:14
Искатель ссылок в файлах Autodesk Inventor (поиск применяемостей) Бриг Прочее ПО от Autodesk 14 24.05.2009 19:57
поиск в dwg файлах chater Прочее. Программное обеспечение 2 22.03.2009 23:25
Поиск всех примитивов по цвету на одном слое GGarry Программирование 11 18.12.2008 00:11
Поиск в AutoCad 2009 dudin AutoCAD 6 16.11.2008 19:03