Программное переименование файла чертежа по его номеру в основной надписи

Автор Sprinter500, 19.12.09, 17:33:36

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Sprinter500

Всем доброго времени суток! Хотелось бы создать библиотеку или внешнюю программу, которая бы последовательно открывала файлы *.cdw из заданной директории, считывала бы номер чертежа из основной надписи/штампа и добавляла бы в имя файла чертежа этот номер. Это необходимо для того чтобы в архиве чертежей можно было бы осуществить поиск необходимого чертежа по его номеру, а на данный момент в именах файлов отсутствует номер чертежа. Поделитесь, пожалуйста, соображениями по этому поводу или кодом в Delphi или Visual Basic! Или есть более простой способ осуществить массовое переименование файлов, и я пытаюсь изобрести велосипед?

P.S. Желательно, чтобы программа или библиотека работала без загрузки файла и "происовки" в КОМПАСе, так как в этом случае на массовое переименование файлов уйдет слишком много времени.

bergovin

Реализовать то что вы хотите не открывая файлы в КОМПАСе наверное не удасться (по крайней мере я не представляю как), исключение - если не подготавливать эти файлы изначально специальным оброзом, например заносить номер чертежа(код) в свойства...

По средствам компаса организовать то что вы хотите - нет проблемм. Смотрите SDK, извините но на пальцах объяснять нет времени.

yarikv

Виндоус как то видит обозначение и наименование чертежа. это видно когда устанавливаются дополнительные колонки просмотра информации для файлов в папке. может в этом направлении поработаете?

Sprinter500

Да, действительно, если добавить пункт "Обозначение" появляется номер чертежа. Я не слишком силен в программировании - как его прогаммно извлечь средствами Windows? Через WinApi?
Пробовал открывать файлы *.cdw через блокнот - поиск выдает текст с искомым номером - тоже наверное вариант, но в этом случае может произойти ошибка, так как в некоторых чертежах содержатся номера предыдущих версий.
Как Вы думаете, если попробовать написать программу через SDK КОМПАСа, и перерабатывать файлы, с загрузкой файла в окно КОМПАСа - сколько будет уходить времени на модификацию 1 файла. Просто в архиве их десятки тысяч.

cosmosliva

Если на C#, то так

        //Чтение дополнительных свойств файла -
        //Обозначение и Наименование чертежа -
        //средствами внутренних методов Windows - используем Shell32.dll
        private void SpecificPropertyFile(FileInfo filename, DrawingProp OneDraw)
        {
            // Creating a ShellClass Object from the Shell32
     // Размещение Shell32 - C:\WINDOWS\system32
            ShellClass sh = new ShellClass();
            // Creating a Folder Object from Folder that inculdes the File
            Folder dir = sh.NameSpace(Path.GetDirectoryName(filename.FullName));
            // Creating a new FolderItem from Folder that includes the File
            FolderItem item = dir.ParseName(Path.GetFileName(filename.FullName));
           
            // Наименование
           OneDraw.Description = dir.GetDetailsOf(item, 9);
// Обозначение
           OneDraw.PartNumber = dir.GetDetailsOf(item, 10);
        }


похоже такой трюк подходит только для версии 9.2

Sprinter500

Спасибо большое!  :) Кажется Вы решили мою проблему. Теперь попробую аналогичный код в Visual Basic. Надеюсь будет работать!

Sprinter500

Не получается создать аналогичный код в Visual Basic.  :(((. Придется искать другой путь...

Sprinter500

Наконец-то доделал приложение!  :) Работает посредством API Компас. Скорость переименования где то 3 файла в сек - вполне удовлетворительный показатель. Кому может понадобится исходник на VB пишите, скину.

sulyco