Tutorial
When creating your first program, “Filament Winding > Programs > Add a new program” will open a form (wizard) with pre-parameterized templates for machines, mandrels, payout eye (arch), and raw material, making the system setup process easier.
Keep in mind that you only need to know:
-
the HMI brand used on your machine and its axis configuration;
-
the mandrel type and its basic dimensions;
-
the band width.
This screen is used to register a “Material” of the composite type (Composite) and it tells the system:
-
What the “final” product is (the composite material you use in filament winding)
-
What unit of measure is used to calculate consumption (e.g., km, m, mm, etc.)
-
What the recipe is (BoM / Bill of Materials) —in other words, how much of each component is consumed for a given base quantity
Below is an explanation field by field:
1) Name
Example: “30% Resin 70% Roving Tex 2200”
This is simply the name/description of the composite material. Usually you include the resin/fiber ratio and the roving type to make it clear.
2) Type Material
It is set to Composite .
This indicates that the material is not a “pure” material (like only resin), but rather a set (mixture/laminate) made from multiple components.
Material types available:
-
Fiber → Fiber (e.g., roving, tow, fabric, veil).
Use: to track fiber consumption (usually in kg, tex, g/m, etc.). -
Resin → Resin (e.g., epoxy, polyester, vinyl ester).
Use: resin consumption (kg, L); it may include density to convert volume ↔ mass . -
Prepreg → Pre-impregnated material (fiber already contains resin).
Use: direct prepreg consumption (m, m², kg). Usually you don’t need to “mix” separate resin. -
Composite → Composite (mixture/“recipe”).
Use: you define a BoM (Bill of Materials) with the components (fiber + resin + additives) and the system calculates consumption automatically. -
Filler → Filler/additive (e.g., silica, microspheres, talc, pigment).
Use: solid additives added to the mixture (often as a % of resin or by total mass). -
Release → Release agent / separation film (e.g., wax, PVA, release film).
Use: consumables used to prevent sticking / make demolding easier (m², g, ml, etc.).
3) Length to calculate proportion
Example: 1
This field defines the base quantity used to calculate the proportions.
-
Since the final product unit is km , then 1 = 1 km .
-
That means the BoM below indicates how much you consume to produce/use 1 km of this composite material.
If you change it to 10 , for example, you are saying: “the recipe below corresponds to 10 km .”
4) Product Unit of Measure
Example: km
This is the unit of the final composite material . In your case, consumption is controlled by length (km) .
This is common in filament winding: the “consumed product” may be the band/laminate length or the trajectory length , and the system converts that into fiber/resin consumption.
5) BoM Lines (Bill of Materials)
This is the recipe for the composite. Each line contains:
-
Component: the item used in the mixture (e.g., Roving, Resin, MEK)
-
Quantity: how much of that component is consumed
-
Product Unit of Measure: component unit (kg, g, etc.)
-
Edit / Delete: edit or remove the line
In your example, for 1 km of composite material:
-
Roving Tex 2200: 2.2 kg
-
Resin: 0.942 kg
-
MEK: 9.8 g (usually catalyst/addition proportional to the resin)
Buttons/icons:
-
Add new Line: adds a new component to the recipe
-
Pencil icon: edits that component line
-
Trash icon: removes the line
-
Icons next to “Product Unit of Measure” (pencil / +): usually used to edit the selected unit or create a new unit (depending on system permissions)
6) OK / Cancel
-
OK
saves the material and the recipe.
-
Cancel
discards changes.
OK saves the material and the recipe.
Cancel discards changes.
This screen is a wizard (assistant) to create/register a Mandrel using a ready-made template.
What you do here
1) Name
This is the mandrel name that will appear in your list and in your programs.
Good examples:
-
POLE Ø380-156 x 12500 -
Mandrel Pole 12.5m (380→156) -
Pole_380-156_12500_v1
Tip: include type + diameters + length so it’s easy to identify later.
2) Template
Here you choose a pre-configured mandrel model.
In your example, the selected template is:
-
“POLE Ø380-156 X 12500MM”
That means the system will automatically load the mandrel geometry parameters from this template (typically):
-
shape/type (e.g., tapered pole)
-
start and end diameters (Ø380 → Ø156)
-
total length (12500 mm)
-
and, depending on the template, other dimensions (zones, transitions, offsets, etc.)
Icons next to Template
-
✏️ (pencil): edit the selected template (adjust dimensions/parameters).
-
➕ (plus): create a new template (for a new mandrel you want to save as a standard).
Buttons
-
OK: creates/saves the mandrel based on the selected template.
-
Cancel: closes without saving.
Here you’re editing the Mandrel (the geometry the software uses to generate the winding path). The screen has two parts:
-
General info (top)
-
Status (Draft)
Draft means it’s still editable. (After saving/using, you may later switch it to an active/validated state depending on your workflow.) -
Name
The mandrel name that will appear in lists and inside programs. Example:POLE Ø380-156 x 12500MM. -
Format
This defines the mandrel shape model the system will use. When you change the format, the required dimensions and the drawing change accordingly.
-
Geometry parameters
These fields feed the model shown in the sketch (with labels like D1, D2, D3, D4 and L1, L2, L3).
Common fields you see in your template
-
Datum
A reference offset used as the “zero” (datum) for positioning the mandrel in the calculation.
In practice: it helps align the mandrel geometry with your machine/program reference along the axis. -
Diameter 1 / Diameter 2
Main diameters of the mandrel body.-
For a Conical (tapered) mandrel: Diameter 1 is typically the large end, Diameter 2 the small end.
-
For a Tube (cylindrical) mandrel: Diameter 1 and Diameter 2 are usually equal (same diameter along the length).
-
-
Comprimento (Length)
The main body length used for winding (the L1 dimension in the sketch). -
Length of Top Axis
Length of the shaft/end stub used for mounting/chucking at the “top” side (one of the end lengths like L2/L3, depending on the template’s convention). -
Diameter Base Axis
Diameter of the mounting shaft/end stub (one of the end diameters like D1/D4, depending on the template’s convention). -
Fricção (Friction)
The friction coefficient used by the winding model (important for slip/traction assumptions in some calculations and advanced trajectory logic).
What each Formato means (the dropdown options)
Conical
A tapered mandrel (like a pole): diameter changes from Diameter 1 → Diameter 2 along Comprimento.
Tube
A cylindrical mandrel: constant diameter along Comprimento (normally set Diameter 1 = Diameter 2).
Capsule
A pressure-vessel style mandrel: cylinder in the middle + rounded/elliptical ends. The sketch shows the body + end caps; this format typically needs body diameter, cylinder length, and end-cap definition (depending on how the template is implemented).
This screen is a wizard to create/register the Pay Eye (Payout Eye) using a template.
What you do here
1) Name
Enter a name that will appear in your list and in your programs.
Good examples:
-
PAY OUT - Standard -
Payout Eye 1 - 2 Rollers -
Arc_Standard_v1
Tip: include details like roller type, number of rollers, or machine model if you have more than one pay eye.
2) Template
Choose a pre-configured Pay Eye template.
In your example the selected template is “PAY OUT”.
Selecting a template means the system will automatically load the Pay Eye parameters (typically things like):
-
geometry/offsets (distance to mandrel centerline)
-
guide/roller configuration
-
band width limits / fiber path settings
-
default angles or clearance values (depending on how your template is defined)
This is the Pay-Out Head (Payout Eye) configuration screen. It defines how the fiber/band leaves the pay-out device and the rules the software uses to calculate thickness, spacing, and distance to the mandrel.
1) Header
-
Status (Draft): editable state.
-
Name: the pay-out head name (here: PAY OUT).
2) Size Band List (main table)
This is a lookup table that tells the system:
“For a given winding angle, what band width/material/thickness/filament count should be used.”
Each row contains:
-
Ângulo (Angle)
The winding angle (degrees). Example rows: 15°, 50°, 65°, 90°. -
Band Width
The band/tape width to be used at that angle (e.g., 90, 60, 80, 100).
This can represent the effective width at the mandrel (depending on your model). -
Material
The composite/material definition used for that band (here: 30% Resin 70% Roving Tex 2200).
This links to your material/BoM so the system can compute consumption. -
Espessura (Thickness)
The expected layer thickness (mm) for that combination of angle + width + material.
Notice your values change with angle (e.g., 1.2 → 1.15 → 1.05 → 1.0).
This is commonly used to estimate buildup and number of layers. -
Filament Count
Number of filaments/tows (or strands) in that band configuration (here: 50).
Useful for tension/coverage/consumption calculations. -
Edit / Delete (icons)
✏️ edit that row, 🗑️ delete that row. -
+ Add new Line
Add another rule (e.g., for 30°, 45°, 55°, etc.)
Why this table matters:
When you generate a program, if you choose an angle that matches (or is interpolated to) a row here, the system knows what band width and thickness to apply, and can compute material usage and layer buildup more realistically.
3) Rules Distance
ules Distance dropdown in the Pay-Out Head settings. This option defines which rule the system will use to calculate the pay-out position/distance relative to the mandrel, which affects the fiber path geometry—especially on cones/capsules and transition zones.
The menu shows 3 options:
3.1) Roving Length
A rule based on the effective roving (fiber) path length.
-
The system considers the real fiber path from the pay-out head to the contact point on the mandrel.
-
This is usually the most “physical/geometry-based” option when you want the trajectory to reflect changes in mandrel diameter along Z.
-
Good for: conical/capsule mandrels, varying radius, and more realistic behavior.
3.2) Constant Distance from Mandrel
A constant distance to the mandrel surface.
-
Keeps the stand-off distance constant from the pay-out to the mandrel surface (local radius).
-
On a cone, as radius changes along Z, the calculation adjusts to maintain the same gap.
-
Good for: setups where the machine is adjusted to always keep “X mm away from the part surface”.
3.3) Fixed Distance from Mandrel Central Axis
A fixed distance to the mandrel centerline.
-
Keeps the pay-out at a constant distance from the mandrel axis (centerline), regardless of local diameter.
-
On cones/capsules, the distance to the surface will vary because the radius changes.
-
Good for: machines where the pay-out assembly is referenced to the machine centerline and stays at a fixed radius.
Quick selection guide
-
Want more realistic geometry on variable mandrels → Roving Length
-
Your reference is “always X mm from the surface” → Constant Distance from Mandrel
-
Your reference is “always X mm from the axis” → Fixed Distance from Mandrel Central Axis
4) Distance Mandrel
Value: 120
This is the stand-off distance from the pay-out head to the mandrel (usually in mm).
It affects:
-
fiber path geometry (entry point)
-
angle accuracy near transitions
-
clearance/safety and collision margin
5) Offset Transversal
Value: 0
This is the lateral offset of the pay-out head relative to the mandrel centerline (transverse direction).
Use it if your pay-out is not perfectly centered (or if the machine has a known mechanical offset).
6) OK / Cancel
-
OK saves the pay-out head configuration.
-
Cancel discards changes.
This screen is a wizard to create/register a Machine using a template. The template defines the machine’s axis configuration and post/behavior used when generating the program (G-code/commands).
What you do here
1) Name
Type the machine name as it will appear in your list and in your projects.
Examples:
-
Kollmorgen 4-Axis FW -
Machine 01 - AXYZ -
TexComputer CNC - 4 Axis
Tip: include the controller brand and axis set (AXYZ, AYXZ, etc.) so you can identify it quickly.
2) Template
Select a pre-configured machine template. In your dropdown, examples include:
-
TEX COMPUTER 4 AXIS A Y X Z
-
KOLLMORGEN 3 AXIS A Y X
-
KOLLMORGEN 4 AXIS A Y X Z
-
MACH3 4 AXIS A Y X Z
-
LINUX CNC 4 AXIS
What a machine template typically contains:
-
Which axes exist (e.g., A, Y, X, Z)
-
Axis meaning (e.g., A = mandrel rotation, Y = carriage travel, X = approach, Z = pay-out/eye rotation)
-
Axis directions/sign conventions (positive/negative)
-
Units and scaling (mm/deg, steps per unit, etc.)
-
Output format / post-processing rules for the target controller
This page defines:
-
General machine settings (units, defaults, trajectory point density)
-
Axis limits and speeds (A, Y, X, Z)
-
How the software writes the output program (header/body/footer “post” text with variables)
Everything here affects program generation and safety/compatibility with your CNC/controller.
1) General fields
Status
Current state of this machine profile (e.g., Draft). Use Draft while you are still testing.
Name
The machine profile name (example: KOLLMORGEN 4 AXIS A Y X Z).
Description
Optional notes (controller model, machine ID, shop notes, etc.).
Generated File Extension
The file extension the system will export (examples: .nc, .tap, .txt, .pgm).
Use what your controller expects.
Unit System
Metric or Imperial. This affects all dimensions and feed units.
Friction (Fricção)
A coefficient used by the trajectory model (especially for slip/geodesic/transition behavior).
Typical values are small (e.g., 0.05–0.20) depending on your process.
2) Trajectory resolution (how many points are generated)
Distance Points in Turn Around
Point spacing (or density) in the turn-around zones (where the carriage reverses direction).
Smaller spacing = smoother reversal but more lines.
Distance Points in Geodesic
Point spacing in the geodesic/regular winding zone.
Smaller spacing = smoother path but bigger program.
Number of Points in 360 Degrees
How many points are used to represent one full mandrel revolution (A axis).
More points = smoother circular motion; fewer points = smaller file.
3) Output filtering / smoothing
Select Filter G-Code
Optional post-filter to modify the output (e.g., no filter / smoothing / formatting rules).
If you don’t need special formatting, keep No Filter G-Code.
Smooth
A smoothing factor for the generated path (reduces sharp corners between segments).
Around Line Edit
How many lines around a segment the system may adjust when smoothing/editing.
✅ Reduce Lines in Linear Motion
If enabled, the system tries to merge or reduce small linear segments to produce a lighter program.
4) Speed / feed logic
Tangential Fiber Velocity
Target tangential speed of the fiber (surface speed).
The software can use this to compute feed values so the process stays consistent as diameter changes.
FeedRate Unit of Measure
The unit used for feed in the output (e.g., mm/min, unit/min).
This should match your controller’s expectations.
Minimal Process Time
A safety/time-step parameter used internally to avoid unrealistically small time steps.
5) Axes table (A, Y, X, Z)
Each row defines:
-
Axis Type (what the axis represents)
-
Maximum Speed
-
Minimum Limit / Maximum Limit (soft limits)
-
Acceleration
-
Axis Unit of Measure
-
Edit (pencil icon to configure that axis)
In your template:
-
A – Rotation Axis (mandrel rotation)
-
Y – Impregnation Carriage Axis (carriage travel along the mandrel)
-
X – Mandrel Approach Axis (distance from pay-out head to the mandrel / approach)
-
Z – Pay-Out Inclination Axis (tilt/angle of the pay-out head)
These limits are important: they prevent the generated program from commanding moves outside the machine’s travel range.
6) Post-processor blocks (how the program text is written)
These large text boxes are the “post” sections the system uses to assemble the final output file.
Head $C
Header comment block. Usually prints mandrel info using variables like:
-
$MANDRIL_NAME,$MANDRIL_DIA_BASE,$MANDRIL_DIA_TOP,$MANDRIL_LENGTH
Head $PC
Header for the program/cycle. Typically:
-
Sets modes (e.g.,
G90,G91,G64) -
Writes cycle summary comments (angle, diameter, band width, pay-out name, etc.)
-
Calls optional stops or initialization moves
Group $PROGRAM / Group $PA
Containers that define how cycles are grouped in the output.
Cycle $PLA
The main motion line format.
This is where the software writes each point using variables like:
-
$MANDRIL_INC/$MANDRIL_ABS(A axis) -
$TRANSVERSAL_INC/$TRANSVERSAL_ABS(Y axis) -
$APROX_INC/$APROX_ABS(X axis) -
$INCL_INC/$INCL_ABS(Z axis) -
$FEED(feedrate) -
$CYCLE,$NUM_CYCLE, etc.
✅ All Cycles
If checked, the same cycle template is applied to all generated cycles.
Footer $PF / Footer $R
End of program commands.
In your screenshot, Footer $R contains M30 (standard program end + rewind).
Compiled $C
A preview/list of which blocks are being used/assembled in the final output.
This screen defines the program structure that will be generated (headers, subprogram calls, motion lines, and footers). GUIFW replaces variables like $MANDRIL_NAME with real values and assembles the final G-code using these blocks.
1) Head $C (Main Header)
This is the first lines of the program (program start / identification).
Example:
What it means
-
%: start of program (common on many controllers) -
O1000: main program number -
The text in parentheses is a comment, filled with mandrel values:
-
$MANDRIL_NAME= mandrel name -
DB= base diameter -
DT= top diameter -
COM= mandrel length
-
2) Head $PC (Cycle Header / Pre-Cycle Block)
This block is inserted before the winding cycle motion begins (setup, absolute mode, optional stop, etc.).
Example content:
Key lines
-
First line is a comment that prints the recipe of the cycle:
-
$COMMAND(the command name/type) -
$ALFAwinding angle -
$DIAMETERdiameter used in that cycle -
$CYCLEcycle index/number -
$BAND_WIDTHband width -
$PAYOUT_NAMEpay-out head name -
$LENGTH_ROVINGtotal roving length estimate
-
-
G90: absolute programming mode -
N $N G0 ...: rapid positioning to start point (Y/X/Z) -
G91: incremental mode (used for the winding increments) -
G64: continuous mode / path blending (controller-dependent) -
$OPTIONAL_STOP: inserts an optional stop if enabled -
G1: sets linear interpolation for the motion that follows
3) Group $PROGRAM (Subprogram Definition)
This block defines the subprogram body that will be executed repeatedly.
Example:
What it means
-
O$NUMBER_SUBPROGRAM: creates the subprogram number -
$PLA: placeholder where the cycle motion line(s) will be inserted -
M99: end of subprogram / return to main program (common FANUC-style)
4) Group $PA (Call the Subprogram)
This block tells the main program to run the subprogram multiple times.
Example:
What it means
-
M98: call a subprogram -
P...: which subprogram number to call -
L...: how many times to repeat (loops) -
Here
L$NUM_CYCLEmeans “repeat the cycle N times”.
5) Cycle $PLA (Main Motion Line for One Step)
This is the core multi-axis motion command (one incremental “step” of the winding).
Example:
What it means
-
Moves 4 axes at the same time:
-
A $MANDRIL_INC= incremental mandrel rotation -
Y $TRANSVERSAL_INC= incremental carriage transversal move -
X $APROX_INC= incremental approach axis -
Z $INCL_INC= incremental pay-out inclination axis
-
-
F $FEED= feedrate used for this step -
The
(C:...)line is a debug comment, printing:-
cycle number and absolute positions of each axis
-
6) All Cycles
If checked, the post will generate all cycles defined in the job (for all angles/band widths/materials), not just a single one.
7) Footer $PF (Main Footer)
Optional footer that can be appended before the final end-of-program.
(Empty in this example.)
8) Compiled $C
This is a “preview list” showing which blocks will be concatenated to form the final program.
Example list:
-
$C -
$PC -
$PA -
$PF -
$R
Meaning: the output program is assembled in that order.
9) Footer $R (Program End)
Final program termination commands.
Example:
What it means
-
M30: program end and rewind (common on many CNC controllers) -
The
:prefix is controller/post-specific formatting (some posts use it as a line marker)

