Макрос для открытия детали сборки во внешнем окне.

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

Макрос для открытия детали сборки во внешнем окне.

Сообщение snerge » 11 окт 2010 11:54

Помогите написать макрос для для открытия выбранной детали сборки во внешнем окне, а то отдельной команды не нашел, а открытие через контекстное меню детали - долго. Хочу это действие на кнопку посадить.
Аватара пользователя
snerge
Новичок
Новичок
 
Сообщения: 56
Зарегистрирован: 08 дек 2009 07:47
Откуда: Урал

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение [PTM] » 11 окт 2010 18:59

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

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение snerge » 12 окт 2010 06:49

Пробовал, не работает.
Аватара пользователя
snerge
Новичок
Новичок
 
Сообщения: 56
Зарегистрирован: 08 дек 2009 07:47
Откуда: Урал

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение Artem » 21 окт 2010 13:43

Sub CATMain()
CATIA.StartCommand "Open in New Window"
End Sub
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение snerge » 22 окт 2010 13:46

Спасибо работает, но только если выбранная деталь или подсборка в режиме конструирования.
Подправил себе под русский интерфейс -
CATIA.StartCommand "Открыть в новом окне"
Хочется еще добавить в макрос команду перевести выбранную деталь или сборку в режим конструирования предварительно перед открытием в новом окне.
Посмотрел в записи макроса это выглядит так:
product8.ApplyWorkMode DESIGN_MODE
Как это свойство назначить выбранным деталям?
Аватара пользователя
snerge
Новичок
Новичок
 
Сообщения: 56
Зарегистрирован: 08 дек 2009 07:47
Откуда: Урал

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение Wireless_Fidelity » 03 ноя 2010 11:38

Свойство назначается не деталям, а соответствующим им продуктам (в дереве они отображаются как "родительские" и, как правило, имеют такое же имя, что и деталь). Поэтому перед вызовом соответствующего метода нужно эти продукты найти.

Код: Выделить всё
' получение доступа к объекту выделения для активного документа
Dim objSelection as Selection
Set objSelection = CATIA.ActiveDocument.Selection

' проверка, выделен ли хоть один объект
if (objSelection.Count = 0) then
    Exit Sub
End if

' обработка первого выделенного объекта. при необходимости возможно организовать цикл.
Dim SelectedObject as Object
Set SelectedObject = objSelection.Item(1).Value

' определение типа выделенного объекта
Dim strObjectType as String
strObjectType = TypeName(SelectedObject)

Dim PartProd as Product    ' продукт, в котором содержится парт

' проверка типа выбранного объекта
if (strObjectType = "Product") then

    ' выбран продукт
    Set PartProd = SelectedObject

elseif (strObjectType = "Part") then

    ' выбран парт, ищем соответствующий ему продукт (который является его родителем)
    if (TypeName(SelectedObject.Parent) = "PartDocument") then

        ' парт получен из парт документа, получаем продукт оттуда же
        Set PartProd = SelectedObject.Parent.Product

     elseif (TypeName(SelectedObject.Parent = "Product") then

        ' парт лежит в продукте
        Set PartProd = SelectedObject.Parent

    else

        ' "родитель" парта не является ни документом, ни продуктом, выходим.
        Exit Sub
    end if

else
    ' не выбран ни продукт, ни парт, выходим
    Exit Sub
end if

' меняем режим
objProd.ApplyWorkMode DESIGN_MODE

' запускаем команду
' CATIA.StartCommand "Открыть в новом окне"


Господа, пользуйтесь пожалуйста тегом [CODE] для вставки примеров кода,
а длинные куски кладите под [SPOILER]
booSter
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение snerge » 09 ноя 2010 08:20

Спасибо за участие.
Запустил макрос в кате, она ругается на строчку
"elseif (TypeName(SelectedObject.Parent = "Product") then"
Аватара пользователя
snerge
Новичок
Новичок
 
Сообщения: 56
Зарегистрирован: 08 дек 2009 07:47
Откуда: Урал

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение snerge » 12 ноя 2010 13:09

Нашел аналогичное решение на форуме http://www.catiav5forum.de
http://www.catiav5forum.de/wbb3/wbb/ind ... #post24402

Код: Выделить всё
Sub CATMain()

Dim oSelPart As Selection
Set oSelPart = CATIA.ActiveDocument.Selection

Dim InputObjectType(0)
InputObjectType(0) = "Part"

Status = oSelPart.SelectElement2(InputObjectType, "Select a Part", false)

If (Status = "Cancel") Then
Msgbox "Macro Canceled!",vbcritical
Exit Sub
end if

Dim oPart As Part
Set oPart = oSelPart.Item2(1).Value

Dim oProduct As Product
InputObjectType(0) = "Product"
Set oProduct = oSelPart.SelectElement2(InputObjectType, "Select a Part", true)
oProduct.ApplyWorkMode 2

Dim partDocument1 As PartDocument
Set partDocument1 = oPart.Parent
Set productDocument1 = CATIA.Documents.Open(partDocument1.FullName)

Set Viewer = Catia.ActiveViewer
Viewer.Reframe

End Sub

Незабываем оформляться,пользуясь тегом [CODE] для вставки примеров кода,
а длинные куски кладите под [SPOILER]

[PTM]



Почему то у меня и этот скрипт не работает (хотя брал на их форуме попроще скрипыт все ок), может лицензия не полная или компонент какой на комп не установлен. Проверте кто нибудь на своей машине рабочие ли эти два скрипта?
Аватара пользователя
snerge
Новичок
Новичок
 
Сообщения: 56
Зарегистрирован: 08 дек 2009 07:47
Откуда: Урал

Re: Макрос для открытия детали сборки во внешнем окне.

Сообщение Wireless_Fidelity » 13 ноя 2010 02:12

Ругается потому, что есть опечатка (не хватает закрывающей скобочки) :-(

Код: Выделить всё
elseif (TypeName(SelectedObject.Parent) = "Product") then


Тот код, который Вы нашли на другом форуме, открывает в отдельном окне документ выбранной детали, причём выбор этот должен осуществляться уже в ходе выполнения макроса (внизу окна CATIA в строке состояния отобразится сообщение "Select a Part").

Для того, чтобы он заработал, нужно изменить строки в самом начале (тип переменной должен быть Variant):

Код: Выделить всё
Dim oSelPart As Variant
Set oSelPart = CATIA.ActiveDocument.Selection
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11


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

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

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