| 
 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)
 | |||||||