Решил рассказать о "наборе" утилит разработанных нами ( нуу..95% мною) для работы с Catia v5. Разрабатывалось всё для внутренних нужд компании. Некоторый функционал уже так сказать obsolete так как необходимость в нём пропала. Весь код выложить не могу по понятным причинам но если кого заинтересует какая-нибуь конкретная часть - готов подсказать, что и как там сделано.
Ну так вот:
.net VB (програмил в Visual Studio 2008. код совместим с 2010 вполне просто лицензии на 2010 нету)) аппликейшн с автоапдейтом через интерент (ClickOnce Deployment ). Установлено на всех 3д станциях (кто работает с катией).
Каждый инженер работающий с Catia v5 начинает свой день с запуска этой проги:

* Замазал атрибутику компании.
Перед стартом прога проверяет свою версию и предлагает заапдейтиться если надо (clikonce..).
Первым делом прога определяет в какой стране пользователь её запустил - 2 (у нас несколько офисов по миру). Это говорит проге какие настройки брать для катии в данной стране. Т.е. влияет на пункт 3.
По умолчанию, пользователь сразу после запуска проги может нажать Start или перед этим выбрать Environment:

и с какой лицензией запустить катю:

Набор лицензий меняется в зависимости от страны в которой запущена прога.
Таким образом когда Catia запущена - пользователь может продолжать работать с данной утилитой. К примеру если пользователь хочет создать новый парт\продукт\чертёж - он может кликнуть на одну из 3х кнопок - 1. Наши детали продукты и чертежи очень специфичны, с кучей параметров внутри и т.д. Поэтому мы не пользуемся стандартными катийными новыми партами. Ещё к примеру если вы жмёте на Новый Продукт - то утилита эта создаёт новый продукт и набивает его минимальным набором дополнительных деталей (parts) которые по нашей методологии должны быть в продукте.
Кнопочка Piping - звучит громко но значит мало:)) К модулю пайпинга отношения не имеет. Это просто такой...своего рода каталог по партам труб сделанным в парт дизайне. Иногда требуется людям... Выглядит так:

выбираешь чего надо и если такое есть - кнопочка "загорается"


Нажимаешь кнопочку - и деталь октрывается в катии.
На это заканчивается основной интерфейс.
Переходим к меню:)
Первое меню Menu - содержит наземенимую функцию:


Меню Settings:

Сначала лучше сказать про ENV Path. Это путь к "настройкам" самой утилиты. На данный момент это очень деревянный способ. Это путь к текстовому файлу где собраны основные настройки. Я хотел было собрать это в базе например - но делать всю утилиту зависимой от базы данных это слегка брутализм:) Таким образом утилита проверяет этот путь на наличие интересующего её файла с настройками и даже если его там нету (папка сетевая - вдруг сеть накрылась) утилита "выплёвывает" из себя временную копию в C:\temp\.

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

Доступна только администраторам.
А первый пункт этого меню - Settings Check - пробегает по файлу настроек проверяя всё ли что требуется - доступно) Это происходит так же при старте (на бекграунде) но если вдруг захотелось перепроверить - можно самому нажать и получить краткий отчёт что ОК а что КО..
Теперь самое интересное меню:

По порядку:
Formula Editor

Немного перегруженный интерфейс)) Это был первый функционал - поэтому рука была ещё не набита:) Грубо говоря - выбираете набор партов\продуктов с диска (файлы). Забиваете что вам надо в нихс осздать. Какие свойства или параметры или формулы (связывающие эти же параметры) - жмёте GO - получаете результат:) и отчёт что было создано а что нет и какие были конфликты (может в формуле указали не существующий параметр).
DRW Parameters

Примерно тоже самое что и Formula Editor - только для чертежей. Добавляет параметры с их значениями в набор чертежей.
Оба этих функционала в данный момент уже практически не используются. Они нужны были для "миграции" старых моделей на новую методологию которая требовала создания всех этих параметров и формул. В то время когда это было жуно - было сэкономленно нереальное кол-во времени)))
Structural Attributes

Один из страшнейших функционалов:))) Требовалось каким либо образом переносить информацию из структурных аттрибутов (PlateLength, Weigth...) в проперти инстанса. не спрашивайте зачем и почему:)) надо было:) и используется до сих пор) таким образом эта функция требует одно ручное действие от пользователя - в Structural Design сгенерировать отчёт со всей информацией о структурных деталях. Этот отчёт считывается утилитой и по парт намберам она находит эти детали снова в катие и заполняет их Properties соответвующей информацией из отчёта.
Наш VAR предлагал нам написать функционал без участия пользователя. Утилита сама бы высчитывала у каждое детали её длину...и тд. И хотели они за это много тысяч нерусских денег... Остались сидеть без этих тысяч, а наши пользователи вполне спокойно живут себе с одним лишь ручным действием. Я бы и сам мог написать то что они предлагали, но это явный перегиб. Воротить такое когда вся информация доступна в отчёте.
Drawing Export
На самом деле правильней сказать - конвертация а не экспорт:)

