Context
Different exemples of EKL actions to rename
- 3D Piping Part instance
- 3D Piping Product instances and references
- ....
Rename Piping Spool
Exemple 1
EKL Action : Rename all spool Ref & inst
- default value :
+ "_" + "SPL-" + - if spool contains only one valve, value =
- REF :
+ "_" + "SPL-" + - INST :
+ "_"
- REF :
EKL Action : rename also the Spool Member Instance name
- value = Part Ref name + "-" + Spool Count" (2digit) + Part Count ( 2digit)
note : the EKL action can be improved for the spool containing a valve :
- the current code doesn't check if the valve is with flanged connection. --> if condition to be adjusted
- the current code checks that the spool contain only one Piping Valve but it can contains any other number of other type of piping components. --> if condition to be adjusted
- each time the action is launched the spools are rename even if they have the good syntax
- checking the syntax before renaming is possible but code will be much more complex --> need to list all count numbers already used and build the list of available ones that can be used for the spool to be renamed
/*
Input: ThisObject (VPMInstance)
*/
Let PipeLineInst(VPMInstance)
Let PipeLineRef(VPMReference)
set PipeLineInst=ThisObject
set PipeLineRef=PipeLineInst.Reference
Let PipeLineSpoolMemberList(List)
let PipeLineSpoolMemberListSize(integer)
let PipeLineSpoolMember(Piping_Spool_Inst)
let PipeLineSpoolMemberRef(VPMReference)
let SeqNumber, PartSeqNumber(String)
let SeqNumberMax, PartSeqNumberMax (String)
let IDNumber,PartIDNumber (string)
let SpoolName(string)
// retreive Pipeline Instance Name as prefix for spool
let PipeLinePrefix(string)
PipeLinePrefix=PipeLineInst.PLM_ExternalID
//retreive all Piping Spool from selected Product
set PipeLineSpoolMemberList =PipeLineRef.Query("Piping_Spool_Inst","")
set PipeLineSpoolMemberListSize=PipeLineSpoolMemberList->Size()
set SeqNumberMax=ToString(PipeLineSpoolMemberListSize)
//Message("number of Spool: ",PipeLineSpoolMemberListSize)
let SpoolValveMemberList(List)
let SpoolValveMemberListSize(Integer)
let SpoolValveMemberInst (VPMInstance)
let SpoolValveMemberRef (VPMReference)
let i,j(integer)
i=1
IDNumber=""
j=1
PartIDNumber=""
// For Each Spool
For i While i<=PipeLineSpoolMemberListSize
{
// #### Rename Spool
set PipeLineSpoolMember=PipeLineSpoolMemberList->GetItem(i)
//Message ("Spool Inst curent Name: ", PipeLineSpoolMember.PLM_ExternalID)
set PipeLineSpoolMemberRef=PipeLineSpoolMember.Reference
//Message ("Spool Ref curent Name: ", PipeLineSpoolMemberRef.V_Name)
// retreive each spool and name it "SPL-" + count on 3 digit
// manage Count on 2 digit
if(SeqNumberMax.Length()<3)
{
set IDNumber=ToString(i)
// get unique next new number from the database counter
SeqNumber = "00" + IDNumber
//*get the unique sequence number with 2 digits and leading 0*/
SeqNumber = SeqNumber.Extract(SeqNumber.Length() -2, 2)
}
else
{
SeqNumber = IDNumber
}
set SpoolName=PipeLinePrefix +"_" + "SPL-" + SeqNumber
i=i+1
// Valuate Spool Ref and Inst name with same value = SpoolName
PipeLineSpoolMemberRef.V_Name=SpoolName
PipeLineSpoolMember.PLM_ExternalID=SpoolName
// #### Rename Spool Members
//Rename each member of the spool
let SpoolMemberList(list)
let SpoolMemberInst(VPMInstance)
let SpoolMemberRef(VPMReference)
let SpoolMemberListSize(integer)
let SpoolMemberNewInstName(String)
set SpoolMemberList =PipeLineSpoolMemberRef.Query("VPMInstance","")
set SpoolMemberListSize=SpoolMemberList->Size()
set PartSeqNumberMax=ToString(PipeLineSpoolMemberListSize)
For j While j<=SpoolMemberListSize
{
// retreive each spool member
set SpoolMemberInst=SpoolMemberList->GetItem(j)
set SpoolMemberRef=SpoolMemberInst.Reference
// Manage count
if(PartSeqNumberMax.Length()<3)
{
set PartIDNumber=ToString(j)
// get unique next new number from the database counter
PartSeqNumber ="00" + PartIDNumber
//*get the unique sequence number with 2 digits and leading 0*/
PartSeqNumber = PartSeqNumber.Extract(PartSeqNumber.Length() -2, 2)
}
else
{
PartSeqNumber = PartIDNumber
}
SpoolMemberNewInstName = SpoolMemberRef.V_Name + "-" + SeqNumber + PartSeqNumber
SpoolMemberInst.PLM_ExternalID=SpoolMemberNewInstName
j=j+1
}
// reinitialisation of spool member count for next spool
j=1
// if the spool contains only one Piping Valve, spool name will be renamed = Valve instance name
set SpoolValveMemberList =PipeLineSpoolMemberRef.Query("Piping_Valve_Inst","")
set SpoolValveMemberListSize=SpoolValveMemberList->Size()
Message ("Spool with only valve: ", SpoolValveMemberListSize)
if (SpoolValveMemberListSize==1)
{
set SpoolValveMemberInst=SpoolValveMemberList->GetItem(1)
set SpoolValveMemberRef=SpoolValveMemberInst.Reference
set SpoolName=PipeLinePrefix +"_"+ SpoolValveMemberInst.PLM_ExternalID
PipeLineSpoolMember.PLM_ExternalID=SpoolName
}
}