KWA Catia R24 - 通过脚本激活/停用组件(拉伸问题)
KWA Catia R24 - Activate / Deactivate components by script (Problem with Extrude)
我已经为 GS 中的 Activate/Deactivate 组件创建了简单的代码(通过简单的修改,您也可以 Hide/Show 组件)在 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
}
对 运行 脚本的反应:
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)
}
Extrude 不一定是曲面。例如,您可以将一个点拉伸成一条线。
我认为正在发生的事情是,当该功能被停用时,没有表面,因此在查询期间不会返回任何内容。 CATIA 似乎只关心生成的形状而不关心对象类型 - 当您查询 "Surface".
时
如果您查询和处理 "GSMExtrude" 而不是 "Surface",您会发现它有效。
所以当收集要重新激活的对象时,也许你可以这样做:
lObjects = geoset->Query("Surface","") + geoset->Query("GSMExtrude","")
这应该能让你得到一切。肯定会在重新激活时使事情变得复杂。
同样的事情也可能适用于其他类型,也许是 Split 功能。 Split 也可以是曲面,也可以是曲线。
我已经为 GS 中的 Activate/Deactivate 组件创建了简单的代码(通过简单的修改,您也可以 Hide/Show 组件)在 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
}
对 运行 脚本的反应:
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)
}
Extrude 不一定是曲面。例如,您可以将一个点拉伸成一条线。
我认为正在发生的事情是,当该功能被停用时,没有表面,因此在查询期间不会返回任何内容。 CATIA 似乎只关心生成的形状而不关心对象类型 - 当您查询 "Surface".
时如果您查询和处理 "GSMExtrude" 而不是 "Surface",您会发现它有效。
所以当收集要重新激活的对象时,也许你可以这样做:
lObjects = geoset->Query("Surface","") + geoset->Query("GSMExtrude","")
这应该能让你得到一切。肯定会在重新激活时使事情变得复杂。
同样的事情也可能适用于其他类型,也许是 Split 功能。 Split 也可以是曲面,也可以是曲线。