Program Header
-
Status: Program state (e.g., Draft, Done).
-
Name: Program name (example:
POLE 100dn 9000). -
Description: Optional notes.
Mandrel
-
Mandrel: Select the mandrel used in this program (geometry and dimensions used for calculations and simulation).
Machine / Pay-Out Head (Program Setup)
This modal defines the “compiler inputs” for the program (machine + pay-out + material).
-
Info Compiler: Optional text field for notes or internal identification.
-
Machine: Select the machine profile (axes, limits, post-processor settings).
-
Multi Pay-Out Head (checkbox): Enables multi head logic (if applicable).
-
Pay-Out Head: Select the pay-out head configuration (band rules, offsets, distance rule).
-
Material: Select the material definition (example: resin/roving mix and tex).
-
Number of Filaments: Number of tows/filaments used in the program (global value for this setup).
-
G-Code File Name: Output file name/number (example:
01).
Optional checkboxes (as in your screen):
-
Multi Velocity: Enables variable speed logic (if your generator supports it).
-
Increase Extremity: Increases thickness/behavior near ends (turn-around area) if enabled.
-
Thickness Scaling: Applies scaling to thickness output (if enabled).
-
Tapered Thickness: Generates taper profile (if enabled).
-
Cycle 3D: Enables 3D cycle visualization.
Layers (Camadas)
This section is the program recipe: each line is a winding layer/operation.
Displayed per layer:
-
Comment: Notes for the layer.
-
Angle (°): Winding angle.
-
Invert Rotation: Reverses rotation direction for that layer.
-
Winding Type: Example shown: Helicoidal (Helical).
-
Initial Position: Start position along the mandrel axis (typically mm).
-
Length: Winding length for that layer (typically mm).
-
Thickness: Target thickness contribution of the layer.
-
Calculated Number of Filaments: Auto-calculated filaments based on setup (informational).
Other options shown:
-
Ramp In / Ramp Out: Smooth start/stop ramps (if enabled).
-
Optional Stop: Inserts a stop/pause in the generated code (if checked).
-
Repetitions of Layers: Summary of cycles/repetitions and diameters along the path.
Consumption summary:
-
Partial Consume: Material consumption for that layer.
-
Description Consume (program-level): Total consumption for the program.
Buttons:
-
Add new line: Creates a new layer entry.
-
Move up / Move down: Reorder layers.
-
Edit / Delete: Modify/remove a layer.
Line Process (Layer Editor)
This is the detailed editor for one layer:
-
Info Compiler
-
Comment
-
Angle
-
Invert Rotation
-
Winding Type
-
Initial Position
-
Length
-
Thickness
-
Number of Filaments (manual input if you want to override)
-
Calculated Number of Filaments (result)
-
Ramp In / Ramp Out
-
Optional Stop
-
Status (if you track layer status)
Charts and Visual Outputs (per layer)
Graphic Thickness: Thickness vs. length chart.
Graphic Velocity Image: Axis velocity profiles over time (A, X, Y, Z etc.).
Partial Consume: Text box with resin/MEK/roving totals for that layer.