Nav apraksta

Kevin Lee 8d3da0a272 Add parameter support for pen range 6 mēneši atpakaļ
samples 6be9dae0a4 Add support for x/y pen patterning 11 mēneši atpakaļ
src 8d3da0a272 Add parameter support for pen range 6 mēneši atpakaļ
tests 65fc461f66 Initial diff 11 mēneši atpakaļ
.gitignore 86b86d25ec Init 11 mēneši atpakaļ
Cargo.lock 8d3da0a272 Add parameter support for pen range 6 mēneši atpakaļ
Cargo.toml 8d3da0a272 Add parameter support for pen range 6 mēneši atpakaļ
README.md d7a776caee Add pen querying 10 mēneši atpakaļ
imhex.txt 96bc7f853f Update to latest software version 11 mēneši atpakaļ

README.md

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.

TODO:

  • Write settings to output file by default
  • Figure out some sort of formula to sweep power density

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
  -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

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:

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"

Object Operations

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

Settings

Stainless Steel (mirror finish)