About the Electrical Network Exposition in the Enterprise Knowledge Language

Exposing the electrical network in the Enterprise Knowledge Language simplifies the navigation throughout the network and lets you manipulate electrical objects.

This page discusses:

Network Exposition

The traditional model of the 3D electrical network is mapped in EKL in a graph-like model composed of arcs and nodes.

An arc is a linear object corresponding to a segment, and it is limited by two nodes.

A node is a single object composed of one or several objects of the traditional electrical 3D model. The following objects can be merged in one single node:

  • Device occurrence and splice occurrence
  • Electrical port and segment extremity
  • Distant link
  • Branch point and proxy branch point

There are four types of node which are specialized depending on the objects they aggregate:

Several feature types are added to the EKL electrical package to navigate the graph model:

Illustration

Network in the traditional model Network in the graph model

Segment extremity
Proxy branch point
Device
Splice
Distant link
Segment

Device node
Junction node
Splice node
Proxy node
Arc

Navigation

Working with the graph model allows to access and manipulate any element in the electrical network. The navigation is possible:

From... To...
  • An electrical device
  • An equipment occurrence
  • A connection point
A connected device
  • An electrical device
  • An equipment occurrence
A connected segment
A segment
  • A connected electrical device
  • An equipment occurrence

The navigation is also possible inside a segment network.

Conductor Route

In the EKL exposition of the electrical network, the route of a conductor is defined through a network path.

The network path defines a way in the network and is composed of an ordered set of nodes and arcs. It starts from a node and ends by a node. In the following example, a path is highlighted in red:

Information on a conductor route can be retrieved using two feature types which are specific to the graph model:

Methods & Functions

Methods and functions are added to the electrical package to supplement the electrical network exposition in EKL. These methods and functions can be exposed on feature types belonging to the graph model or to the traditional model.

Methods on Feature Types Specific to the Graph Model

Feature Type Method Name Description
Elec3DNetworkNode Elec3DNetworkNode.GetArcs Retrieves the arcs of a node.
Elec3DNetworkNode.NextArcs Allows to navigate the network from a node to its next connected arcs.
Specialized nodes Elec3DDeviceNode Elec3DDeviceNode.GetComponents Retrieves the electrical 3D objects belonging to a device node.
Elec3DSpliceNode Elec3DSpliceNode.GetComponents Retrieves the electrical 3D objects belonging to a splice node.
Elec3DProxyNode Elec3DProxyNode.GetComponents Retrieves the 3D objects belonging to a proxy node.
Elec3DJunctionNode Elec3DJunctionNode.GetComponents Retrieves the segment extremities belonging to a junction node.
Elec3DJunctionDeviceNode Elec3DJunctionDeviceNode.GetComponents() Retrieves the electrical 3D objects belonging to a junction device node.
Elec3DNetworkArc Elec3DNetworkArc.GetComponent Retrieves the segment belonging to an arc.
Elec3DNetworkArc.GetNodes Retrieves the nodes of an arc.
Elec3DNetworkArc.NextNode Allows to navigate the network from an arc to its next connected node.
Elec3DNetworkArc.SegregationCode Retrieves the segregation code of a segment belonging to an arc.
Elec3DNetworkArc.ComputeLength Computes the length of a network arc.
Elec3DNetworkArc.ComputeSupportPosition Computes the position of a support in a network arc.
Elec3DNetworkPath Elec3DNetworkPath.ListNetworkPathElement Retrieves the network elements (nodes and arcs) belonging to a network path.
Elec3DNetworkPath.ListSupport Retrieves the supports belonging to a network path.
Elec3DNetworkPath.ListProtection Retrieves the protections belonging to a network path.
Elec3DNetworkPath.ComputeLength Computes the length of the network path.
Elec3DNetworkPath.GetPathBetweenNodes Retrieves the path between two nodes.
Elec3DNetworkPath.ListNodeWithPosition Computes the position of nodes in a network path.
Elec3DNetworkPath.ListSupportWithPosition Computes the position of supports in a network path.
Elec3DNetworkPath.ListBendWithPosition Computes the position of bends in a network path.
Elec3DConductorEnd Elec3DConductorEnd.GetDevice Retrieves the device connected at a conductor extremity.
Elec3DConductorEnd.ComputeLength Retrieves the length of a conductor extremity based on the cavities and the connected devices (backshells).

