# 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 ``` text Usage: minilase.exe [OPTIONS] --input Options: -i, --input Input file to parse -d, --diff File to diff input against -o, --output Output file to write to -c, --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: ``` yaml 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): ``` yaml 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: ``` yaml 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: ``` yaml Ops: - !ExportPen Index: 0 Path: "exported_pen.bin" ``` Importing a pen from a file: ``` yaml Ops: - !ImportPen Index: 0 Path: "exported_pen.bin" ``` Exporting an object to a file: ``` yaml Ops: - !ExportObject Layer: 0 Object: 0 Path: "exported_object.bin" ``` Importing an object from a file: ``` yaml 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: ``` yaml Ops: - !DeleteObjects Layer: 0 Object: 3 # Optional, will delete specific object instead ``` Generating a grid of rectangles with incrementing pens: ``` yaml Ops: - !RectangleArray Layer: 0 Width: 10.0 Height: 10.0 Columns: 3 Rows: 5 Spacing: 0.5 Z: 0.0 StartingPen: 0 ```