Внимание!!! В разделе ДОК-Инженер можно скачать бесплатную программу-плагин для T-Flex CAD - "ДОК-Инженер Реаниматор" версия 3. Ниже представлено описание 2-й версии программы.

Способы реструктурирования файлов
T-Flex CAD (история создания).

Последствия нечеткого структурирования файлов T-Flex CAD.

К сожалению, многие пользователи T-Flex CAD даже не подозревают, к каким последствиям может привести отсутствие изначально правильного структурирования файлов. Часто файлы с конструкторской документацией именуются «абы как» и не отражают характера их содержимого, хранятся в личных папках пользователей, а не в папках с именем изделия или проекта, к которому они относятся. К тому же, очень часто рабочие файлы хранятся раздельно - на нескольких ПК пользователей, пусть даже и объединенных в локальную сеть. Из-за этого один и тот же электронный сборочный документ (далее по тексту - сборка) может открываться по сети неодинаково на разных ПК, в том смысле, что на одном ПК сборка открывается нормально, а на другом - с потерянными фрагментами.

Очевидно, что при таком хранении работать с электронными документами (далее для простоты - документ) с течением времени будет становиться все труднее и труднее. Ведь мест, где может находиться файл с каким-либо документом, может быть несколько. И если, на первый взгляд, искомого файла в рассматриваемой папке нет, то это не значит, что его действительно там нет, просто файл может быть назван не так, как ожидалось.

Как следствие, могут начать появляться копии документов (в данном случае, копиями называется группа документов, имеющих одинаковое «обозначение», но не обязательно идентичных по графическому содержанию и кодам данных). Иногда копии документов создаются «с нуля» - если сотрудник попросту не смог найти в куче папок и файлов существующий документ. Иногда копии документов создаются осознанно, при помощи простого копирования файлов. Это делается, например: для повышения устойчивости сборок к потере фрагментов, из которых составлена сборка; для «облегчения» 3D сборок за счет использования фрагментов, не содержащих 2D чертежа и т.д.

Может показаться, что в наличии копий документов нет ничего плохого, однако это не так. Существование копий документов может добавить лишней работы при проведении изменений в утвержденном документе, так как для внесения изменений может быть взят документ, не содержащий последних утвержденных изменений. Но что еще хуже, существование копий может явиться причиной серьезной ошибки конструктора, которая может выявиться уже на этапе сборки изделия в «железе»…

Многим, наверное, сложно представить себе такой беспорядок, который здесь описывается, но именно с таким положением дел некогда пришлось столкнуться мне. Бардак не явился в одночасье, он накопился за несколько лет проектирования в T-Flex CAD и с каждым днем лишь продолжал разрастаться, как снежный ком. Естественно, это не позволяло нормально выполнять свои обязанности и не могло не сказаться на общей производительности отдела, а также эмоциональном состоянии сотрудников. Было совершенно очевидно, что с этим нужно что-то делать, и чем раньше – тем лучше!

Поиск решения и «подводные камни».

Необходимы были серьезные преобразования в структуре хранения файлов T-Flex CAD. И для начала необходимо было определиться с желаемой структурой. Она была представлена такой:

1. Файлы со всех ПК сети должны быть объединены и сложены на одном локальном диске на выбранном компьютере (на сервере). Локальный диск не должен быть системным. Обращение к этому диску с других ПК должно осуществляться посредством «сетевого диска», причем на всех ПК буква этого диска должна быть одинаковой.

2. Все файлы должны иметь одинаковую схему именования. Аналогично с именами папок. Для папок приняли следующую схему: «<Код изделия> (<обозначение изделия>)»; для файлов: «<обозначение> <код документа, если имеется> - <наименование>». Наличие обозначения в имени файла указывает на уникальность документа, и в последствии может быть использовано при поиске конкретного документа.

3. Каждый файл должен храниться только в папке с тем изделием, к которому относится непосредственно. Разделение на подпапки, например, «Детали» и «Сборки» не допускается.

4. В хранилище файлов каждый документ должен быть в единственном экземпляре и представлен только одним файлом, содержащим как чертеж, так и 3D модель. Документ может иметь ссылки на другие файлы. Лишние копии должны быть удалены.

