README.md 3.3 KB

EzCAD Patcher

This tool parses and patches EZCAD files with values specified in a YAML config file. The EZCAD format as implemented in this crate was reverse engineered from sample files, so use at your own risk.

Usage

Usage: minilase.exe [OPTIONS] --input <INPUT>

Options:
  -i, --input <INPUT>    Input file to parse
  -d, --diff <DIFF>      File to diff input against
  -o, --output <OUTPUT>  Output file to write to
  -c, --config <CONFIG>  Configuration file
  -v, --verbose...       Increase logging verbosity
  -q, --quiet...         Decrease logging verbosity
  -h, --help             Print help

Configuration File

Operations defined in the configuration file are applied in order of definition.

Patching Pen

Setting values of specific fields for a given pen:

Ops: 
  - !PatchPen
    Pen: 0                  # Target pen
    Color: [127, 127, 127]  # Optional - target pen RGB color
    Enabled: true           # Optional - target pen enable flag
    LoopCount: 3            # Optional - target pen loop count
    Speed: 1.234            # Optional - target pen speed
    Power: 10.5             # Optional - target pen power 
    Frequency: 10000        # Optional - target pen frequency

Cloning pen(s) (and optionally override settings):

Ops: 
  - !ClonePen
    From: 0                 # Source pen
    To: 1                   # Target pen
    # Inclusive: true       # Optional - will clone to all pens in range
    # Color: [64, 64, 64]   # Optional - target pen RGB color
    # Enabled: true         # Optional - target pen enable flag
    # LoopCount: 3          # Optional - target pen loop count
    # Speed: 1.234          # Optional - target pen speed
    # Power: 10.5           # Optional - target pen power 
    # Frequency: 10000      # Optional - target pen frequency

Incrementing a specific field by some value across a sequence of pens:

Ops: 
  - !PatternPen
    From: 1                   # Starting pen to copy settings from
    To: 5                     # Ending pen to stop at (inclusive)
    # Field: !Loops 1         # Choose one
    # Field: !Speed 100.0     # Choose one
    # Field: !Power 10.0      # Choose one
    # Field: !Frequency 1000  # Choose one

Importing and Exporting Pens and Objects

Exporting a pen to a file:

Ops:
  - !ExportPen
    Index: 0
    Path: "exported_pen.bin"

Importing a pen from a file:

Ops:
  - !ImportPen
    Index: 0
    Path: "exported_pen.bin"

Exporting an object to a file:

Ops:
  - !ExportObject
    Layer: 0
    Object: 0
    Path: "exported_object.bin"

Importing an object from a file:

Ops:
  - !ImportObject
    Layer: 0
    Object: 3 # Optional, will replace specified object instead
    Path: "exported_object.bin"

Deleting and Generating Objects

Deleting all objects from a layer:

Ops:
  - !DeleteObjects
    Layer: 0
    Object: 3 # Optional, will delete specific object instead

Generating a grid of rectangles with incrementing pens:

Ops:
  - !RectangleArray
    Layer: 0
    Width: 10.0
    Height: 10.0
    Columns: 3
    Rows: 5
    Spacing: 0.5
    Z: 0.0
    StartingPen: 0