# Minilase This tool parses and patches Minilase EZCAD save files with values specified in a YAML config file. The EZCAD format as implemented in this crate was reverse engineered from sample files, so not all formats or options are supported. ## 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. ### Pen Operations Setting values of specific fields for a given pen: ``` yaml Ops: - !PatchPen Pen: 0 # Target pen # Specify one or more of the following: Color: [127, 127, 127] Enabled: true LoopCount: 3 Speed: 1.234 Power: 10.5 Frequency: 10000 PulseWidth: ``` Where `` can be 2/4/6/8/12/20/30/45/60/80/100/150/200/250/350/500. Cloning pen(s) (and optionally override settings): ``` yaml Ops: - !ClonePen From: 0 To: 1 # Specify one or more of the following: Inclusive: true Patch: Color: [64, 64, 64] Enabled: true LoopCount: 3 Speed: 1.234 Power: 10.5 Frequency: 10000 ``` Incrementing a specific field by some value across a sequence of pens: ``` yaml Ops: - !PatternPen Index: 1 Count: 5 Field: ``` Where `` is one of the following: ``` yaml Field: !Loops 1 Field: !Speed 100.0 Field: !Power 10.0 Field: !Frequency 1000 ``` 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" ``` ### Object Operations Deleting all objects from a layer: ``` yaml Ops: - !DeleteObjects Layer: 0 Object: 3 # Optional, will delete specific object instead ``` All other operations: ``` yaml Ops: - !Object Input: # Specify one or more of the following Z: 0.0 Origin: { X: 10.0, Y: 10.0 } Pen: 3 Layer: 2 Array: Hatch: Export: "exported_object.bin" ReplaceObject: 0 ``` Where `` is one of the following: ``` yaml Input: !Rectangle { Width: 3.0, Height: 2.0 } Input: !Circle { Radius: 3.0 } Input: !Import { Path: "exported_object.bin" } Input: !Existing { Layer: 0, Object: 1 } ``` Where `` is: ``` yaml Array: Columns: 3 Rows: 2 Spacing: 1.0 RandomizeOrder: True StartingPen: 1 PatternX: PatternY: // Optional ``` Where `` is: ``` yaml Hatch: LineSpacing: 0.1 # Specify one or more of the following Pen: 1 Count: 3 EdgeOffset: 0.0 StartOffset: 0.0 EndOffset: 0.0 Angle: 3.0 RotateAngle: 0.0 LineReduction: 0.0 LoopDistance: 0.0 LoopCount: 0.0 Pattern: FollowEdgeOnce: True Crosshatch: True ``` Where `` is one of the following: ``` yaml Pattern: !Directional Pattern: !Bidirectional Pattern: !Ring Pattern: !Continuous Pattern: !Gong Pattern: !Background # (not supported) Pattern: !Fill Pattern: !Zigzag ```