Кроме этого, были сформулированы требования к построению документов в T-Flex CAD для обеспечения их взаимозаменяемости в сборках, надежности самих сборок и т.д. Однако это совсем другая тема и здесь она рассматриваться не будет.

Осталось только понять - как добиться желаемого результата? В этом вопросе имелись очень значимые нюансы:

1. При составлении сборок из фрагментов, в сборках хранятся только ссылки на файлы фрагментов, геометрия фрагментов в сборках не храниться, она подгружается из файлов фрагментов в момент открытия сборки в T-Flex CAD. Соответственно, при перемещении или переименовании любого файла или папки ссылки в сборках могут становиться неактуальными, что приведет к «разрушению» сборок.

2. Не понятно, как эффективно осуществлять поиск копий документов, если файлы с копиями документов могут иметь не только разное местоположение, но и разные имена.

3. Для корректного проведения многих операций с файлами (например, для удаления файла, содержащего неактуальную копию документа), а так же для корректного проведения изменений в чертежах и 3D моделях уже после реструктуризации файлов T-Flex CAD необходим инструмент, позволяющий определять, в каких документах имеются ссылки на выбранный файл. Стандартного такого инструмента не существует.

Все это наводило на мысль о решении типа «разрубить гордиев узел», то есть реструктурировать данные, не взирая на потерю ссылок, при этом, приведя в плачевное состояние все созданное за несколько лет и потом «скрепя зубами» пытаться восстановить разрушенное. Огорчало и то, что даже если привести структуру файлов к желаемому виду, «подлечив» при этом все сборки, то это не спасало от необходимости реструктурирования файлов в дальнейшем. Например, при разделении одного изделия на два так, что одно изделие должно входить в другое.

Решение проблемы более мягкими методами требовало особого подхода. И такое решение, учитывающее все вышеописанные нюансы, мне удалось найти, реализовать и применить на практике.

Решение состояло в разработке комплекса программ специализированного назначения на основе T-Flex CAD Open API («глаза» - как я называю это комплекс). Перечислю основные задачи, которые призван выполнять программный комплекс:

- минимизация тех негативных факторов, которые сопровождают процесс реструктурирования файлов системы T-Flex CAD и являются неизбежными;

- предоставление информации о связях между файлами, о наличии и местоположении копий файлов, копий документов и другой необходимой информации в удобном для восприятия виде для последующего принятия решения пользователем о действиях над файлами;

- полуавтоматическое переименование файлов согласно принятой схеме именования.

Комплекс программ для реструктурирования файлов T-Flex CAD.

Комплекс программ состоит из следующих модулей:
1. Модуль синхронизации содержимого файлов с базой данных.
2. Модуль поиска и замены фрагментов.
3. Модуль определения сборок и переименования файлов.

Теперь рассмотрим функциональность и некоторые особенности каждого модуля по порядку.

1. Модуль синхронизации содержимого файлов с базой данных. Этот модуль не имеет пользовательского интерфейса. Он отвечает за создание и обновление базы данных по всем файлам T-Flex CAD в пределах единой рабочей области - локального диска или директории. В базу данных, представляющую простой текстовый файл, вносится вся необходимая для работы комплекса программ информация. Модуль не производит автоматического отслеживания изменений в файлах T-Flex CAD, поэтому системный планировщик заданий настроен на периодический запуск модуля (в данном случае достаточно 2-х раз в день: в начале рабочего дня и в обеденный перерыв). Модуль также может быть запущен вручную, например, если о необходимости этого сообщил один из 2-х оставшихся модулей.

2. Модуль поиска и замены фрагментов. Основные задачи модуля:

- поиска потерянных фрагментов в сборках в соответствии с параметрами поиска и восстановление потерянных ссылок фрагментов;

- определение групп файлов идентичных от 1-го до последнего бита;

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

Модуль способен работать в 4-х режимах, первые 3 из которых в интеграции с T-Flex CAD:

