IMBASE, или Жизнь болта
Основой всех развитых компьютерных систем является соответствующая информационно-справочная база. В первую очередь это относится к пакетам, используемым в области автоматизации конструкторско-технологической подготовки производства. НПП «Интермех» занимается исследованиями и разработкой этого направления уже более десяти лет.
В настоящей статье вашему вниманию будет представлен полный цикл жизни одного из стандартных элементов справочной базы данных IMBASE, с момента его рождения до завоевания им «всенародного признания». И этот элемент — самый обычный болт ГОСТ 7805-70.
Рождение болта в IMBASE — ответственнейший этап, поэтому вы должны как следует к нему подготовиться. Не секрет, что от того, как выполнены подготовительные работы, зависит в дальнейшем успех всего предприятия. Вот и в IMBASE следует с особой тщательностью подходить к проектированию таблицы с данными. Главное, на что необходимо обратить ваше внимание: как правильно выбрать набор полей для хранения параметров изделия.
Этот набор должен удовлетворять требованиям всех систем, которые будут пользоваться вашими данными, поскольку лишь в этом случае можно говорить об универсальной системе. Основная ошибка абсолютного большинства информационных систем заключается в том, что элементы базы данных хранятся в «укрупненном виде», то есть создается поле обозначение и в него заносится строка: болт М2-6g*14.36.013 ГОСТ 7805-70, в следующую запись попадает что-либо вроде: болт М3-6g*4.36.016 ГОСТ 7805-70 и т.д.
Да, для системы АСУ такой подход порой бывает оправдан. Но ни о какой универсальности базы данных здесь не может быть и речи. Ни одна конструкторская система не сможет использовать для своей работы информацию в таком виде. Чтобы создать верный чертеж изделия, этого недостаточно. Кто-то возразит, что можно извлечь конструктивные параметры из обозначения (диаметр, длину, длину резьбы), но в таком случае алгоритм разбора параметров для каждого вида изделия будет иным, и потому нельзя гарантировать его 100-процентную работоспособность.
В IMBASE мы предлагаем иной подход, что называется — «от противного». При этом каждый параметр изделия хранится в «своем» поле, а при необходимости из их может быть «склеено» Обозначение, Наименование или еще что-то подобное, отсутствовавшее на момент создания таблицы. В этом случае снимается риск потери информации, что теоретически возможно в случае разбиения данных на составляющие.
Основной набор полей рассматриваемого нами случая показан на рис. 1.
Если внимательно посмотреть на рисунок, можно увидеть, что каждое поле в IMBASE имеет два имени: короткое и длинное. Длинное имя позволяет человеку оценить назначение поля, тогда как короткое необходимо для систем CAD (об этом мы расскажем дальше). Если вы планируете использовать свое изделие исключительно в чертежных целях, на этом можно было бы и закончить, однако мы рассматриваем универсальную систему, поэтому должны добавить к нашей новой таблице еще несколько штрихов. Для полноценного описания элемента потребуются дополнительно поля Класс и ГОСТ. Как гласит восточная мудрость: «Сколько ни говори «халва», во рту слаще не станет». Так и в нашем случае нет смысла вносить 200-й раз в таблицу текст «ГОСТ 7805-70», тем более что он может в любой момент измениться. Для выхода из подобных ситуаций IMBASE предлагает простое решение, дополнительные плюсы которого вы сможете оценить далее. Мы всего лишь добавим в таблицу Вычисляемые поля (рис. 2).
Как видно из рис. 3, поля Класс и ГОСТ помечены специальным символом, указывающим на то, что в действительности их в таблице нет, но в то же время они как бы и есть.
Последний штрих в создании новой таблицы — ее название. Мы рекомендуем в качестве короткого имени давать такое, которое начинается с буквы «T», а далее указывать номер стандарта (рис. 4). Поскольку контроль за коротким именем таблицы осуществляется на уровне сервера базы данных, вы просто физически не сможете создать еще одну таблицу с тем же самым именем, что снимет риск повторного внесения информации в вашу базу данных, особенно если с ней работают несколько подразделений предприятия.
Длинное имя следует давать сообразно с содержимым и руководствоваться собственной фантазией.
Нажатием на кнопку Готово IMBASE в базе данных создается новая таблица, и мы можем перейти к следующему, не менее занимательному этапу: к заполнению таблицы данными.
Для любителей «зреть в корень» приводим скрипт на DDL, который генерируется системой для создания таблицы на SQL-сервере:
CREATE TABLE T7805 ( F_KEY KEY_DEF // Поле для формирования NOT NULL, уникального кода записи F3 DOUBLE_DEF, // Диаметр резьбы F4 DOUBLE_DEF, // Длина F5 DOUBLE_DEF, // Длина резьбы F6 DOUBLE_DEF, // Высота головки F7 DOUBLE_DEF // Размер под ключ )
Как вы могли заметить, в таблице отсутствуют поля для хранения данных Класс и ГОСТ. Мы уже говорили выше, что эти поля являются вычисляемыми и данные для их вычисления находятся в другом месте.
Помимо таблиц с данными в IMBASE существует еще одна группа таблиц, которые называются Каталогами. Они служат для создания иерархической структуры базы данных, а кроме того, выступают в роли хранилища дополнительных свойств таблиц и содержат ссылки на эти самые таблицы. Каталоги представляют собой пару таблиц. В первой из них содержится дерево иерархии, а в записях второй хранятся ссылки на таблицы и их параметры. В роли ссылки выступает специальное поле, в котором хранится имя таблицы базы данных; в нашем случае это T7805. Таким образом, таблица с данными в IMBASE всегда существует в контексте соответствующей записи каталога (это похоже на ярлык в Windows). Заполнение свойств «ярлыка» будет предложено вам после создания таблицы в базе (рис. 5).
Именно здесь будут храниться значения для полей Класс и ГОСТ.
Теперь перейдем, наконец, к заполнению таблицы. Подробно описывать этот процесс не стоит, однако следует отметить некоторые заслуживающие внимания моменты. При создании новой записи вычисляемые поля Класс и ГОСТ заполняются автоматически (рис. 6).
Вам остается лишь заполнить основные поля. Нетерпеливый читатель в этом месте воскликнет: «Минуточку!!! А где же Наименование и Обозначение, о котором шла речь в начале статьи?!» Не надо спешить. Сначала заполним наши 300 с лишним записей, а потом вернемся и к Обозначению... Ну что, заполнили? Тогда продолжим. Как вы уже знаете, в IMBASE существуют вычисляемые поля. Поле ГОСТ вычисляется достаточно просто, оно как бы дублирует данные из поля ГОСТ Каталога и в каждой записи таблицы содержит одни и те же значения. С наименованием дело обстоит иначе — в каждой записи оно разное! IMBASE поддерживает еще один вид вычисляемого поля, который можно определить как Макропостановку.
В редакторе структуры таблицы создадим новое вычисляемое поле, которое, естественно, назовем Наименование, и установим ему соответствующие атрибуты (рис. 7, 8).
После выполнения всех этих, на первый взгляд сложных, манипуляций произошло маленькое чудо: в таблице появилось новое вычисляемое поле, и его значение в каждой записи разное!
Как настоящая конструкторско-технологическая база, IMBASE учитывает все особенности работы со стандартными элементами, включая возможность создания многоуровневой иерархии выбора с учетом покрытий, материалов, классов прочности и т.д. Проиллюстрируем это на примере нашего болта. Конструктор, делая выбор болта, может руководствоваться не только размерами, но и условиями применения и эксплуатации всего изделия в целом. В этом случае определяющими факторами становятся и покрытие, и класс прочности, и материал болта. При традиционном подходе для каждого варианта сочетания класса прочности, материала и покрытия необходимо создавать в таблице отдельную запись. Предположим, что у нас в таблице всего 300 записей, 3 покрытия, 2 материала и 2 класса прочности. Путем несложных арифметических вычислений мы получаем таблицу из 3600 записей. На самом деле различных вариантов может быть гораздо больше. Для примера взгляните на рис. 9, показывающий различные варианты простого винта (с любезного разрешения одного из крупнейших российских предприятий).
Итак, в базе у нас порядок, что же дальше? А дальше наш элемент уже может быть использован различными системами. Как это происходит, мы увидим ниже.
Параметры болта, хранящиеся в базе данных, на первый взгляд являются избыточными. «Зачем мне знать, покупной это болт или нет», — скажет конструктор. Но для системы АСУ не важна длина резьбы, и это же можно сказать о любой информационной системе — только не о IMBASE. Все системы НПП «Интермех» хранят в своих документах, будь то чертеж CADMECH, спецификация SEARCH и AVS или технологический процесс TECHCARD, лишь одно значение, полученное при выборе элемента из базы данных IMBASE. Это — ключ IMBASE. Он представляет собой строку из 20 символов, в которой закодирована вся информация об элементе базы данных. Имея в документе один только этот ключ, вы в любой момент можете получить от IMBASE все остальное. Генерация данного ключа осуществляется автоматически, и пользователь не способен оказать влияние на этот процесс, что исключает риски ошибок и неверной интерпретации хранящейся в документе информации. Формат ключа представлен на рис. 10.
Ключ состоит из четырех частей:
- Контрольный код.
- Ключ каталога — уникальный идентификатор, который присваивается каждой таблице IMBASE.
- Ключ записи каталога — уникальный идентификатор, который присваивается каждой записи каталога.
- Ключ записи таблицы — уникальный идентификатор, который присваивается каждой записи в таблице.
Если с полями 1, 2 и 4 все понятно, то содержимое поля 3 требует некоторого пояснения. Поскольку одна и та же таблица (ссылка на таблицу) может быть использована несколько раз, то применение в качестве ключа именно ключа ссылки (записи в каталоге), а не ключа таблицы позволяет получать уникальный набор ключей для одной и той же записи таблицы в случаях различного вхождения таблицы в каталог. Проще говоря, болт с покрытием и без покрытия с диаметром 2,5 — это не то же самое, хотя в обоих случаях из таблицы выбирается одна и та же запись.
Далее мы рассмотрим примеры использования нашего элемента в различных пакетах НПП «Интермех».
CADMECH 2D
При генерации крепежного элемента в CADMECH 2D данные из соответствующих полей таблицы передаются LISP-программе, которая и создает элемент. Однако существует возможность создания собственных вариантов крепежных элементов при помощи встроенного 2D-параметризатора PARAMECH. Для этого нам потребуется создать плоскую модель, параметры которой необходимо связать со столбцами базы данных. На рис. 11 представлена такая модель.
Соответствие параметров модели и полей в базе данных достигается по коротким именам в базе и именам переменных в модели. При вставке модели в чертеж осуществляется вызов API-функции IMBASE, позволяющей выбрать из базы нужный типоразмер (рис. 12).
После этого в CADMECH передаются как конструктивные параметры, так и ключ IMBASE, который затем включается в специальный блок атрибутов и используется для идентификации элемента (рис. 13).
Аналогичным образом CADMECH содержит ссылки на все стандартные (и пользовательские) изделия, выбранные при помощи IMBASE.
CADMECH Desktop
Другой конструкторской системой, разработанной в НПП «Интермех», является CADMECH Desktop. Это очень удобная система 3D-проектирования, которая предоставляет пользователю огромный набор таких типовых элементов, как различного рода пазы, вырезы, выборки, бобышки, приливы, ребра и т.д., то есть элементов, ежедневно и ежечасно используемых конструктором при проектировании. При использовании крепежных изделий CADMECH Desktop (как и CADMECH 2D) не только генерирует экземпляр винта или болта, но и позволяет полностью автоматизировать процесс генерации крепежного соединения. Этот процесс включает в себя подбор соответствующих шайб, гаек, а также создание отверстий в деталях (рис. 14).
Для генерации крепежа CADMECH Desktop использует 3D-мастер-модели, параметры обновления которых выбираются из базы данных и связываются при помощи коротких имен модели и таблицы (рис. 15).
AVS
После оформления сборочного чертежа CADMECH собирает всю информацию о стандартных изделиях, деталях и др., а затем и передает ее в систему проектирования спецификаций AVS. Для всех изделий, параметры которых были взяты из IMBASE, в AVS передается ключ IMBASE. С помощью функций API AVS обращается к базе данных и получает те параметры, которые необходимы для составления спецификации. Это могут быть наименование, раздел спецификации, порядок сортировки и другие параметры, которых нет в чертеже. В случае если в базе произошли изменения (например, поменялся год ГОСТа), AVS позволяет произвести синхронизацию с базой данных (рис. 16).
На приведенных примерах мы постарались проследить основные этапы жизни обычного болта и продемонстрировать принципиальный подход НПП «Интермех» к созданию универсальной системы ведения базы данных, позволяющей связать воедино целый комплекс разнообразных систем проектирования конструкторской документации.
«САПР и графика» 5'2001