Написать Макрос, с чего начать

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

Написать Макрос, с чего начать

Сообщение browser1 » 06 дек 2007 12:35

Прошу прощения за вопрос, но просто интересно. Хотелось бы поближе познакомится с програмированнием под Катю. Так завидно, смотреть как народ реализует свои задумки в Кате, что прямо хочется научится самому. Вопрос, расскажите о том, как Вы научились писать скрипты, на каком языке это делаете Вы и вообще с чего начинали? Может книжки какие нибудь есть не сложные, :cry: я ведь в програмировании просто 0 даже с минусом. В папке С:\Program Files\Dassault Systemes\B17\intel_a\code\command нашел Excel файл GSD_PointSplineLoftFromExcel. Там есть очень интересный макрос, создание массива точек, создание сплайнов, и можно выбрать 3 вариант, создать поверхность. Вот бы научится писать макрос , хотя бы для создания массива точек. Больше мне и не надо. Пожалейте неуча, расскажите, как. На каком языке пишутся такие програмки и можно ли овладеть сей наукой. :cry:
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Написать Макрос, с чего начать

Сообщение Sten » 06 дек 2007 14:12

В папке С:\Program Files\Dassault Systemes\B17\intel_a\code\bin есть файло V5Automotation.chm , это хелп,там даже примеры есть.
Sten
Moderator
 
Сообщения: 504
Зарегистрирован: 20 сен 2007 00:09

Re: Написать Макрос, с чего начать

Сообщение [PTM] » 06 дек 2007 15:29

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

Re: Написать Макрос, с чего начать

Сообщение browser1 » 07 дек 2007 12:52

Уважаемые грамотные пользователи. Вы поймите, что для меня фразы типа "незабывать пользоваться такой штукой как записать макрос" - это практически тарабарщина. Мне необходимо прямое указание, типа макрос для Catia V5 пишут на таком языке. Используется такой -то модуль в самой CATIA или есть сторонняя программа. Книжки есть в магазине и называется так-то и так-то. Нифига это наверное не поможет, но я хоть тогда успокоюсь и пойму, что сия наука не для меня.
А вот за V5Automotation.chm спасибо. Нифига не понятно, но думаю, что может пригодится. (потом, когда пойму азы писания макросов. И еще вопрс чем отличается макрос от скрипта? А то все пишут, напиши скрипт, или напиши макрос, а что сие означает, непонятно.
Спасибо, что пока не поколотили за откровенно тупые вопросы.
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Написать Макрос, с чего начать

Сообщение ExtraRight » 07 дек 2007 16:46

ув. browser1,имелось ввиду возможность записывать свои действия в макрос через Tools/Macros/Start Recording. Хотя там есть свои ограничения, но для начала должно быть полезно.
Аватара пользователя
ExtraRight
Forum Manager
 
Сообщения: 1575
Зарегистрирован: 11 сен 2007 18:50
Откуда: Нижний Новгород
Blog: View Blog (8)

Re: Написать Макрос, с чего начать

Сообщение Sten » 07 дек 2007 17:27

Надо идти в книжный магазин и брать что-то вроде VBA для чайников, или программируем под Excel на VBA. После прочтения половины книжки, всё становится на свои места, и можно теребить chm файл. Логика написания макросов под Эксель и Катьку практически одинакова, просто другие объекты (в первом случае таблицы,во втором - парты,итд..:))
Sten
Moderator
 
Сообщения: 504
Зарегистрирован: 20 сен 2007 00:09

Re: Написать Макрос, с чего начать

Сообщение Dasty » 07 дек 2007 20:05

Фикус в чем, Вы жмете капу Запись макроса, и работаете в Катьке..... закончили делать какие либо действия, останавлдиваете запись и смотрите результат Ваших действий на языке VBA
Аватара пользователя
Dasty
Forum Manager
 
Сообщения: 937
Images: 3
Зарегистрирован: 11 сен 2007 18:50

Re: Написать Макрос, с чего начать

Сообщение browser1 » 08 дек 2007 03:48

ОГРОМЕННОЕ спасибо. Прям, таки чуть не заплакал от радости когда, после построения в Катии детали, запустил макрос после этого, и получил ту же деталюху. Попробовал редактировать макрос, увидел в нем размеры, отредактировал их и изменил солид. Я счастлив. Спасибо огроменное. :D
Завтра, вернее сегодня попробую продолжить
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Написать Макрос, с чего начать

