General InformationThis opening ID is invoked when you use the Associate Junction Points command. For more information, see Electrical 3D Design user's guide: Associating Junction Points with Cables.
Input ObjectsInput objects must be of the following types:
Context Object Parameters
SampleThe following sample illustrates how to use this opening ID.
// SETUP
/******************************************/
Let status(INTEGER)
Let Message(String)
Let RootContext(ProductOccurrence)
Let ListCableOccurrences(LIST)
Let nbCableOcc(Integer)
Let CableOcc(Elec3DCableOccurrence)
Let CableRef(Elec3DCable)
Let EPS_Cable(Electrical3DSystem)
Let EPS_A(Electrical3DSystemOccurrence)
Let EPS_B(Electrical3DSystemOccurrence)
Let EPS_C(Electrical3DSystemOccurrence)
Let Zone_Part_A(ProductOccurrence)
Let Zone_Part_B(ProductOccurrence)
Let Zone_Part_C(ProductOccurrence)
Let Zone_Part_A_Jn_Pt1(Elec3DJunctionPoint)
Let Zone_Part_B_Jn_Pt1(Elec3DJunctionPoint)
Let Zone_Part_C_Jn_Pt1(Elec3DJunctionPoint)
Let ToDevice(ProductOccurrence)
Let FromDevice(ProductOccurrence)
Let ToPort(Elec3DCavity)
Let FromPort(Elec3DCavity)
Let nbElecRoutes(Integer)
Let ListElecRoute(LIST)
Let ListElecRouteStatus(LIST)
Let ElecRoute_Cable(ElecRoute)
Let ElecRoute_1(ElecRoute)
Let ElecRoute_2(ElecRoute)
Let ElecRoute_3(ElecRoute)
Let ElecRoute(ElecRoute)
Let ListJnpartsFinal(LIST)
Let ListJnPointsFinal(LIST)
Let ListElecRoutesFinal(LIST)
Let ListElecRoutesStatusFinal(LIST)
Let ElecRoute_1_Dispatched(ElecRoute)
Let ElecRoute_2_Dispatched(ElecRoute)
Let ElecRoute_3_Dispatched(ElecRoute)
Let ElecRoute_4_Dispatched(ElecRoute)
/******************************************/
// EXECUTION
/******************************************/
/* From ThisObject*/
Set RootContext = ThisObject
/* From Context Imput*/
Set ListCableOccurrences = Parameters.GetAttributeObject("List_CableOccurrence")
nbCableOcc = ListCableOccurrences.Size()
if (nbCableOcc > 0) Set CableOcc = ListCableOccurrences.GetItem(1)
if (CableOcc == NULL)
{
Notify("No CableOccurrence Found.")
exit
}
Set CableRef = CableOcc.Reference
if (CableRef == NULL)
{
Notify("No CableReference Found.")
exit
}
/* From the RootContext get the relevant EPS(s). */
Set EPS_A = RootContext->Access("PrdRootZone.1\Prd_Zone_A.1\EPS_A.1", "Electrical3DSystemOccurrence")
Set EPS_B = RootContext->Access("PrdRootZone.1\Prd_Zone_B.1\EPS_B.1", "Electrical3DSystemOccurrence")
Set EPS_C = RootContext->Access("PrdRootZone.1\Prd_Zone_C.1\EPS_C.1", "Electrical3DSystemOccurrence")
/* From the RootContext get the relevant Junction Device(s). */
Set Zone_Part_A = RootContext->Access("PrdRootZone.1\Prd_ZoneInterfaces.1\Zone_Part_A.1", "ProductOccurrence")
Set Zone_Part_B = RootContext->Access("PrdRootZone.1\Prd_ZoneInterfaces.1\Zone_Part_A.2", "ProductOccurrence")
Set Zone_Part_C = RootContext->Access("PrdRootZone.1\Prd_ZoneInterfaces.1\Zone_Part_A.3", "ProductOccurrence")
/* From CableRef */
status = CableRef.GetFrom(FromDevice, FromPort)
status = CableRef.GetTo(ToDevice, ToPort)
status = CableRef.ListOrderedRoutes(ListElecRoute, ListElecRouteStatus)
nbElecRoutes = ListElecRoute.Size()
if (nbElecRoutes <> 1)
{
Notify("More/Less than one Route")
exit
}
Set ElecRoute_Cable = ListElecRoute->GetItem(1)
if (ElecRoute_Cable == NULL)
{
Notify("No ElecRoute_Cable Found.")
exit
}
Let ListNetworkPathElements(LIST)
Let SizePathElems(Integer)
Let ListPaths(LIST)
Let szPaths(Integer)
Let RouteElec3DNetworkPath(Elec3DNetworkPath)
Let FromEnd(Elec3DConductorEnd)
Let ToEnd(Elec3DConductorEnd)
ElecRoute_Cable.GetPath(ListPaths, FromEnd, ToEnd)
szPaths = ListPaths.Size()
if (1 <> szPaths)
{
Notify("ElecRoute not fully routed : " + szPaths)
exit
}
Set RouteElec3DNetworkPath = ListPaths->GetItem(1)
if (NULL == RouteElec3DNetworkPath)
{
Notify("Network path not found.")
exit
}
RouteElec3DNetworkPath.ListNetworkPathElement(ListNetworkPathElements)
SizePathElems = ListNetworkPathElements.Size()
Let ListJnDeviceInNetwork(LIST)
Let ListJnPortInNetwork(LIST)
Let JnDeviceNetworkNode(Elec3DJunctionDeviceNode)
Let JnDeviceOccurrence(ProductOccurrence)
Let JnPort(VPMPort)
Let ListFeatures(LIST)
Let IndexPathElems(Integer)
IndexPathElems = 1
Notify("Size Path Elems: " + SizePathElems)
let PathElem(Feature)
for PathElem inside ListNetworkPathElements
{
Set JnDeviceNetworkNode = PathElem
if (NULL == JnDeviceNetworkNode)
{
continue
}
JnDeviceNetworkNode.GetComponents(JnDeviceOccurrence, JnPort, ListFeatures)
if ((NULL == JnDeviceOccurrence) or (NULL == JnPort))
{
continue
}
Notify("Junction Node Added ")
ListJnDeviceInNetwork.Append(JnDeviceOccurrence)
ListJnPortInNetwork.Append(JnPort)
}
Let szJnsToAdd(Integer)
Let Junction_Device_InNetwork(ProductOccurrence)
Let Junction_Port_InNetwork(Elec3DJunctionPoint)
Let Index, IndexToAdd(Integer)
Index = 1
IndexToAdd = 0
szJnsToAdd = ListJnPortInNetwork.Size()
for Index while Index <= szJnsToAdd
{
Set Junction_Device_InNetwork = ListJnDeviceInNetwork->GetItem(Index)
Set Junction_Port_InNetwork = ListJnPortInNetwork->GetItem(Index)
if ((NULL == Junction_Device_InNetwork) or (NULL == Junction_Port_InNetwork))
{
Notify("Invalid Junction Part/Port found. skipping and continuing")
continue
}
status = CableRef.AddJunctionDeviceAfterPosition(IndexToAdd, Junction_Device_InNetwork, Junction_Port_InNetwork)
if (status > 0)
{
IndexToAdd = IndexToAdd + 1
Notify("success : Junction Part/Port from network associated.")
}
}
status = CableRef.ListOrderedJunctionDevices(ListJnpartsFinal, ListJnPointsFinal)
status = CableRef.ListOrderedRoutes(ListElecRoutesFinal, ListElecRoutesStatusFinal)
Let nbFinalJnParts(Integer)
Let nbFinalJnPoints(Integer)
Let nbFinalRoutes(Integer)
nbFinalJnParts = ListJnpartsFinal.Size()
nbFinalJnPoints = ListJnPointsFinal.Size()
nbFinalRoutes = ListElecRoutesFinal.Size()
if ((nbFinalJnPoints <> (nbFinalRoutes-1)) or (nbFinalJnPoints <> nbFinalJnParts))
{
Notify("Process failed: DataModel Inconsistent")
exit
}
Let Zone_ElecRoute(ElecRoute)
Let Zone_ElecRoute_Dispatched(ElecRoute)
Index = 1
for Index while Index <= nbFinalJnPoints
{
Set Junction_Device_InNetwork = ListJnpartsFinal->GetItem(Index)
Set Junction_Port_InNetwork = ListJnPointsFinal->GetItem(Index)
Set Zone_ElecRoute = ListElecRoutesFinal->GetItem(Index+1)
if ((NULL == Junction_Device_InNetwork) or (NULL == Junction_Port_InNetwork) or (NULL == Zone_ElecRoute))
{
Notify("Invalid Junction Part/Port found. skipping and continuing")
continue
}
if (Zone_Part_A == Junction_Device_InNetwork)
{
status = CableRef.DispatchRouteToEPS(Zone_ElecRoute, EPS_A, Zone_ElecRoute_Dispatched)
}
if (Zone_Part_B == Junction_Device_InNetwork)
{
status = CableRef.DispatchRouteToEPS(Zone_ElecRoute, EPS_B, Zone_ElecRoute_Dispatched)
}
if (Zone_Part_C == Junction_Device_InNetwork)
{
status = CableRef.DispatchRouteToEPS(Zone_ElecRoute, EPS_C, Zone_ElecRoute_Dispatched)
}
}
Notify("Process Complete")
| |||||||||||||||||||||||||||