EKL - BL Compute stamping placement

Introduction

Usage : rule to place automatically a stamping symbol on a sheet view based on a sheet criteria

allows to specify which symbol to used and where to place it in the sheet

Datasetup Resource Set : 

  • Diagram Resource

Datasetup Resource : Schematic_computeStampingPlacement

Rule Example 1

Description

the rule is looking to the Sheet description and insert the symbol with the same name

4 values supported : "France", "Diffusion", "Restricted", "NoRestriction"

symbol is placed horizontally at position around : sheet top middle

Pre-req

Define a logical References with one symbol per stamp.

Attach this logical reference in datasetup Diagram Resources / StampingSymbolSet

Rule

/* Compute Stamping Placement (Schematic_ComputeStampingPlacement) */
/* ThisObject : #In DIFSheet */ 
/* Parameters : #In RuleContext */

//Notify All Available Symbol Names
let InputSymbols(list)
set InputSymbols = Parameters.GetAttributeObject("Symbol_Names_In")
let symbolName(String)
for symbolName inside InputSymbols
{
    Notify(symbolName)
}

//Declare the output Lists
let OutputSymbols(list)
let OutputSymbolsPosX(list)
let OutputSymbolsPosY(list)
let OutputSymbolsRotation(list)
let OutputSymbolsFlip(list)
let OutputSymbolsScale(list)

//Get The Sheet Properties and monitored attribute/attributes
let sSheetDescr(String)
set sSheetDescr = ThisObject.GetAttributeString("V_description")

let sheetWidth(Real)
let sheetHeight(Real)
sheetWidth =  ThisObject.V_DIFFormatWidth
sheetHeight = ThisObject.V_DIFFormatHeight

//Keyword Found indicators
let France(Real)
let Diffusion(Real)
let Reserve(real)
let NonProtege(Real)
let Conf(Real)
let PropIntel(Real)

//Keyword search process
France = sSheetDescr.Search("France")
Diffusion = sSheetDescr.Search("Diffusion")
Reserve = sSheetDescr.Search("Restricted")
NonProtege = sSheetDescr.Search("NoRestriction")

if(France >= 0)
{
    //Output symbol called StampingSymbolFrance is used twice for 2 instances
    OutputSymbols.Append("StampingSymbolFrance")
    OutputSymbolsPosX.Append((sheetWidth/2) -25)
    OutputSymbolsPosY.Append(30)
    OutputSymbolsRotation.Append(0)
    OutputSymbolsFlip.Append(FALSE)
    OutputSymbolsScale.Append(1)
    
    OutputSymbols.Append("StampingSymbolFrance")
    OutputSymbolsPosX.Append((sheetWidth/2) +50)
    OutputSymbolsPosY.Append(sheetHeight - 40)
    OutputSymbolsRotation.Append(0)
    OutputSymbolsFlip.Append(FALSE)
    OutputSymbolsScale.Append(1)
}
if(Diffusion  >= 0)
{
    OutputSymbols.Append("StampingSymbolDiffusion")
    OutputSymbolsPosX.Append((sheetWidth/2) -25)
    OutputSymbolsPosY.Append(sheetHeight - 20)
    OutputSymbolsRotation.Append(0)
    OutputSymbolsFlip.Append(FALSE)
    OutputSymbolsScale.Append(1)
}
if(Reserve  >= 0)
{
    OutputSymbols.Append("StampingSymbolRestricted")
    OutputSymbolsPosX.Append((sheetWidth/2)-100)
    OutputSymbolsPosY.Append(sheetHeight - 40)
    OutputSymbolsRotation.Append(0)
    OutputSymbolsFlip.Append(FALSE)
    OutputSymbolsScale.Append(1)
}
if(NonProtege >= 0)
{
    OutputSymbols.Append("StampingSymbolNoRestriction")
    OutputSymbolsPosX.Append((sheetWidth/2) -100)
    OutputSymbolsPosY.Append(sheetHeight - 40)
    OutputSymbolsRotation.Append(0)
    OutputSymbolsFlip.Append(FALSE)
    OutputSymbolsScale.Append(1)
}

//Set the outputs for the BR
Parameters.SetAttributeObject("Symbol_Names_Out", OutputSymbols)
Parameters.SetAttributeObject("Symbol_PositionX", OutputSymbolsPosX)
Parameters.SetAttributeObject("Symbol_PositionY", OutputSymbolsPosY)
Parameters.SetAttributeObject("Symbol_RotationAngle", OutputSymbolsRotation)
Parameters.SetAttributeObject("Is_Flip", OutputSymbolsFlip)
Parameters.SetAttributeObject("Symbol_Scale", OutputSymbolsScale)

3DXML