Compute Cable Network Impacts (EWR_ComputeCableNetworkImpacts)

An opening ID is an entry point used to customize business logic. The Compute Cable Network Impacts opening ID is available in the Electrical physical system design resources set. It lets you define your own rules when you analyze the impacts on your cables.

Note: For more information about customization by business rules, see Installation and Setup: Customize: Behavior: Data Setup: Customization by Business Rules.

This page discusses:

General Information

This opening ID is invoked when you analyze the impacts on your cables using the following commands:

  • Network Impact Assistant on Cable Route
  • Routing Assistant

For more information, see Electrical 3D Design User's Guide: Managing Impacts on Cable Routes.

Important:
  • You can define multiple logics with this opening ID.
  • Checks defined in this opening ID can only be performed on cables with a "Fully validated" route status.

Definition Description
PLM Opening ID EWR_ComputeCableNetworkImpacts
Customization intent Execution
Execution context Client

Input Objects

Input objects must be of the following types:

  • ThisObject
  • Parameters corresponds to the context object.

Context Object Parameters

Parameter Name Type Read or Write Comments
FactType VPMReference Type of ThisObject in the business rule body.
ListOfElecCableInfoObjects List Read/Write List of all ElecRouteImpactInfo objects for which impacts need to be computed.

For more information, see Electrical 3D Design: Reference Information: Knowledge Packages: Electrical Feature Types.

Sample 1

The following sample illustrates how to customize the impact analysis based on the itinerary of your cables.

let idx (INTEGER)
let size (INTEGER)
let listInfo(LIST)
let route(ElecRoute)
let Info(ElecRouteImpactInfo)
let ComputedItineraryObj(ElecItinerary)
let ValidatedItineraryObj(ElecItinerary)
let bIsEqual(BOOLEAN)

set listInfo = Parameters.GetAttributeObject("ImpactedRoutes")
Notify ("BR itinerary compare called")

if(NULL <> listInfo)
{
	set size = listInfo.Size()
	set idx = 1
	
	for idx while idx <= size
	{
		set Info = listInfo.GetItem(idx)
		if(NULL <> Info)
		{		
			set route = Info.Elec_Route
			set ComputedItineraryObj = Info.Elec_ComputedItinerary
			set ValidatedItineraryObj = route.Elec_ValidatedItinerary
			
			if ((NULL <> ComputedItineraryObj) and (NULL <> ValidatedItineraryObj))
			{
				set bIsEqual = ComputedItineraryObj.IsEqual(ValidatedItineraryObj)
				if(bIsEqual == FALSE)
				{
					Info->SetAttributeInteger("Elec_IsImpacted", 1)
					Info->SetAttributeString("Elec_ImpactDetails", "COMPUTED and VALIDATED itinerary are DIFFERENT !!!")
				}
			}
		}
	}		
}

Sample 2

The following sample illustrates how to customize the impact analysis based on the length of your cables.

let idx (INTEGER)
let size (INTEGER)
let listInfo(LIST)
let route(ElecRoute)
let Info(ElecRouteImpactInfo)
let ComputedItineraryObj(ElecItinerary)
let ValidatedItineraryObj(ElecItinerary)
let bIsEqual(BOOLEAN)

set listInfo = Parameters.GetAttributeObject("ImpactedRoutes")
Notify ("BR itinerary compare called")

if(NULL <> listInfo)
{
	set size = listInfo.Size()
	set idx = 1
	
	for idx while idx <= size
	{
		set Info = listInfo.GetItem(idx)
		if(NULL <> Info)
		{		
			set route = Info.Elec_Route
			set ComputedItineraryObj = Info.Elec_ComputedItinerary
			set ValidatedItineraryObj = route.Elec_ValidatedItinerary
			
			if ((NULL <> ComputedItineraryObj) and (NULL <> ValidatedItineraryObj))
			{
				set bIsEqual = ComputedItineraryObj.IsEqual(ValidatedItineraryObj)
				if(bIsEqual == FALSE)
				{
					Info->SetAttributeInteger("Elec_IsImpacted", 1)
					Info->SetAttributeString("Elec_ImpactDetails", "COMPUTED and VALIDATED itinerary are DIFFERENT !!!")
				}
			}
		}
	}		
}

Sample 3

The following sample illustrates how to customize the impact analysis based on the itinerary information of your cable routes.

let idx (INTEGER)
let i (INTEGER)
let size (INTEGER)
let listInfo(LIST)
let route(ElecRoute)
let listComputedItineraryElems(LIST)
let listValidatedItineraryElems(LIST)
let sItinerary(STRING)
let sMsg(STRING)
let sRouteName(STRING)
let Info(ElecRouteImpactInfo)
let sizeItinerary(INTEGER)
let ComputedItineraryObj(ElecItinerary)
let ValidatedItineraryObj(ElecItinerary)

set listInfo = Parameters.GetAttributeObject("ImpactedRoutes")
Notify ("BR Print_Itinerary called")

if(NULL <> listInfo)
{
	set size = listInfo.Size()
	set idx = 1
	for idx while idx <= size
	{
		set Info = listInfo.GetItem(idx)
		if(NULL <> Info)
		{
			set route = Info.Elec_Route
			sRouteName = route.Name	
			
			set ComputedItineraryObj = Info.Elec_ComputedItinerary
			set ValidatedItineraryObj = route.Elec_ValidatedItinerary
			
			
			if(NULL <> ComputedItineraryObj)
			{
			
				listComputedItineraryElems = ComputedItineraryObj.Elec_ItineraryElements
				if(NULL <> listComputedItineraryElems)
				{
					set sizeItinerary = listComputedItineraryElems.Size()
					set sItinerary = ""
					set sMsg = ""
					set sMsg = sRouteName + "  Computed Itinerary is : "
				
					set i = 1
					for i while i <= sizeItinerary
					{
						set sItinerary = ""
						set sItinerary = listComputedItineraryElems.GetItem(i)
						sMsg = sMsg + sItinerary + " -- "
					}
					Info->SetAttributeInteger("Elec_IsImpacted", 1)
					Info->SetAttributeString("Elec_ImpactDetails", sMsg)
				}
			}
		}
	}		
}