Browsing product structure > Expanding or collapsing an assembly
Controlling structure expansion using closure rules
Sometimes, you may want to control expansion of certain structure lines. For example, if a line has a monolithic JT file attached to it, you may not want to expand the subassembly below it. Similarly, you may not want to expand an assembly if it is not assigned to the current project. The following video shows how to apply closure rules to structures to control BOM expansion. Closure rules define rules of structure expansion. Using closure rules, you can reduce potentially time-consuming expansions. Some examples of closure rule applications are: Expose or hide structure occurrences Skip or remove structure occurrences Allow or restrict expansion of sub-assemblies You can apply one of the existing closure rules or your administrator can create closure rules. Closure rule comprise five fields: primary object selector, secondary object selector, relation selector, action, and an optional conditional clause. For details about each component of a closure rule, view Syntax for closure rules. Once the closure rule is created, administrator must add it to the ClosureRulesForBomExpansion preference to make it available for the users. The following two examples explain how closure rules can be used to control structure expansion: Example 1: Closure rule with Process action type This example shows how application of the BOMExpand-FindNumber closure rule impacts a product structure. This closure rule is created with the following values: Primary Object Class Type Primary Object Secondary Object Class Type Secondary Object Relation Type Relation Property Or Object Action Type Conditional Clause CLASS BOMLine CLASS BOMLine PROPERTY bl_child_lines PROCESS SECONDARY.bl_sequence_no==$var When this closure rule is applied, it restricts the expansion of those BOMLines, which have a child BOMLine with the user-specified Find No.
Procedure Consider the following structure.
Note that only body subassembly has child components with Find No = 20. The structure is initially in collapsed form. The header shows that no closure rule is applied. When the user applies the closure rule with Find No = 20, the structure remains in the same state after the Process action. The header is updated to show that BOMExpand-FindNumber closure rule is applied. If the user tries to expand the body subassembly, which has child components with Find No = 20, the closure rule does not allow the expansion and a message is shown. However, the user can expand the engine assembly node, which does not have a child component with Find No=20. Example 2: Closure rule with Skip action type This example shows how application of the BOMExpand-FindNumber-skip closure rule impacts a product structure. In this closure rule, the Action Type value is Skip. All other values remain same as in the earlier example. Primary Object Class Type Primary Object Secondary Object Class Type Secondary Object Relation Type Relation Property Or Object Action Type Conditional Clause CLASS BOMLine CLASS BOMLine PROPERTY bl_child_lines SKIP SECONDARY.bl_sequence_no==$var
Procedure Initially the subassembly is in the expanded form with no closure rule applied.
Note that body subassembly has child components with Find No = 20. When the BOMExpand-FindNumber-skip closure rule is applied, with user entered Find No=20, the Body subassembly is skipped and removed from the structure as it contains child components with Find No =20. However, the engine_assy is not removed as it does not contain any child component with Find No=20.
Source: https://docs.sw.siemens.com/documentation/external/PL20251212545240207/en-US/tc_help/pse/xwp1737253321731/cjc1737253323775/xid1972793.html · retrieved Sat Jul 11 2026 00:00:00 GMT+0000 (Coordinated Universal Time)