Skip to content

Commit e867086

Browse files
committed
fix: fix weedo extracting and add sample
1 parent 38365d7 commit e867086

File tree

2 files changed

+141
-4
lines changed

2 files changed

+141
-4
lines changed

gcode_thumbnail_tool.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,16 @@
6767
TODO: Single lines or multiple lines? Need sample!
6868
"""
6969

70-
REGEX_WEEDO = re.compile(r"W221$(?P<data>.+?)^W222", re.DOTALL | re.MULTILINE)
70+
REGEX_WEEDO = re.compile(
71+
r"W221(?:\n|\r\n?)(?P<lines>(W220\s+.*?(?:\n|\r\n?))+)W222",
72+
re.DOTALL | re.MULTILINE,
73+
)
7174
"""
7275
Weedo format:
7376
7477
W221<nl>
75-
<hex encoded data><nl>
76-
<more hex encoded data><nl>
78+
W220 <hex encoded data><nl>
79+
W220 <more hex encoded data><nl>
7780
[...]
7881
W222<nl>
7982
@@ -162,7 +165,7 @@ def extract_thumbnails_from_gcode(gcode_path: str) -> Optional[ExtractedImages]:
162165
("generic", (REGEX_GENERIC, _extract_generic_base64_thumbnails)),
163166
("snapmaker", (REGEX_SNAPMAKER, _extract_generic_base64_thumbnails)),
164167
("mks", (REGEX_MKS, _extract_mks_thumbnails)),
165-
("weedo", (REGEX_WEEDO, _extract_generic_hex_thumbnails)),
168+
("weedo", (REGEX_WEEDO, _extract_weedo_thumbnails)),
166169
("qidi", (REGEX_QIDI, _extract_qidi_thumbnails)),
167170
("flashprint", _extract_flashprint_thumbnails),
168171
("creality", (REGEX_CREALITY, _extract_generic_base64_thumbnails)),
@@ -290,6 +293,20 @@ def _extract_mks_thumbnails(matches: list[re.Match]) -> list[PILImage]:
290293
return result
291294

292295

