01The big idea
Ci-Configure runs Creo from a spreadsheet. Each row of the sheet is one command ("open this model", "write these dimensions", "save a PDF"), and the rows run top to bottom. You write rules in cells, not in code.
Every product (a catalog item) has up to three parts. Only the Actions part is required.
Inputs
The questions on the right-hand panel: numbers, text, drop-down lists. What the user types becomes a value the rest can use by name.
Variables
The logic. Each variable is a small formula built from inputs and other variables, e.g. "panel length = length − 2.5".
Actions
The list of Creo commands. Each row can use inputs, variables and expressions, and can be switched on or off by a condition.
Values flow left to right: inputs feed variables, and both feed the action rows. Every cell in the Actions sheet is worked out at the moment its row runs.
02The screen
When a catalog item is open, the main window has these parts:
| Part | What it is for |
|---|---|
| Top bar | ProjectName and Description (the catalog item that is open), JobFolder, ModelOrigin (the folder the Creo models come from) and Utility Catalog, each with an OPEN button. |
| Side tabs | Inputs, Variables, Actions (and Windchill). Pick one to edit that sheet. |
| Actions grid (top) | One line per action row: ID, Action, Description, Conditions. The green play button runs the selected rows. |
| Function inputs (bottom) | The selected row's main inputs and its advanced inputs (one line per item, with its own condition). Grid 1 … Grid 10 show tables a row has produced. |
| Simple | Hides the long input columns so the grid shows only ID, Action, Description, Conditions and Outputs. Leave it on for normal work. |
| Inputs panel (right) | The questions from UI_DATA. Hidden automatically when the item has no inputs. |
| Feedback (bottom) | A live log of what each row did. The same lines go to the log file. |
03Where things are saved
Everything lives under the catalog folder (C:\Ci\CONFIGURE\ on a standard install):
The catalog row
An item only appears in the catalog when it has a row in catalog_setup.xlsx:
| Column | Meaning |
|---|---|
COMPONENT_NAME | Name shown in the catalog list. |
FILE_NAME | The name the item is opened and called by, e.g. FORM_TOOL_3D. If it contains a dot (part.prt) Creo opens that file first. |
MODEL_ORIGIN | Folder the Creo models come from. |
FOLDER_NAME | Sub-folder under CATALOG\ that holds the three sheets. |
IMAGE_NAME | Picture shown for the item (optional; a missing picture only logs a warning). |
ConfigFileNameOpt, ManCfgOpt, UseVariableForNameOpt, UseExcelFileAsInputs | Naming and input options. The Amada items use False|4, False, False||, False. |
04Your first action set
The smallest useful action set opens one model, regenerates it and closes it. It is the Creo health check this website sends with Test my CPS + Creo.
- Add a row to
catalog_setup.xlsxwith FILE_NAME and FOLDER_NAMECREO_HEALTH_CHECK. - Create the folder
CATALOG\CREO_HEALTH_CHECK\and aCAD_DATA.XLSXin it (sheetcatalogDATA, the header row from section 05). - Add the six rows below.
- Open the item in Ci-Configure, select all rows and press play.
- Watch the feedback: each row prints
Running: …; Creo opens the model and closes it again.
| ID | Action | CADInputs | Outputs | 6+ |
|---|---|---|---|---|
| 900005 | Data.ExcelTable.ToDataTable | "D:\…\Batch\batch.xlsx"|CREO_HEALTH_CHECK!|Grid1 | 900005_Grid1 | |
| 900010 | Creo.Model.CloseAll | YES | ||
| 900020 | Creo.Session.SetDirectory | DTCell(900005_Grid1,0,MODEL_ORIGIN) | ||
| 900030 | Creo.Model.OpenMany | None|NO|NoOutput | model name, folder, NO, NO, TRUE | |
| 900040 | Creo.Solid.Regenerate | DTCell(900005_Grid1,0,TEST_MODEL) | NoResolveMode | |
| 900050 | Creo.Model.CloseAll | YES |
Row 900005 reads its own sheet of the batch file into a table called 900005_Grid1; every later row takes its values from that table with DTCell. That is the pattern every Amada module follows.
05The Actions sheet (CAD_DATA)
One row per command. Rows run in order, top to bottom.
| Column | What goes in it |
|---|---|
ID | A unique number. Leave gaps (100010, 100020 …) so rows can be added later. Tables a row makes are named after it: <ID>_Grid1. |
Action | The command, e.g. Creo.ModelItem.WriteMany. Adding [Name] after it (Creo.Model.CloseAll [Setup]) only groups rows in the grid so they fold and move together; each row still keeps its own condition. |
[for-loop] Description | Your note for the row. If it holds a table name, the row runs once per row of that table (see section 09). |
CADInputs | The command's main inputs, separated by |. Each one can be a plain value, a name or an expression. |
Conditions | Leave empty to always run. Otherwise an expression that must be true (1) for the row to run, e.g. =(MFG_RUN,1). A Boolean variable name on its own works too. |
Outputs | Name of the table the row produces (e.g. 100010_Grid1), when it produces one. |
6 … 44 | Advanced inputs. Each column is a | list with one entry per item, so one row can write many dimensions to many models. Many commands have a per-item Condition column here as well. |
Example: write two parameters in one row
Action Creo.ModelItem.WriteMany CADInputs NO|NO|NO|NO|NoOutput 6 Models trailer_assy.asm|trailer_assy.asm 7 Owners | 8 Item IDs LENGTH|WIDTH 9 Values INPUT_LENGTH|INPUT_WIDTH
The remaining columns (types, value types, regenerate, regen option, condition) follow the same | pattern. The action reference lists every command's main and advanced inputs in order.
06The Inputs sheet (UI_DATA)
Each row is one question on the inputs panel. Its InputName is the name you use everywhere else.
| Column | What goes in it |
|---|---|
InputName | Unique name, no spaces, e.g. INPUT_LENGTH. |
InputType | Numeric, Alphanumeric Text, Combobox or Combobox w/Image. |
InputText | The question shown to the user. |
InputMinimum, InputMaximum | Limits for numbers. |
OptionText, OptionValue | For lists: what is shown and what is used, as | lists of the same length. |
InitialValue | Starting value. For a list it must be one of the options. |
VISIBILITY | Name of a Boolean variable: the question shows only while it is true. |
ComboGroup, GroupIdx, XLSXFile | Linked lists that filter each other, driven by an options table in an Excel file. |
Units, ForeColor, BackColor, LIMIT | Display options. |
07The Variables sheet (VAR_DATA)
Variables hold the logic: each one is a formula worked out from inputs and other variables. Build them with the f(x) builder, or type the expression yourself.
| Column | What goes in it |
|---|---|
Conditions | Optional. Several rows can set the same variable with different conditions; the first row whose condition is true wins. This is how you write if / else-if. |
Expression | The formula, in prefix form (section 08). |
Variable | The name to use elsewhere. |
Value | The current result (filled in by Ci-Configure). |
Type | Boolean, Double or String. |
f(x) and the columns after it | The pieces of the expression as the builder shows them: the function, then one argument per column. |
Examples
| Variable | Expression | Type | Reads as |
|---|---|---|---|
length_panel_dim | -(INPUT_LENGTH,2.5) | Double | length − 2.5 |
inner_width | -(+(6,11),1.75) | Double | (6 + 11) − 1.75 |
FRONT_RAILING_OPT | =(RAILING_TYPE,"Front Railing Only") | Boolean | railing type is "Front Railing Only" |
08Writing expressions
Expressions are written function first, with the arguments in brackets: FUNCTION(arg1,arg2,…). So "a minus b" is -(a,b) and "a equals b" is =(a,b).
| You want | Write |
|---|---|
| length − 2.5 | -(INPUT_LENGTH,2.5) |
| RUN is 1 and the item is FORM_TOOL_3D | AND(=(RUN,1),=(CATALOG_ITEM,"FORM_TOOL_3D")) |
| Y if X is "val", otherwise N | IF(=(IN_X,"val"),Y,N) |
| file name = tool number + .pdf | CC(TOOL_NUMBER,.pdf) |
| a value from a table | DTCell(300005_Grid1,0,DESIGN_FOLDER) |
Rules that save time
- Text you compare against goes in double quotes:
"Front Railing Only". Names (inputs, variables) go without quotes. - A condition is true when it gives 1 (or True). A Boolean variable can be the whole condition:
cad_mesh_ramp_opt. |separates list items in a cell. Each item is worked out on its own.- In a
|list, an empty item between two bars (a||c) is a blank value. - Use the f(x) builder when unsure: it builds the brackets and commas for you.
= as a formula, so =(RUN,1) turns into an error. Save those cells as text.The full list of expression functions is in section 14.
09Tables and loops
A table is a grid of values held in memory while the item runs. It is the easiest way to feed an action set with data from Excel.
Make a table
Data.ExcelTable.ToDataTablewith"file.xlsx"|Sheet!|Grid1loads a whole sheet. The table is named<row ID>_Grid1.Data.ExcelTable.LookUploads only the rows where a column matches a value (advanced inputs: column name, matching value).- Row 1 of the sheet holds the column names; values start on row 2.
Read from a table
DTCell(table,row,column): row 0 is the first data row, the column is its name. DTCell(100010_Grid1,0,CATALOG_ITEM) is the CATALOG_ITEM of the first row.
Loop over a table
Put the table name in the row's [for-loop] column. The row then runs once per table row, and Loop1Row is the current row number (from 0): DTCell(100010_Grid1,Loop1Row,ITEM_NUMBER). A loop inside a loop uses Loop2Row.
10Calling other action sets (modules)
One top-level item can call others. Amada's TOOLING_AUTOMATOR loads the batch and calls the module for the tool: SPECIAL_SHAPE_2D, FORM_TOOL_3D or CREO_HEALTH_CHECK.
| ID | Action | CADInputs | Conditions |
|---|---|---|---|
| 100010 | Data.ExcelTable.ToDataTable | "…\batch.xlsx"|Batch!|Grid1 | |
| 100040 | Data.Catalog.ExecuteActionSet | SPECIAL_SHAPE_2D | AND(=(DTCell(100010_Grid1,0,RUN),1),=(DTCell(100010_Grid1,0,CATALOG_ITEM),"SPECIAL_SHAPE_2D")) |
| 100050 | Data.Catalog.ExecuteActionSet | FORM_TOOL_3D | same, with "FORM_TOOL_3D" |
| 100060 | Data.Catalog.ExecuteActionSet | CREO_HEALTH_CHECK | same, with "CREO_HEALTH_CHECK" |
The rules
- The set name is picked from a list, so it can't be an expression. Use one row per module and let the condition choose.
- Only the module's CAD_DATA is loaded. Its inputs and variables are not.
- A module can't see the caller's tables. Give it its own first row that loads what it needs (row 300005 in FORM_TOOL_3D, 900005 in CREO_HEALTH_CHECK).
- No nesting. A module can't call another module; the call is skipped with a message.
- The set name must match
FILE_NAMEincatalog_setup.xlsx.
11Running and reading the log
- Run all runs every row of the open item. Play runs only the selected rows; handy for testing one row.
- Creo must be running before Ci-Configure starts, or it can't connect to it.
- Keep Simple on: the grid then draws only the columns you need, and runs and module loads are faster.
What the log lines mean
| Line | Meaning |
|---|---|
Running: CreoModelCloseAll("YES") | A row started, with its inputs as worked out. |
Skipping Row#2 … due To Conditions | The row's condition was false. Normal for the module rows that don't apply. |
DTCell(…) = (empty) | The value is blank: the table or column isn't there. Check the table name, the column name and the row number. |
[EvalFunction] ERROR evaluating: … | The row ran and failed; the reason follows the arrow. The run carries on with the next row. |
[DataCatalogExecuteActionSet] Running action set: X (6 of 6 rows) … Returned from: X | A module started and finished. |
WARNING! You have no inputs! | Normal for batch-driven items. |
Each session writes its log to the logs folder as yyyy-MM-dd_HH-mm-ss-fff_Ci-Configure.txt. Send that file when asking for help.
12Running from this website
The website never talks to Creo itself. It puts a batch file on the CAD Instruct queue, and whichever Ci-Configure is waiting on that queue builds it and sends the status and PDFs back.
| Button | What happens | You need |
|---|---|---|
| Run in my CPS | The batch goes to your own queue. The Amada product open in your CPS picks it up within a few seconds and runs it on your PC. | Creo running and the Amada product open (first time: the "Open it" link). |
| Send to CAD Instruct queue | The batch goes to the server queue and a CAD server builds it unattended. | Nothing on your PC. |
| Test my CPS + Creo | Sends the health check: open one model, regenerate, close. No quote needed. | Same as Run in my CPS. |
| Download batch.xlsx | Saves the batch so you can run TOOLING_AUTOMATOR by hand. | Save it as D:\Web Tooling Automation Project\Batch\batch.xlsx. |
Each queue item's status and results show on QueueInfo. A good run ends with 100% - done.
13When something goes wrong
| You see | Likely cause | Fix |
|---|---|---|
Path cannot be the empty string, DTCell(…) = blank | The row reads a table the action set can't see (e.g. one made by the caller), or the column name is wrong. | Load the table inside the same action set; check the spelling of the column. |
| The wrong module runs | A module row with no condition, or an old CAD_DATA. | One ExecuteActionSet row per module, each with its CATALOG_ITEM condition. |
has no CAD rows | The catalog folder or its CAD_DATA.XLSX is missing. | Copy the item's folder into CATALOG\. |
Condition shows NaN, "Index was outside the bounds of the array" | The expression was saved as an Excel formula. | Save the cell as text. |
A parameter gets its own name as value (CUSTOMER_MARKING = CUSTOMER_MARKING) | The value is blank, and a blank name is written as the name itself. | Give every written value something to write; avoid blanks. |
Creo is not running | Ci-Configure couldn't reach Creo. | Start Creo first, then the product. |
| "Cross Threaded Operation Prevented" | Creo was called from the wrong place in a script. | Restart Ci-Configure and send the log. |
| A queue item never starts | No Ci-Configure is waiting on that queue, or an older item is ahead of it. | Open the product (or check the server); clear old items on QueueInfo. |
14Expression functions
Use these inside any cell: conditions, inputs, advanced inputs and variables. used at Amada marks the ones already in the Amada action sets.
| Function | Arguments | What it does | Example |
|---|
Source: LogicFunctionsRef.xlsx and the expression engine. Descriptions of the ones not yet used at Amada are taken from their names; check the result in the feedback before relying on them.
15Action reference
Every command in FunctionsRef.xlsx, with its main inputs (CADInputs, in order) and advanced inputs (columns 6, 7, 8 …).
| Action | Main inputs (CADInputs) | Advanced inputs (6, 7, 8 …) |
|---|
used at Amada = in the Amada action sets. check = listed in FunctionsRef.xlsx but no command of that exact name was found in the engine; try it on one row before building on it. FunctionsRef.xlsx is a starting point, not a guarantee: the feedback shows what a row really did.