Получить реальную видимость обьекта в парте

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

Получить реальную видимость обьекта в парте

Сообщение Artem » 20 мар 2012 17:14

Исходные условия:
PartBody(невидимое)
Shaft(видимый - VisPropertySet.GetShow соответственно неправильный)
поверхности шафта
Как-то можно узнать реальную видимость Shaft/его поверхностей без анализа видимости парентов? HybridShapeFactory.GSMVisibility вот, например, только задает же видимость или им как то можно воспользоваться, к примеру?
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Получить реальную видимость обьекта в парте

Сообщение Wireless_Fidelity » 20 мар 2012 22:21

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

Напрямую можно сделать только через Selection.Search поиском видимого на экране объекта:

Код: Выделить всё
' фича, видимость которой нужно проверить
Dim oFeature as AnyObject
'...

Dim oSelection as Selection
Set oSelection = CATIA.ActiveDocument.Selection

oSelection.Clear
oSelection.Add oFeature

CATIA.ActiveWindow.ActiveViewer.Reframe

oSelection.Search "(Visibility=Visible & Name='" & oFeature.Name & "'),scr"

Dim bVisible
Dim iFoundObject

bVisible=false
For iFoundObject = 1 to oSelection.Count2
    If (oSelection.Item2(iFoundObject).Value is oFeature) Then
        bVisible = true
        Exit For
    End If
End If

MsgBox "Visibility of " & oFeature.Name & ": " & bVisibility
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Получить реальную видимость обьекта в парте

Сообщение Artem » 21 мар 2012 09:07

ага спасибо...
Код: Выделить всё
oSelection.Search "(Visibility=Shown & Name='" & oFeature.Name & "'),all"
еще вот нашел
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Получить реальную видимость обьекта в парте

Сообщение Artem » 22 мар 2012 18:41

Когда несколько представлений у детали (CATShape) и мы запускаем поиск с scr, то selection.item(№).LeafProduct не отдается - пишет что ошибка :-( -
Код: Выделить всё
Sub CATMain()
Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument
Dim selection1 As Selection
Set selection1 = productDocument1.Selection
Dim rr As Product
selection1.Search "Topology.CGMFace.Visibility=Shown,scr"
For i = 1 To selection1.Count
Set rr = selection1.Item(i).LeafProduct
Debug.Print rr.Name
Next
End Sub

А вот с all все нормально
Что интересно - ведь поверхностей то побольше возвращается.....
PS. Нужен именно LeafProduct (т.е. "сборочный" продукт),а не referenceproduct (который привязан к детали)
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 387
Зарегистрирован: 14 сен 2007 07:14

Re: Получить реальную видимость обьекта в парте

Сообщение Wireless_Fidelity » 22 мар 2012 22:35

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


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

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

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