View Update Rule Samples for Different Types of Parts

This section describes the EKL scripts for different type of parts.

This page discusses:

Scripts for Piping Model

All piping parts directly under specific subsystem.

Let currentInstance(PLMCoreInstance)
Let RootFather(PLMCoreReference)
Let PipPartOcc(ProductOccurrence)
Result = Input.IsASortOf("Piping_Pipe_Occurrence") 
Let SubsytemName(String)
set SubsytemName = "Physical - PIP - BN 366 - Block 40 - 722 FW Cooling"
if(Result)
{
	/* Navigate to the father */
	set PipPartOcc = Input
	set currentInstance = PipPartOcc.Instance
	set RootFather = currentInstance.Owner
	Result  = ( RootFather <> NULL)
	if(Result)
		Result = (RootFather.V_Name == SubsytemName)
}

All pipes under specific subsystem (Direct child or indirect child of specific subsystem)

Let currentInstance(PLMCoreInstance)
Let RootFather(PLMCoreReference)
Let PipeOcc(ProductOccurrence)
Let ii(Integer)
Let SubsytemName(String)
set SubsytemName = "Physical - PIP - BN 366 - Block 40 - 722 FW Cooling"
Result = Input.IsASortOf("Piping_Pipe_Occurrence") 
if(Result)
{
	/* Navigate to the father */
	set PipeOcc = Input
	Result = FALSE
	for ii while PipeOcc <> NULL AND Result == FALSE 
	{
		set currentInstance = PipeOcc.Instance
		set RootFather = currentInstance.Owner
		Result  = ( RootFather <> NULL)
		if(Result)
		{
			Result = (RootFather.V_Name == SubsytemName)
			
		}
		if(Result == FALSE)
			set PipeOcc = PipeOcc.Owner
	}
}

All Rigid pipes

Let PipeOcc(Piping_Pipe_Occurrence)
Let PipVPMRerence(VPMReference)
Set PipeOcc = Input
if(PipeOcc <> NULL)
{
	set PipVPMRerence = PipeOcc.Reference
	if(PipVPMRerence <> NULL)
		Result =PipVPMRerence.IsASortOf("Piping_Rigid_Pipe")
}

All Piping Flanges with SubPartType (Flange)

Let PipPartOcc(Piping_Part_Occurrence)
Let PipVPMReference(VPMReference)
Let PipPartV1(Piping_PartV1)
/*If the input is a Piping part*/
set PipPartOcc = Input
if(PipPartOcc <> NULL)
{
	set PipPartV1 = PipPartOcc.Reference
	/*If the Piping part */
	if(PipPartV1 <> NULL)
	{
		/*Get the SubPartType name, see if it is "Flange" */
		Result = (PipPartV1.V_SubPartType == "Flange")
	}
}

Script for Structure Functional Data (SFD)

All SFD plate with thickness 20mm

Let SFDPPlate(SldPlate)
Let PlateThickness(LENGTH)
set PlateThickness = 20mm
set  SFDPPlate = Input
Result = ( Input.IsASortOf("SldPlate") )
if(Result)
	Result =( NULL  <> SFDPPlate and (round(SFDPPlate.Thickness,"mm",2.0) == round(PlateThickness,"mm",2.0)))
 

All SFD Plate

Result = Input.IsASortOf("SldPlate")

All SFD Stiffener

Result = Input.IsASortOf("SldStiffener")

Scripts for Structure Design Data (SDD)

All SDD Structure Stiffeners

Let StructureOcc(ProductOccurrence )
Let StructureRef (PLMCoreReference) 
Let StructureSiff(Structure_Stiffener)
set StructureOcc = Input
set StructureRef = StructureOcc.Reference 
Result = StructureRef.IsASortOf("Structure_Stiffener")

All SDD Structure Plates

Let StructureOcc(ProductOccurrence )
Let StructureRef (PLMCoreReference) 
set StructureOcc = Input
set StructureRef = StructureOcc.Reference 
Result = StructureRef.IsASortOf("Structure_Plate")            

All SDD Structure Plates of Thickness 20mm

Let StructureOcc(ProductOccurrence )
Let StructurePlateRef(Structure_Plate) 
set StructureOcc = Input
if(StructureOcc <> NULL)
{
	set StructurePlateRef = StructureOcc.Reference 
	if(StructurePlateRef <> NULL)
	{
		Result =((round(StructurePlateRef.V_StrThickness ,"mm",2.0) == round(20mm,"mm",2.0)))
	}
}