General InformationThis opening ID is invoked when the basic shape feature type is modified to another Parameter-driven shape (pad, cylinder, cone, sphere). This opening ID is used to customize the computation of the dimension for the parameter-driven shape.
Input ObjectsInput objects must be of the following types:
Context Object Parameters
SampleThe following sample
/* CATRule signature (do not edit) : (ThisObject : #In Sys3D_AbstractVolume, Parameters : #In RuleContext) : VoidType */
let currentShapeType (String)
let newShapeType (String)
let d1(Length)
let d2(Length)
let d3(Length)
let dH (Length)
let d2Valid (boolean)
let d3Valid (boolean)
let listColor(LIST)
let bIsSet (boolean)
let sMessage(String)
set d2Valid = false
set d3Valid = false
set bIsSet = false
set currentShapeType = Parameters.GetAttributeString("Current3DShape")
set newShapeType = Parameters.GetAttributeString("Target3DShape")
if(newShapeType <> currentShapeType)
{
// Get the dimensions from current shape
set d1 = 0.0mm
set d2 = 0.0mm
set d3 = 0.0mm
set dH = 0.0mm
if(currentShapeType == "Pad")
{
set d1 = Parameters.GetAttributeReal("CurrentBaseLength")*1mm
set d2 = Parameters.GetAttributeReal("CurrentBaseWidth")*1mm
set d3 = Parameters.GetAttributeReal("CurrentHeight")*1mm
set d2Valid = true
set d3Valid = true
}
else if ( (currentShapeType == "Cone") or (currentShapeType == "Cylinder") )
{
set d1 = Parameters.GetAttributeReal("CurrentBaseDiameter")*1mm
set d3 = Parameters.GetAttributeReal("CurrentHeight")*1mm
set d3Valid = true
}
else if(currentShapeType == "Sphere")
{
set d1 = Parameters.GetAttributeReal("CurrentDiameter")*1mm
}
// Update the dimension of new shape based on valid dimensions
// If current shepe has height, the height should be used as height (/ diame</Value><Value IDX="12">N11Nter for sphere)
// All other dimension should be equal to D1
set sMessage = sMessage + " (d1 = " + ToString(d1) + ", d2 = " + ToString(d2) + ", d3 = " + ToString(d2) + ")"
set sMessage = sMessage + " To " + newShapeType
set dH = d1
if(true == d3Valid)
dH = d3
if( (newShapeType == "Cylinder") or (newShapeType == "Cone") )
{
Parameters.SetAttributeDimension("BaseDiameter", d1, "Length")
Parameters.SetAttributeDimension("Height", dH, "Length")
set sMessage = sMessage + " ( BaseDia = " + ToString(d1) + " Height = " + ToString(dH) + ")"
set bIsSet = true
}
else if(newShapeType == "Pad")
{
Parameters.SetAttributeDimension("BaseLength", d1, "Length")
Parameters.SetAttributeDimension("BaseWidth", d1, "Length")
Parameters.SetAttributeDimension("Height", dH, "Length")
set sMessage = sMessage + " ( BaseLength = BaseWidth = " + ToString(d1) + " Height = " + ToString(dH) + ")"
set bIsSet = true
}
else if(newShapeType == "Sphere")
{
Parameters.SetAttributeDimension("Diameter", dH, "Length")
set sMessage = sMessage + " ( Dia = " + ToString(dH) + ")"
set bIsSet = true
}
// Decide the color based on type of volume
if(true == ThisObject.IsSupporting("Sys3D_ComponentVolume"))
{
listColor.Append(175) //R
listColor.Append(224) //G
listColor.Append(183) //B
}
else if(true == ThisObject.IsSupporting("Sys3D_DerivationVolume"))
{
listColor.Append(145) //R
listColor.Append(232) //G
listColor.Append(250) //B
}
else if(true == ThisObject.IsSupporting("Sys3D_InterfaceVolume"))
{
listColor.Append(102) //R
listColor.Append(161) //G
listColor.Append(237) //B
}
else // default color
{
listColor.Append(218) //R
listColor.Append(218) //G
listColor.Append(218) //B
}
}
if(bIsSet == false)
{
Parameters.Message = "ERROR: Dimensions not computed"
Parameters.Severity = 2
}
else
{
Parameters.Message = sMessage
Parameters.Severity = 0
}
Notify(sMessage)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||