buncha messing around
This commit is contained in:
179
config.yaml
Normal file
179
config.yaml
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
name: "TMC2209 XY Servo Laser"
|
||||||
|
board: "FluidNC Pen/Laser 2209 V2"
|
||||||
|
junction_deviation_mm: 0.05
|
||||||
|
|
||||||
|
stepping:
|
||||||
|
engine: RMT
|
||||||
|
idle_ms: 255
|
||||||
|
dir_delay_us: 1
|
||||||
|
pulse_us: 2
|
||||||
|
disable_delay_us: 0
|
||||||
|
|
||||||
|
start:
|
||||||
|
must_home: false
|
||||||
|
deactivate_parking: false
|
||||||
|
check_limits: true
|
||||||
|
|
||||||
|
#Stepper Driver UART
|
||||||
|
uart1:
|
||||||
|
txd_pin: gpio.17
|
||||||
|
rxd_pin: gpio.16
|
||||||
|
rts_pin: NO_PIN
|
||||||
|
cts_pin: NO_PIN
|
||||||
|
baud: 115200
|
||||||
|
mode: 8N1
|
||||||
|
|
||||||
|
# Pendant UART
|
||||||
|
uart2:
|
||||||
|
txd_pin: gpio.4
|
||||||
|
rxd_pin: gpio.15
|
||||||
|
rts_pin: NO_PIN
|
||||||
|
cts_pin: NO_PIN
|
||||||
|
baud: 5000000
|
||||||
|
mode: 8N1
|
||||||
|
# Pendant
|
||||||
|
uart_channel2:
|
||||||
|
uart_num: 2
|
||||||
|
report_interval_ms: 75
|
||||||
|
|
||||||
|
axes:
|
||||||
|
shared_stepper_disable_pin: gpio.13:high
|
||||||
|
|
||||||
|
x:
|
||||||
|
steps_per_mm: 82
|
||||||
|
max_rate_mm_per_min: 5000
|
||||||
|
acceleration_mm_per_sec2: 500
|
||||||
|
max_travel_mm: 220
|
||||||
|
soft_limits: false
|
||||||
|
homing:
|
||||||
|
cycle: 2
|
||||||
|
positive_direction: false
|
||||||
|
mpos_mm: 0
|
||||||
|
feed_mm_per_min: 200.000
|
||||||
|
seek_mm_per_min: 1000.000
|
||||||
|
settle_ms: 500
|
||||||
|
seek_scaler: 1.100
|
||||||
|
feed_scaler: 1.100
|
||||||
|
|
||||||
|
motor0:
|
||||||
|
limit_neg_pin: NO_PIN
|
||||||
|
limit_pos_pin: NO_PIN
|
||||||
|
limit_all_pin: gpio.36:low
|
||||||
|
hard_limits: true
|
||||||
|
pulloff_mm: 1
|
||||||
|
tmc_2209:
|
||||||
|
uart_num: 1
|
||||||
|
addr: 0
|
||||||
|
r_sense_ohms: 0.110
|
||||||
|
run_amps: 1.000
|
||||||
|
hold_amps: 0.200
|
||||||
|
homing_amps: 1.000
|
||||||
|
microsteps: 16
|
||||||
|
stallguard: 0
|
||||||
|
stallguard_debug: false
|
||||||
|
toff_disable: 0
|
||||||
|
toff_stealthchop: 5
|
||||||
|
toff_coolstep: 3
|
||||||
|
run_mode: StealthChop
|
||||||
|
homing_mode: StealthChop
|
||||||
|
homing_amps: 0.80
|
||||||
|
use_enable: false
|
||||||
|
direction_pin: gpio.12:low
|
||||||
|
step_pin: gpio.14
|
||||||
|
|
||||||
|
|
||||||
|
motor1:
|
||||||
|
null_motor:
|
||||||
|
|
||||||
|
y:
|
||||||
|
steps_per_mm: 76
|
||||||
|
max_rate_mm_per_min: 5000
|
||||||
|
acceleration_mm_per_sec2: 500
|
||||||
|
max_travel_mm: 320
|
||||||
|
soft_limits: false
|
||||||
|
homing:
|
||||||
|
cycle: 2
|
||||||
|
positive_direction: false
|
||||||
|
mpos_mm: 0.000
|
||||||
|
feed_mm_per_min: 200.000
|
||||||
|
seek_mm_per_min: 1000.000
|
||||||
|
settle_ms: 500
|
||||||
|
seek_scaler: 1.100
|
||||||
|
feed_scaler: 1.100
|
||||||
|
|
||||||
|
motor0:
|
||||||
|
limit_neg_pin: NO_PIN
|
||||||
|
limit_pos_pin: NO_PIN
|
||||||
|
limit_all_pin: gpio.39:low
|
||||||
|
hard_limits: true
|
||||||
|
pulloff_mm: 1
|
||||||
|
tmc_2209:
|
||||||
|
uart_num: 1
|
||||||
|
addr: 1
|
||||||
|
r_sense_ohms: 0.110
|
||||||
|
run_amps: 0.800
|
||||||
|
hold_amps: 0.200
|
||||||
|
homing_amps: 1.000
|
||||||
|
microsteps: 16
|
||||||
|
stallguard: 0
|
||||||
|
stallguard_debug: false
|
||||||
|
toff_disable: 0
|
||||||
|
toff_stealthchop: 5
|
||||||
|
toff_coolstep: 3
|
||||||
|
run_mode: StealthChop
|
||||||
|
homing_mode: StealthChop
|
||||||
|
homing_amps: 0.80
|
||||||
|
use_enable: false
|
||||||
|
direction_pin: gpio.26
|
||||||
|
step_pin: gpio.25
|
||||||
|
motor1:
|
||||||
|
null_motor:
|
||||||
|
|
||||||
|
z:
|
||||||
|
steps_per_mm: 100
|
||||||
|
max_rate_mm_per_min: 10000
|
||||||
|
acceleration_mm_per_sec2: 500
|
||||||
|
max_travel_mm: 5.00
|
||||||
|
soft_limits: false
|
||||||
|
homing:
|
||||||
|
cycle: 0
|
||||||
|
positive_direction: false
|
||||||
|
mpos_mm: 0
|
||||||
|
|
||||||
|
motor0:
|
||||||
|
rc_servo:
|
||||||
|
pwm_hz: 50
|
||||||
|
output_pin: gpio.21
|
||||||
|
min_pulse_us: 2000
|
||||||
|
max_pulse_us: 1000
|
||||||
|
|
||||||
|
spi:
|
||||||
|
miso_pin: gpio.19
|
||||||
|
mosi_pin: gpio.23
|
||||||
|
sck_pin: gpio.18
|
||||||
|
|
||||||
|
sdcard:
|
||||||
|
cs_pin: gpio.5
|
||||||
|
card_detect_pin: NO_PIN
|
||||||
|
|
||||||
|
coolant:
|
||||||
|
flood_pin: NO_PIN
|
||||||
|
mist_pin: gpio.22
|
||||||
|
|
||||||
|
probe:
|
||||||
|
pin: gpio.32:low
|
||||||
|
|
||||||
|
control:
|
||||||
|
feed_hold_pin: gpio.35:low
|
||||||
|
cycle_start_pin: gpio.34:low
|
||||||
|
safety_door_pin: gpio.33:low
|
||||||
|
|
||||||
|
|
||||||
|
Laser:
|
||||||
|
pwm_hz: 5000
|
||||||
|
output_pin: gpio.27
|
||||||
|
enable_pin: gpio.2
|
||||||
|
disable_with_s0: false
|
||||||
|
s0_with_disable: true
|
||||||
|
tool_num: 0
|
||||||
|
speed_map: 0=0.000% 255=100.000%
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"app": "trac3r",
|
"app": "trac3r",
|
||||||
"saved_at": "2026-06-16T07:32:05.632Z",
|
"saved_at": "2026-06-18T06:06:21.491Z",
|
||||||
"image_path": null,
|
"image_path": null,
|
||||||
"node_width": 450,
|
"node_width": 450,
|
||||||
"graph": {
|
"graph": {
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
"kind": "Text",
|
"kind": "Text",
|
||||||
"x": 1023.771108140191,
|
"x": 1023.771108140191,
|
||||||
"y": 1395.6709349290113,
|
"y": 1395.6709349290113,
|
||||||
"text": "Hansen Family\n2710 Timberline Dr.\nWest Richland, WA 99353",
|
"text": "Emily Hansen\n609 Kirkham St.\nSan Francisco, CA 94122",
|
||||||
"font": "futural",
|
"font": "futural",
|
||||||
"font_size_mm": 3,
|
"font_size_mm": 3,
|
||||||
"line_spacing_mm": 10,
|
"line_spacing_mm": 10,
|
||||||
|
|||||||
BIN
resources/images/angine-de-poitrine-vol-ii-3003991_1024x1024.jpg
(Stored with Git LFS)
Normal file
BIN
resources/images/angine-de-poitrine-vol-ii-3003991_1024x1024.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
222
resources/images/angine.trac3r
Normal file
222
resources/images/angine.trac3r
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"app": "trac3r",
|
||||||
|
"saved_at": "2026-06-21T20:27:01.442Z",
|
||||||
|
"image_path": null,
|
||||||
|
"node_width": 450,
|
||||||
|
"graph": {
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "source",
|
||||||
|
"kind": "Source",
|
||||||
|
"file_path": "/Users/mitchellhansen/source/Trac3r-rust/resources/images/angine-de-poitrine-vol-ii-3003991_1024x1024.jpg",
|
||||||
|
"x": 60,
|
||||||
|
"y": 60,
|
||||||
|
"file_w_px": 1024,
|
||||||
|
"file_h_px": 1024
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kernel_61295",
|
||||||
|
"kind": "Kernel",
|
||||||
|
"kernel": "Luminance",
|
||||||
|
"weight": 1.6,
|
||||||
|
"invert": true,
|
||||||
|
"blur_radius": 0,
|
||||||
|
"sat_min_value": 0.1,
|
||||||
|
"canny_low": 50,
|
||||||
|
"canny_high": 150,
|
||||||
|
"xdog_sigma2": 1.6,
|
||||||
|
"xdog_tau": 0.4,
|
||||||
|
"xdog_phi": 100,
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": true,
|
||||||
|
"hue_min": 335.49132947976886,
|
||||||
|
"hue_max": 15.491329479768808,
|
||||||
|
"sat_min": 0.2,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0.15,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"ci_color": "#e63946",
|
||||||
|
"ci_hue_tolerance": 20,
|
||||||
|
"ci_sat_min": 0.2,
|
||||||
|
"ci_val_min": 0.15,
|
||||||
|
"x": 580,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hull",
|
||||||
|
"kind": "Hull",
|
||||||
|
"threshold": 128,
|
||||||
|
"min_area": 13,
|
||||||
|
"connectivity": "eight",
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": false,
|
||||||
|
"hue_min": 0,
|
||||||
|
"hue_max": 360,
|
||||||
|
"sat_min": 0,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"x": 1100,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fill",
|
||||||
|
"kind": "Fill",
|
||||||
|
"strategy": "outline",
|
||||||
|
"spacing": 0.1,
|
||||||
|
"angle": 0,
|
||||||
|
"param": 1,
|
||||||
|
"smooth_rdp": 0,
|
||||||
|
"smooth_iters": 0,
|
||||||
|
"dpi": 425,
|
||||||
|
"x": 1620,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pen1",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0,
|
||||||
|
"x": 2140,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kernel_62688",
|
||||||
|
"kind": "Kernel",
|
||||||
|
"x": 576.4968553459119,
|
||||||
|
"y": -587.7551806947721,
|
||||||
|
"kernel": "XDoG",
|
||||||
|
"weight": 1,
|
||||||
|
"invert": false,
|
||||||
|
"blur_radius": 0,
|
||||||
|
"sat_min_value": 0.1,
|
||||||
|
"canny_low": 50,
|
||||||
|
"canny_high": 150,
|
||||||
|
"xdog_sigma2": 7.5,
|
||||||
|
"xdog_tau": 0.98,
|
||||||
|
"xdog_phi": 10,
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": true,
|
||||||
|
"hue_min": 335.49132947976886,
|
||||||
|
"hue_max": 15.491329479768808,
|
||||||
|
"sat_min": 0.2,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0.15,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"ci_color": "#e63946",
|
||||||
|
"ci_hue_tolerance": 20,
|
||||||
|
"ci_sat_min": 0.2,
|
||||||
|
"ci_val_min": 0.15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hull_62857",
|
||||||
|
"kind": "Hull",
|
||||||
|
"x": 1105.1667721409349,
|
||||||
|
"y": -745.8331740836204,
|
||||||
|
"threshold": 128,
|
||||||
|
"min_area": 4,
|
||||||
|
"connectivity": "four",
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": false,
|
||||||
|
"hue_min": 0,
|
||||||
|
"hue_max": 360,
|
||||||
|
"sat_min": 0,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0,
|
||||||
|
"val_max": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fill_63032",
|
||||||
|
"kind": "Fill",
|
||||||
|
"x": 1646.1119846155493,
|
||||||
|
"y": -847.2923694079702,
|
||||||
|
"strategy": "outline",
|
||||||
|
"spacing": 3.9,
|
||||||
|
"angle": 0,
|
||||||
|
"param": 1,
|
||||||
|
"smooth_rdp": 0,
|
||||||
|
"smooth_iters": 0,
|
||||||
|
"dpi": 254
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "penoutput_63145",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"x": 2165.8563215965705,
|
||||||
|
"y": -813.3008573323875,
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"from": "source",
|
||||||
|
"to": "kernel_61295",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "kernel_61295",
|
||||||
|
"to": "hull",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "hull",
|
||||||
|
"to": "fill",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "source",
|
||||||
|
"to": "kernel_62688",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "kernel_62688",
|
||||||
|
"to": "hull_62857",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "hull_62857",
|
||||||
|
"to": "fill_63032",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "fill_63032",
|
||||||
|
"to": "penoutput_63145",
|
||||||
|
"port": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gcode": {
|
||||||
|
"bed_w_mm": 220,
|
||||||
|
"bed_h_mm": 320,
|
||||||
|
"paper_offset_x_mm": 5.418060200668896,
|
||||||
|
"paper_offset_y_mm": 11.918060200668897,
|
||||||
|
"paper_w_mm": 210,
|
||||||
|
"paper_h_mm": 297,
|
||||||
|
"img_w_mm": 198.48921671658832,
|
||||||
|
"offset_x_mm": 6.62450034934923,
|
||||||
|
"offset_y_mm": 46.88099386613955,
|
||||||
|
"feed_draw": 1700,
|
||||||
|
"feed_travel": 5000,
|
||||||
|
"pen_down": "G1 Z0.4 F1000",
|
||||||
|
"pen_up_z_mm": 2,
|
||||||
|
"pen_dwell_ms": 70,
|
||||||
|
"pen_tip_mm": 0.5,
|
||||||
|
"printer_url": "http://192.168.2.80",
|
||||||
|
"rotate_quarter_turns": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
227
resources/images/cats.trac3r
Normal file
227
resources/images/cats.trac3r
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"app": "trac3r",
|
||||||
|
"saved_at": "2026-06-20T03:04:40.560Z",
|
||||||
|
"image_path": null,
|
||||||
|
"node_width": 450,
|
||||||
|
"graph": {
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "source",
|
||||||
|
"kind": "Source",
|
||||||
|
"file_path": "/Users/mitchellhansen/source/Trac3r-rust/resources/images/Pasted image (3).png",
|
||||||
|
"x": 60,
|
||||||
|
"y": 60,
|
||||||
|
"file_w_px": 1000,
|
||||||
|
"file_h_px": 1198
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kernel_50598",
|
||||||
|
"kind": "Kernel",
|
||||||
|
"kernel": "Luminance",
|
||||||
|
"weight": 0.8,
|
||||||
|
"invert": false,
|
||||||
|
"blur_radius": 0,
|
||||||
|
"sat_min_value": 0.1,
|
||||||
|
"canny_low": 50,
|
||||||
|
"canny_high": 150,
|
||||||
|
"xdog_sigma2": 1.6,
|
||||||
|
"xdog_tau": 0.98,
|
||||||
|
"xdog_phi": 10,
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": true,
|
||||||
|
"hue_min": 335.49132947976886,
|
||||||
|
"hue_max": 15.491329479768808,
|
||||||
|
"sat_min": 0.2,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0.15,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"ci_color": "#e63946",
|
||||||
|
"ci_hue_tolerance": 20,
|
||||||
|
"ci_sat_min": 0.2,
|
||||||
|
"ci_val_min": 0.15,
|
||||||
|
"x": 580,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hull",
|
||||||
|
"kind": "Hull",
|
||||||
|
"threshold": 128,
|
||||||
|
"min_area": 4,
|
||||||
|
"connectivity": "four",
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": false,
|
||||||
|
"hue_min": 0,
|
||||||
|
"hue_max": 360,
|
||||||
|
"sat_min": 0,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"x": 1100,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fill",
|
||||||
|
"kind": "Fill",
|
||||||
|
"strategy": "outline",
|
||||||
|
"spacing": 2.5,
|
||||||
|
"angle": 0,
|
||||||
|
"param": 1,
|
||||||
|
"smooth_rdp": 0,
|
||||||
|
"smooth_iters": 0,
|
||||||
|
"dpi": 254,
|
||||||
|
"x": 1620,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pen1",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0,
|
||||||
|
"x": 2140,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kernel_51645",
|
||||||
|
"kind": "Kernel",
|
||||||
|
"x": 583.267085404842,
|
||||||
|
"y": -642.92954131517,
|
||||||
|
"kernel": "Luminance",
|
||||||
|
"weight": 1,
|
||||||
|
"invert": false,
|
||||||
|
"blur_radius": 0,
|
||||||
|
"sat_min_value": 0.1,
|
||||||
|
"canny_low": 50,
|
||||||
|
"canny_high": 150,
|
||||||
|
"xdog_sigma2": 1.6,
|
||||||
|
"xdog_tau": 0.98,
|
||||||
|
"xdog_phi": 10,
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": true,
|
||||||
|
"hue_min": 335.49132947976886,
|
||||||
|
"hue_max": 15.491329479768808,
|
||||||
|
"sat_min": 0.2,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0.15,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"ci_color": "#e63946",
|
||||||
|
"ci_hue_tolerance": 20,
|
||||||
|
"ci_sat_min": 0.2,
|
||||||
|
"ci_val_min": 0.15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hull_51768",
|
||||||
|
"kind": "Hull",
|
||||||
|
"x": 1094.381836784237,
|
||||||
|
"y": -707.8017982210164,
|
||||||
|
"threshold": 104,
|
||||||
|
"min_area": 5000,
|
||||||
|
"connectivity": "four",
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": false,
|
||||||
|
"hue_min": 0,
|
||||||
|
"hue_max": 360,
|
||||||
|
"sat_min": 0,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0,
|
||||||
|
"val_max": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fill_51841",
|
||||||
|
"kind": "Fill",
|
||||||
|
"x": 1613.3598920310076,
|
||||||
|
"y": -793.3152277787229,
|
||||||
|
"strategy": "voronoi",
|
||||||
|
"spacing": 3.1,
|
||||||
|
"angle": 0,
|
||||||
|
"param": 1,
|
||||||
|
"smooth_rdp": 0,
|
||||||
|
"smooth_iters": 0,
|
||||||
|
"dpi": 375
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "penoutput_51966",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"x": 2149.0474679959507,
|
||||||
|
"y": -807.0760095466296,
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"from": "source",
|
||||||
|
"to": "kernel_50598",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "kernel_50598",
|
||||||
|
"to": "hull",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "hull",
|
||||||
|
"to": "fill",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "fill",
|
||||||
|
"to": "pen1",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "fill_51841",
|
||||||
|
"to": "penoutput_51966",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "hull_51768",
|
||||||
|
"to": "fill_51841",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "kernel_51645",
|
||||||
|
"to": "hull_51768",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "source",
|
||||||
|
"to": "kernel_51645",
|
||||||
|
"port": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gcode": {
|
||||||
|
"bed_w_mm": 220,
|
||||||
|
"bed_h_mm": 320,
|
||||||
|
"paper_offset_x_mm": 5,
|
||||||
|
"paper_offset_y_mm": 11.5,
|
||||||
|
"paper_w_mm": 210,
|
||||||
|
"paper_h_mm": 297,
|
||||||
|
"img_w_mm": 203.75087006080153,
|
||||||
|
"offset_x_mm": 2.58146229312114,
|
||||||
|
"offset_y_mm": 11.432441441524595,
|
||||||
|
"feed_draw": 1000,
|
||||||
|
"feed_travel": 5000,
|
||||||
|
"pen_down": "G1 Z0.4 F1000",
|
||||||
|
"pen_up_z_mm": 2,
|
||||||
|
"pen_dwell_ms": 250,
|
||||||
|
"pen_tip_mm": 0.5,
|
||||||
|
"printer_url": "http://192.168.2.80",
|
||||||
|
"rotate_quarter_turns": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
134
resources/images/corn.trac3r
Normal file
134
resources/images/corn.trac3r
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"app": "trac3r",
|
||||||
|
"saved_at": "2026-06-18T06:02:49.905Z",
|
||||||
|
"image_path": null,
|
||||||
|
"node_width": 450,
|
||||||
|
"graph": {
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "source",
|
||||||
|
"kind": "Source",
|
||||||
|
"file_path": "/Users/mitchellhansen/source/Trac3r-rust/resources/images/set-ripe-corn-hand-drawn-illustration_37827-1054_jpg.png",
|
||||||
|
"x": 60,
|
||||||
|
"y": 60,
|
||||||
|
"file_w_px": 740,
|
||||||
|
"file_h_px": 740
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kernel_11401",
|
||||||
|
"kind": "Kernel",
|
||||||
|
"kernel": "XDoG",
|
||||||
|
"weight": 1.8,
|
||||||
|
"invert": false,
|
||||||
|
"blur_radius": 0,
|
||||||
|
"sat_min_value": 0.1,
|
||||||
|
"canny_low": 50,
|
||||||
|
"canny_high": 150,
|
||||||
|
"xdog_sigma2": 1.6,
|
||||||
|
"xdog_tau": 0.98,
|
||||||
|
"xdog_phi": 10,
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": true,
|
||||||
|
"hue_min": 335.49132947976886,
|
||||||
|
"hue_max": 15.491329479768808,
|
||||||
|
"sat_min": 0.2,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0.15,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"ci_color": "#e63946",
|
||||||
|
"ci_hue_tolerance": 20,
|
||||||
|
"ci_sat_min": 0.2,
|
||||||
|
"ci_val_min": 0.15,
|
||||||
|
"x": 580,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hull",
|
||||||
|
"kind": "Hull",
|
||||||
|
"threshold": 215,
|
||||||
|
"min_area": 4,
|
||||||
|
"connectivity": "four",
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": false,
|
||||||
|
"hue_min": 0,
|
||||||
|
"hue_max": 360,
|
||||||
|
"sat_min": 0,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"x": 1100,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fill",
|
||||||
|
"kind": "Fill",
|
||||||
|
"strategy": "outline",
|
||||||
|
"spacing": 2,
|
||||||
|
"angle": 0,
|
||||||
|
"param": 1,
|
||||||
|
"smooth_rdp": 0,
|
||||||
|
"smooth_iters": 0,
|
||||||
|
"dpi": 425,
|
||||||
|
"x": 1620,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pen1",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0,
|
||||||
|
"x": 2140,
|
||||||
|
"y": 60
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"from": "source",
|
||||||
|
"to": "kernel_11401",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "kernel_11401",
|
||||||
|
"to": "hull",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "hull",
|
||||||
|
"to": "fill",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "fill",
|
||||||
|
"to": "pen1",
|
||||||
|
"port": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gcode": {
|
||||||
|
"bed_w_mm": 220,
|
||||||
|
"bed_h_mm": 320,
|
||||||
|
"paper_offset_x_mm": 5,
|
||||||
|
"paper_offset_y_mm": 11.5,
|
||||||
|
"paper_w_mm": 210,
|
||||||
|
"paper_h_mm": 297,
|
||||||
|
"img_w_mm": 200.5969387174046,
|
||||||
|
"offset_x_mm": 6.128677126555029,
|
||||||
|
"offset_y_mm": 43.41427329494073,
|
||||||
|
"feed_draw": 1400,
|
||||||
|
"feed_travel": 5000,
|
||||||
|
"pen_down": "G1 Z0.4 F1000",
|
||||||
|
"pen_up_z_mm": 2,
|
||||||
|
"pen_dwell_ms": 160,
|
||||||
|
"pen_tip_mm": 0.5,
|
||||||
|
"printer_url": "http://192.168.2.80",
|
||||||
|
"rotate_quarter_turns": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
resources/images/hhpzoawhg2k61.jpg
(Stored with Git LFS)
Normal file
BIN
resources/images/hhpzoawhg2k61.jpg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
resources/images/sabateur.png
(Stored with Git LFS)
Normal file
BIN
resources/images/sabateur.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
resources/images/sabateur.webp
(Stored with Git LFS)
Normal file
BIN
resources/images/sabateur.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
64
resources/images/seals.trac3r
Normal file
64
resources/images/seals.trac3r
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"app": "trac3r",
|
||||||
|
"saved_at": "2026-06-18T05:31:57.297Z",
|
||||||
|
"image_path": null,
|
||||||
|
"node_width": 450,
|
||||||
|
"graph": {
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "pen1",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0,
|
||||||
|
"x": 1484.6746376285246,
|
||||||
|
"y": -376.88357491431697
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "text_6963",
|
||||||
|
"kind": "Text",
|
||||||
|
"x": 533.6610878661088,
|
||||||
|
"y": -379.8598326359835,
|
||||||
|
"text": "What the fuck did you just fucking say about \nme, you little bitch? I'll have you know I \ngraduated top of my class in the Navy Seals, \nand I've been involved in numerous secret \nraids on Al-Quaeda, and I have over 300 \nconfirmed kills. I am trained in gorilla warfare\n and I'm the top sniper in the entire US \narmed forces. You are nothing to me but \njust another target. I will wipe you the fuck \nout with precision the likes of which has \nnever been seen before on this Earth, mark \nmy fucking words. You think you can get away \nwith saying that shit to me over the Internet? \nThink again, fucker. As we speak I am \ncontacting my secret network of spies across \nthe USA and your IP is being traced right \nnow so you better prepare for the storm, \nmaggot. The storm that wipes out the \npathetic little thing you call your life. You're \nfucking dead, kid. I can be anywhere, anytime, \nand I can kill you in over seven hundred ways, \nand that's just with my bare hands. Not only \nam I extensively trained in unarmed combat, \nbut I have access to the entire arsenal of the \nUnited States Marine Corps and I will use it \nto its full extent to wipe your miserable ass \noff the face of the continent, you little shit. \nIf only you could have known what unholy \nretribution your little \"clever\" comment was \nabout to bring down upon you, maybe you \nwould have held your fucking tongue. But \nyou couldn't, you didn't, and now you're \npaying the price, you goddamn idiot. I will \nshit fury all over you and you will drown in it. \n\nYou're fucking dead, kiddo.",
|
||||||
|
"font": "futural",
|
||||||
|
"font_size_mm": 2.5,
|
||||||
|
"line_spacing_mm": 6.5,
|
||||||
|
"x_mm": 10,
|
||||||
|
"y_mm": 20,
|
||||||
|
"align": "center",
|
||||||
|
"underline": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"from": "text_6963",
|
||||||
|
"to": "pen1",
|
||||||
|
"port": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gcode": {
|
||||||
|
"bed_w_mm": 220,
|
||||||
|
"bed_h_mm": 320,
|
||||||
|
"paper_offset_x_mm": 5,
|
||||||
|
"paper_offset_y_mm": 11.5,
|
||||||
|
"paper_w_mm": 210,
|
||||||
|
"paper_h_mm": 297,
|
||||||
|
"img_w_mm": 232.78757416890963,
|
||||||
|
"offset_x_mm": 31.2122891666888,
|
||||||
|
"offset_y_mm": 6.6593644590361,
|
||||||
|
"feed_draw": 1400,
|
||||||
|
"feed_travel": 5000,
|
||||||
|
"pen_down": "G1 Z0.4 F1000",
|
||||||
|
"pen_up_z_mm": 2,
|
||||||
|
"pen_dwell_ms": 160,
|
||||||
|
"pen_tip_mm": 0.5,
|
||||||
|
"printer_url": "http://192.168.2.80",
|
||||||
|
"rotate_quarter_turns": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
resources/images/set-ripe-corn-hand-drawn-illustration_37827-1054_jpg.png
(Stored with Git LFS)
Normal file
BIN
resources/images/set-ripe-corn-hand-drawn-illustration_37827-1054_jpg.png
(Stored with Git LFS)
Normal file
Binary file not shown.
150
resources/images/tinnytim.trac3r
Normal file
150
resources/images/tinnytim.trac3r
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"app": "trac3r",
|
||||||
|
"saved_at": "2026-06-20T04:12:46.151Z",
|
||||||
|
"image_path": null,
|
||||||
|
"node_width": 450,
|
||||||
|
"graph": {
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "source",
|
||||||
|
"kind": "Source",
|
||||||
|
"file_path": "/Users/mitchellhansen/source/Trac3r-rust/resources/images/hhpzoawhg2k61.jpg",
|
||||||
|
"x": 60,
|
||||||
|
"y": 60,
|
||||||
|
"file_w_px": 625,
|
||||||
|
"file_h_px": 471
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kernel_58314",
|
||||||
|
"kind": "Kernel",
|
||||||
|
"kernel": "XDoG",
|
||||||
|
"weight": 0.7,
|
||||||
|
"invert": false,
|
||||||
|
"blur_radius": 0,
|
||||||
|
"sat_min_value": 0.1,
|
||||||
|
"canny_low": 50,
|
||||||
|
"canny_high": 150,
|
||||||
|
"xdog_sigma2": 1.6,
|
||||||
|
"xdog_tau": 0.98,
|
||||||
|
"xdog_phi": 28,
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": true,
|
||||||
|
"hue_min": 335.49132947976886,
|
||||||
|
"hue_max": 15.491329479768808,
|
||||||
|
"sat_min": 0.2,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0.15,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"ci_color": "#e63946",
|
||||||
|
"ci_hue_tolerance": 20,
|
||||||
|
"ci_sat_min": 0.2,
|
||||||
|
"ci_val_min": 0.15,
|
||||||
|
"x": 580,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hull",
|
||||||
|
"kind": "Hull",
|
||||||
|
"threshold": 163,
|
||||||
|
"min_area": 22,
|
||||||
|
"connectivity": "four",
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": false,
|
||||||
|
"hue_min": 0,
|
||||||
|
"hue_max": 360,
|
||||||
|
"sat_min": 0,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"x": 1100,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fill",
|
||||||
|
"kind": "Fill",
|
||||||
|
"strategy": "outline",
|
||||||
|
"spacing": 2,
|
||||||
|
"angle": 0,
|
||||||
|
"param": 1,
|
||||||
|
"smooth_rdp": 0,
|
||||||
|
"smooth_iters": 0,
|
||||||
|
"dpi": 525,
|
||||||
|
"x": 1620,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pen1",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0,
|
||||||
|
"x": 2140,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "mask_59839",
|
||||||
|
"kind": "Mask",
|
||||||
|
"x": 528.3856159138845,
|
||||||
|
"y": -530.9329209034938,
|
||||||
|
"mask_x": 0.82,
|
||||||
|
"mask_y": 0.945,
|
||||||
|
"mask_w": 0.23,
|
||||||
|
"mask_h": 0.15,
|
||||||
|
"invert": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"from": "hull",
|
||||||
|
"to": "fill",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "fill",
|
||||||
|
"to": "pen1",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "source",
|
||||||
|
"to": "kernel_58314",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "kernel_58314",
|
||||||
|
"to": "mask_59839",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "mask_59839",
|
||||||
|
"to": "hull",
|
||||||
|
"port": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gcode": {
|
||||||
|
"bed_w_mm": 220,
|
||||||
|
"bed_h_mm": 320,
|
||||||
|
"paper_offset_x_mm": 5.418060200668896,
|
||||||
|
"paper_offset_y_mm": 11.918060200668897,
|
||||||
|
"paper_w_mm": 210,
|
||||||
|
"paper_h_mm": 297,
|
||||||
|
"img_w_mm": 264.36959915779147,
|
||||||
|
"offset_x_mm": 5.507883697803414,
|
||||||
|
"offset_y_mm": 13.940802645537975,
|
||||||
|
"feed_draw": 1700,
|
||||||
|
"feed_travel": 5000,
|
||||||
|
"pen_down": "G1 Z0.4 F1000",
|
||||||
|
"pen_up_z_mm": 2,
|
||||||
|
"pen_dwell_ms": 70,
|
||||||
|
"pen_tip_mm": 0.5,
|
||||||
|
"printer_url": "http://192.168.2.80",
|
||||||
|
"rotate_quarter_turns": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
846222
resources/images/trac3r_debug.json
Normal file
846222
resources/images/trac3r_debug.json
Normal file
File diff suppressed because it is too large
Load Diff
132
resources/images/zodiac.trac3r
Normal file
132
resources/images/zodiac.trac3r
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"app": "trac3r",
|
||||||
|
"saved_at": "2026-06-21T18:20:47.949Z",
|
||||||
|
"image_path": null,
|
||||||
|
"node_width": 450,
|
||||||
|
"graph": {
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": "source",
|
||||||
|
"kind": "Source",
|
||||||
|
"file_path": null,
|
||||||
|
"x": 60,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kernel_65432",
|
||||||
|
"kind": "Kernel",
|
||||||
|
"kernel": "Luminance",
|
||||||
|
"weight": 1,
|
||||||
|
"invert": false,
|
||||||
|
"blur_radius": 0,
|
||||||
|
"sat_min_value": 0.1,
|
||||||
|
"canny_low": 50,
|
||||||
|
"canny_high": 150,
|
||||||
|
"xdog_sigma2": 1.6,
|
||||||
|
"xdog_tau": 0.98,
|
||||||
|
"xdog_phi": 10,
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": true,
|
||||||
|
"hue_min": 335.49132947976886,
|
||||||
|
"hue_max": 15.491329479768808,
|
||||||
|
"sat_min": 0.2,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0.15,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"ci_color": "#e63946",
|
||||||
|
"ci_hue_tolerance": 20,
|
||||||
|
"ci_sat_min": 0.2,
|
||||||
|
"ci_val_min": 0.15,
|
||||||
|
"x": 580,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "hull",
|
||||||
|
"kind": "Hull",
|
||||||
|
"threshold": 128,
|
||||||
|
"min_area": 4,
|
||||||
|
"connectivity": "four",
|
||||||
|
"color_filter": {
|
||||||
|
"enabled": false,
|
||||||
|
"hue_min": 0,
|
||||||
|
"hue_max": 360,
|
||||||
|
"sat_min": 0,
|
||||||
|
"sat_max": 1,
|
||||||
|
"val_min": 0,
|
||||||
|
"val_max": 1
|
||||||
|
},
|
||||||
|
"x": 1100,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fill",
|
||||||
|
"kind": "Fill",
|
||||||
|
"strategy": "hatch",
|
||||||
|
"spacing": 2,
|
||||||
|
"angle": 0,
|
||||||
|
"param": 1,
|
||||||
|
"smooth_rdp": 1,
|
||||||
|
"smooth_iters": 2,
|
||||||
|
"dpi": 254,
|
||||||
|
"x": 1620,
|
||||||
|
"y": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "pen1",
|
||||||
|
"kind": "PenOutput",
|
||||||
|
"pen_color": [
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"pen_label": "Pen 1",
|
||||||
|
"pen_order": 0,
|
||||||
|
"x": 2140,
|
||||||
|
"y": 60
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"from": "source",
|
||||||
|
"to": "kernel_65432",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "kernel_65432",
|
||||||
|
"to": "hull",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "hull",
|
||||||
|
"to": "fill",
|
||||||
|
"port": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": "fill",
|
||||||
|
"to": "pen1",
|
||||||
|
"port": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gcode": {
|
||||||
|
"bed_w_mm": 220,
|
||||||
|
"bed_h_mm": 320,
|
||||||
|
"paper_offset_x_mm": 64.71952341137123,
|
||||||
|
"paper_offset_y_mm": 36.84163879598661,
|
||||||
|
"paper_w_mm": 104.775,
|
||||||
|
"paper_h_mm": 241.3,
|
||||||
|
"img_w_mm": 241.98489858362532,
|
||||||
|
"offset_x_mm": -138.93821250555197,
|
||||||
|
"offset_y_mm": 5.823244057698307,
|
||||||
|
"feed_draw": 1400,
|
||||||
|
"feed_travel": 5000,
|
||||||
|
"pen_down": "G1 Z0.4 F1000",
|
||||||
|
"pen_up_z_mm": 2,
|
||||||
|
"pen_dwell_ms": 160,
|
||||||
|
"pen_tip_mm": 0.5,
|
||||||
|
"printer_url": "http://192.168.2.80",
|
||||||
|
"rotate_quarter_turns": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
resources/images/zodiac_border.png
(Stored with Git LFS)
Normal file
BIN
resources/images/zodiac_border.png
(Stored with Git LFS)
Normal file
Binary file not shown.
36
src/lib.rs
36
src/lib.rs
@@ -1350,26 +1350,28 @@ fn build_all_gcode(st: &AppState, cfg: &gcode::GcodeConfig) -> Vec<(String, Stri
|
|||||||
// `image_rgb` so the standard image pipeline (Source → Kernel → Hull →
|
// `image_rgb` so the standard image pipeline (Source → Kernel → Hull →
|
||||||
// Fill) renders the text like any other image.
|
// Fill) renders the text like any other image.
|
||||||
|
|
||||||
let mut out = Vec::new();
|
// The plotter has no auto pen-changer, so every pen's strokes are packed
|
||||||
|
// into a SINGLE gcode file and run as one continuous job (ordered by each
|
||||||
|
// pen's `order`). `to_gcode` already emits one home/return around the whole
|
||||||
|
// slice, so we just hand it every pen's fill at once. Image dims come from
|
||||||
|
// the pass the pens belong to (in practice there is a single pass).
|
||||||
|
let mut fills: Vec<(u32, fill::FillResult)> = Vec::new();
|
||||||
|
let mut dims: Option<(u32, u32)> = None;
|
||||||
for ps in st.passes.iter() {
|
for ps in st.passes.iter() {
|
||||||
let (iw, ih) = (ps.img_w.max(1), ps.img_h.max(1));
|
for pr in &ps.pen_results {
|
||||||
let mut pens = ps.pen_results.clone();
|
|
||||||
pens.sort_by_key(|pr| pr.order);
|
|
||||||
for pr in &pens {
|
|
||||||
if pr.fill.strokes.is_empty() { continue; }
|
if pr.fill.strokes.is_empty() { continue; }
|
||||||
let code = gcode::to_gcode(&[pr.fill.clone()], iw, ih, cfg);
|
if dims.is_none() { dims = Some((ps.img_w.max(1), ps.img_h.max(1))); }
|
||||||
let slug = if pr.label.is_empty() {
|
fills.push((pr.order, pr.fill.clone()));
|
||||||
format!("{:02x}{:02x}{:02x}", pr.color[0], pr.color[1], pr.color[2])
|
}
|
||||||
} else {
|
}
|
||||||
pr.label.chars()
|
let (iw, ih) = match dims {
|
||||||
.map(|c| if c.is_alphanumeric() || c == '-' || c == '_' { c } else { '_' })
|
Some(d) => d,
|
||||||
.collect()
|
None => return Vec::new(),
|
||||||
};
|
};
|
||||||
let fname = format!("{:02}_{slug}.gcode", pr.order + 1);
|
fills.sort_by_key(|(order, _)| *order);
|
||||||
out.push((fname, code));
|
let ordered: Vec<fill::FillResult> = fills.into_iter().map(|(_, f)| f).collect();
|
||||||
}
|
let code = gcode::to_gcode(&ordered, iw, ih, cfg);
|
||||||
}
|
vec![("trac3r.gcode".to_string(), code)]
|
||||||
out
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
|
|||||||
Reference in New Issue
Block a user