Сообщение browser1 » 09 дек 2007 01:02

Dasty писал(а):Фикус в чем, Вы жмете капу Запись макроса, и работаете в Катьке..... закончили делать какие либо действия, останавлдиваете запись и смотрите результат Ваших действий на языке VBA


А можно ли получить макрос на уже готовый солид. А то не очень получается. Включать запись макроса при создании я не всегда вспоминаю. Если нет, то получается, что для готового изделия писать макрос очень сложный вопрос.
Подскажите пожалуйста.
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Написать Макрос, с чего начать

Сообщение Egor_K » 09 дек 2007 17:05

А можно ли получить макрос на уже готовый солид. А то не очень получается. Включать запись макроса при создании я не всегда вспоминаю. Если нет, то получается, что для готового изделия писать макрос очень сложный вопрос.
Подскажите пожалуйста.

Для геометрических построений я бы не стал писать макросы, а лучше сделал бы шаблон модулем Product Knowledge Template, тем более там создаются шаблоны без программирования :)
Что не жни и что не куй, все равно CATIA руль... :Yahoo!:
Аватара пользователя
Egor_K
Forum Manager
 
Сообщения: 225
Зарегистрирован: 11 сен 2007 18:50
Откуда: Красноярск

Re: Написать Макрос, с чего начать

Сообщение MAX KZK » 10 дек 2007 10:37

А можно ли получить макрос на уже готовый солид.


Есть еще такой чудный модуль "Generative knowledge" - совсем уж для утонченных извращенцев эстетов.
Он как раз строит солиды с помощью команд специального макроязыка.
Внедряю PLM за еду.
Аватара пользователя
MAX KZK
Forum Manager
 
Сообщения: 1321
Зарегистрирован: 11 сен 2007 18:50
Откуда: Красноярск
Blog: View Blog (11)

Re: Написать Макрос, с чего начать

Сообщение Mihan » 02 апр 2008 08:43

Может кто-нибудь писал макросы для создания источников света(LightSource). Если сохранились исходники выложите пожалуйста, а то очень надо. Просто при записи макроса с созданием какого-либо источника света у меня в макросе ничего не записывается может знает в чем проблема???
Mihan
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 23 мар 2008 22:14
Откуда: Ульяновск

Re: Написать Макрос, с чего начать

Сообщение [PTM] » 02 апр 2008 09:00

Mihan писал(а):Может кто-нибудь писал макросы для создания источников света(LightSource). Если сохранились исходники выложите пожалуйста, а то очень надо. Просто при записи макроса с созданием какого-либо источника света у меня в макросе ничего не записывается может знает в чем проблема???


посмотрите что есть в справке.По крайней мере там рассматриваеться добавление LightSource к существующей коллекции и его удаление
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2159
Images: 43
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Написать Макрос, с чего начать

Сообщение Mihan » 22 май 2008 10:36

В справке есть вот такой пример добавлени к коллекции источника света:

Dim MyViewer As Viewer
Set MyViewer = CATIA.ActiveWindow.ActiveViewer
Dim MyLightSource As LightSource
Set MyLightSource = MyViewer.LightSources.Add

Вот мой код из макроса:
Код: Выделить всё
Sub CATMain()
' Get the documents collection
    Dim oCollection As Documents
    Set oCollection = CATIA.Documents

    ' test if no document is open
    If 0 = oCollection.Count Then
        MsgBox "A product document must be active to execute this macro.", vbOKOnly, "Switch Off Lights"
        Exit Sub
    End If

     ' Get material library
    Dim oProductDocument As Document
    Set oProductDocument = CATIA.ActiveDocument

    ' test if the active document is a product
    If 0 = InStr(oProductDocument.Name, ".CATProduct") Then
        MsgBox "A product document must be active to execute this macro.", vbOKOnly, "Switch Off Lights"
        Exit Sub
    End If

    ' Accessing the Root Product
    Dim oRootProduct As Product
    Set oRootProduct = oProductDocument.Product

    ' Accessing the collection of rendering lights
    Dim oLights As RenderingLights
    Set oLights = oRootProduct.GetItem("CATRscRenderingLightVBExt")


Dim MyViewer As Viewer
 Set MyViewer = CATIA.ActiveWindow.ActiveViewer
 Dim MyLightSource As LightSource
 Set MyLightSource = MyViewer.LightSources.ADD
 

       
