|
@@ -1,7 +1,7 @@
|
|
|
# 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.
|
|
|
+The EZCAD format as implemented in this crate was reverse engineered from sample files, so not all formats or options are supported.
|
|
|
|
|
|
## Usage
|
|
|
|
|
@@ -22,7 +22,7 @@ Options:
|
|
|
|
|
|
Operations defined in the configuration file are applied in order of definition.
|
|
|
|
|
|
-### Patching Pen
|
|
|
+### Pen Operations
|
|
|
|
|
|
Setting values of specific fields for a given pen:
|
|
|
|
|
@@ -30,13 +30,14 @@ 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
|
|
|
+ Color: [127, 127, 127]
|
|
|
+ Enabled: true
|
|
|
+ LoopCount: 3
|
|
|
+ Speed: 1.234
|
|
|
+ Power: 10.5
|
|
|
+ Frequency: 10000
|
|
|
```
|
|
|
|
|
|
Cloning pen(s) (and optionally override settings):
|
|
@@ -46,14 +47,15 @@ Ops:
|
|
|
- !ClonePen
|
|
|
From: 0
|
|
|
To: 1
|
|
|
+
|
|
|
# Specify one or more of the following:
|
|
|
- # Inclusive: true
|
|
|
- # Color: [64, 64, 64]
|
|
|
- # Enabled: true
|
|
|
- # LoopCount: 3
|
|
|
- # Speed: 1.234
|
|
|
- # Power: 10.5
|
|
|
- # Frequency: 10000
|
|
|
+ Inclusive: true
|
|
|
+ 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:
|
|
@@ -63,15 +65,14 @@ Ops:
|
|
|
- !PatternPen
|
|
|
From: 1
|
|
|
To: 5
|
|
|
+
|
|
|
# Specify one of the following:
|
|
|
- # Field: !Loops 1
|
|
|
- # Field: !Speed 100.0
|
|
|
- # Field: !Power 10.0
|
|
|
- # Field: !Frequency 1000
|
|
|
+ Field: !Loops 1
|
|
|
+ Field: !Speed 100.0
|
|
|
+ Field: !Power 10.0
|
|
|
+ Field: !Frequency 1000
|
|
|
```
|
|
|
|
|
|
-### Importing and Exporting Pens and Objects
|
|
|
-
|
|
|
Exporting a pen to a file:
|
|
|
|
|
|
``` yaml
|
|
@@ -90,74 +91,86 @@ Ops:
|
|
|
Path: "exported_pen.bin"
|
|
|
```
|
|
|
|
|
|
-Exporting an object to a file:
|
|
|
+### Object Operations
|
|
|
+
|
|
|
+Deleting all objects from a layer:
|
|
|
|
|
|
``` yaml
|
|
|
Ops:
|
|
|
- - !ExportObject
|
|
|
+ - !DeleteObjects
|
|
|
Layer: 0
|
|
|
- Object: 0
|
|
|
- Path: "exported_object.bin"
|
|
|
+ Object: 3 # Optional, will delete specific object instead
|
|
|
```
|
|
|
|
|
|
-Importing an object from a file:
|
|
|
+All other operations:
|
|
|
|
|
|
``` yaml
|
|
|
Ops:
|
|
|
- - !ImportObject
|
|
|
- Layer: 0
|
|
|
- Object: 3 # Optional, will replace specified object instead
|
|
|
- Path: "exported_object.bin"
|
|
|
+ - !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
|
|
|
```
|
|
|
|
|
|
-### Deleting and Generating Objects
|
|
|
+`<InputObject>` can be one of the following:
|
|
|
|
|
|
-Deleting all objects from a layer:
|
|
|
+``` 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 }
|
|
|
+```
|
|
|
+
|
|
|
+`<ArrayOptions>` options:
|
|
|
|
|
|
``` yaml
|
|
|
-Ops:
|
|
|
- - !DeleteObjects
|
|
|
- Layer: 0
|
|
|
- Object: 3 # Optional, will delete specific object instead
|
|
|
+Array:
|
|
|
+ Columns: 3
|
|
|
+ Rows: 2
|
|
|
+ Spacing: 1.0
|
|
|
+ RandomizeOrder: True
|
|
|
+ StartingPen: 1
|
|
|
```
|
|
|
|
|
|
-Generating a grid of hatched rectangles with incrementing pens:
|
|
|
+`<HatchOptions>` options:
|
|
|
|
|
|
``` yaml
|
|
|
-Ops:
|
|
|
- - !HatchArray
|
|
|
- Layer: 0
|
|
|
- Width: 10.0
|
|
|
- Height: 10.0
|
|
|
- Columns: 3
|
|
|
- Rows: 5
|
|
|
- Spacing: 0.5
|
|
|
- Z: 0.0
|
|
|
- StartingPen: 0
|
|
|
- Hatch:
|
|
|
- LineSpacing: 0.01
|
|
|
- # The following are optional parameters:
|
|
|
- # Count: 2
|
|
|
- # EdgeOffset: 0.0
|
|
|
- # StartOffset: 0.0
|
|
|
- # EndOffset: 0.0
|
|
|
- # Angle: 0.0
|
|
|
- # RotateAngle: 0.0
|
|
|
- # LineRedution: 0.0
|
|
|
- # LoopDistance: 0.0
|
|
|
- # LoopCount: 0
|
|
|
- # Pattern: !Bidirectional
|
|
|
- # FollowEdgeOnce: true
|
|
|
- # CrossHatch: true
|
|
|
+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
|
|
|
```
|
|
|
|
|
|
-Available patterns are:
|
|
|
+`<Pattern>` options:
|
|
|
|
|
|
-1. Directional
|
|
|
-2. Bidirectional
|
|
|
-3. Ring
|
|
|
-4. Continuous
|
|
|
-5. Gong
|
|
|
-6. Background (not supported)
|
|
|
-7. Fill
|
|
|
-8. Zigzag
|
|
|
+``` yaml
|
|
|
+Pattern: !Directional
|
|
|
+Pattern: !Bidirectional
|
|
|
+Pattern: !Ring
|
|
|
+Pattern: !Continuous
|
|
|
+Pattern: !Gong
|
|
|
+Pattern: !Background # (not supported)
|
|
|
+Pattern: !Fill
|
|
|
+Pattern: !Zigzag
|
|
|
+```
|