Metamation Developer Notes

  • Developer Notes
  • Resource Map
  • Tools
    • Code Formatting
    • Configuring Git
    • Assignments
    • Testing with Windows Sandbox
    • Single Binary Applications
    • Self-Updating Applications
  • Flux Workflow
    • Flux Workflow
    • Flux Development Style Guide
    • Release notes for Flux
    • SonarCloud analysis for Flux
    • Build a Flux SDK Program
    • Shipping Flux
    • Flux.Test
      • BasicBendAuto Test
      • LaserAuto.cs Detailed Documentation
      • Laserexample:Test1
  • Technical Notes
    • File formats
      • .FX File Format
      • Au(Gold) streams
      • .GEO File Format
      • .LST File Format
      • .LST file - technology
      • .BNC File Format
      • .WAD Files: Flux Resource Packages
      • .Curl Files: ASCII config information
    • Folders App
      • Data\Bendtools
      • Data\Machines
    • FluxCode
      • Welcome & Repo Map
      • Architecture & System Context
      • Subsystem *Bend* (Press Brake)
      • Subsystem *BCell* (Bend Cell Automation)
      • API Maps
      • Data Model Catalog
      • Design Patterns -- A Reader's Guide
      • Tests and Golden Paths
      • Guided Code Tours
      • CAM Glossary with Code Mapping
      • Assignments
      • Flux Onboarding Handbook
    • Data flow
      • Part
        • Part.Dwg
        • Part.Load
        • Part.Load to Part.Dwg
      • BendTech.cs
      • Bend Technology
      • Laser Cutting Technology
    • LTS (Long term support mechanism)
    • Machine ID Scheme
  • FluxTester
    • Commands and Scripts
    • Command Cookbook
    • Script Commands
    • BendTooling.cs Test Inventory
    • LaserTooling.cs Test Steps
    • Fluxtester Recipe Book
    • Nesting.cs Overview
    • Nesting.cs Recipe Book
    • Job.cs Overview
    • Job.cs Recipe Book
  • Software license
  • 3d party software
    • Python
  • Documentation
    • Bento documentation
      • Structure of a Bento page
      • Attributes
    • Software
      • Software Requirement
      • Installation
      • Git workflow for documentation contributors
    • Quick start guide
    • Workflow
      • Roles and responsibilities
      • Analyze
      • Edit
      • Proofread
      • Pre-Publish
      • Publish
      • Release cycle
      • Information required for Documentation Team
      • Checklist for Documenters
    • Styleguide
    • Flavoring
    • Translation
      • Ordering translation for a new document
    • Citations
    • Annotation
Technical Notes
/
File formats
/
.FX File Format

.FX File Format

A .fx file is Flux’s native save format for a single part. This document describes exactly what the file contains, how each piece is encoded, and how to read it from outside Flux.

Entry point: Core/Part/Part.cs — method Part.SaveFX(Stream stm, ESaveFX flags)

1. Container: ZIP Archive

A .fx file is a standard ZIP archive (PKZIP format). You can open it with any ZIP tool (unzip, 7-Zip, Python zipfile, MATLAB unzip). The archive contains several named entries:

Entry name Encoding Content

Summary

UTF-8 text

Human-readable key/value summary of the part

Thumbnail

PNG image

256 × 256 preview rendered at save time

MMF2D

MMF format

2D drawing (only written when ESaveFX.MMF flag is set)

Attachments/…

Varies

External files attached to the part

Data\Info

AU object

PartInfo — name, material, thickness, GUID, etc.

Data\Version

AU object

VersionInfo — Flux build number and revision

Data\Dwg

AU object

Drawing2 — all 2D flat geometry (plines, bend marks, …)

Data\SurfaceModel

AU object

Surface model (only if no 3D model, or in diagnostic mode)

Data\Model

AU object

Model3 — 3D folded model

Data\FoldTech

AU object

FoldTech — bend sequence and fold parameters

Data\Misc

AU object

MiscData dictionary (miscellaneous key/value pairs)