Methods on Feature Types Belonging to the Traditional Model

Feature Type Method Name Description
Branch Branch.GetPath Creates the network path of a branch.
Segment Segment.GetPath Creates the network path of a segment.
SharedSupportPartOccurrence SharedSupportPartOccurrence.ListArc Retrieves the arcs corresponding to the segments routed inside a support occurrence.
SegmentExtremity SegmentExtremity.GetNode Retrieves the node connected at a segment extremity.
Conductor Conductor.GetPath Creates the network path(s) and the extremities of a conductor.
Conductor.SetPath Assigns a network path to a conductor to define its route.
ConductorGroup ConductorGroup.CreateConductor Creates a conductor in a conductor group.
ConductorGroup.AddConductor Assigns a conductor in a conductor group.
Elec3DSystem Elec3DSystem.CreateConductor Creates a conductor in an electrical physical system.
Elec3DSystem.CreateConductorGroup Creates a conductor group in an electrical physical system.

Functions Specific to the Graph Model

Function Name Description
ListConnectedDevices Retrieves all the device occurrences connected to the electrical port(s) of a device occurrence.
GetConnectedDevice Retrieves the device connected to a specific electrical port of a device occurrence.
ListConnectedNodes Retrieves all the nodes (and their associated arcs) connected to a device occurrence.
GetConnectedArcs Retrieves all the nodes (and their associated arcs) connected to a specific electrical port of a device occurrence.
CreatePath Creates a network path using a list of connected segments.
ResetElectricalNetworkGraph() Resets all the network information stored in the cache, including the network's nodes and arcs.

Use Case Example

The following example illustrates how the network path of a routed conductor can be analyzed.

In this example, the network path and the ends of the conductor are retrieved. The EKL exposition allows to:

  • Retrieve the elements at the conductor's ends: device, cavities, and backshells
  • Compute the length of the network path
  • Analyze the path of the conductor's route by:
    • Retrieving information on the conductor's arcs
    • Retrieving information on the conductor's nodes
    • Retrieving information on the supports belonging to the conductor's route.

Model

Traditional network Graph network


Branch point
Cavity
Segment connection point
Backshell connection point
Backshell
Connector
Support
Conductor's route



Device node
Arc
Junction node
Arc
Junction node
Arc
Device node
Network path

Sample

Notify ( " wire :  ",SelectedConductor.Name)

// --- Get conductor path and ends from routed conductor 
let PathList(List)
let ConductorPath( Elec3DNetworkPath)
let ConductorEnd1(Elec3DConductorEnd)
let ConductorEnd2(Elec3DConductorEnd)

SelectedConductor->GetPath(PathList ,ConductorEnd1,ConductorEnd2)

if ( PathList.Size() <> 1 )
{
	Notify ( " conductor not routed ")
	exit 
}

// --- retrieve the conductor route as network path 
ConductorPath = PathList->GetItem(1)

// 
let deviceId(String)
let cavityId(String)
let DeviceOcc(ProductOccurrence)
let DeviceCavity(Elec3DCavity)

// -- Retrieve conductor end 1 data 
deviceId="not set"
cavityId="not set"
ConductorEnd1.GetDevice(DeviceOcc,DeviceCavity)
if ( DeviceOcc <> NULL )  deviceId=DeviceOcc.Name
	if ( DeviceCavity <> NULL )  cavityId=DeviceCavity.V_FunctionalName
	Notify ( "    From :   connector  ",deviceId, "    ",cavityId)

// -- Retrieve conductor end 2 data  
deviceId="not set"
cavityId="not set"
DeviceOcc=NULL
DeviceCavity=NULL
ConductorEnd2.GetDevice(DeviceOcc,DeviceCavity)
if ( DeviceOcc <> NULL )  deviceId=DeviceOcc.Name
	if ( DeviceCavity <> NULL )  cavityId=DeviceCavity.V_FunctionalName
	Notify ( "    To:   connector  ",deviceId, "    ",cavityId)

