Pinned Routings
As of Release 2018 R1, you can now specify a desired Bulk Costing routing via the User Inputs spreadsheet. Previously, this “pinning” capability was available only through the Routing Selection dialog and the interactive Bulk Costing user interface. This enhancement makes it more efficient and less error-prone to perform bulk costing of many scenarios with known routings, as well as to perform cost model validation and calibration, since it is possible to save all costing inputs in an User Inputs spreadsheet for repeated costings. It also enables companies to more easily include routing data received from other enterprise systems.
The spreadsheet column for this feature is pinnedRouting. Also, for Release 2018 R1, users can have aPriori skip all feasibility checks by providing the value TRUE in a new ignoreAllProcessFeasibility column.
The pinnedRouting column accepts a comma separated list of process(es) and/or node(s) that specify a non-ambiguous routing, such as “VerticalAutomatic, 3 Axis Mill” in the Casting – Sand process group. The column is case-sensitive.
Note: “Non-ambiguous” does not mean “unique”. A pinned routing string is considered ambiguous and will be rejected if it matches a disjoint set of routings. In other words, aPriori allows anything that you can achieve via the Routing Selection view, where you can pin a single routing or group of routings, including all down-stream alternatives, but does not permit multi-selections.
If you specify only “VerticalAutomatic” in the pinnedRouting column, aPriori will evaluate only the VerticalAutomatic routing branch in Casting – Sand, but it will evaluate all possible secondary machining routings for that scenario.
If you specify “VerticalAutomatic, 3 Axis Mill”, only the 3 Axis Mill secondary routing for VerticalAutomatic will be evaluated.
If you enter “aPriori” in the pinnedRouting column, then any previously pinned routings for the specified process group will be un-pinned and all possible routings will be evaluated.
If the components to be costed do not already exist in the database then the Pinned Routing may be left blank and all possible routings will be evaluated.
If you specify an ambiguous routing, aPriori will generate an error message when it attempts to open a Bulk Loader that reads this spreadsheet. (Error messages are displayed as soon as the error is encountered. You may need to iterate through multiple errors and fixes when debugging changes to a User Inputs spreadsheet.)
Specifying routings with canonical format
Specifying valid routings requires an understanding of routing formats and how routings are represented in the Routing Selection window (see Selecting a process routing in Chapter 7).
The key to specifying a valid routing is to identify relevant Alternative nodes (which are prominently highlighted in beige in the Routing Selection window), and then specifying one of the nodes under the Alternative node. (If you do not specify a node underneath a particular Alternative node, then all possible sub-routings downstream from that Alternative node are evaluated.)
This is not a required approach: aPriori will accept any routing specification that results in a non-ambiguous routing, and it is possible to specify a valid, non-ambiguous routing in multiple ways. However, it is best practice to specify the routing in canonical format. This means specifying one of the options underneath every Alternative node (down to the level at which you want aPriori to consider all alternatives), while omitting the names of any other nodes.
Consider the following Waterjet Cut routing in the Sheet Metal process group:
In this particular situation, you could specify the same valid, non-ambiguous routing in at least two ways:
Non-canonical: "Waterjet Cut"
Canonical: "[CTL]/Waterjet/[Bend]"
The non-canonical specification which names a leaf-node (“Waterjet Cut”) within the routing works in this case because there is only one “Waterjet Cut” – it happens to specify a non-ambiguous routing, as would canonically specifying the "[CTL]/Waterjet/[Bend]" node underneath the “Sheet Metal” Alternative node.
However, in a similar process in the Bar & Tube process group, specifying the non-canonical “Punching” node would not work because it exists in more than one routing. You need to specify the canonical format “Bent Part, [CTL]/[Punch]/[Bend]” (or at least “[CTL]/[Punch]/[Bend]”) to successfully specify a non-ambiguous routing.
The efficiency of the canonical format becomes more obvious with more complex routings. For example, compare:
Non-canonical: "Sheet Metal/Machining, Sheet Metal, [CTL]/Laser/[Bend], Material Stock, Laser Cut, Bend Brake, Drill Press Routing, Drill Press"
Canonical: "[CTL]/Laser/[Bend], Drill Press Routing"
Both resolve to the same routing when the inputs spreadsheet is imported:
Note: When defining comma-separated routings, it can be helpful to collapse/expand nodes using the Routing Selection UI to visualize the nodes that you do and do not need to specify. Further note in the example above that Machining (in this case, Drill Press Routing) is a secondary process and it applies to all the routing options under the Primary process. So, no matter what path is chosen from the primary routing, when you exit, you enter the machining routing.
In general, the best way to see the proper syntax for a pinned routing is to pin the routing and then export it from the Bulk Costing UI.
Routing and feasibility columns
You may notice that the Bulk Costing UI displays two columns next to each other: Process Routing and Pinned Routing.
When you create a new Bulk Loader, the Process Routing column will be populated IF the scenario had a routing pinned in the GUI. If you then create a User Inputs spreadsheet from the Bulk Loader, this value will populate the pinnedRouting column in the spreadsheet:
If you change this value (say, to HorizontalAutomatic) and then open the Bulk Loader UI with this User Inputs spreadsheet, both Process Routing and Pinned Routing columns get updated to the new routing.
To implement the “ignore feasibility” feature, append a column to the User Inputs spreadsheet and name it ignoreAllProcessFeasibility. Set a value of TRUE for any row for which you wish to turn off process feasibility checks.
Note: When creating a new User Inputs spreadsheet by using File > Export User Inputs Spreadsheet, this column will only appear and be populated if the scenario that created the Bulk Loader had the feasibility rules checkbox unchecked.