End Sub


Пишет вот такую ошибку:
The method ADD failed

И ссылается, что ошибка в строке:
Set MyLightSource = MyViewer.LightSources.ADD

Может кто то знает как справиться с данной ошибкой? :(
Mihan
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 23 мар 2008 22:14
Откуда: Ульяновск

Re: Написать Макрос, с чего начать

Сообщение Artem » 22 май 2008 14:25

Добавляет только один источник света (итого два)

Код: Выделить всё
Sub CATMain()
' Get the documents collection
    Dim oCollection As Documents
    Set oCollection = CATIA.Documents

    ' test if no document is open
    If 0 = oCollection.Count Then
        MsgBox "A product document must be active to execute this macro.", vbOKOnly, "Switch Off Lights"
        Exit Sub
    End If

     ' Get material library
    Dim oProductDocument As Document
    Set oProductDocument = CATIA.ActiveDocument

    ' test if the active document is a product
    If 0 = InStr(oProductDocument.Name, ".CATProduct") Then
        MsgBox "A product document must be active to execute this macro.", vbOKOnly, "Switch Off Lights"
        Exit Sub
    End If

    ' Accessing the Root Product
    Dim oRootProduct As Product
    Set oRootProduct = oProductDocument.Product

    ' Accessing the collection of rendering lights
    Dim oLights 'As RenderingLights
    Set oLights = oRootProduct.GetItem("CATRscRenderingLightVBExt")


Dim MyViewer As Viewer
Set MyViewer = CATIA.ActiveWindow.ActiveViewer
MsgBox "Общее количество источников  " + CStr(MyViewer.LightSources.Count)
Dim MyLightSource 'As LightSource
On Error Resume Next
Dim Arr(2)
For i = 1 To 3
MyViewer.LightSources.Add
Set MyLightSource = MyViewer.LightSources.Item(MyViewer.LightSources.Count)
Arr(0) = 5
Arr(1) = 8
Arr(2) = -2
MyLightSource.PutDirection Arr
If Err.Number = 0 Then
MsgBox CStr(MyViewer.LightSources.Count) + "  источник света добавлен успешно"
Else
MsgBox " Облом с " + CStr(MyViewer.LightSources.Count + 1) + "  источником света"
Err.Clear
Exit For
End If
Next
End Sub
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Написать Макрос, с чего начать

Сообщение Mihan » 22 май 2008 15:56

Спасибо, что откликнулись. Но что-то он у меня не хочет работать :( . Вроде код правильно написан, но у меня в катьке так и ничего не добавляет.
Mihan
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 23 мар 2008 22:14
Откуда: Ульяновск

Re: Написать Макрос, с чего начать

Сообщение [PTM] » 22 май 2008 16:26

добавляет,но наверное вы говорите о разных вещах
Mihan:view lighting (alt+v+l) посмотрите до и после выполнения скрипта)
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2159
Images: 43
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Написать Макрос, с чего начать

Сообщение Mihan » 22 май 2008 16:45

Ничего не изменилось. Может меня не правильно поняли. Я хотел сделать, что то вроде панели Scene Editor. Но мне нужно оттуда только создание источников света, т.е. через макрос создавался Create Spot Light(а по возможности и все остальные. Их там всего 6).
Mihan
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 23 мар 2008 22:14
Откуда: Ульяновск

Re: Написать Макрос, с чего начать

Сообщение Mihan » 23 май 2008 07:33

Вот в хелпе нарыл вот такую функцию:
Methods

o Sub AddActiveLight( CATIARenderingLight iActiveLight)
Adds a new active light to the shooting active lights list.


Но что-то никак не могу подобрать для нее параметры. Хелп ми :cry: ?
Mihan
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 23 мар 2008 22:14
Откуда: Ульяновск

Re: Написать Макрос, с чего начать

Сообщение Artem » 23 май 2008 12:59

Код: Выделить всё
Sub CATMain()
' Get the documents collection
    Dim oCollection As Documents
    Set oCollection = CATIA.Documents

    ' test if no document is open
    If 0 = oCollection.Count Then
        MsgBox "A product document must be active to execute this macro.", vbOKOnly, "Switch Off Lights"
        Exit Sub
    End If

     ' Get material library
    Dim oProductDocument As Document
    Set oProductDocument = CATIA.ActiveDocument

    ' test if the active document is a product
    If 0 = InStr(oProductDocument.Name, ".CATProduct") Then
        MsgBox "A product document must be active to execute this macro.", vbOKOnly, "Switch Off Lights"
        Exit Sub
    End If

    ' Accessing the Root Product
    Dim oRootProduct As Product
    Set oRootProduct = oProductDocument.Product

On Error GoTo 0
Dim cShoot 'As RenderingShootings
MsgBox oRootProduct.GetItem("CATRscRenderingShootingVBExt").Count
oRootProduct.GetItem("CATRscRenderingShootingVBExt").Add
MsgBox oRootProduct.GetItem("CATRscRenderingShootingVBExt").Count
Dim aaa 'As LightSource
Set aaa = oRootProduct.GetItem("CATRscRenderingShootingVBExt").Item(oRootProduct.GetItem("CATRscRenderingShootingVBExt").Count)
MsgBox oRootProduct.GetItem("CATRscRenderingLightVBExt").Count
oRootProduct.GetItem("CATRscRenderingLightVBExt").Add
MsgBox oRootProduct.GetItem("CATRscRenderingLightVBExt").Count
aaa.AddActiveLight (oRootProduct.GetItem("CATRscRenderingLightVBExt").Item(1))

End Sub


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

Re: Написать Макрос, с чего начать

Сообщение Shell » 01 июн 2008 16:37

Вопрос такой, при работе в Machining (да и вообще) довольно часто приходится изменять некоторые настройки в Tool\Options\..., ну и дальше по закладкам. И возникла идея создать Toolbar с наиболее часто используемыми опциями. Первое, что пришло в голову, попробовал Tools\Macros\Start Recording, в результате, после изменения нужного пункта, в Tool\Options\..., получился пустой макрос. Можно ли как-нибудь получить желаемое, подскажите, пожалуйста?
P.S. В этом деле я новичок, пока как-то обходился стандартным функционалом CATIA...
Shell
Участник
Участник
 
Сообщения: 144
Зарегистрирован: 02 окт 2007 12:20

Re: Написать Макрос, с чего начать

Сообщение Artem » 02 июн 2008 07:27

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

Re: Написать Макрос, с чего начать

Сообщение Mihan » 16 июн 2008 23:00

Спасибо всем большое, особенно Artem. Твой пример мне здорово помог.Но сейчас другая проблема:
1). Можно ли вместо Spot Light создать, например, Disk Light или Cylinder Light?
2). Можно как-нибудь изменить расположение, создаваемого объекта? Т.е. вбил в макросе координаты (x,y,z) и объект будет там создан.
В helpe нашел функцию Sub PutDirection( CATSafeArrayVariant oDirection). Даже есть пример:
Код: Выделить всё
LightSource.PutDirection Array(5,8,-2)

