Automatic Creation of Tabbed Opening with Required Parameters Using a Business Rule
You can define a business rule in data setup to define the tabbed opening parameters. During Update IPM, this rule is run and based on the output of the business rule defined by you, the tabbed openings automatically create.
Define the below parameters of the tabbed opening as per requirements:
- Number of Tabs
- Tab width
- Tab Length
- Burn Direction (Clockwise/Anti-Clockwise)
- Lead In Lead Out geometry type (Line/Arc)
- Lead In Lead Out Lengths (For Line type geometry)
- Lead In Lead Out Radius (For arc type geometry)
- Lead In Lead Out Angle

You can define the output parameters as per required requirements in the business rule:
- LeadInGeometryType - The geometry type of the LeadI in (Line/Arc).
- LeadOutGeometryType - The geometry type of the Lead Out (Line/Arc).
- NoOfTabs - Minimum number of tabs
- TabWidth - Tab width.
- TabLength - Maximum Length of tab.
- LeadInLegth - Length of Lead In for Line type geometry.
- LeadOutLength - Length of Lead Out for Line type geometry.
- LeadInRadius - Radius of Lead In for Arc type geometry.
- LeadOutRadius - Radius of Lead Out for Arc’ type geometry.
- LeadInAngle - Angle of Lead In.
- LeadOutAngle - Angle of Lead Out.
- BurnDirection - Direction of burn curve (0 for counterclockwise and 1 for clockwise).
Here is an example business rule for the tabbed opening.
let Process(ElementaryEndItem) let SDD_Opening(SddOpening) set Process = Parameters.GetAttributeObject("ProcessItem") set SDD_Opening = Parameters.GetAttributeObject("SddOpening") Let ProcessOutput(VPMReference) Let SDDObject(VPMReference) Let SDD_ProdMember(Structure_Member) Let SDD_ProdStiffener(Structure_Stiffener) Let SDD_ProdPlate(Structure_Plate) Let SDD_ProdStiffenerOnFreeEdge(Structure_StiffenerOnFreeEdge) Let SDD_ProdPanel(Structure_Panel) let SDD_OpeningFeat(MechanicalFeature) let SDD_OpeningPanel(SddOpeningPanel) let lThickness(LENGTH) let LeadInGeometryType(string) let LeadOutGeometryType(string) let NoOfTabs(Integer) let TabWidth(LENGTH) let TabLength(LENGTH) let LeadInLength(LENGTH) let LeadOutLength(LENGTH) let LeadInRadius(LENGTH) let LeadOutRadius(LENGTH) let LeadInAngle(ANGLE) let LeadOutAngle(ANGLE) let BurnCurveDirection(Integer) Set ProcessOutput = Process.GetProcessOutput() Set SDDObject = ProcessOutput.GetStructureDesignObject() Set SDD_ProdMember = SDDObject Set SDD_ProdStiffener = SDDObject Set SDD_ProdPlate = SDDObject Set SDD_ProdStiffenerOnFreeEdge = SDDObject Set SDD_ProdPanel = SDDObject set SDD_OpeningPanel = Parameters.GetAttributeObject("SddOpening") /* output value : Set default to NONE*/ let OpeningPrepType(String) OpeningPrepType = "NONE" if (NULL <> SDD_ProdMember) { let strMemberCategory(String) set strMemberCategory = SDD_ProdMember.V_StrCategory let StrMemberMaterial(String) set StrMemberMaterial = SDD_ProdMember.V_StrMaterial if (strMemberCategory == "Member" OR strMemberCategory == "Beam" OR strMemberCategory == "Column") { let StrCutOutType(String) set StrCutOutType = SDD_Opening.CutOutType let StrOpeningCategory(String) set StrOpeningCategory = SDD_Opening.Category if ((StrMemberMaterial.SearchPattern("Steel") == "Steel") OR(StrMemberMaterial.SearchPattern("STEEL") == "STEEL")) { if (StrCutOutType == "catStrOpeningOutputProfile" and StrOpeningCategory == "SddOpening") { OpeningPrepType = "MARKED" } else if (StrCutOutType == "catStrOpeningStandard" and StrOpeningCategory == "LighteningHole") { let StrContourType(String) set StrContourType = SDD_Opening.ContourType if (StrContourType == "Str_Rect") { OpeningPrepType = "CUT" } else if (StrContourType == "Str_Round") { OpeningPrepType = "MARKED" } } } } } else if (NULL <> SDD_ProdStiffener) { let strStiffenerCategory(String) set strStiffenerCategory = SDD_ProdStiffener.V_StrCategory let StrStiffenerMaterial(String) set StrStiffenerMaterial = SDD_ProdStiffener.V_StrMaterial if (strStiffenerCategory == "Stiffener" OR strStiffenerCategory == "Deck Stiffener" OR strStiffenerCategory == "Deck Longitudinal Stiffener" OR strStiffenerCategory == "Deck Transverse Stiffener") { let StrCutOutType(String) set StrCutOutType = SDD_Opening.CutOutType let StrOpeningCategory(String) set StrOpeningCategory = SDD_Opening.Category if ((StrStiffenerMaterial.SearchPattern("Steel") == "Steel") OR(StrStiffenerMaterial.SearchPattern("STEEL") == "STEEL")) { if (StrCutOutType == "catStrOpeningOutputProfile" and StrOpeningCategory == "SddOpening") { OpeningPrepType = "MARKED" } else if (StrCutOutType == "catStrOpeningStandard" and StrOpeningCategory == "LighteningHole") { let StrContourType(String) set StrContourType = SDD_Opening.ContourType if (StrContourType == "Str_Rect") { OpeningPrepType = "CUT" } else if (StrContourType == "Str_Round") { OpeningPrepType = "MARKED" } } } } } else if (NULL <> SDD_ProdPlate) { let StrPlateMaterial(String) set StrPlateMaterial = SDD_ProdPlate.V_StrMaterial set lThickness = SDD_ProdPlate.V_StrThickness if ((StrPlateMaterial.SearchPattern("Steel") == "Steel") OR(StrPlateMaterial.SearchPattern("STEEL") == "STEEL")) { if (lThickness <0.4in and lThickness > 0.1in) { OpeningPrepType = "TABBED" set LeadInGeometryType = "Line" set LeadOutGeometryType = "Line" set NoOfTabs = 6 set TabWidth = 25in set TabLength = 400in set LeadInLength = 80in set LeadOutLength = 40in set LeadInRadius = 80in set LeadOutRadius = 40in set LeadInAngle = 45deg set LeadOutAngle = 90deg set BurnCurveDirection = 1 Parameters.SetAttributeString("LeadInGeometryType", LeadInGeometryType) Parameters.SetAttributeString("LeadOutGeometryType", LeadOutGeometryType) Parameters.SetAttributeInteger("NoOfTabs", NoOfTabs) Parameters.SetAttributeDimension("TabWidth", TabWidth, "LENGTH") Parameters.SetAttributeDimension("TabLength", TabLength, "LENGTH") Parameters.SetAttributeDimension("LeadInLength", LeadInLength, "LENGTH") Parameters.SetAttributeDimension("LeadOutLength", LeadOutLength, "LENGTH") Parameters.SetAttributeDimension("LeadInRadius", LeadInRadius, "LENGTH") Parameters.SetAttributeDimension("LeadOutRadius", LeadOutRadius, "LENGTH") Parameters.SetAttributeDimension("LeadInAngle", LeadInAngle, "ANGLE") Parameters.SetAttributeDimension("LeadOutAngle", LeadOutAngle, "ANGLE") Parameters.SetAttributeInteger("BurnDirection", BurnCurveDirection) } else OpeningPrepType = "MARKED" } } else if (NULL <> SDD_ProdStiffenerOnFreeEdge) { let StrSFEMaterial(String) set StrSFEMaterial = SDD_ProdStiffenerOnFreeEdge.V_StrMaterial if ((StrSFEMaterial.SearchPattern("Steel") == "Steel") OR(StrSFEMaterial.SearchPattern("STEEL") == "STEEL")) { OpeningPrepType = "MARKED" } } else if (NULL <> SDD_ProdPanel) { let StrPanelMaterial(String) set StrPanelMaterial = SDD_ProdPanel.V_StrMaterial set lThickness = SDD_ProdPanel.V_StrThickness let OpeningCutPerimeter(LENGTH) let OpeningProfile(feature) let OpeningProfileCrv(Curve) SDD_OpeningPanel->GetIntersectingElement(OpeningProfile) set OpeningProfileCrv = OpeningProfile set OpeningCutPerimeter = length(OpeningProfileCrv) if ((StrPanelMaterial.SearchPattern("Steel") == "Steel") OR(StrPanelMaterial.SearchPattern("STEEL") == "STEEL")) { if (OpeningCutPerimeter <250in and lThickness < 1in) { OpeningPrepType = "TABBED" set LeadInGeometryType = "Line" set LeadOutGeometryType = "Line" set NoOfTabs = 6 set TabWidth = 5in set TabLength = 40in set LeadInLength = 10in set LeadOutLength = 5in set LeadInRadius = 10in set LeadOutRadius = 5in set LeadInAngle = 90deg set LeadOutAngle = 75deg set BurnCurveDirection = 1 Parameters.SetAttributeString("LeadInGeometryType", LeadInGeometryType) Parameters.SetAttributeString("LeadOutGeometryType", LeadOutGeometryType) Parameters.SetAttributeInteger("NoOfTabs", NoOfTabs) Parameters.SetAttributeDimension("TabWidth", TabWidth, "LENGTH") Parameters.SetAttributeDimension("TabLength", TabLength, "LENGTH") Parameters.SetAttributeDimension("LeadInLength", LeadInLength, "LENGTH") Parameters.SetAttributeDimension("LeadOutLength", LeadOutLength, "LENGTH") Parameters.SetAttributeDimension("LeadInRadius", LeadInRadius, "LENGTH") Parameters.SetAttributeDimension("LeadOutRadius", LeadOutRadius, "LENGTH") Parameters.SetAttributeDimension("LeadInAngle", LeadInAngle, "ANGLE") Parameters.SetAttributeDimension("LeadOutAngle", LeadOutAngle, "ANGLE") Parameters.SetAttributeInteger("BurnDirection", BurnCurveDirection) } else OpeningPrepType = "MARKED" } } Parameters.SetAttributeString("oOpeningPrepType", OpeningPrepType)
During Update IPM and Synchronization, the above business rule runs and based on the output parameters of the rule, the tabbed openings create accordingly.
Not defining any of the attributes in the rule then the values defined in the power copy considers for tabbed opening creation.
Using Edit Features of the tabbed opening, you can edit;
- Start point of the first tab of the tabbed opening.
- The Burn curve direction of the tabbed opening (Clockwise/anticlockwise).