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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как выявить 3Д чертежи из тысяч штук?

Как выявить 3Д чертежи из тысяч штук?

Ответ
Поиск в этой теме
Непрочитано 21.10.2005, 17:54 #1
Как выявить 3Д чертежи из тысяч штук?
Danilin
 
Сообщений: n/a

Как в массе тысяч чертежей выявить те, что имеют 3Д элементы?
Как сделать это стандартными средствами поиска Windows?
Просмотров: 7318
 
Непрочитано 22.10.2005, 00:12
#2
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


гы, стандартными средствами поиска Windows имхо не получится
программку надо писать или искать уже написанную....
VetalBY вне форума  
 
Непрочитано 22.10.2005, 15:54
#3
Danilin


 
Сообщений: n/a


Простой вопрос, а поставил всех в тупик...
 
 
Непрочитано 22.10.2005, 16:40
#4
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,752
Отправить сообщение для Огурец с помощью Skype™


Уважаемый Данилин!
Достаточно, чтобы хоть одна координата Z отличалась от 0, и чертёж уже будет по всем признакам трёхмерным. Тут просто аккуратность требуется. И внимание.
Огурец вне форума  
 
Непрочитано 22.10.2005, 18:13
#5
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Danilin
Цитата:
Как сделать это стандартными средствами поиска Windows?
Да никак. Если не написать пограмму на С++, Delphi etc.

В самом AtuoCAD обработать определёноое количество чертежей с целью поиска 3DMesh, 3DSolid или просто координат Z отличающихся от 0.0 не составляет проблемы.

Вопрос. Хочет ли вам кто нибудь помогать? Коллекцию хотите отсортировать?
{Smirnoff} вне форума  
 
Непрочитано 24.10.2005, 19:33
#6
Danilin


 
Сообщений: n/a


Стандартный поиск - найти *.dwg. Нашёл.
Вид - ЭСКИЗЫ (у меня в WXP dwg показывает). Визуально смотрим и находим 3Д с вероятностью 90%.
Другого способа не существует?
 
 
Непрочитано 24.10.2005, 19:33
#7
Danilin


 
Сообщений: n/a


Стандартный поиск - найти *.dwg. Нашёл.
Вид - ЭСКИЗЫ (у меня в WXP dwg показывает). Визуально смотрим и находим 3Д с вероятностью 90%.
Другого способа не существует?
 
 
Непрочитано 24.10.2005, 20:11
#8
asys

архитектор
 
Регистрация: 10.08.2005
Ростов-на-Дону
Сообщений: 5,283


>Danilin
А если превьюхи в файле не сохраняются (особенно если формат версий 12 или 14) или на экране показывается пустой экран(т.е. 3D за пределами экрана во время сохранения превью). Уже доверять методу опасно :?
asys вне форума  
 
