Managing Symbol Automatic Placement (Schematic_ManageAutomaticSymbolPlacement)

An opening ID is an entry point used to customize business logic. The Schematic_ManageAutomaticSymbolPlacement opening ID is used to decide wether a symbol must be placed automatically or manually and choose the position, rotation and flip of the symbol during automatic placement.

Note: For more information about customization by business rules, see Installation and Setup: Customize: Behavior: Data Setup: Customization by Business Rules.

This page discusses:

General Information

This opening ID is invoked every time a symbol is placed in view.

This opening ID is used to customize:

  • The manual or automatic placement of a symbol
  • The symbol position, rotation and flip.

Definition Description
PLM Opening ID Schematic_ManageAutomaticSymbolPlacement
Customization intent Execution
Execution context Client

Input Objects

Input objects must be of the following types:

  • ThisObject: RFLVPMLogicalReference
  • Parameters corresponds to the context object.

Context Object Parameters

Parameter Name Type Read or Write Comments
Object_Occurrence (input) LogicalOccurrence Read Logical occurrence of the object to be placed.
Symbol_Name (input) String Read Name of the symbol to be placed.
Is_AutoPlacement (output) Boolean Write Boolean to decide if the symbol is to be placed automatically.
Symbol_PositionX (output) Real Write X position of symbol in the context of the sheet.
Symbol_PositionY (output) Real Write Y position of symbol in the context of the sheet.
Symbol_RotationAngle (output) Real Write Rotation angle of the symbol in degree.
Is_Flip (output) Boolean Write Boolean to decide if the Symbol is to be flipped:
  • To Flip X, set this boolean to TRUE.
  • To Flip Y, set this boolean to TRUE and set Symbol_RotationAngle=PI

Sample

In the following example, the business rule is set to place and flip the piping logical valve compoent automatically at the (200,200) position in the sheet.

Let ReferenceObject(RFLVPMLogicalReference)
set ReferenceObject = ThisObject

Let Is_AutoPlacement(Boolean)
set Is_AutoPlacement = FALSE
Let Symbol_PositionX(Real)
Let Symbol_PositionY(Real)
Let Symbol_RotationAngle(Real)
let IsSymbolFlip(Boolean)

Let ObjInstance(RFLVPMLogicalInstance)
Let ObjOccurrence(LogicalOccurrence)
Set ObjOccurrence = Parameters.GetAttributeObject ("Object_Occurrence")
set IsSymbolFlip = FALSE

Set ObjInstance = ObjOccurrence.Instance

if(NULL <> ReferenceObject)
{ 

	if(NULL  <> ObjInstance)
	{
		set Is_AutoPlacement = TRUE
		set Symbol_PositionX = 200
		set Symbol_PositionY = 200
		set Symbol_RotationAngle = 0.0
		set IsSymbolFlip = TRUE
	}	
}

Parameters.SetAttributeBoolean ("Is_AutoPlacement", Is_AutoPlacement)
Parameters.SetAttributeReal ("Symbol_PositionX", Symbol_PositionX)
Parameters.SetAttributeReal ("Symbol_PositionY", Symbol_PositionY)
Parameters.SetAttributeReal ("Symbol_RotationAngle", Symbol_RotationAngle)
Parameters.SetAttributeBoolean ("Is_Flip", IsSymbolFlip)