а. Поиск и замена потерянных фрагментов (см. рис. 1). Модуль запускается в этом режиме автоматически при открытии документа в T-Flex CAD, если в документе обнаружен хотя бы один потерянный фрагмент. Если в документе имеется группа фрагментов со ссылкой на один и тот же несуществующий файл, то в окне потерянных фрагментов эта группа будет представлена единственной ссылкой. Соответственно, при замене ссылки изменения коснутся всех фрагментов группы. Применение изменений в документе производится всего один раз – по окончании работы модуля, если хотя бы одна ссылка была переопределена. Отмена или применение изменений к документу может быть произведено на любом этапе работы модуля.

Рис. 1

б. Просмотр всех фрагментов документа с возможностью их замены (см. рис. 2). В отличие от предыдущего режима в данном режиме в списке «Все фрагменты документа» отображаются ссылки всех фрагментов документа, за исключением внутренних.

Рис.2

в. Поиск документов. Модуль запускается в данном режиме, если в окне T-Flex CAD не открыт ни один документ (см. рис. 3). В этом режиме список «Фрагменты документа» не отображается. Не доступны также и команды замены ссылок.

Рис. 3

г. Поиск документов в самостоятельном приложении. Этот режим соответствует предыдущему, с тем отличием, что он не требует запуска T-Flex CAD.

Модуль может осуществлять поиск, как по базе данных, так и в файловой системе. Поиск по базе данных работает на порядок быстрее, чем поиск в файловой системе, особенно это заметно при поиске по сети. Кроме этого возможности поиска по базе данных выше, так как в этом случае становится возможным гибридный поиск, когда поиск ведется не только в именах файлов, но и в обозначении и наименовании документа. Например, если ссылка на фрагмент в документе содержит уникальный номер в имени файла, то модуль автоматически определяет его. Это позволяет при установленном флаге «По номеру» осуществлять поиск документов с таким же номером в обозначении документа, а также файлов содержащих данный номер в имени файла (см. рис 1). Таким образом, в результате поиска могут быть найдены файлы с именем, не совпадающим с именем оригинального файла, но удовлетворяющие запросу пользователя. Доступен также поиск файла по заданной пользователем подстроке. Этот вид поиска так же является гибридным.

Кнопка «Директории поиска» открывает окно, в котором указываются директории для поиска в файловой системе (см. рис. 4). Директорий может быть много, и они могут быть расположены на разных ПК. Эта функциональность задумывалась для страховки от ошибочных действий пользователя. Например, какой-либо файл был по ошибке удален, то можно включить поиск в директории с архивными копиями файлов, а после нахождения скопировать требуемый файл из архива в хранилище файлов.

Рис. 4

Включение флага «Проверять найденные файлы на идентичность» позволяет проверять список результатов поиска на наличие в нем групп файлов идентичных от первого до последнего бита, в не зависимости от совпадения имен файлов. Результаты проверки выводятся в списке, расположенном во вкладке «Одинаковые файлы» в сгруппированном виде. Подобное сравнение может быть произведено не только для файлов T-Flex CAD, но и для любых других типов файлов. Для этого нужно всего лишь отключить флаг «Только *.grb файлы», который запрещает или разрешает добавлять в список результатов поиска файлы с расширением, отличным от *.grb. Для добавления файлов в список результатов поиска, помимо использования поиска, можно явно указать файлы при помощи кнопки «Добавить», либо перетащить требуемые файлы и директории, со всем их содержимым, из проводника. Содержимое файлов T-Flex CAD сразу же можно просмотреть в небольшом окне внизу справа, что очень удобно.

На вкладке «С одинаковым обозначением» содержится список (см. рис. 3), в который по группам размещаются файлы с одинаковым обозначением и кодом документа. Другими словами в этом списке группируются копии документов. Как ведется поиск копий документов? Для каждого файла из списка результатов поиска в базе данных определяется обозначение и код документа. Далее во всей базе данных осуществляется поиск документов с аналогичным обозначением и кодом документа. Если найдено более одного документа с каким-либо обозначением, то в списке «С одинаковым обозначением» создается отдельная группа, в которую помещаются все копии документа. Построение этого списка занимает достаточно продолжительное время, поэтому запускается отдельно от основного поиска, через контекстное меню.

Кнопка «Открыть в T-Flex CAD» позволяет открыть выбранный файл в T-Flex CAD из любого режима.

