Purpose
Propagate attribute beetween obect when :
A component is connected to another component
A component is disconnected from another component
A connected component is deleted
Datasetup Resource Set :
Diagram Resource
Datasetup Resource : Rule to Keep Information on Connected Components
Exemples
from DS Doc : Equipment Connected to Nozzles
The following example, an equipment is connected to two nozzles.
The rule is triggered when connecting the three components.
Notify("Rule Triggered")
Let ThisInstanceObject(RFLVPMLogicalInstance)
set ThisInstanceObject = ThisObject.Instance
Let TargetOccurrence(LogicalOccurrence)
set TargetOccurrence = Parameters.GetAttributeObject("Target_Component_Occ")
Let bOperation(Boolean)
set bOperation = Parameters.GetAttributeBoolean("Connect_Case")
Let TargetInstanceObject(RFLVPMLogicalInstance)
set TargetInstanceObject = TargetOccurrence.Instance
let SourceName(String)
set SourceName = ThisInstanceObject.PLM_ExternalID
let TargetName(String)
set TargetName = TargetInstanceObject.PLM_ExternalID
let SourceDes(String)
set SourceDes = ThisInstanceObject.V_description
let TargetDes(String)
set TargetDes = TargetInstanceObject.V_description
if(bOperation == true )
{
if(SourceDes.Length() == 0)
SourceDes = SourceDes + TargetName
else
SourceDes = SourceDes + ";" + TargetName
if(TargetDes.Length() == 0)
TargetDes = TargetDes + SourceName
else
TargetDes = TargetDes + ";" + SourceName
Notify("Connect case")
}
else
{
let returnedIndex(integer)
returnedIndex = SourceDes.Search(TargetName,0,true)
if(returnedIndex <> -1)
{
let SrcResultingStr(String)
set SrcResultingStr = ReplaceSubText(SourceDes,";" + TargetName,"")
if(SrcResultingStr == SourceDes)
{
let SrcResultingStr1(String)
SrcResultingStr1 = ReplaceSubText(SourceDes,TargetName+";","")
if(SrcResultingStr1 == SourceDes)
{
let SrcResultingStr2(String)
SrcResultingStr2 = ReplaceSubText(SourceDes,TargetName,"")
SourceDes = SrcResultingStr2
}
else
SourceDes = SrcResultingStr1
}
else
SourceDes = SrcResultingStr
}
returnedIndex = TargetDes.Search(SourceName,0,true)
if(returnedIndex <> -1)
{
let TrgtResultingStr(String)
set TrgtResultingStr = ReplaceSubText(TargetDes,";"+SourceName,"")
if(TrgtResultingStr == TargetDes)
{
let TrgtResultingStr1(String)
TrgtResultingStr1 = ReplaceSubText(TargetDes,SourceName+";","")
if(TrgtResultingStr1 == TargetDes)
{
let TrgtResultingStr2(String)
TrgtResultingStr2 = ReplaceSubText(TargetDes,SourceName,"")
TargetDes = TrgtResultingStr2
}
else
TargetDes = TrgtResultingStr1
}
else
TargetDes = TrgtResultingStr
}
Notify("Disconnect case")
}
ThisInstanceObject.SetAttributeString("V_description", SourceDes)
TargetInstanceObject.SetAttributeString("V_description", TargetDes)
The description attributes are updated with the instance names of the connected components.
If the equipment is disconnected from one of the nozzles, the Description attribute is updated.
