KWA Catia R24 - активировать / деактивировать компоненты по сценарию (проблема с выдавливанием) - PullRequest
0 голосов
/ 26 февраля 2020

Я создал простой код для активации / деактивации компонентов в GS (с помощью простой модификации вы также можете скрывать / показывать компоненты) в 99% случаев это работает, но я заметил, что существует проблема с EXTRUDE, этот скрипт может деактивировать все функции EXTRUDE, но есть проблема, когда я хотел бы активировать их. Я заметил, что скрипт не может найти и добавить в список деактивированные функции EXTRUDE, и я понятия не имею, почему. Заранее благодарю за помощь

Ниже вы можете найти мой код:

Основной код в ACTION:

GeometricalSet :  OpenBodyFeature,visState :  Boolean 

let AxisSystems_List (List)
let Wireframe_List (List)
let Sketch_List (List)
let Wireframe_List (List)
let Surfaces_List (List)

let AxisSystem_GEO (AxisSystem)
let Wireframe_GEO (Wireframe)
let Sketch_GEO (Sketch)
let Surfaces_GEO (Surface)

AxisSystems_List  = GeometricalSet ->Query("AxisSystem","")
Wireframe_List = GeometricalSet ->Query("Wireframe","")
Sketch_List = GeometricalSet ->Query("Sketch","")
Surfaces_List = GeometricalSet ->Query("Surface","")

for AxisSystem_GEO inside AxisSystems_List 
{
    AxisSystem_GEO.Activity = visState

}

for Wireframe_GEO inside Wireframe_List 
{
    Wireframe_GEO.Activity = visState

}

for Sketch_GEO inside Sketch_List 
{
    Sketch_GEO.Activity = visState

}

for Surfaces_GEO inside Surfaces_List
{
    Surfaces_GEO.Activity = visState

}

Реакция на скрипт Run:

if String.1 =="YES"
{

    `Relations\Rules\Action deactivate`  ->Run(`Geometrical Set.109`,true)

}

else if String.1=="NO"
{

    `Relations\Rules\Action deactivate`  ->Run(`Geometrical Set.109`,false)
}

1 Ответ

0 голосов
/ 26 февраля 2020

Экструдирование не обязательно является поверхностью. Например, вы можете выдвинуть точку в линию.

Я думаю, что происходит, когда функция деактивирована, поверхности нет, поэтому во время запроса ничего не возвращается. CATIA, похоже, заботится только о получаемой форме, а не о типе объекта - когда вы запрашиваете «Поверхность».

Если вы запрашиваете и обрабатываете «GSMExtrude» вместо «Поверхность», вы обнаружите, что оно работает.

Так что, возможно, вы могли бы сделать, когда собираете объект для повторной активации:

lObjects = geoset->Query("Surface","") + geoset->Query("GSMExtrude","")

Что должно дать вам все. Это усложняет процесс при повторной активации.

То же самое может относиться и к другим типам, возможно, к функции Split. Разделение также может быть поверхностью или кривой.

...