Data\BendTech

AU object

BendTech — press-brake tooling

Data\CellTech

AU object

BCellTech — bending cell data

Data\CutTech

AU object

FlatTech[] — laser tooling: [CutTech, Layout]

Plugin\<name>\<key>

Raw bytes

Custom data written by plugin hooks

Geo\<srcfilename>

Raw bytes

Source geometry for bevel cutting

Not all entries are always present:

  • Data\Model is absent if the part was imported as a flat DXF.

  • Data\CutTech is absent if no laser tooling has been run.

  • Thumbnail is absent when ESaveFX.NoThumbnail is set (e.g. in batch nesting).

  • MMF2D is only written when ESaveFX.MMF is explicitly requested.

2. The Summary Entry

Summary is a plain UTF-8 text file with INI-style sections. It is written by Part.SaveSummary() (calling PartInfo.SaveSummary(), then each tech’s SaveSummary()).

2.1. [Basic] Section

Always present. Contains the human-readable part metadata:

[Basic]
Name=Bracket-Left
MatlName=1.0038
Thickness=1.5
Weight=0.42
Comments=optional free text
Guid=3f2a1b00-4c5d-6e7f-8a9b-0c1d2e3f4050
Bound2=(-50,-30)-(80,60)
Bound3=(-50,-30,-3)-(80,60,3)

Bound2 is the axis-aligned bounding box of the flat drawing in mm. Bound3 is the bounding box of the 3D folded model. Both are written only if the corresponding object exists.

2.2. [BendTech], [FoldTech], [CutTech] Sections

Written by the respective technology objects when present. Their content varies but follows the same Key=Value style.

3. The Thumbnail Entry

Thumbnail is a raw PNG file (RFC 2083). You can write it directly to disk and open it as any image. It is a 256 × 256 RGBA image rendered from the part’s flat drawing.

There is no extra header — the entry’s bytes are the PNG file directly (starting with the PNG magic bytes 89 50 4E 47 0D 0A 1A 0A).

4. AU Object Entries (Data\*)

All Data\* entries use the AU object format — Flux’s binary serialization system. The code lives in Base/IO/ByteStm.cs and Base/Gold/AuStream.cs.

4.1. Wrapper Header (written by AddObject)

File: Core/Extension.cs:356

Every AU entry starts with an 8-byte wrapper before the actual AU payload:

Offset Size Value

0

4 bytes

Magic: 0xA1 0x08 0xDE 0x4B (little-endian 0x4BDE08A1)

4

4 bytes

Payload length in bytes (little-endian int32)

8

N bytes

AU payload (see below)

// From Extension.cs — AddObject writes exactly:
stream.Write(OBJSTREAM);          // 0x4BDE08A1 as int32 LE
stream.Write(bytes.Data.Length);  // int32 LE
stream.Write(bytes.Data, 0, bytes.Data.Length);

4.2. AU Payload Header

File: Base/Gold/AuStream.cs:374

The AU payload starts with:

Offset Size Value

0

4 bytes

AU signature: 0x3D 0x2D 0x6F 0x1A (little-endian 0x1A6F2D3D)

4

1 byte

AU format version (currently 5)

5

…

Type table + object graph (see below)

mStm.WriteInt32(mSign);    // 0x1A6F2D3D
mStm.WriteByte(AuVersion); // 5
WriteObj(mObj, null);
Write(EToken.Epilogue);    // byte 11
mStm.WriteIntV(objCount);
mStm.WriteString("EOF");

Contents

  • 1. Container: ZIP Archive
  • 2. The Summary Entry
  • 2.1. [Basic] Section
  • 2.2. [BendTech], [FoldTech], [CutTech] Sections
  • 3. The Thumbnail Entry
  • 4. AU Object Entries (Data\*)
  • 4.1. Wrapper Header (written by AddObject)
  • 4.2. AU Payload Header
File formats Au(Gold) streams

      Copyright © 2025 TRUMPF Metamation. All rights reserved.

    Compiled by Bento