Помогите с макросом, плиз...

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

Помогите с макросом, плиз...

Сообщение phil1971 » 27 мар 2013 10:07

Уважаемые специалисты по программированию!!!

По роду деятельности работаю с большими сбрками в CATIA (R18-19).
В сборке имеется одно главное тело и много деталей, вставленных несколько раз (Instances).
Очень часто сталкиваюсь с задачей скопировать с линком тело из одного instance в главное тело. Приходится бегать по дереву от одного instance до главного тела и обратно.
Можно ли написать макрос, который автоматически копировал выбранные тела из ВСЕХ instances в главное тело?
Заранее благодарю.
phil1971
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 16 июл 2009 13:34

Re: Помогите с макросом, плиз...

Сообщение Wireless_Fidelity » 29 мар 2013 10:28

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

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

Re: Помогите с макросом, плиз...

Сообщение phil1971 » 29 мар 2013 15:55

Здравствуйте!

Объясню проще:
Есть библиотека стандартных элементов с дополнитеными телами (тело литья, тело фрезеровки, тело сверловки).
Есть сборка - деталь основного литья и подсборка и из этих стандартных/покупных деталей.
В этой подсборке пусть находится 20 одинаковых деталей (назовем деталь А). В дереве они находятся под одним именем, различаютсятолько номером вставки (instance number).
В каждой детали А есть дополнительные тела (тело литья, тело фрезеровки, тело сверловки).
Для получения законченной детали основного литья, мне нужно скопировать эти тела из 1 детали подсборки и всталить с линком в деталь основного литья,
затем из 2 детали подсборки и вставить с линком в деталь основного литья и т.д. Повторить эту операцию 20 раз.
После этого подсобрать эти тела в дерево основного литья либо с Add либо с Remove.
Вот и хочется написать макрос, чтоб КОПИРОВАЛ ТЕЛА АВТОМАТИЧЕСКИ ИЗ ВСЕХ ОДИНАКОВЫХ ДЕТАЛЕЙ. Подсобрать я могу вручную.
Заранее благодарен!
phil1971
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 16 июл 2009 13:34

Re: Помогите с макросом, плиз...

Сообщение Wireless_Fidelity » 29 мар 2013 21:05

Скрипт написал налету, могут быть ошибки. Чтобы работал без эксцессов, нужно перейти в контекст корневой сборки (дважды кликнуть по ней, сделав синенькой):

Sub CATMAin()

Dim oSel
Set oSel = CATIA.ActiveDocument.Selection

Dim sourceProduct as Product
oSel.SelectElement2 Array("Product"), "Выберите ИСХОДНУЮ сборку, содержащую детали с телами для копирования", false
If oSel.Count=1 Then
Set sourceProduct = oSel.Item(1).Value
Else
Exit Sub
End if

Dim targetPart as Part
oSel.SelectElement2 Array("Product"), "Выберите ЦЕЛЕВУЮ деталь, в которую будут скопированы тела", false
If oSel.Count=1 Then
Set targetPart = oSel.Item(1).Value
Else
Exit Sub
End if

oSel.Clear
oSel.Add sourceProduct
oSel.Search "CATAsmSearch.Part,sel"

Dim partArray()
ReDim partArray(oSel.Count -1)

Dim i
For i=1 to oSel.Count
set partArray(i-1) = oSel.Item(i).Value
Next

For i=0 to UBound(partArray)
Dim sourcePart as Part
Set sourcePart = partArray(i)
Dim j
For j=1 to sourcePart.Bodies.Count
oSel.Clear
oSel.Add sourcePart.Bodies.Item(j)
oSel.Copy
oSel.Clear
oSel.Add targetPart
oSel.PasteSpecial "CATPrtResult"
oSel.Clear
Next
Next

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

Re: Помогите с макросом, плиз...

Сообщение phil1971 » 01 апр 2013 08:42

СПАСИБО!!!
Буду пробовать.... Если что - напишу.
phil1971
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 16 июл 2009 13:34

Re: Помогите с макросом, плиз...

Сообщение phil1971 » 01 апр 2013 09:04

А есть ли возможность реализовать дополнительный выбор:
В сборке стандартных деталей может быть несколько типов деталей и копировать не все тела, а избранные.
Т.Е. при работе чтоб запрашивало из каких деталей копировать и что.
Например: "укажите деталь из которой копировать."
Далее "Укажите тело для копирования" И после этого копировалось это тело из всех N деталей (например 20) в главное литье... Реально это сделать?
Заранее благодарен...
phil1971
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 16 июл 2009 13:34

Re: Помогите с макросом, плиз...

Сообщение [PTM] » 01 апр 2013 10:20

Немножко не в тему, мне кажется странно, что у вас так много тел в одной детали. Такое возможно в модуле FMP, но в других плодить как-то не очень.
К тому-же при написании УП в катьке возможно хранить всю лишнюю геометрию во внешнем теле.
PS это только мои впечатления :)
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Помогите с макросом, плиз...

Сообщение phil1971 » 01 апр 2013 14:21

Возможно и так... но библиотеру стандартный деталей с телами для копирования поставляет заказчик. Да и тел там не так уж и много: 3-4 мах.
phil1971
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 16 июл 2009 13:34

Re: Помогите с макросом, плиз...

Сообщение Wireless_Fidelity » 02 апр 2013 08:46

Далее "Укажите тело для копирования" И после этого копировалось это тело из всех N деталей (например 20) в главное литье... Реально это сделать?
Заранее благодарен...


Наверное, я чего-то не понимаю, но если у Вас имеется 20 "одинаковых" деталей (суть 20 экземпляров одной детали с разными instance name, но одинаковым partnumber), то их содержимое, то есть набор тел, геометрии и т.п., абсолютно идентично. Какой смысл в копировании одно и того же тела из разных экземпляров? Может быть, мы говорим о разных вещах? Для меня в CATIA тело это Body, деталь это Part, а сборка это Product.
Повторюсь, если бы перед глазами было изображение дерева спецификаций, было бы намного проще.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Помогите с макросом, плиз...

Сообщение phil1971 » 02 апр 2013 09:44

Здравствуйте!
Объясняю совсем просто:
Работаю со штамповой оснасткой. Штамп (обрезной, формовочный, вытяжной - не важно) состоит из огромного числа сборок и деталей (количество деталей 300-600 штук, иногда больше).
Фрагмент дерева:

Например, в сборке есть 4 втулки (поз. 02_100), расположенные в разных местах штампа (собраны по констрейнам).
Дерево втулки:

В дереве втулки есть два тела (PAD, POCKET), которые нужно скопировать с линком в главное тело литья (см. предыдущую картинку - 02_000).
Далее при изменении положения втулок, литье (PAD) и отверстие (POCKET) автоматически меняют свое положение.
Эти тела бывают достаточно сложные, поэтому их создают один раз (в файле стандартной детали) и потом только копируют в главное литье.
Когда одинаковых деталей (разнесенных в пространстве, т.е. собранных констрейнами) 4-5штуки - это не беда. Но когда их 20, хочется иметь макрос
для копирования выбранных тел в нужные детали.
Объяснил как смог.
Заранее благодарен, Александр
phil1971
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 16 июл 2009 13:34


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

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

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