Очередной сумасшедший интерфейс:) Конвертирует Catdrawing в pdf, dxf и гланое для нас - DWG. Когда происходит конвертация в DWG - так же происходит "разброс" геометрии в катиевском чертеже по слоям и "покраска" этой геометрии под стандарты выбранные нами для DWG чертежей. В Катийном чертеже - изначально всё лежит на одной слое и всё одного цвета. После конвертации - в DWG варианте - всё раскрашено и всё на своём слое:)
Конвертирует кстати не по одному а сразу пачку. Можно задать имя файлов которые будут созданы - префикс, постфикс и даже можно использовать в имени файла значения параметров внутри чертежа.
Используется постоянно:)
Export Catia BOM
Особо показывать нечего. нажва - получаете эксель. Стандартная функция катие. НО - в катие как многие может уже знают - если пользоваться этим Bill Of Material - то нельзя сохранить формат этого бома для следующего раза. Он сохраняется только пока открыта катия. При перезапуске - он пропадает. Таким образом данная кнопка перед экспортом всегда задаёт требуемый формат и экспортирует эксель.
**** Checker

Наш с коллегой совместный труд. Это был набор других утилит коотрый мы потом пересли в данный проект. На интерфейсе всё написано что эта функция может делать.
В наших сборка очень много деактивированных объектов (парты\сборки). По нашей методологии в определённый момент мы должны всё что деактивировано - удалить. Что и делают первые два пункта (Count.... Check and delete...).
Resolve *** standards - впринципе как и катия - резолвит парты из экселя с небольшими нашими специфическими запросами:)
Check for Parameter sets in SMT - очень классная функция!:) Она пробегает по всей сборке, по всем партам - в каждом парте она сравнивает один параметр который описывают всю геометрия детали с тем что имеется в нашей базе Smarteam. Если находит идентичную деталь в смартим - она замещает ту что в сборке на ту что в смартиме:) Класс:) Очень люблю эту функцию. Правда с использование ARM в Catia мы меньше стали ей пользоваться:(
Catia Operations
имеет только одно под меню - KILL CATIA. Убивает катю без лишних вопросов:) Тоже самое что енд процесс через таск менеджер.
Benchmark
Тест на производительность а точнее за скорость "открывания" моделей. Мы работает с очень большими сборками. И меняли много разного железа на компьютерах чтобы добиться как можно большей производительности. От части для этого я написал этот мелкий тест который просто загружает пару стандартных моделей - и выдаёт отчёт о том как это прошло: время, память, загрузка цпу..и т.д.

Остаётся лишь меню Info:

всё более менее стандартно. Beta Mode работает только у меня) Открывает спрятанные кнопки которые я использую для разных своих тестов:))))
Такую вот утилиту мы накоидили для себя.
Сейчас ещё в процессе разработки две вещи для смартима:
1) Work Flow initiator
полнейший пока что драфк, альфа, концепт... но основной код коммуникации со смартимом уже есть. Смысл в экспорте из MS Project плана работ и по заданиям в этом плане - запуск разных вокрфлоу. Например у нас в мс проджекте забиты планы на разработку чертежей. индентичные задания - для разных чертежей с разными датами начала и дедлайна. Таким образом мы хотим "считать" информацию из мс проджекта по этим заданиям и запустить на каждое по своему процессу с флоучартом и параметрами дедлайна и т.д.
концепт был доказан - код работает - некрасивый и корявый но работает. теперь ждём и думаем - а надо ли вообще нам это:)))
2) Work Flow Notifier:)))
да да да) Я знаю что можно получать уведомления через аутлук - надо просто настроить смартим нормально. Но пока, от "нечего делать" - за час наверное написал мелкое приложение:

не трубет запущенного смартима. сидит себе в трее и проверяет с задаваемым интервалом - не прислал ли вам кто какое процесс:))
3) ..даже не знаю как назвать.. код написал мой коллега. я ему помогал с идеями так сказать:))
вообще есть у нас один концептуальный проект которые являет собой ОГРОМНУЮ сборку. 80% всей сборки - двигающиеся детали. слава богу идентичные. и нам требовалось проверить их кинематику и вообще для последующей симуляции движения разных подсборок. Проблема была в том, что движения все описаны очень жёткими математическими законами:) возиться с катькиной кинематикой и платить деньги за доп. лицензии не хотелось. Таким образом - мы получаем от наших "вычислителей" экспорт в виде экселя с координатами разными параметрами изменения углов и т.д. для каждой двигающейся подсборки. наша написаная програмка - читает это всё - лезет в катю в эту самую ОГРОМНУЮ сборку - выцепляет каждую подсборку и поворачивается её при помощи матрицы трансформации.
так как все движения происходят через матрицу трансформации (никаких констрейнов и т.д.) скорость применения всех этих движения - довольно быстрая:) в экслеле который мы получаем значения примязаны ко времени и описано таким образом 24 часа (день). после каждого апдейта положения все сборок - мы делаем скриншот:)))) набираем эти скриншоты и потом уже вручную склеиваем их в небольшое видео:))
этот проект как бы r&d поэтому что мы балуемся, что все остальные тоже по сути:)) дальше будет видно:)
Вот так вот мы любим катийный API


....от API Smarteam-а я всегда себя чувствую как-то так:





