This rule show the following behavior:
This rule can be further customized to support:
Let child(Feature)
Let parent (Feature)
Let i (Integer)
Let tp (Type)
Let elements(List)
Let specificName(String)
set parent = NULL
Result = FALSE
// Here you should set the specific name, it could also be taken from a KWE attribute in the Drawing
specificName = "LAYOUT"
// first check we are working on some sub-elements of a PartFeature
if (Input.IsSupporting("BodyFeature") == TRUE or Input.IsSupporting("GeometricFeature")== TRUE or Input.IsSupporting("MMOrderedGeometricalSet") == TRUE or Input.IsSupporting("OpenBodyFeature") == TRUE)
{
// is it a set with the name
if (Input.Name == specificName)
{
// Change the layer and color as desired
ActionList.Append("GraphicProperty(LineColor=215,150,40;Layer=111)")
Result = TRUE
//parent = GetPLMOwner(Input)
//Trace(2,"Found GAPrep in #",parent.Name)
}
else
{
// retrieve the part feature to check what is inside
//set tp = Input.PrimaryType
//Trace(2,"primary type of the input #: #",Input.Name, tp.Name)
if Input.IsASortOf("FunctionalBody") == TRUE
{
parent = NULL
}
else
{
parent = Input.Owner
}
//set tp = parent.PrimaryType
//Trace(2,"primary type of the first parent: #",tp.Name)
i = 0
if (parent <> NULL)
{
for i while parent.IsSupporting("PartFeature") <>TRUE and parent.IsSupporting("FunctionalBody") <>TRUE and i< 10
{
set parent = parent.Owner
if (parent <> NULL)
{
set tp = parent.PrimaryType
//Trace(2,"primary type of the #eme parent: #",i, tp.Name)
}
else
{
break
}
}
if i>=10
{
Message ("Problem on feature #",Input.Name)
}
}
// We have the part feature, let's scan it
if (parent <> NULL )
{
if (parent.IsSupporting("PartFeature") or parent.IsSupporting("FunctionalBody"))
{
set elements = parent.Children
for child inside elements
{
// We know there is another set with the specific name
if (child.Name == specificName)
{
Result = TRUE
ActionList.Append("NoShow()")
//parent = GetPLMOwner(Input)
//Trace(2,"do not show body: # as GAPrep is found in #",Input.Name, parent.Name)
break
}
}
}
}
}
}
//Message("Name : # , result: # ",Input.Name, Result)
| |||||||