296+
def _extract_weedo_thumbnails(matches: list[re.Match]) -> list[PILImage]:
297+
result = []
298+
299+
for match in matches:
300+
lines = [
301+
line[len("M220 ") :].strip() for line in match.group("lines").splitlines()
302+
]
303+
304+
hex_data = _remove_whitespace("".join(lines))
305+
result.append(_image_from_hex(hex_data))
306+
307+
return result
308+
309+
293310
def _extract_qidi_thumbnails(matches: list[re.Match]) -> list[PILImage]:
294311
"""
295312
Qidi extractor

tests/files/weedo_sample.gcode

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
;Start printer preprocessing data.Do not change the following data
2+
W221
3+
W220 ffd8ffe000104a46494600010101006000600000ffdb004300080606070605080707070909080a0c
4+
W220 140d0c0b0b0c1912130f141d1a1f1e1d1a1c1c20242e2720222c231c1c2837292c30313434341f27
5+
W220 393d38323c2e333432ffdb0043010909090c0b0c180d0d1832211c21323232323232323232323232
6+
W220 3232323232323232323232323232323232323232323232323232323232323232323232323232ffc0
7+
W220 00110800b400b403012200021101031101ffc4001f00000105010101010101000000000000000001
8+
W220 02030405060708090a0bffc400b5100002010303020403050504040000017d010203000411051221
9+
W220 31410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a2526272829
10+
W220 2a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a
11+
W220 838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6
12+
W220 c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f010003
13+
W220 0101010101010101010000000000000102030405060708090a0bffc400b511000201020404030407
14+
W220 05040400010277000102031104052131061241510761711322328108144291a1b1c109233352f015
15+
W220 6272d10a162434e125f11718191a262728292a35363738393a434445464748494a53545556575859
16+
W220 5a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6
17+
W220 a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9ea
18+
W220 f2f3f4f5f6f7f8f9faffda000c03010002110311003f00f7fa28a2800a28a2800a28a2800a28a280
19+
W220 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280
20+
W220 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280
21+
W220 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280
22+
W220 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280
23+
W220 0a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a280
24+
W220 0a2b2b52f11e9ba5318ee262651ff2cd1493fe02b96bef1fdc3e56c6d5221fdf94ee3f90e07eb5b4
25+
W220 28549ec8f3b139ae130f7539ebd96aff00af53bd24019270075358f7de29d22c321ae84ae3f821f9
26+
W220 cfe7d3f5ae01fc4dad4f04d135eb324ca5586c5e9edc7159224958e0c51cbf4ca9fd335d30c1dbe3
27+
W220 7f71e2e2788f995b0d1d7fbdfd5bef676d2fc413e78f234edd17fb72618fe438fd6afdb78ef4c978
28+
W220 b88e7b76ef95dc3f4e7f4af309f55d36daededae2692de641921d0904119e08cd5fd3acf56d6f1fd
29+
W220 8ba448f09ff97cbdfddc5f503ab0fa735353ea91566f5f2d5fdc69825c435da9c69be57677925185
30+
W220 9ecd49d93f936cf5fb2d4acf51467b3b84942fdedbd47d455aaccd0b4bfecad3218a4119ba28be7c
31+
W220 91e70ec3d33dbad69d71cb96feeec7d1d2555412ad6e6eb6bdbe570a28a291a05145140051451400
32+
W220 51451400514521200249000ea4d002d158d7de29d22c321ee96571fc10fce7f3e9f99ae6efbc7b72
33+
W220 c316568b129e8f2fcc7f2e9fceb6850a93d91e762336c261f49ceefb2d4ef6b1afbc51a458643dd2
34+
W220 cae3f821f9cff87eb5c9e9fe3abfb73b6f512e533cb01b587e5c7e95c2beb1756ce46a560648b3c4
35+
W220 f073c7b8ff00f5569ec1537fbdbdbbadbe7d8e4fed3a98b85b2fe573fe5934a5ff006ea6d293f24e
36+
W220 fe4cf41bef1f5c484a58db244bfdf94ee3f90e07eb584de22d61ae44dfda33171c8da70bff007cf4
37+
W220 fd2b22d6e6cb505cd9dd248719d87861f853ee24b5b14dd7b751c5e8b9cb1fc2bb611a118732b5bb
38+
W220 ff00c13e63115b34ab88f61514fda7f2d9a7ff0080a5712eeeb53b8ba92e4df992490e59678c329f
39+
W220 cb047e755ae3544b2543a95a340ae76acb0b6f527e9c1fd2ade9e357d6c81a068d24919ff97bb91b
40+
W220 23fa827afe1cfb576ba17c3f31c73b7896e20d51a640a20f2bf770fba9eb9f7001ae3a98c8a56c3b
41+
W220 6dff00e4bf8fe87d260f876bce5cf9b46318f6bdaabffc074bf7f69f71c02ea9632ca90d92cfa85c
42+
W220 c9f721b78c926ba2d3bc1be27d5c06ba78744b43fc2b892623f90fcc1f6af49d3347d3b46b7f234e
43+
W220 b286da3c0cf96982d8f53d49f73576b9e75eb54f8a56f25a7e3b9eb61f2bcb306ef42973bfe6a969
44+
W220 3f946ca2be69bf3302cbc17e1fb2b84ba5d32092e955419a51bc9207dec1e01f715bf45159a8a5b1
45+
W220 db3ab3a96e76dd828a28a6661451450014514500145635ef8ab47b2524ddaccdd920f9c9fc7a7eb5
46+
W220 cd5f78fee1f2b636a910fefca771fc8703f5ada142a4f6479d88cdb0987f8a777d96a77c4e064d64
47+
W220 5e789f47b26db25e23b671b62f9f1f5c715e657bacdfea321177772499fe0ce17f0038aa75d50c12
48+
W220 fb4cf0b11c4d2da843e6ff00c97f99eb0fe28d0fed115a2eb164b7570b9862332863e9c7d477ae13
49+
W220 5dfeda37062d427998fde11b3617ea00e2b99bdd3ed75187caba856451d33d54fa83d45243ad6b9e
50+
W220 19b12b3ffc4f343887305db6258474f924ebd3ff00d553c93c3372b7347f1468f1343398468ba8e9
51+
W220 55d927f049bd9793ed7fbd968820e08208a31b9875fc2b674e5d37c556b25c6852b4b2440196ca61
52+
W220 b668c7b1e8c33f4fceb2147882f2f24b1d23c3d72b2c6db6492e536043ef9c0f7eb5abc7505053be
53+
W220 ff0079c51e14cda588961fd9d9c776da514bbdddbf2bf9120b76da5db11a0ea58d509758d3e19441
54+
W220 6cb2dfdc93858e05dd93fe7d335d569df0aee6f9967f13eacf3e0e7ecd6c7083ea71fc80fad77ba4
55+
W220 f87f49d0a1f2f4db086df8c1655cb37d58f27f135c93c7559ff0e3cabbbd5fddb1efe178570187d7
56+
W220 1955d597f2c3dd8fce4fde7f24bd4f3bf0ff00801f5eb3bb9fc43a6b69d2b386b3784aa4aab839dc
57+
W220 00e79c7de19ae9f46f86de1ed25c4d2dbb6a175de5bc3bf9ff0077a7e84d75f45712a31bddeacfa6
58+
W220 9e635f97d9d37cb14924937a24ad6bbd6ddf5d58800550aa000380076a5a28ad4e10a28a2800a28a
59+
W220 2800a28a2800a28a2800a28a2803c7350d32e74f9da39a26523a83fe791ef54abd9351d32db53b7f
60+
W220 2ae1391f75c755fa570971e0ebd8efcc51c26543cab8385c7bfa7d2bd6a58984d6ba33f3ecc325af
61+
W220 859feed39c5ed6dfd1afd4e5bcbf37e5dbbbd854eb6cc9103348a8a83966233f526a5d5f4ff145a6
62+
W220 a874cd3b4279188cadc0e6323d73c01ff023f855dd3fe14ea1a9309fc4dab3f622ded8e71f89181f
63+
W220 803f5ae7ab98c22dc69c5c9fdcbef3d8c0f07622ac155c6d58d183d6df14dffdbab45f36bd0e6ee3
64+
W220 c41a65ab88ad95ef672701631919faf7fc335a36be12f17f8a632b73145a5583819132fcec3fddeb
65+
W220 f9edaf53d1bc2fa2e8098d374f8a17c60cb8dce7eac79ad7ae2a956bd6d2a4acbb2d3f1dcfa8c1e0
66+
W220 32bcb9a96128f34d7dba9ef3bf751f857968df99caf847c09a77845a59ade79e7b995363c9210063
67+
W220 39c051d391df35d551454461182b44debe22a6226ea55776c28a28aa310a28a2800a28a2800a28a2
68+
W220 800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2
69+
W220 800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2
70+
W220 800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2
71+
W220 800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2
72+
W220 800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2800a28a2
73+
W220 800a28a2800a28a2803fffd9
74+
W222
75+
;End printer preprocessing data
76+
M73 P0
77+
;MultipleExtruderPrint:true
78+
;MINX:114.0
79+
;MAXX:186.0
80+
;MINY:141.0
81+
;MAXY:159.0
82+
;MINZ:0.0
83+
;MAXZ:3.3
84+
;MachineType:WEEDO X40
85+
;FilamentType:PLA
86+
;Extruder0Temperature:200
87+
;Extruder1Temperature:200
88+
;BedTemperature:35
89+
;InfillDensity:10
90+
;FLAVOR:Marlin
91+
;TIME:657
92+
;FilamentUsed:852.9
93+
;Layer height: 0.2
94+
95+
;Generated with Cura_SteamEngine 3.1
96+
M140 S35
97+
M104 S220
98+
M104 T1 S220
99+
M82 ; absolute extrusion mode
100+
101+
;(**** start.gcode for X40 DUAL****)
102+
M104 S150
103+
G28 ; Home extruder
104+
G29
105+
M107 ; Turn off fan
106+
G90 ; Absolute positioning
107+
M82 ; Extruder in absolute mode
108+
G1 X-47 F3000
109+
T1 S
110+
M109 S220.0
111+
G92 E0
112+
G1 E50 F300
113+
G92 E0
114+
T0 S
115+
M109 S220.0
116+
G92 E0
117+
G1 E50 F300
118+
G92 E0
119+
120+
; rest removed intentionally

0 commit comments

Comments
 (0)