Обмен данными с другой программой

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

Обмен данными с другой программой

Сообщение Trouyan » 04 фев 2011 10:41

Необходимо обмениваться параметрами с другой программой.
Наверное проще всего было бы делать это через файл. Знаю что можно импортировать данные из файла Exel, но возможно ли данный импорт делать автоматически, с определенным интервалом времени ?
Trouyan
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 27 янв 2011 17:22

Re: Обмен данными с другой программой

Сообщение booSter » 04 фев 2011 13:30

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

Re: Обмен данными с другой программой

Сообщение Trouyan » 04 фев 2011 13:35

А ссылочки, примеры ... хотелось бы понять в какую сторону копать... писать для Кати какой-то модуль(пока понятия не имею в чем и как это делать) или уже имеется готовое решение данной задачи в самой Кати?
Trouyan
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 27 янв 2011 17:22

Re: Обмен данными с другой программой

Сообщение bit » 04 фев 2011 14:48

Для начала надо решить на чем писать.
С++ или Automation
Если использовать Excel в качестве design table, то можно вообще ничего не писать, CATIA сама отследит все изменения
bit
Участник
Участник
 
Сообщения: 166
Images: 3
Зарегистрирован: 24 июл 2008 11:45
Откуда: Минск

Re: Обмен данными с другой программой

Сообщение Wireless_Fidelity » 07 фев 2011 12:11

Приблизительный список параметров в студию.
Помимо параметров, нужна ли передача каких-либо иных данных? Если да, то каков их объём?
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Обмен данными с другой программой

Сообщение Trouyan » 07 фев 2011 16:51

Design table опробовал, ток Я не нашел можно ли увеличить частоту синхронизации с файлом и отключить всплывающие отчеты об изменениях в файле ?
Если программить то лучше в си.

В моём случае передаю 3 целочисленных значений углов в узлах механизма. В будущем, думаю, 25 значений - это будет предел.
Trouyan
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 27 янв 2011 17:22

Re: Обмен данными с другой программой

Сообщение booSter » 08 фев 2011 13:37

Неплохо было бы определиться "кто есть ху" в этой связке:
  1. CATIA Server - Внешняя программа периодически забрасывает данные в CATIA
  2. CATIA Client - CATIA время от времени забирает данные у внешней программы
  3. Диаллог - Внешняя программа уведомляет о наличии новой пачки данных, CATIA их забирает и уведомляет внешнюю программу о том что готова к следующей пачке

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

Re: Обмен данными с другой программой

Сообщение Trouyan » 08 фев 2011 14:07

booSter писал(а):Неплохо было бы определиться "кто есть ху" в этой связке:
  1. CATIA Server - Внешняя программа периодически забрасывает данные в CATIA
  2. CATIA Client - CATIA время от времени забирает данные у внешней программы
  3. Диаллог - Внешняя программа уведомляет о наличии новой пачки данных, CATIA их забирает и уведомляет внешнюю программу о том что готова к следующей пачке

Реализация обмена зависит от выбранного подхода


Если в design table частоту изменить нельзя то попробовал бы первый вариант.
Trouyan
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 27 янв 2011 17:22

Re: Обмен данными с другой программой

Сообщение booSter » 09 фев 2011 12:56

Trouyan писал(а):... попробовал бы первый вариант ...

Можно сделать через CATIA Automation/VB примерно так:

  1. В CATIA нужные параметры добавил в публикации, чтобы отвязаться от структуры документа
  2. Со стороны клиента (внешней программы):
    1. Создать СOM-референс theApp на объект типа "CATIA.Application" (средствами COM)
    2. Получить текущий (либо необходимый CATIA-документ) theDoc используя методы theApp
    3. Найти в theDoc публикации с нужными именами, а через них - параметры
    4. Вбить значения параметрам
    5. Проапдэйтить theDoc
  3. Проверить результат в CATIA

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

Re: Обмен данными с другой программой

Сообщение likemilk » 26 апр 2012 22:24

Тоже очень интересует эта тема. Буквально только начал осваивать передачу данный через текстовый файл.
Хотелось бы научиться из экселя через VBA обращаться к катийным документам. Может кто дать пример кода, чтобы понять в каком направлении двигаться?
Как то уже пробовал пример в котором из экселя идёт обращение к файлу базы данных (mdb) используя DAO. В том примере всё работает. Но для этого нужно было подключить класс DAO Object Library.
Нужно ли в экселе, также подключить какие то катийные библиотеки? Если да то можно по конкретней? Их там очень много. Нужна ли какая то конкретная или можно все галочки по включать?
И наоборот нужно ли в катии подключать экселевские классы?
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Обмен данными с другой программой

Сообщение Wireless_Fidelity » 27 апр 2012 07:00

Можно вообще ничего не подключать. Получаете доступ к COM-серверу через Set CATIA = GetObject("CATIA.Application"), а затем используете все те же методы, что и в VBA.
В обратную сторону работает точно так же.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Обмен данными с другой программой

Сообщение likemilk » 27 апр 2012 16:52

Wireless_Fidelity писал(а):Можно вообще ничего не подключать. Получаете доступ к COM-серверу через Set CATIA = GetObject("CATIA.Application"), а затем используете все те же методы, что и в VBA.
В обратную сторону работает точно так же.

Уважаемый Wireless_Fidelity, а можно ещё элементарный примерчик кода, а то совсем отсутствует опыт использования такого метода.
На словах то вроде всё понятно но на практике часто так бывает что не там запятую поставишь и полдня чешешь репу, пытаясь понять почему оно не работает :)
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Обмен данными с другой программой

Сообщение Wireless_Fidelity » 27 апр 2012 17:19

Пишу из головы, работать должно. Из CATIA печатаем ячейку (1,1):

Код: Выделить всё
Sub CATMain()
Dim Excel as Object
Set CATIA = GetObject("","Excel.Application") ' первый аргумент пустой, потому что нас не интересует, какой документ открыт в Excel'e

MsgBox Excel.ActiveSheet.Cells(1,1).Text

Dim

End Sub


Из Excel печатаем полные пути ко всем загруженным в CATIA документам:

Код: Выделить всё
Sub Main()
Dim CATIA as Object
Set CATIA = GetObject("", "CATIA.Application")

' получаем общее количество документов
Dim iNbDocs as Integer
iNbDocs = CATIA.Documents.Count

' проходим по документам, печатаем пути
Dim iDoc
For iDoc = 1 to CATIA.Documents.Count
    MsgBox CATIA.Documents.Item(iDoc).FullName
Next

End Sub
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Обмен данными с другой программой

Сообщение likemilk » 22 май 2012 22:05

Спасибо, всё получилось.
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23


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

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

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

cron