Кнопка «Определить сборки» запускает модуль определения сборок и переименования файлов и передает в него выбранный файл. Существует также возможность передачи в модуль группы файлов, если воспользоваться контекстным меню в списках «Одинаковые файлы» и «С одинаковым обозначением».

3. Модуль определения сборок и переименования файлов (см. рис. 5). Основная задача модуля – предоставить информацию о взаимосвязях файлов, то есть ту информацию, без которой нельзя быть уверенным в том, что переименование или удаление файла не приведет к возникновению тяжело восстанавливаемых «разрушений» в сборках, и без которой нельзя предотвратить подобных «разрушений».

Рис. 5

Модуль может быть запущен либо в режиме интеграции с T-Flex CAD, в этом случае в него сразу подгружается открытый в T-Flex CAD документ, либо из модуля поиска и замены фрагментов.

В список «Документы» добавляются файлы, для которых требуется проследить взаимосвязи и, возможно, переместить/переименовать/удалить. Для добавления файлов можно воспользоваться кнопками «Добавить файл» или «Добавить папку». Кроме этого файлы и директории можно перетаскивать прямо из проводника.

Чуть ниже расположены две вкладки «Сборки» и «Фрагменты».

На вкладке «Фрагменты» указывается список фрагментов выбранного документа. Кроме непосредственных фрагментов документа в этот список добавляются фрагменты, имеющиеся во внутренних фрагментах этого документа, но не все. Объяснить - какие именно, достаточно сложно, да и нет смысла. Главное – понять, что это нужно, чтобы ни одна ссылка на внешний фрагмент не осталась неучтенной. Для этого списка средства отображения позволяют отличать:

- собственные фрагменты документа,

- фрагменты из внутренних фрагментов,

- потерянные фрагменты.

На вкладке «Сборки» указывается список сборок, в которых имеются ссылки на файлы с таким же именем, как у выбранного документа. Подобно списку фрагментов, средства отображения позволяют различать сборки, в которых имеется:

- ссылка на выбранный документ;

- ссылка на некоторый файл с именем, аналогичным выбранному документу, но хранимый в другой папке;

- потерянная ссылка.

Ниже списка сборок имеется два вспомогательных списка: «Ссылки в сборке» и «Файлы с аналогичным именем» (см. рис. 6). Первый из этих списков, позволяет просматривать точную ссылку на тот фрагмент сборки, имя которого совпадает с именем выбранного документа. Второй список, показывает все файлы в базе данных, имя которых также совпадает с именем выбранного документа.

Рис. 6

Для переименования файла документа в соответствии с принятой схемой именования имеется строка «Предлагается переименовать в» и кнопка «Переименовать». Модуль сам формирует предлагаемое имя для переименования, причем модуль не позволит произвести переименование, если файл с предлагаемым именем уже существует. Предлагаемое имя может быть скорректировано пользователем.

При разработке комплекса программ не был забыт тот факт, что в сборках кроме ссылок на фрагменты могут быть еще ссылки на автоматически генерируемые спецификации, хранимые в самостоятельном файле. Переименовывать файлы автоматических спецификаций из проводника нельзя - это нужно делать из документа сборки, в противном случае между сборкой и спецификациями будет нарушена двусторонняя связь. Несмотря на то, что ссылки на автоматические спецификации в модуле нигде не отображаются, модуль отслеживает наличие двусторонних связей в файлах и не разрешает переименовывать эти файлы. Кроме этого существует индикация наличия двусторонних ссылок (см. рис. 7 в правом нижнем углу). Этого вполне достаточно, чтобы при необходимости корректно переименовать или переместить автоматические спецификации.

Рис. 7

Ниже строки переименования расположены 2 окна просмотра содержимого файлов T-Flex CAD: левое – для «быстрого» просмотра двухмерной графики, правое - для просмотра трехмерной и двухмерной графики документа. Соответственно, просмотр в правом окне работает несколько медленнее, поэтому предусмотрена возможность включения и отключения этого окна при помощи флага «Просмотр 3D».

Может сложиться мнение, что рассматриваемый модуль не позволяет просматривать взаимосвязи между файлами дальше одного уровня в ту или другую сторону, относительно выбранного документа. Это не верно. Для просмотра цепочки взаимосвязанных файлов нужно просто копировать выбранную ссылку из списка «Сборки» или «Фрагменты» в список «Документы», где для нее становится доступным просмотр связей. Для этого предназначена кнопка «Отправить в список «Документы».

Как показывает практика, одним из часто выполняемых действий во время реструктурирования является одиночное перемещение файлов, например, перемещение файла детали в папку с той сборкой, в которой деталь имеет первичное применение. Модуль позволяет несколько упростить подобную задачу. Для этого в контекстном меню списка «Документы» доступна команда «Вырезать» файл в буфер, а в правой части модуля добавлена кнопка «Перейти к файлу». Соответственно, команду «Вырезать» нужно выполнить для файла детали, затем выделить файл сборки (в любом из списков) и нажать «Перейти к файлу». В открывшемся окне из контекстного меню остается лишь выполнить команду «Вставить» файл. Все достаточно просто и не нужно самому искать в проводнике файл детали или папку сборки. Если же деталь используется в нескольких сборках и не понятно, к какой именно сборке она «приписана», то это достаточно легко определить - в окне просмотра для документа детали смотрим графу «Первичная применяемость», и определяем, в какой из сборок в обозначении имеется тот же номер. Если номер совпадает, то именно к этой сборке и следует переместить файл детали.

Для переименования/перемещения/удаления файлов часто требуется запомнить список сборок какого-либо документа. Для этого в контекстном меню списка сборок предусмотрен пункт «Сохранить список в текстовый файл» (см. рис. 6). Предполагается, что текстовый файл всегда один, его имя и местоположение задаются при первом сохранении, хотя и могут быть изменены в последствии. Это позволяет открывать файл на редактирование прямо из модуля, для этого служит пункт «Редактировать текстовый файл», расположенный в том же контекстном меню.

Хотелось бы отметить, что ни один из модулей комплекса не изменяет и не сохраняет документы сам по себе – всем управляет пользователь. Несмотря на то, что каждый модуль может быть запущен, как самостоятельное приложение (или из самостоятельного приложения) работа модулей возможна, только при наличии на ПК T Flex CAD не ниже 9 версии.

Комплекс программ на практике.

Перед началом реструктурирования были сделаны архивные копии всех файлов по каждому ПК в отдельности. Следующее действие – единовременное перемещение всех файлов T-Flex CAD со всех ПК на сервер и настройка сетевых дисков. Если делать это постепенно, то нельзя получить совокупную информацию о взаимосвязях между файлами и о наличии и местоположении копий документов. Поэтому перемещение производилось за один раз. Причем, изначально на сервере были созданы папки, соответствующие сетевым именам ПК, в которые и перекладывались все файлы. Такое разделение было сделано временно - для того, чтобы на основе анализа адреса потерянного фрагмента и адреса самой сборки можно было легко догадаться, где на самом деле должен находиться файл фрагмента.

Далее необходимо было создать базу данных по всем файлам T-Flex CAD нового хранилища файлов. Это достаточно долгая операция, которая может продолжаться часами. После создания базы данных был настроен системный планировщик заданий на запуск модуля синхронизации 2 раза в день.

Как и ожидалось, после перемещения фалов в сборках сразу начали появляться потерянные фрагменты. Однако в этот момент нет необходимости целенаправленно восстанавливать потерянные ссылки на фрагменты, достаточно их восстановить в тех сборках и подсборках, которые в данный момент находятся в разработке. Дело в том, что в этот момент структура папок в хранилище еще далека от желаемой. На этом этапе следует больше внимания уделить искоренению копий документов.

Искоренение, я специально не использую слово «удаление», копий документов, наверное, является самой сложной частью всего процесса реструктурирования и наведения порядка.

С одной стороны, сложность заключается в том, что перед удалением файла необходимо сделать так, чтобы ни в одной сборке не было ссылок на удаляемый файл - только в этом случае удаление будет безопасным для сборок. Для того, чтобы сборка не содержала ссылок на файл-претендент на удаление, необходимо в каждой такой сборке заменить все ссылки соответствующих фрагментов на файл с актуальной копией документа. И если не обеспечена взаимозаменяемость фрагментов в сборках, то, в некоторых случаях, простой заменой ссылок фрагментов не обойтись – дополнительно потребуется переустановка фрагментов по месту закрепления.