Непрочитано 25.10.2005, 11:21
#9
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Danilin, я тут наваял кое-что, должно работать. Прежде чем радостно запускать, создайте текстовый файл-список file_list.txt, в котором полное имя каждого проверямого dwg-файла занимает отдельную строку.
Код:
[Выделить все]
(defun C:3D_Hunt ( / cmd n_doc file_lst 3d_lst 3d_pts lst msg)
  (vl-load-com)
  (setq	cmd (getvar "CMDECHO")
	n_doc (vla-getinterfaceobject (vlax-get-acad-object) "ObjectDBX.AxDbDocument.16")
        file_lst (open "file_list.txt" "r"))
  (while file_lst 
    (read-line file_lst) (vla-open n_doc (findfile dwg)) 
    (setq ms (vla-get-ModelSpace n_doc))
    (vlax-for obj ms
      (cond ((= (vla-get-ObjectName obj) "AcDbBlockReference")
             (if (/= (last (vlax-get obj 'InsertionPoint)) 0.000)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));block
            ((or (= (vla-get-ObjectName obj) "AcDbLine")
                 (= (vla-get-ObjectName obj) "AcDbArc")
                 (= (vla-get-ObjectName obj) "AcDbEllipse"));or
             (if (vl-some '(lambda (x) (= x 0.000))
                   (mapcar '(lambda (x) (last (vlax-get obj x))) '(StartPoint EndPoint)))
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));line
            ((= (vla-get-ObjectName obj) "AcDbLWPolyine")
             (if (/= (vla-get-elevation obj) 0.000)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));LWPolyine
            ((= (vla-get-ObjectName obj) "AcDbPolyine")
             (setq coor_lst (vlax-get obj 'Coordinates))
             (while coor_lst (if (/= (caddr coor_lst) 0.000)
                               (setq 3d_pts (cons (caddr coor_lst) 3d_pts)))
               (setq coor_lst (cdddr coor_lst)));while
             (if (vl-some '(lambda (x) (= x 0.000)) 3d_pts)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));Polyine
            ((or (= (vla-get-ObjectName obj) "AcDbCircle") (= (vla-get-ObjectName obj) "AcDbEllipse"))
             (if (/= (last (vlax-get obj 'Center)) 0.000)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));Circle
      );cond
    );vlax-for
    (if (null 3d_lst) (setq msg "No Drawings with 3-D entities!")
      (progn (while 3d_lst (setq lst (if lst (strcat lst "\n" (car 3d_lst)) (car 3d_lst))
                                 3d_lst (cdr 3d_lst)));while
        (setq msg (strcat "\nThe Following Drawings contain 3-D entities: \n" lst))));if
    (alert (strcat "Congratulations! \n" msg))
  );while
  (setvar "CMDECHO" cmd)
);end
Я рассматривал только 2-D элементы на предмет наличия координаты Z, отличной от нуля. Программу можно дополнить проверкой на наличие трехмерных сетей и тел, но это уже - сама-сама-сама (С). Идея программы, я полагаю, ясна.
Лентяй вне форума  
 
Непрочитано 27.10.2005, 18:29
#10
Danilin


 
Сообщений: n/a


Очевидно, можно переделать Вашу прогу для поиска "нужного слоя", "нужного чего-то там"?
Но как составить список DWG-файлов со всего диска?
 
 
Непрочитано 27.10.2005, 23:53
#11
Демиан


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


dir *.dwg /b > file_list.txt
Вставляешь в командную строку Total Commander и жмешь ввод.
Демиан вне форума  
 
Непрочитано 30.10.2005, 09:37
#12
Danilin


 
Сообщений: n/a


Список файлов лучше готовить в Total Commander. Каждому файлу даётся его путь на диске. Остаётся перевести это в текстовый формат: можно сделать Print Screen 10 раз и распознать в Fine Reader. Имена файлов должны быть англоязычными, чтобы распознаватель не путался, а потом можно применить поиск и замену похожих рус.-англ. букв.
Всё стандартными средствами, но неужели нет программы, составляющей списки файлов с их путями?!
 
 
Непрочитано 30.10.2005, 13:25
#13
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от Danilin
Список файлов лучше готовить в Total Commander. Каждому файлу даётся его путь на диске. Остаётся перевести это в текстовый формат: можно сделать Print Screen 10 раз и распознать в Fine Reader. Имена файлов должны быть англоязычными, чтобы распознаватель не путался, а потом можно применить поиск и замену похожих рус.-англ. букв.
Всё стандартными средствами, но неужели нет программы, составляющей списки файлов с их путями?!
Список файлов (если не устраивает совет Демиан) в Total Commander делается элементарно - выделяются файлы, любым способом, может быть после поиска) и применяется команда, примерно называемая "Список с полными путями в файл". Такое действие обычно привязывается к меню "Запуск" - в Total тьма скрытых команд, не отраженных в главном меню.

Хотя можно через PrintScreen и Fine Reader. Плюс PhotoShop. Но это для очень редких вундеркиндеров.
ShaggyDoc вне форума  
 
Непрочитано 30.10.2005, 13:38
#14
Демиан


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


Запусти Total Commander, нажми Alt+F7, появится окно "Поиск файлов"(Search for), в строке искать файлы набери *.dwg; в строке "Место поиска"(Search for), выбери нужный диск(Drives). Жми кнопку "Начать поиск"(Start search), после завершения поиска нажми кнопку "Файлы на панель"(Feed to listbox) (в этом же окне). Жми Ctrl+A, потом лезь в меню Выделение\Сохранить выделение в файл...(Mark\Save celection to file). Задаешь нужное имя файла: file_list.txt. Все.
Опередили, блин. :-)
Демиан вне форума  
 
Непрочитано 30.10.2005, 14:24
#15
forMA


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


Запустите Total Commander. Затем Ctr- B. И сортировку по расширению. Все dwg файлы будут перед глазами.
forMA вне форума  
 
Непрочитано 31.10.2005, 01:08
#16
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Daninlin, мне больно видеть :cry: . на какие муки из самых лучших побуждений вас обрекают местные знатоки. Чтобы я смог вам помочь наиболее безболезненным для вас способом, ответьте плз, находятся ли все ваши многочисленные файлы в обной и той же директории или в разумном числе нескольких (не более 5-ти). Если так, то сообщите мне алреса этих директорий, и я из вставлю в тело программы. Если же диретроий больше 5-ти, то самое разумное - ввести строку запроса для группы файлов.
Жду ответа, как соловей лета.
Лентяй вне форума  
 
Непрочитано 31.10.2005, 06:50 Не надо лохматить бабушку!
#17
Barbi

блондинка
 
Регистрация: 13.10.2005
Парк Юрского периода
Сообщений: 6


Danilin, никого не слушай! Printscreen рулит! Fine рулит! Photochop рулит!

Высылаю тебе наложенным платежом ВСЕ диски со ВСЕМИ версиями Prinscreen, Fine Reader и Photoшопа. Ты же делился с людями дисками. :shock:

Отдельно пересылаю на твою почту все письма с рекламами аналогичных продуктов. Может быть удастся и подписать тебя на что-нибудь еще более полезное.
Barbi вне форума  
 
Непрочитано 31.10.2005, 18:59
#18
Danilin


 
Сообщений: n/a


Файлы коллекции чётко разделены, Лентяй, вставьте в программу "случайный" путь к файлам, если можно.
Рабочий файлы разбросаны по диску, как у всех.
 
 
Непрочитано 01.11.2005, 08:29
#19
Кулик Алексей aka kpblc
Moderator

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


> Daniln : Здесь есть функция от ZZZ, которая формирует список файлов с определенной маской по определенному пути. Подключи и пользуйся.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.11.2005, 08:37
#20
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Danilin, держите модифицированную прогу. Введены формирование списка файлов в указанной "по образцу" директории и проверка на существование 3D-объектов (на всякий случай). Надеюсь, что проблем не будет.
Код:
[Выделить все]
(defun C:3D_Hunt ( / cmd n_doc file_lst 3d_lst 3d_pts lst msg)
  (vl-load-com)
  (setq cmd (getvar "CMDECHO")
        n_doc (vla-getinterfaceobject (vlax-get-acad-object) "ObjectDBX.AxDbDocument.16")
        dir (vl-filename-directory (getfiled "Select Single File" "" "dwg" 8))
        file_lst (cddr (vl-directory-files dir "*.dwg" 1)));setq
  (foreach dwg file_lst 
    (vla-open n_doc (findfile (strcat dir "\\" dwg)))
    (setq ms (vla-get-ModelSpace n_doc))
    (vlax-for obj ms
      (cond ((= (vla-get-ObjectName obj) "AcDbBlockReference")
             (if (/= (last (vlax-get obj 'InsertionPoint)) 0.000)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));block
            ((or (= (vla-get-ObjectName obj) "AcDbLine")
                 (= (vla-get-ObjectName obj) "AcDbArc")
                 (= (vla-get-ObjectName obj) "AcDbEllipse"));or
             (if (vl-some '(lambda (x) (= x 0.000))
                   (mapcar '(lambda (x) (last (vlax-get obj x))) '(StartPoint EndPoint)))
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));line
            ((= (vla-get-ObjectName obj) "AcDbLWPolyine")
             (if (/= (vla-get-elevation obj) 0.000)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));LWPolyine
            ((= (vla-get-ObjectName obj) "AcDbPolyine")
             (setq coor_lst (vlax-get obj 'Coordinates))
             (while coor_lst (if (/= (caddr coor_lst) 0.000)
                               (setq 3d_pts (cons (caddr coor_lst) 3d_pts)))
               (setq coor_lst (cdddr coor_lst)));while
             (if (vl-some '(lambda (x) (= x 0.000)) 3d_pts)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));Polyine
            ((or (= (vla-get-ObjectName obj) "AcDbCircle") (= (vla-get-ObjectName obj) "AcDbEllipse"))
             (if (/= (last (vlax-get obj 'Center)) 0.000)
               (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst))));Circle
            ((or (= (vla-get-ObjectName obj) "AcDb3dSolid")
                 (= (vla-get-ObjectName obj) "AcDbPolygonMesh"))
             (setq 3d_lst (cons (vla-get-name n_doc) 3d_lst)));3d-objects
      );cond
    );vlax-for
    (if (null 3d_lst) (setq msg "No Drawings with 3-D entities!")
      (progn (while 3d_lst (setq lst (if lst (strcat lst "\n" (car 3d_lst)) (car 3d_lst))
                                 3d_lst (cdr 3d_lst)));while
        (setq msg (strcat "\nThe Following Drawings contain 3-D entities: \n" lst))));if
    (alert (strcat "Congratulations! \n" msg))
  );foreach
  (setvar "CMDECHO" cmd)
);end
Лентяй вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как выявить 3Д чертежи из тысяч штук?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск