Cost Model Workbench User Guide
1 Getting Started with the Cost Model Work Bench
Starting and Exiting the CMWB
Components of the CMWB Interface
Working with Cost Models
Opening and Closing Cost Models
Importing and Exporting Cost Models
Overriding Cost Model Objects
Saving Cost Model Changes
Publishing and Reverting Cost Models
Working with Cost Model Data and Metadata
Working with Cost Model Logic
2 Working with Cost Model Data and Metadata
Navigating to Global Data
Navigating to the Data for a Process, Operation or Branch Node
Navigating from the Template Graph to the Data for a Given Node
Navigating from the Navigation Tree to the Data for a Given Process or Operation
Navigating from the Navigation Tree to the Data for a Given Branch Node
Working with Plant Variables
Viewing and Modifying Cost Model Variables
Viewing and Modifying VPE Variables
Creating New Plant Variables
Deleting Plant Variables
Working with Lookup Tables
Navigating to Lookup Tables
Viewing and Modifying Lookup Tables
Viewing and Modifying Lookup Table Definitions
Creating Lookup Table Definitions
Deleting Lookup Table Definitions
Adding New Lookup Tables
Removing Lookup Tables
Working with Machine Metadata
Viewing and Modifying Machine Types
Adding Machine Types
Deleting Machine Types
Adding or Modifying a Machine Field for Multiple Processes
Working with Material Metadata
Viewing and Modifying Material Types
Adding or Modifying a Material Field for Multiple Process Groups
Working with Material Stock Metadata
Viewing and Modifying Material Stock Types
Working with Tool Shop Metadata
Viewing and Modifying Tool Shop Types
Adding Tool Shop Types
Deleting Tool Shop Types
Associating a Tool Shop Type with a Process
Removing a Tool Shop Type from a Process
Working with Tool Material Metadata
Viewing and Modifying Tool Material Types
Adding Tool Material Types
Deleting Tool Material Types
Working with Process Setup Options
Navigating to Process Setup Options
About Process Setup Options
Modifying Process Setup Options
Adding and Deleting Process Setup Options
Including and Excluding GCD Types
Working with Column Groups and Column Properties
Working with Node Attributes
Navigating to Node Attributes
Adding, Removing, and Modifying Node Attributes
Predefined Node Attributes
2SetupMilling
aggregationOperation
allowNumOccurrencesOverride
assignOpsWithActivePrimaryAxesFirst
checkForRollingInRouting
contourCuttingProcess
coring
costModeClass
costPerimetersFirst
disableRingedHoleGeneration
displayOperationCategories
displayInSPDialog
finishGrinding
generateRingedHoles
generatorName
hasPiercing
hasPiloting
hasPilotingOp
hasSetupAxisKey
ignoreUpperGtolBound
inFoundryProcess
isBarFeedLathe
isGreenSand
isPerimeterCut
isPerimeterStampingProcess
isPlasmaCutting
isWaterjetCutting
isRoughing
MachiningNode
mcdType
operationCategory
otherSecondaryProcesses
PartiallyObstructedFaceMilling
perimeterCutting
Plasma Cutting
PreviouslyCountersunk
PreviouslyThreaded
primaryGtolOp
primaryHolemakingOp
requiresRotationalAxes
requiresSingleFaceStockTrim
runFourthCostingPass
selectMachineAfterOpAssignment
SimpleHoleFinishing
sortGcdsByFinishArea
stockPrep
supportsStripNesting
supportsTruePartNesting
threading
toolMaterialKey
useAdvancedUtilization
userNamedProcess
useSheetStock
utilizationProcess
Waterjet Cutting
3 Working with Cost Model Logic
CSL Language Overview
Formulas
Rules
Advice Rules
Imports
Values
Expressions
Arithmetic
String
Boolean
Conditional
Function Invocation
Query
Line Continuation
Comments
Searching Within and Across CSL Modules
Using the CSL Debugger
Displaying the Debugger
Adding Breakpoints
Running the Debugger
Dragging Items from the Inputs/Formula Results Tree
Paths with One Collection
Paths with Two Collections
Paths with More than Two Collections
CSL Reference Information
Viewing and Editing CSL Modules
Navigating to Global CSL Modules
Navigating to the CSL Modules for a Given Node
Viewing CSL Modules
Editing CSL Modules
Using Completion
Defining CSL Code Templates
Adding CSL Modules
Deleting CSL Modules
Creating and Deleting Processes, Operations, and Branch Nodes
Creating and Copying Processes
Creating a Process by Copying
Creating a Process with Standard Taxonomy and Machine Selection Modules
Creating a Process from Scratch
Creating and Copying Operations
Creating Branch Nodes
Deleting Processes, Operations, and Branch Nodes
Working with Formula Tables
Adding a Formula to the Formula Table
Controlling Whether a Custom Output Appears in the Part Details Tab
Template Pruning
Context of Evaluation
Example
Material Stock Selection
Context of Evaluation
Finding or Designating a Routing’s Stock Selector
Stock Selector Input
Stock Selector Outputs
Example
Process and Operation Optionality
Context of Evaluation
Example
Process and Operation Feasibility
Context of Evaluation
Examples
Machine Selection
Context of Evaluation
Example
Tool Selection
Process and Operation Taxonomy
Context of Evaluation
Example
Working with Zero-or-More Nodes
Working with Templates
About Templates
Viewing and Editing Templates
4 Cost Engine Details
Hierarchies
Algorithm Overview
Process Template Expansion and Pruning
Material Stock Selection
Feasibility and Machine Selection
Operation Assignment
Operation Costing
Process Costing
5 Cost Scripting Language Reference
Overview
Module Types
Module Contents
Values and Expressions
Modules, Inputs, and Outputs
Syntax
Inputs
Accessibility
allOps
BarShape
childOps
childResults
ComplexHoleSubType
constants
defaultMachine
Direction
EdgeShape
FormType
gcd
global
HoleType
InclusionStatus
KeywayBottomType
KeywayEndType
material
machine
machines
Lookup table identifiers
op
part
PartingType
passNumber
perCosting
perRouting
plant
RelationType
results
setup
SetupDirectionType
SetupType
site
stock
tool
tools
toolShop
TurningApproach
VoidShape
Outputs
Taxonomy Modules
Feasibility Modules
Stock Selection Modules
Machine Selection Modules
Tool Selection Modules
Template Pruning Modules
Optionality Modules
Return Values
Imports
Formulas and Rules
Formulas
Set Blocks
Example
Example
Rules
Messages
Advice Rules
Advice
Function Definitions
Expressions
Arithmetic Expressions
String Expressions
Boolean Expressions
Conditional Expressions
Function Invocations
Query Expressions
Select clause
From clause
Examples
Foreach Expressions
With Clause
Like Expressions
Example
Identifiers and Literals
Simple Identifiers
Complex Identifiers
Examples
Numerical Literals
String Literals
Boolean Literals
Comments and Line Continuation
Predefined Functions
Numeric Functions
abs(x)
acos(x)
asin(x)
atan(x)
cos(x)
divZero(x, y)
equalsEps(x, y, z)
exp(x)
interpolate(x, x0, x1, y0, y1)
len(x)
ln(x)
max(x, y, z, ...)
maxNonNegativeNumber(x, y, z, ...)
min(x, y, z, ...)
minNonNegativeNumber(x, y, z, ...)
round(x)
roundEps(x, y)
rounddown(x)
roundup(x)
sin(x)
sqrt(x)
sum(x, y, z, ...)
tan(x)
getProperty(row, column)
String Functions
Conversion Functions
asNumber(s)
asString(n)
downCase(s)
upcase(s)
Index Functions
index(s1, s2)
index(s1, s2, i)
lastIndex(s1, s2)
lastIndex(s1, s2, i)
len(s)
Substring Functions
mid(s, i)
mid(s, i, j)
prefix(s1, s2)
suffix(s1, s2)
suffix2(s1, s2)
List Functions
asPair(object-1, object-2)
asList(element-1, … , element-n)
listCons(newHead, list)
listAsString(list, [separator])
listFirst(list)
listGet(list, i)
listRest(list)
listReverse(list)
listSize(list)
Example
Map Functions
asMap(key-1, value-1, ... key-n, value-n)
asOrderedMap(key-1, value-1, ... key-n, value-n)
mapGet(map, key)
mapPut(map, key, value)
Node Attribute Functions
getAttributeValue(op, attributeName)
getAttributeValueAsBoolean(op, attributeName)
getAttributeValueAsNumber(op, attributeName)
getNodeInTree(op, attributeName)
hasAttribute(op, attributeName)
hasNodeInTree(op, attributeName)
hasNodeInTreeWithTrueValue(op, attributeName)
Examples
Routing Navigation Functions
isNodePrecededBy(node, precedingNodeName)
Error Handling Functions
assert(val, ruleName)
assert(val, ruleName, message)
fail(message)
msg(x, y, ...)
Interpolation Function
interpolate(x, x0, x1, y0, y1)
Miscellaneous Functions
calculateNesting(op)
dtcMessage(field-name-1, field-value-1, ... field-name-n, field-value-n)
gcdNeedsCam(artifact, coDirectionalEpsilon)
getAngleBetweenPartStripFlowAndSetupAxis( holeSetupAxis, normalVector, eastDirection )
getDistanceToPartFrontEnd(turningAxis, Gcd)
getFlattenedOps(op)
getCamAssignments( holes, codirectionalEpsilon, minimumDistanceBetweenHoles, rows )
isTrue(string)
isNodePrecededBy(node, precedingNodeName)
safeEval(expression, defaultValue)
safeGet(x, altVal)
getSlidesAndLiftersForGCDs( gcds, maxGCDPitch, maxActionLength, minimumLifterClearance, drawDirectionOrthogonalEpsilon )
getAssociatedSlides(gcd, slideList, forLengthWise)
getAssociatedSlideBundles(gcd, slideBundleList, forLengthWise)
postMessageAndReturnValue(value, message)
getClockAngle(normalDirection, noonDirection, clockDirection)
hasField(obj, fieldName)
getFinishedArea(plantRMillPercentile, gcd, op)
6 Common Task Examples
Adding a New Process to a Process Group
Creating a New Process from Scratch
Creating a New Process from an Existing Process
Copying the Process
Renaming the Operations
Adding Operations
Adding New Processes and Operations to Templates
Navigating to and Modifying Templates
Modifying the Process-level Routings
Modifying the Operation-level Routings
Defining and Modifying Machine Types
Defining a Machine Type for a New Process
Modifying a Machine Type—Padding Cycle Time
Modifying a Machine Type—Preferring One Class of Machines Over Another
Modifying Machine Selection
Removing unwanted machine checks
Preferring One Class of Machines Over Another
Adding Feasibility Rules
Adding New Plant Variables
Adding Plant Variables for a New Process
Adding Plant Variables—Padding Cycle Time
Adding New Process Setup Options
Adding a Setup Option—Using CSL, Formula, and User Modes
Adding a Setup Option—Using List Mode to Access a Lookup Table
Adding a Setup Option—Padding Cycle Time
Adding Lookup Tables
Adding a Lookup Table Definition
Adding a Lookup Table
Modifying Taxonomy Modules
Modifying the Formula Table
Modifying the Cycle Time Formulas
Padding Cycle Time by Adding a Constant
Adding and Modifying Library Modules
Creating a New Library
Modifying a Library Module
Cost Model Workbench User Guide
Modifying a Library Module