| 
 General InformationThis opening ID is invoked during the creation of a Piping or a HVAC BOM table template. It computes the description property depending on the BOMPartDescription attribute from the drawing profile. A different drawing profile can generate a different description, for example, a different language, or more or less details. Customizing this rule lets you to implement another way to compute the description property. SampleThe following sample 
 Result = NULL
let PartDescriptionMode(Integer) 
if (Parameters.HasAttribute("BOMPartDescription")) 
{
  PartDescriptionMode = Parameters.GetAttributeInteger("BOMPartDescription")
}
else 
{
  PartDescriptionMode = 3
}
let PipingPartObject(Piping_Part)
set PipingPartObject = ThisObject.Reference
if (PipingPartObject <> NULL)
{
  if (PartDescriptionMode == 1) 
  {
    Result = PipingPartObject.V_description
    
    let MysteriousNewlineChar(String)
    MysteriousNewlineChar = TextFormat("|","")
    Result = ReplaceAll(Result, MysteriousNewlineChar, " - ")
  }
  if (PartDescriptionMode == 2 OR (PartDescriptionMode == 1 AND (Result == "") ) )
  {
    // Compute SubPartType, depending wether it is a Piping_PartV1 or Piping_PartV2
    let SubPartType(String)
    let PipingPartObjectV1(Piping_PartV1)
    let PipingPartObjectV2(Piping_PartV2)
    set PipingPartObjectV1 = ThisObject.Reference
    set PipingPartObjectV2 = ThisObject.Reference
  
    if (PipingPartObjectV1<>NULL) {
      SubPartType = ToUpper(PipingPartObjectV1.V_SubPartType)
    }
    else if  (PipingPartObjectV2<>NULL) {
      SubPartType = ToUpper(PipingPartObjectV2.V_SubPartType)
    }
    else {
      SubPartType = "[V_SubPartType]"
    }
  
    // Compute NominalSize
    let NominalSize(String)
    if (PipingPartObject.V_NominalSize <> "") 
      NominalSize= " - " + PipingPartObject.V_NominalSize
    else
      NominalSize = " - [V_NominalSize]"
  
    // Compute EndStyle
    let EndStyle(String)
    if (PipingPartObject.V_EndStyle <> "") 
      EndStyle=" - " + PipingPartObject.V_EndStyle
    else
      EndStyle = "- [V_EndStyle]"
  
    // Compute Rating        
    let Rating(String)
    if (PipingPartObject.V_Rating <> "")
      Rating=" - " + PipingPartObject.V_Rating
    else
      Rating = " - [V_Rating]"
  
    // Compute Material Name
    let MaterialName(String)
    if (PipingPartObject.V_MaterialName <> "")
      MaterialName = " - " + PipingPartObject.V_MaterialName
    else
      MaterialName = "- [V_MaterialName]"    
  
    Result = SubPartType + NominalSize + EndStyle + Rating + MaterialName
  }
  else if (PartDescriptionMode == 3) 
  {
    Result = PipingPartObject.V_Name
  }
}
//Message("Result: ", Result)
 | |||||||