//  --- compute condutor end 1 length (  = length of cavity + backshell ) 
let LX1(LENGTH)
ConductorEnd1.ComputeLength(LX1)
//  --- compute condutor end 2 ( To ) length ( =  length of cavity  ) 
let LX2(LENGTH)
ConductorEnd2.ComputeLength(LX2)

// compute path length 
let PathLength(LENGTH)
ConductorPath.ComputeLength(PathLength)

// compute route length from End1 + End2 + Path lengths
let RouteLength(LENGTH)
RouteLength=LX1+LX2+PathLength

Notify ("     Path length=",PathLength,"   End 1 extra length=",LX1, "    End 2 extra length=",LX2)

//   --- compute arc and node properties  in network path 
Notify ("     Path analysis  ")

let PathElemList(List)
ConductorPath.ListNetworkPathElement(PathElemList) 

let PathElem(Feature)
let PathArc(Elec3DNetworkArc)
let arc_index (Integer)
arc_index=0
for PathElem inside PathElemList
{
	set PathArc = PathElem
	if ( PathArc <> NULL ) 
	{
		arc_index = arc_index+1	
		// retrier arc separation code
		Notify ( "      arc ",arc_index,"   sep code =  ",PathArc.SegregationCode )	
	}
}

let PathNode(Elec3DNetworkNode)
let node_index (Integer)
node_index=0

let PathDeviceNode(Elec3DDeviceNode)
let PathProxyNode(Elec3DProxyNode)
let PathJunctionNode(Elec3DJunctionNode)
let PathSpliceNode(Elec3DSpliceNode)

for PathElem inside PathElemList
{
	set PathNode = PathElem
	if ( PathNode <> NULL ) 
	{
		node_index = node_index+1	
		set     PathDeviceNode = PathElem
		set     PathProxyNode = PathElem
		set     PathJunctionNode = PathElem
		set     PathSpliceNode = PathElem	 
		
		if (   NULL <> PathDeviceNode )  
		{
			let DeviceNodeOcc(ProductOccurrence)
			let Cavity(VPMPort)
			let ListElem(List)
			PathDeviceNode.GetComponents(DeviceNodeOcc,Cavity,ListElem)
			Notify("      node  ",node_index, "   :  device node ","   [connected to device ",DeviceNodeOcc.Name,"]") 			
		}
		
		if (   NULL <> PathJunctionNode )   Notify("      node  ",node_index, "   :  junction node ")
			if (   NULL <> PathProxyNode )   Notify("      node  ",node_index, "   :  proxy node ")
			if (   NULL <> PathSpliceNode )   Notify("      node  ",node_index, "   :  splice node ")
		}
}



Notify ("     Computed support positions on wire ( distance from conductor end 1 )  ")
// compute support positions on path 
let ListSupport(List)
let ListEntrySupportPosition(List)
let ListExitSupportPosition(List)
ConductorPath.ListSupportWithPosition(ListSupport,ListEntrySupportPosition,ListExitSupportPosition)

// compute support positions on conductor
let nb_spt(Integer)
nb_spt=ListSupport.Size()
let i_spt(Integer)
let Support(SharedSupportPartOccurrence)

let entry_pos(LENGTH)
let exit_pos(LENGTH)

i_spt=1
for i_spt  while i_spt <=nb_spt
{ 
	set Support = ListSupport->GetItem(i_spt)
	set  entry_pos=ListEntrySupportPosition->GetItem(i_spt)   // position of support on segment network path  ( entry ) 
	set  exit_pos=ListExitSupportPosition->GetItem(i_spt)         // position of support on segment network path  ( exit ) 
	
	// add conductor end 1 extra length to compute length from conductor extremity  
	entry_pos=entry_pos+LX1  
	exit_pos=exit_pos+LX1     
	Notify ("                 support ",Support.Name, "   in=",entry_pos, "  out=",exit_pos    )
	
}