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.
TODO:
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
-p, --pen <PEN> Print pen info
-l, --object-layer <OBJECT_LAYER> Layer of object to print info
-b, --object <OBJECT> Print object info
-v, --verbose... Increase logging verbosity
-q, --quiet... Decrease logging verbosity
-h, --help Print help
Operations defined in the configuration file are applied in order of definition.
Setting values of specific fields for a given pen:
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: <PulseWidth>
Where <PulseWidth>
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):
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:
Ops:
- !PatternPen
Index: 1
Count: 5
Field: <PenPattern>
Where <PenPattern>
is one of the following:
Field: !Loops 1
Field: !Speed 100.0
Field: !Power 10.0
Field: !Frequency 1000
Field: !PulseWidth 2 # Increment
Randomizing pen values:
Op:
- !RandomizePen
Index: 0
Count: 10
# Specify one or more of the following:
Speed: [100, 1000, 100] # [min, max, step]
Power: [10, 100, 5] # [min, max, step]
Frequency: [20000, 100000, 1000] # [min, max, step]
PulseWidth: [2, 350, 2] # [min, max, step]
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"
Deleting all objects from a layer:
Ops:
- !DeleteObjects
Layer: 0
Object: 3 # Optional, will delete specific object instead
All other operations:
Ops:
- !Object
Input: <InputObject>
# Specify one or more of the following
Z: 0.0
Origin: { X: 10.0, Y: 10.0 }
Pen: 3
Layer: 2
Array: <ArrayOptions>
Hatch: <HatchOptions>
Export: "exported_object.bin"
ReplaceObject: 0
Where <InputObject>
is one of the following:
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 <ArrayOptions>
is:
Array:
Columns: 3
Rows: 2
Spacing: 1.0
RandomizeOrder: True
StartingPen: 1
PatternX: <PenPattern> // Optional
PatternY: <PenPattern> // Optional
Where <HatchOptions>
is:
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: <Pattern>
FollowEdgeOnce: True
Crosshatch: True
Where <Pattern>
is one of the following:
Pattern: !Directional
Pattern: !Bidirectional
Pattern: !Ring
Pattern: !Continuous
Pattern: !Gong
Pattern: !Background # (not supported)
Pattern: !Fill
Pattern: !Zigzag