Но что то он не работает :( .
Mihan
Новичок
Новичок
 
Сообщения: 11
Зарегистрирован: 23 мар 2008 22:14
Откуда: Ульяновск

Re: Написать Макрос, с чего начать

Сообщение zerganalizer » 10 окт 2008 14:42

Здравствуйте! У меня коротенький (надеюсь) вопрос.

Предыстория: пишутся UserFeatures с правилами. В теле правила на объекты Объемы GSD методом '001/Выдавливание объема.1'.Element1 = '001/Эскиз.1' я смог менять эскиз выдавливания на другой при выполнении некоторого условия. Но как поменять объекты его ограничений 1 и 2? GSMextrude (и не только он) кажет тока входн(ой)ые элемент(ы) и длины 1 и 2.

Откопав инструкции по CAA, нашел имена переменных этой операции, но '001/Выдавливание объема.1'.FirstUptoElement дает сообщение о неправильном контексте. Подозреваю, что между именем фичи и FirstUptoElement (или SecondUptoElement) должно еще что-то указываться. Вообще как решаются подобные подстановки? Как строить конструкции для обращения к параметрам и входным элементам фичера? Кто знает, отзовитесь! :cry:
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Написать Макрос, с чего начать

Сообщение zerganalizer » 10 мар 2009 01:26

Гы, некоторые траблы снялись установкой SP8. Правда, вопросы остались, и увы, их вряд ли решить без авторизованного курса CAA Automation... :cry:

P.S. трабла решается пока только через VB6, что не очень удобно. И только через реакцию, а не правило.
Последний раз редактировалось zerganalizer 19 дек 2009 01:45, всего редактировалось 1 раз.
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

След.

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

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

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