С другой стороны, сложность заключается в том, как определить, какая из нескольких копий документа является актуальной или наиболее соответствует актуальной. В общем случае, для этого необходимо использовать заведомо достоверный источник для сравнения. В моем случае, таким источником был «бумажный» альбом документации.

Предположим, что на руках имеется альбом документации какого-либо изделия и требуется определить во всем файловом хранилище копии документов, относящиеся только к этому изделию. В моем случае в хранилище файлов имелась одна или несколько папок с файлами изделия. Это несколько упростило процесс – нужно было просто добавить эту папку в список результатов поиска в модуле поиска и замены фрагментов и запустить построение списка «С одинаковым обозначением». Для некоторых документов потребовалось определить копии в индивидуальном порядке, вводя в строку поиска обозначение документа из альбома.

Процесс искоренения копий документов был разделен на 3 стадии:

- удаление копий файлов,

- восстановление обозначения в документах,

- борьба с оставшимися копиями документов.

Почему первая стадия - удаление копий файлов? Копии файлов – это частный случай копий документов. Копии файлов являются взаимозаменяемыми, поэтому с ними легче разобраться. Как правило, копии файлов можно просто удалять, главное следить за тем, чтобы у них были одинаковые имена, и в хранилище больше не было файлов с аналогичным именем.

Для того, чтобы модуль поиска и замены фрагментов смог определить все копии документов необходимо после удаления копий файлов «восстановить» обозначение в тех документах, в которых модуль синхронизации не смог его определить. Такое может случиться, например, если в документе раскрыты форматки. Методика восстановления достаточно проста: сначала нужно добавить в список результатов поиска в модуле поиска и замены фрагментов файл, в котором обозначение попросту не задано, и запустить построение списка «С одинаковым обозначением». В результате построения в списке будет всего одна группа с «пустым» обозначением. Затем необходимо пройтись по всем файлам группы и, используя окно просмотра, убедиться, что обозначение в файлах действительно не задано. Там где обозначение все же задано, нужно открыть документ в T-Flex CAD и, как минимум, в переменную с именем «$Обозначение» записать обозначение документа. Допускается записывать обозначение во фрагмент форматки. После восстановления обозначения документов и актуализации базы данных можно приступать к искоренению оставшихся копий документов…

Следующий этап – задание уникальных имен файлов. На самом деле это можно делать параллельно с ведением борьбы с копиями документов, но, возможно, проще - отдельным этапом. Задача здесь заключается в том, чтобы при переименовании файла одновременно произвести корректировку ссылок во всех сборках, в которых используется или должен использоваться этот файл. В моем случае, большая часть файлов, содержала в имени файла уникальный номер, что позволяло переименовывать файлы без соответствующей корректировки ссылок в сборках - так как алгоритм модуля поиска и замены фрагментов позволял в дальнейшем осуществлять поиск по уникальному номеру, который умеет определять самостоятельно.

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

Во время реструктурирования удалось избежать катастрофического разрушения сборок и провести его практически без ущерба для основных рабочих процессов. Сейчас структура файлового хранилища достаточно ясная и позволяет избежать многих ошибок и лишних действий в работе инженера-конструктора. Одним из важных результатов является то, что была обеспечена «подвижность» файлов в хранилище. Это значит, что файлы теперь можно спокойно перемещать куда угодно в пределах рабочего диска, не заботясь о фрагментах в сборках. Это, конечно, не предотвратит потерю фрагментов, но теперь это уже не является серьезной проблемой, так как при поиске потерянного фрагмента модуль поиска и замены фрагментов будет предоставлять каждый раз на выбор всего один файл, не позволяя сделать ошибку. В этом случае на замену ссылок уходят секунды. Поэтому такие действия, как разделение/объединение альбомов чертежей уже не представляют проблемы.

Опубликовано 10.03.2010.

Публикация материалов с сайта без ссылки на сайт запрещена.

Copyright © Божик Роман Михайлович, 2010.

Brom25@Yandex.ru.

г. Арзамас.

Бесплатный хостинг uCoz