Наш набор утилит для Catia v5

Программирование для CATIA.

Наш набор утилит для Catia v5

Сообщение Evx » 04 апр 2012 13:38

Всем привет)

Решил рассказать о "наборе" утилит разработанных нами ( нуу..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 :)) :give_heart:

....от API Smarteam-а я всегда себя чувствую как-то так: :wacko3: :whiteflag: :HELP: :SCARE2: :-! :IREFUL:
Evx
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 29 янв 2009 18:30

Re: Наш набор утилит для Catia v5

Сообщение [PTM] » 04 апр 2012 14:18

огромная работа! Вот формула эдитор было бы интересненько пощупать
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Наш набор утилит для Catia v5

Сообщение Wireless_Fidelity » 04 апр 2012 15:13

Здравствуйте, Evx.

Спасибо, что поделились своей разработкой.

У меня есть пара вопросов:
1) Как происходит конвертация в DWG? Через стандартные SaveAs и ExportData?
2) Как определяются доступные лицензии? Жёстко зашиты в приложение? Аналогичный вопрос про файлы окружения .CATEnv.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Наш набор утилит для Catia v5

Сообщение Evx » 04 апр 2012 15:44

[PTM] писал(а):огромная работа! Вот формула эдитор было бы интересненько пощупать


Да там кстати не так уж всё и интересно. Вполне простой код. Его можно даже через макро записать и прочесть. Что именно интересно?

Wireless_Fidelity писал(а):Здравствуйте, Evx.

1) Как происходит конвертация в DWG? Через стандартные SaveAs и ExportData?
2) Как определяются доступные лицензии? Жёстко зашиты в приложение? Аналогичный вопрос про файлы окружения .CATEnv.



1) Даже слегка стыдно)) что громкое слово конвертация - является обычным Save As. Катька запускается без окна, в выделенном thread-е чтобы никого ничем не беспокоить и перебирает все указанные чертежи. так что впринципе, весь сок и сложность данного функционала это в раскраске и разброске геометрии по слоям перед "экспортом")

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

предусмотрен так же форс мажорный вариант - если сетевая папке не доступна - тогда програмка опять же выплёвывает запасной файл с выбранной лицензией который хранит "в себе":)

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

таким образом выбор лецензии не завязан с тем, какая лицензия свободна. Хотя! - были планы это сделать. С LUM-ом. Генерировать из лума отчёт о том что занято а что нет - а в програме читать этот отчёт и давать пользователю сводку того что он может выбрать. Это впринципе очень легко сделать. Если бы была острая необходимость, я бы сделал как-то так:
а) нажимаешь старт (без выбора лицензий - просто старт)
б) прога спрашивает лум через его стандартны отчёт генератор о том что занято а что нет.
в) получает отчёт - читает его и преподносит пользователю поп-ап выбор из свободных лицензий.
г) пользователь выбирает лицензию - програма берёт соответсвующий преднастроенный файл лицензий и кладёт его в папку с катийными настройками.
д) запускает катьку.

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

не знаю что там с DSLS сервером) можно ли с ним говорить как-то поинтеллектуальней чем с Lum-ом...
Evx
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 29 янв 2009 18:30

Re: Наш набор утилит для Catia v5

Сообщение [PTM] » 04 апр 2012 16:40

Мне не так давно пришлось забивать через формулы просчет внутреннего объема серии пузырьков с последующим подгоном( оптимизацией) к определенной величине.
Замучался одно и тоже вбивать/копипастить в 15 разных файлов
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Наш набор утилит для Catia v5

Сообщение Evx » 04 апр 2012 18:54

Код: Выделить всё
fePart.Relations.CreateFormula("Formula." + Form1.pnp.Name, "", Form1.pnp, sFrmValue(1))


это из формула эдитора.

Что есть что:

Dim fePart As Part - т.е. это сам объект детали (парта). Если открыта в катьке одна деталь сама по себе то получить объект можно вот так:

Код: Выделить всё
Dim part1 As PartDocument
Dim fePart As Part
part1 = CATIA.ActiveDocument
fePart = part1.Part


Дальше то что в скобках это уже сама формула:

("Formula." + pnp.Name, "", pnp, sFrmValue(1))

...ох..вспомнить бы:)) значить до первой запятой это просто имя формулы. можно что угодно. String.
По середине (pnp) - это параметр....
Dim pnp As Parameter

Это параметр который получает формулу.....да.. память моя делает вот так вот сейчас :BYE2:
Ну да, это параметр который получает резултат формулы.

последнее (sFrmValue(1)) это стринговое значение формулы. сюда по-моему можно запихнуть всю форумлу с именами других параметров тоже... хммм... тут могу врать немного. надо проверить) вообщем если надо - перепроверю. Но факт остаётся тем же - что таким образом можно вдолбить формулы в деталь...и не в одну:) разом)
Evx
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 29 янв 2009 18:30

Re: Наш набор утилит для Catia v5

Сообщение Artem » 06 апр 2012 09:39

.... которые по нашей методологии...
А про самое вкусное то и не рассказали.... :-) Ком. тайна?
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Наш набор утилит для Catia v5

Сообщение booSter » 06 апр 2012 16:11

Впечатляет :good2:
Сделаешь доброе дело за деньги - скажут спасибо,
Сделаешь бесплатно - сядут на шею...
©пёрто
Аватара пользователя
booSter
Moderator
 
Сообщения: 227
Images: 15
Зарегистрирован: 09 фев 2008 16:48
Откуда: Minsk

Re: Наш набор утилит для Catia v5

Сообщение anexi » 28 мар 2013 18:24

Да впечатляет. Я только начинаю изучать Catia. До этого 7лет ПроЕ. и куча рукописного софта (Pro/ Toolkit и JLink) под него. Я вас понимаю... Очень интересные утилиты, особенно мне понравилась утилита для общих настроек. Хотелось бы с вами пообщаться... Если можно напишите в личку скайп или почту. Буду благодарна.
anexi
Новичок
Новичок
 
Сообщения: 3
Зарегистрирован: 28 мар 2013 16:39


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron