mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-16 13:32:44 +00:00
Compare commits
640
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed59f93456 | ||
|
|
cf52c81dcd | ||
|
|
803a2a3239 | ||
|
|
985092bb46 | ||
|
|
cb16a2e547 | ||
|
|
2c2e91b629 | ||
|
|
c3faf903ca | ||
|
|
5f3c957597 | ||
|
|
8557285389 | ||
|
|
a9edab78a8 | ||
|
|
79dede7d59 | ||
|
|
2ac45b2f78 | ||
|
|
b4f33e71e9 | ||
|
|
8c91cab971 | ||
|
|
79077518e9 | ||
|
|
56aa348c89 | ||
|
|
ae1752fbf2 | ||
|
|
cf3f36a1c6 | ||
|
|
cca7d8adb1 | ||
|
|
396d9ff51a | ||
|
|
81540c81e0 | ||
|
|
e7ace6cc99 | ||
|
|
79c20a1fad | ||
|
|
e48f9f47d2 | ||
|
|
2f566e3779 | ||
|
|
37d1edf69a | ||
|
|
f1cf9c69b1 | ||
|
|
1df362888e | ||
|
|
0956b4d8fe | ||
|
|
5514559feb | ||
|
|
4b2466b179 | ||
|
|
d5cf1502c4 | ||
|
|
3adcb3e953 | ||
|
|
37e2b6c928 | ||
|
|
efc9f253ee | ||
|
|
292cf0095e | ||
|
|
5c635d5e50 | ||
|
|
5496883493 | ||
|
|
31eb8a2bd1 | ||
|
|
70247ad298 | ||
|
|
d4840901fc | ||
|
|
5f01f21661 | ||
|
|
ecbe1b1b90 | ||
|
|
104dbb2140 | ||
|
|
e482cbbdd7 | ||
|
|
00429da739 | ||
|
|
31f6eb2718 | ||
|
|
ffb4f192c1 | ||
|
|
2a5ddd9edb | ||
|
|
4373bc3697 | ||
|
|
c10f83cf61 | ||
|
|
8eeec6935e | ||
|
|
131a2abf99 | ||
|
|
a09d6a565c | ||
|
|
214b5e2b0a | ||
|
|
c5b152b722 | ||
|
|
fd63164268 | ||
|
|
aef9ca2efb | ||
|
|
26fa1694d9 | ||
|
|
636b623cb7 | ||
|
|
d643b10ac4 | ||
|
|
9e8fbc17dd | ||
|
|
15ebdc3799 | ||
|
|
a7775296b0 | ||
|
|
c21e48450c | ||
|
|
bb8c2ae5ce | ||
|
|
fe0d47c7a3 | ||
|
|
c5965fa4d9 | ||
|
|
db9163ec34 | ||
|
|
e7ca4fb87e | ||
|
|
0888e331b5 | ||
|
|
ccd6086787 | ||
|
|
e998ad968a | ||
|
|
081bb9a703 | ||
|
|
75f5fe22e8 | ||
|
|
74cf148384 | ||
|
|
1e76e733b7 | ||
|
|
9daecc59b4 | ||
|
|
58e000d842 | ||
|
|
f21f062ded | ||
|
|
6a88f0790e | ||
|
|
6f90ff6e93 | ||
|
|
67f77e16c3 | ||
|
|
af6be5858e | ||
|
|
0a3724ed2f | ||
|
|
613dbcb21b | ||
|
|
4ad3d11c7a | ||
|
|
3331280b34 | ||
|
|
a6cf5cc1e3 | ||
|
|
baa91282e3 | ||
|
|
7a6026d3e8 | ||
|
|
8d874cdc36 | ||
|
|
a49b892708 | ||
|
|
d127db4d99 | ||
|
|
0a630738f1 | ||
|
|
d97dea2c41 | ||
|
|
a640e32a19 | ||
|
|
d09c3568c5 | ||
|
|
3fc7fd99d6 | ||
|
|
29b3282c8b | ||
|
|
ac1ed139d7 | ||
|
|
b709e3fec0 | ||
|
|
7e96a58770 | ||
|
|
a93c6ea67b | ||
|
|
e8d35fadd4 | ||
|
|
7888452666 | ||
|
|
6c92920aa1 | ||
|
|
eb0b67740e | ||
|
|
3788a19730 | ||
|
|
0acf76780f | ||
|
|
8c8e6fd069 | ||
|
|
a5d0d33df3 | ||
|
|
9e4f8aac80 | ||
|
|
e296d5daac | ||
|
|
dbeef900cc | ||
|
|
f18eb21b82 | ||
|
|
0927a5d5e7 | ||
|
|
913afc51b7 | ||
|
|
fa3dbfcc6f | ||
|
|
46180c3f54 | ||
|
|
a3c9041c10 | ||
|
|
c70a613548 | ||
|
|
10c123f2aa | ||
|
|
3fe043651b | ||
|
|
d112a0af29 | ||
|
|
b0b78c296c | ||
|
|
8af92214d0 | ||
|
|
284539d762 | ||
|
|
2f2a6bc3b5 | ||
|
|
fae77be3db | ||
|
|
81357695c5 | ||
|
|
2fdc16f9f2 | ||
|
|
869805132e | ||
|
|
4c583212f5 | ||
|
|
e17965be53 | ||
|
|
99627c8e93 | ||
|
|
98acd687f7 | ||
|
|
e1efec7d6c | ||
|
|
8df5e5e738 | ||
|
|
8a291f9d56 | ||
|
|
62791fabfa | ||
|
|
b0ada2dee5 | ||
|
|
8f4df1aa8c | ||
|
|
4deadc9dce | ||
|
|
a4c399d250 | ||
|
|
0f5891f25d | ||
|
|
5fec9b8d19 | ||
|
|
75ed5afbac | ||
|
|
01c553bad9 | ||
|
|
58bf267fdd | ||
|
|
8e064659ad | ||
|
|
fe29eadc34 | ||
|
|
42d75e119a | ||
|
|
01a03d6d32 | ||
|
|
bcb4f17d9a | ||
|
|
a4376c77c3 | ||
|
|
c61d2fe5d1 | ||
|
|
5779274e5b | ||
|
|
40ce930e18 | ||
|
|
c459994290 | ||
|
|
9b1e141aa9 | ||
|
|
52ed9a8848 | ||
|
|
37e1582c4c | ||
|
|
9e1b000e7f | ||
|
|
fcb128c51b | ||
|
|
8740696e75 | ||
|
|
b394ca891f | ||
|
|
3a0fda7d18 | ||
|
|
886d43d37a | ||
|
|
eec4ae1e87 | ||
|
|
6943b6ddc3 | ||
|
|
494d50bd55 | ||
|
|
eebc82cc95 | ||
|
|
4b104bb574 | ||
|
|
3500a1e588 | ||
|
|
8d44b680bd | ||
|
|
43ce8c5e46 | ||
|
|
0365304ae0 | ||
|
|
85dc866425 | ||
|
|
06e665fca7 | ||
|
|
0b6bbd85bd | ||
|
|
bf20b041e2 | ||
|
|
4aa0e1d60b | ||
|
|
7037e9cad3 | ||
|
|
cd2e8a8223 | ||
|
|
c0c2cc5068 | ||
|
|
71e4e19191 | ||
|
|
6014f3fb43 | ||
|
|
5302f703c0 | ||
|
|
cd011e6385 | ||
|
|
067dfa35c6 | ||
|
|
2ad9c87dda | ||
|
|
0224741105 | ||
|
|
134b9ad96e | ||
|
|
1170b048e8 | ||
|
|
eb8733f0f4 | ||
|
|
55acb940a8 | ||
|
|
0d691403de | ||
|
|
9b2b75a51d | ||
|
|
25da273ea0 | ||
|
|
dbcb82075f | ||
|
|
2f82cfe40f | ||
|
|
df30e22427 | ||
|
|
ec207e67a3 | ||
|
|
9df23cab62 | ||
|
|
db3d684ee0 | ||
|
|
c6ab725584 | ||
|
|
40cc3340b1 | ||
|
|
25e020f5c9 | ||
|
|
bbb4681b32 | ||
|
|
57ce18d70d | ||
|
|
7acea3ed09 | ||
|
|
b370d8ef31 | ||
|
|
c57ea0ec67 | ||
|
|
6a13cc2ab6 | ||
|
|
a4382ce3b3 | ||
|
|
df101ead91 | ||
|
|
a426b3bae4 | ||
|
|
7c9b38ba04 | ||
|
|
f92bd81190 | ||
|
|
972031cf06 | ||
|
|
fdc0ee18f1 | ||
|
|
07dafaf299 | ||
|
|
c5952c3308 | ||
|
|
904796cf24 | ||
|
|
bcff39661c | ||
|
|
8c7160079e | ||
|
|
fa8edd0f69 | ||
|
|
e2b251c145 | ||
|
|
21fdd7028f | ||
|
|
686b7f66ac | ||
|
|
e6501bb1ce | ||
|
|
53c26a5724 | ||
|
|
3605614ee7 | ||
|
|
8bf1d3ea84 | ||
|
|
51fd6327fe | ||
|
|
b81c0e30c1 | ||
|
|
640fd9f454 | ||
|
|
ab90aec001 | ||
|
|
1749c293a6 | ||
|
|
9b8d93bef2 | ||
|
|
85f14673f0 | ||
|
|
e17f932aff | ||
|
|
2a4792e762 | ||
|
|
7a0ca15df8 | ||
|
|
e523acc164 | ||
|
|
f1719b5580 | ||
|
|
4654d24f6f | ||
|
|
dd15ac6146 | ||
|
|
f5984e7523 | ||
|
|
f85902b0ce | ||
|
|
b6ef6cf1be | ||
|
|
e8115658e0 | ||
|
|
36228c4755 | ||
|
|
44a617a40d | ||
|
|
e108ddfd56 | ||
|
|
918d3914ba | ||
|
|
21aa07b9cc | ||
|
|
ec06c8788d | ||
|
|
96e85b1db5 | ||
|
|
afa806da18 | ||
|
|
7eaff76cec | ||
|
|
b0469254bc | ||
|
|
2228589e16 | ||
|
|
4d8480e1a1 | ||
|
|
4320cc78d9 | ||
|
|
d9d9678a7e | ||
|
|
d55a0bfec6 | ||
|
|
bee0df825e | ||
|
|
d00af63a61 | ||
|
|
6985075c5b | ||
|
|
3b1017df51 | ||
|
|
f5b81d2ffc | ||
|
|
eb9cfe0ecb | ||
|
|
1e8805d43d | ||
|
|
e8f089dfa4 | ||
|
|
84e929ea24 | ||
|
|
abec603e73 | ||
|
|
0ed19d4826 | ||
|
|
90d5654db9 | ||
|
|
ab21af6b08 | ||
|
|
b747c13ef4 | ||
|
|
6a12aca495 | ||
|
|
6ec904074b | ||
|
|
7133d6b225 | ||
|
|
d486db6459 | ||
|
|
fe777b8801 | ||
|
|
49c4b09db6 | ||
|
|
174d23e22f | ||
|
|
7c063b2933 | ||
|
|
e1c28a5f7c | ||
|
|
417a6d7c30 | ||
|
|
261cc19c59 | ||
|
|
9933cab59f | ||
|
|
5436e422b9 | ||
|
|
ca903faa56 | ||
|
|
fcf6f0a3a5 | ||
|
|
3cda90e3a1 | ||
|
|
e8b2a9fca0 | ||
|
|
36740ffdd8 | ||
|
|
4d67159ea2 | ||
|
|
6fef33cdb3 | ||
|
|
684cd37f8d | ||
|
|
b585d9f3d9 | ||
|
|
5add7a5062 | ||
|
|
21c0bf795a | ||
|
|
c4fea8ad24 | ||
|
|
a6483e79b2 | ||
|
|
27e99ca713 | ||
|
|
fff0efdb27 | ||
|
|
6ffb20a7f5 | ||
|
|
06517e623f | ||
|
|
8994ab9f98 | ||
|
|
ea0242feda | ||
|
|
56a452875e | ||
|
|
600f0f20bd | ||
|
|
05b3c9053e | ||
|
|
dfb102f68d | ||
|
|
d9fa43f1d7 | ||
|
|
db29f570bd | ||
|
|
cc390f11ee | ||
|
|
1b3e206f34 | ||
|
|
4df1607ec4 | ||
|
|
a62db72e02 | ||
|
|
1c09ef14a5 | ||
|
|
25b008ba3e | ||
|
|
28b325805b | ||
|
|
6d1584844e | ||
|
|
6fdd4945c1 | ||
|
|
cbd1bf2c37 | ||
|
|
23b98e2ca5 | ||
|
|
a0ec8bec8a | ||
|
|
36c362cbd2 | ||
|
|
84fde32616 | ||
|
|
f9c415fc41 | ||
|
|
4c71ec4770 | ||
|
|
3ab5157a49 | ||
|
|
34e349e323 | ||
|
|
20e5a7e042 | ||
|
|
76d9b8bac0 | ||
|
|
213161b7cd | ||
|
|
142c63ab0e | ||
|
|
dbcb196f4e | ||
|
|
5552ed6cf1 | ||
|
|
44941e571f | ||
|
|
876d6e2499 | ||
|
|
9dc9b42475 | ||
|
|
1e4b48c548 | ||
|
|
ce277ebbf5 | ||
|
|
feb0e479fa | ||
|
|
036c4004f7 | ||
|
|
858b3024ff | ||
|
|
cc267055e1 | ||
|
|
24967b543a | ||
|
|
ea4a4a60f1 | ||
|
|
a5223279ac | ||
|
|
265ae16160 | ||
|
|
9e34dde632 | ||
|
|
bfe5f7e63c | ||
|
|
56f9edc572 | ||
|
|
6595557c34 | ||
|
|
e1a79c4112 | ||
|
|
51b646efcf | ||
|
|
c729849843 | ||
|
|
795514900d | ||
|
|
c0563be36e | ||
|
|
462f8dce30 | ||
|
|
1e392e4437 | ||
|
|
b2a0485139 | ||
|
|
d4cb739b8b | ||
|
|
f16071f083 | ||
|
|
a1505e9bed | ||
|
|
390e47a8c6 | ||
|
|
8e48312b1f | ||
|
|
4c4eb9a94e | ||
|
|
b8e0f9cdfb | ||
|
|
0ba7bae794 | ||
|
|
c2357fdac6 | ||
|
|
52aa5a52e9 | ||
|
|
2f9ef86e97 | ||
|
|
fbe4cdff23 | ||
|
|
a3231aa723 | ||
|
|
ce75a66e7c | ||
|
|
524fd5e9c0 | ||
|
|
0fa25acda8 | ||
|
|
1631d3cf01 | ||
|
|
55812a7a8d | ||
|
|
e342698d8e | ||
|
|
3ed1f64f2e | ||
|
|
2aff31c07a | ||
|
|
575a874832 | ||
|
|
d61e0cb7bf | ||
|
|
07b81cfdc9 | ||
|
|
d7fed95390 | ||
|
|
c72908e377 | ||
|
|
ea376e858c | ||
|
|
877180829c | ||
|
|
2b1499a087 | ||
|
|
7934814077 | ||
|
|
4a32a9e066 | ||
|
|
ff35dacf4c | ||
|
|
6f32d59997 | ||
|
|
f02423074c | ||
|
|
38d51783ae | ||
|
|
af5397d678 | ||
|
|
9985688b5b | ||
|
|
d27766aff0 | ||
|
|
cfeca9b9ff | ||
|
|
716bba53df | ||
|
|
8965b0be21 | ||
|
|
0c3d7c6ed1 | ||
|
|
2131ef0560 | ||
|
|
6745a33d53 | ||
|
|
b2e1870a14 | ||
|
|
6e52c091f3 | ||
|
|
1b5b8fce54 | ||
|
|
b1e3cdc666 | ||
|
|
94a1cd6c93 | ||
|
|
fcdfcae427 | ||
|
|
9d733e50f9 | ||
|
|
3c37bf9ca4 | ||
|
|
42f708bbb6 | ||
|
|
86a7e93a48 | ||
|
|
72a68e9a0f | ||
|
|
ccd34ab03a | ||
|
|
76f23396ea | ||
|
|
51bc06a68a | ||
|
|
8b20a4b066 | ||
|
|
8fea099d99 | ||
|
|
550e234a37 | ||
|
|
3b4e65d8a9 | ||
|
|
4b397fc2cc | ||
|
|
90f76fa28c | ||
|
|
f05444dc94 | ||
|
|
28b1f3ab03 | ||
|
|
36e5d4770b | ||
|
|
95e392e206 | ||
|
|
f23e5875d5 | ||
|
|
8d83414d09 | ||
|
|
1c405f8a2c | ||
|
|
58d1a3b093 | ||
|
|
71563cc6c6 | ||
|
|
f3fa3a34bd | ||
|
|
5ed56eb876 | ||
|
|
790a010615 | ||
|
|
a5033afaf8 | ||
|
|
ba7fdb8ceb | ||
|
|
8be9800567 | ||
|
|
c4eabc3c52 | ||
|
|
a0e95abebe | ||
|
|
aa3ce35683 | ||
|
|
19a0407560 | ||
|
|
6ef02a67db | ||
|
|
ca65f0fd8e | ||
|
|
87ca2bc42e | ||
|
|
aa233a82a5 | ||
|
|
aaa8e98bb0 | ||
|
|
0d0d281d0c | ||
|
|
c4bbcd322b | ||
|
|
7aea1b1235 | ||
|
|
41c16436bf | ||
|
|
dc75ce6811 | ||
|
|
4c8e851b46 | ||
|
|
ba22973919 | ||
|
|
f5f3d2221d | ||
|
|
2bbb229c91 | ||
|
|
8047141981 | ||
|
|
c2a43157d2 | ||
|
|
738b30a743 | ||
|
|
6e6ffe13f8 | ||
|
|
eb96d127b0 | ||
|
|
aeaa3c5d66 | ||
|
|
2e0ef11b0f | ||
|
|
1b770e8638 | ||
|
|
60421c33f4 | ||
|
|
872c660cb3 | ||
|
|
83a00843a0 | ||
|
|
300c4b8afb | ||
|
|
96092ef2d3 | ||
|
|
d9002ad87d | ||
|
|
36a8811cc0 | ||
|
|
b82d4f3af8 | ||
|
|
6aab2b22a1 | ||
|
|
6c429059e0 | ||
|
|
2b18744cc2 | ||
|
|
4c1ea0a602 | ||
|
|
9415812d85 | ||
|
|
d3c728557e | ||
|
|
6558c52849 | ||
|
|
eaaffd2706 | ||
|
|
86a63e7e2f | ||
|
|
9c7e6711c6 | ||
|
|
adcbdddc12 | ||
|
|
7e3724b5f3 | ||
|
|
dd910dcb85 | ||
|
|
bf40951a4f | ||
|
|
97955dbab8 | ||
|
|
4531dc2af1 | ||
|
|
2c8f56dd84 | ||
|
|
ec31750330 | ||
|
|
111364d880 | ||
|
|
92123cdc2c | ||
|
|
76ec2f10c6 | ||
|
|
a34d056de2 | ||
|
|
58b17f08e0 | ||
|
|
9d37ee4709 | ||
|
|
991c36d649 | ||
|
|
f6f68573b6 | ||
|
|
99db5cca38 | ||
|
|
d124e1ccbc | ||
|
|
73131735a2 | ||
|
|
96f5a23387 | ||
|
|
28d0d218ff | ||
|
|
d99f4c8164 | ||
|
|
e9ca9d41d1 | ||
|
|
b488067f82 | ||
|
|
b280ab555c | ||
|
|
41c107d4f7 | ||
|
|
86d4429197 | ||
|
|
ddd62e25df | ||
|
|
43ec8805b1 | ||
|
|
482da7288f | ||
|
|
547bcc7b03 | ||
|
|
5b7a58c8bb | ||
|
|
b10c91cf11 | ||
|
|
2d9a3be88f | ||
|
|
936900d4d8 | ||
|
|
e2eebc69dd | ||
|
|
dc4562cbfc | ||
|
|
7382a15b89 | ||
|
|
0325f94de1 | ||
|
|
ce53d34b4d | ||
|
|
26383d5c22 | ||
|
|
76e3da15e3 | ||
|
|
a9be080ebc | ||
|
|
7b5f8d00a0 | ||
|
|
76546d89f1 | ||
|
|
004aea23c8 | ||
|
|
3045ff7788 | ||
|
|
fed03193e2 | ||
|
|
c3d9c27091 | ||
|
|
240227de79 | ||
|
|
be2be5c831 | ||
|
|
2ae0a52928 | ||
|
|
d325b6b85c | ||
|
|
b612cfa38b | ||
|
|
0f06620d40 | ||
|
|
fbc5dbcfd4 | ||
|
|
297572dc03 | ||
|
|
8832d54b53 | ||
|
|
7c09b0bcba | ||
|
|
56ac17f085 | ||
|
|
4196c23d44 | ||
|
|
7ba5718be6 | ||
|
|
c1163ce7e5 | ||
|
|
da187eaaf9 | ||
|
|
de0268ce86 | ||
|
|
108923bdaa | ||
|
|
44793f7a21 | ||
|
|
7cb1805272 | ||
|
|
d5c528b7c7 | ||
|
|
742cb712d8 | ||
|
|
5d6008eed2 | ||
|
|
1a62a25d36 | ||
|
|
fd1c5d826c | ||
|
|
58be7f4861 | ||
|
|
4031b00915 | ||
|
|
6345d57512 | ||
|
|
159e577543 | ||
|
|
b2e05d0683 | ||
|
|
274150af27 | ||
|
|
ae27a09ffe | ||
|
|
cd33f589dc | ||
|
|
9ee736fe27 | ||
|
|
ced1058b31 | ||
|
|
aae83220f1 | ||
|
|
f3f44bffcb | ||
|
|
2d3e911efa | ||
|
|
56236f56a8 | ||
|
|
df5a08517a | ||
|
|
07c62112b8 | ||
|
|
f23e4963bf | ||
|
|
95279f7084 | ||
|
|
1014558c91 | ||
|
|
6515062a3a | ||
|
|
8153e26b6d | ||
|
|
79fd33d49a | ||
|
|
cdb662d4b2 | ||
|
|
a27fa7b5df | ||
|
|
cdeed107c5 | ||
|
|
be92f7e78c | ||
|
|
76f9de4cfb | ||
|
|
cd6d2cbf5e | ||
|
|
deaca0189f | ||
|
|
7d54ee286d | ||
|
|
dddfc7a8ad | ||
|
|
673bfb0dee | ||
|
|
b9e8c5a38c | ||
|
|
a2a4ca20e4 | ||
|
|
12075459d2 | ||
|
|
f3770f3106 | ||
|
|
90fbf1770f | ||
|
|
bde94ab37f | ||
|
|
6d25e1777e | ||
|
|
7ce26ca8e5 | ||
|
|
367fcce634 | ||
|
|
9b3a44b339 | ||
|
|
6384191102 | ||
|
|
5d953f915a | ||
|
|
dd2cb92685 | ||
|
|
b2f08c3ff8 | ||
|
|
75a2460649 | ||
|
|
01493d4e3a | ||
|
|
35970f61dc | ||
|
|
2169b72c94 | ||
|
|
0cb56b3cfa | ||
|
|
81b06d68f1 | ||
|
|
2e246341d1 | ||
|
|
9513300835 | ||
|
|
f7caf0db07 | ||
|
|
f7c1b290fd | ||
|
|
e3ac835cc3 | ||
|
|
23386f6129 | ||
|
|
3ccc58a9fc | ||
|
|
acd5dd0794 | ||
|
|
2c0867619c | ||
|
|
67406b24ba | ||
|
|
a395701f29 | ||
|
|
ac12dff1af | ||
|
|
33923464ae | ||
|
|
55a3114ec9 | ||
|
|
ee125975cf | ||
|
|
23b0aabb35 | ||
|
|
095fd9fba4 | ||
|
|
674344b3c1 | ||
|
|
4fc964d293 | ||
|
|
516267d869 | ||
|
|
ab60229311 | ||
|
|
1482fb81fd | ||
|
|
051cdd4560 |
@@ -1,2 +1,12 @@
|
||||
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||
* text=auto
|
||||
|
||||
# Shell scripts are run by Git Bash on Windows CI, which cannot read a script
|
||||
# with CRLF line endings: it fails on the first line. Windows checkouts default
|
||||
# to core.autocrlf=true, so keep these LF whatever the platform.
|
||||
*.sh text eol=lf
|
||||
|
||||
# Batch files are read by cmd.exe, which tracks a byte offset into the file to
|
||||
# resume after `call :label`. With LF endings that offset can land wrong and the
|
||||
# label lookup fails, so keep these CRLF whatever the platform.
|
||||
*.bat text eol=crlf
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: 🐞 Bug Report
|
||||
description: File a bug report
|
||||
description: Something behaves incorrectly while Orca Slicer keeps running
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
@@ -10,6 +10,8 @@ body:
|
||||
Please note that this is not the place to make feature requests or ask for help.
|
||||
For this, please use the [Feature request](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=feature_request.yml) issue type or you can discuss your idea on our [Discord server](https://discord.gg/P4VE9UY9gJ) with others.
|
||||
|
||||
If Orca Slicer closes on its own, freezes or stops responding, please use the [Crash report](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=crash_report.yml) form instead. It asks for the logs a crash needs.
|
||||
|
||||
Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
@@ -47,7 +49,7 @@ body:
|
||||
id: os_type
|
||||
attributes:
|
||||
label: "Operating System (OS)"
|
||||
description: "What OSes are you are experiencing issues on?"
|
||||
description: "What OSes are you experiencing issues on?"
|
||||
multiple: true
|
||||
options:
|
||||
- Linux
|
||||
@@ -86,7 +88,7 @@ body:
|
||||
id: reproduce_steps
|
||||
attributes:
|
||||
label: How to reproduce
|
||||
description: Please described the detailed steps to reproduce this issue
|
||||
description: Please describe the detailed steps to reproduce this issue
|
||||
placeholder: |
|
||||
1. Go to '...'
|
||||
2. Click on '...'
|
||||
@@ -108,28 +110,23 @@ body:
|
||||
description: What should happen after the above steps?
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
id: file_required
|
||||
attributes:
|
||||
value: |
|
||||
Please be sure to add the following files:
|
||||
* Please upload a ZIP archive containing the **project file** used when the problem arise. Please export it just before or after the problem occurs. Even if you did nothing and/or there is no object, export it! (We need the configurations in project file).
|
||||
You can export the project file from the application menu in `File`->`Save project as...`, then zip it
|
||||
* A **log file** for crashes and similar issues.
|
||||
You can find your log file here:
|
||||
Windows: `%APPDATA%\OrcaSlicer\log` or usually `C:\Users\<your username>\AppData\Roaming\OrcaSlicer\log`
|
||||
MacOS: `$HOME/Library/Application Support/OrcaSlicer/log`
|
||||
Linux: `$HOME/.config/OrcaSlicer/log`
|
||||
If Orca Slicer still starts, you can also reach this directory from the application menu in `Help` -> `Show Configuration Folder`
|
||||
You can zip the log directory, or just select the newest logs when this issue happens, and zip them
|
||||
- type: textarea
|
||||
id: file_uploads
|
||||
attributes:
|
||||
label: Project file & Debug log uploads
|
||||
description: Drop the project file and debug log here
|
||||
description: |
|
||||
Attach the files with the **Paste, drop, or click to add files** control directly underneath this box. Zip anything that is not a `.log`, `.txt` or image, since GitHub rejects other file types, and keep each file under 25 MB.
|
||||
|
||||
* The **project file** used when the problem happened, zipped. Export it just before or after the problem occurs. Even if you did nothing and there is no object on the plate, export it, since we need the configuration it carries. `File` -> `Save project as...`
|
||||
* The **log folder**, zipped. `Help` -> `Show Configuration Folder` opens it, or find it at:
|
||||
* Windows: `%APPDATA%\OrcaSlicer\log`, usually `C:\Users\<you>\AppData\Roaming\OrcaSlicer\log`
|
||||
* macOS: `$HOME/Library/Application Support/OrcaSlicer/log`
|
||||
* Linux: `$HOME/.config/OrcaSlicer/log`
|
||||
* Flatpak: `$HOME/.var/app/com.orcaslicer.OrcaSlicer/config/OrcaSlicer/log`
|
||||
* If the zip comes out over 25 MB, attach the newest logs from that folder on their own instead.
|
||||
placeholder: |
|
||||
Project File: `File` -> `Save project as...` then zip it & drop it here
|
||||
Log File: `Help` -> `Show Configuration Folder`, then zip the log directory, or just select the newest logs in `log` when this issue happens and zip them, then drop the zip file here
|
||||
Zipped project file
|
||||
Zipped log folder
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
@@ -144,7 +141,5 @@ body:
|
||||
label: Anything else?
|
||||
description: |
|
||||
Screenshots? References? Anything that will give us more context about the issue you are encountering!
|
||||
|
||||
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
name: 💥 Crash Report
|
||||
description: Orca Slicer closes on its own, freezes or stops responding
|
||||
labels: ["crash"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
**Thank you for taking the time to report a crash.**
|
||||
|
||||
Use this form when Orca Slicer closes on its own, freezes, or stops responding.
|
||||
If the application stays open and only produces a wrong result, please use the [Bug report](https://github.com/OrcaSlicer/OrcaSlicer/issues/new?assignees=&labels=&projects=&template=bug_report.yml) form instead.
|
||||
A printer whose toolhead collides with the print is also a bug report rather than a crash, since the application itself did not stop.
|
||||
|
||||
Before filing, please check if the issue already exists (either open or closed) by using the search bar on the issues page. If it does, comment there. Even if it's closed, we can reopen it based on your comment.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is this crash reproducible in the latest nightly build?
|
||||
description: >
|
||||
Please verify this crash still happens in the latest nightly build first. It may already be fixed there:
|
||||
[Nightly builds](https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/nightly-builds).
|
||||
options:
|
||||
- label: I have checked the latest nightly build and the crash is still reproducible
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this crash?
|
||||
description: Please search to see if an issue already exists for the crash you encountered.
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: OrcaSlicer Version
|
||||
description: Which version of Orca Slicer are you running? You can see the full version in `Help` -> `About Orca Slicer`.
|
||||
placeholder: e.g. 2.5.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: working_version
|
||||
attributes:
|
||||
label: Regression compared to a previous version
|
||||
description: Did it work in a previous version?
|
||||
placeholder: e.g. 2.3.2
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: os_type
|
||||
attributes:
|
||||
label: "Operating System (OS)"
|
||||
description: "What OSes are you seeing the crash on?"
|
||||
multiple: true
|
||||
options:
|
||||
- Linux
|
||||
- macOS
|
||||
- Windows
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: os_version
|
||||
attributes:
|
||||
label: "OS Version"
|
||||
description: "What OS version does this relate to?"
|
||||
placeholder: "i.e. OS: Windows 7/8/10/11 ..., Ubuntu 22.04/Fedora 36 ..., macOS 10.15/11.1/12.3 ..."
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: printer
|
||||
attributes:
|
||||
label: Printer
|
||||
description: Which printer was selected
|
||||
placeholder: Voron 2.4/VzBot/Prusa MK4/Bambu Lab X1 series/Bambu Lab P1P/...
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: crash_moment
|
||||
attributes:
|
||||
label: When does the crash happen?
|
||||
description: Pick the point where Orca Slicer stops working.
|
||||
options:
|
||||
- Not sure
|
||||
- On startup, before the main window appears
|
||||
- When opening or importing a project or model
|
||||
- While changing printer, filament or process settings
|
||||
- While slicing
|
||||
- In the 3D view, Preview or Assembly view
|
||||
- When exporting G-code or sending a print to the printer
|
||||
- On the Device tab, or connecting to a printer (camera, sync, login)
|
||||
- While using a specific tool, dialog or calibration
|
||||
- After resuming from sleep or changing monitors
|
||||
- When closing the application
|
||||
- No clear pattern
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: crash_frequency
|
||||
attributes:
|
||||
label: How often does it happen?
|
||||
options:
|
||||
- Not sure
|
||||
- Every time
|
||||
- Often, but not every time
|
||||
- Rarely
|
||||
- It only happened once
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: fresh_config
|
||||
attributes:
|
||||
label: Does it still crash with a fresh configuration?
|
||||
description: >
|
||||
Close Orca Slicer and rename your configuration folder (`%APPDATA%\OrcaSlicer` on Windows,
|
||||
`$HOME/Library/Application Support/OrcaSlicer` on macOS, `$HOME/.config/OrcaSlicer` on Linux),
|
||||
then start it again. Renaming keeps your settings, so you can put the folder back afterwards.
|
||||
options:
|
||||
- I have not tried this
|
||||
- Yes, it still crashes
|
||||
- No, the crash goes away
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reproduce_steps
|
||||
attributes:
|
||||
label: How to reproduce
|
||||
description: Please describe the detailed steps that lead to the crash.
|
||||
placeholder: |
|
||||
1. Go to '...'
|
||||
2. Click on '...'
|
||||
3. Scroll down to '...'
|
||||
4. Orca Slicer closes
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: system_info
|
||||
attributes:
|
||||
label: Additional system information
|
||||
description: >
|
||||
Display card and driver version are worth adding for crashes on startup or in the 3D view.
|
||||
CPU and memory are worth adding for crashes while slicing.
|
||||
placeholder: |
|
||||
CPU: 11th gen Intel r core tm i7-1185g7/AMD Ryzen 7 6800h/...
|
||||
Memory: 32/16 GB...
|
||||
Display Card: NVIDIA Quadro P400/...
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: file_uploads
|
||||
attributes:
|
||||
label: Project file, logs and crash report uploads
|
||||
description: |
|
||||
A crash report without logs usually cannot be acted on. Attach the files with the **Paste, drop, or click to add files** control directly underneath this box. Zip anything that is not a `.log`, `.txt` or image, since GitHub rejects other file types, and keep each file under 25 MB.
|
||||
|
||||
* The **project file** used when the crash happened, zipped. Export it just before or after the crash, even if the plate is empty, since we need the configuration it carries. `File` -> `Save project as...`
|
||||
* The whole **log folder**, zipped rather than single files picked out of it. `Help` -> `Show Configuration Folder` opens it, or find it at:
|
||||
* Windows: `%APPDATA%\OrcaSlicer\log`, usually `C:\Users\<you>\AppData\Roaming\OrcaSlicer\log`
|
||||
* macOS: `$HOME/Library/Application Support/OrcaSlicer/log`
|
||||
* Linux: `$HOME/.config/OrcaSlicer/log`
|
||||
* Flatpak: `$HOME/.var/app/com.orcaslicer.OrcaSlicer/config/OrcaSlicer/log`
|
||||
* On Windows the crash itself is written to a separate `crash_*.log` in there, and that is the file we need most. If the zip comes out over 25 MB GitHub will refuse it, so attach the newest log and any `crash_*.log` on their own instead.
|
||||
* The **operating system crash report**, on macOS and Linux, where Orca Slicer cannot write its own crash log. It is often the only record of where it died:
|
||||
* macOS: Console.app -> Crash Reports, or `$HOME/Library/Logs/DiagnosticReports/`. The file starts with `OrcaSlicer` and ends in `.ips`. Zip it before attaching, GitHub does not accept `.ips` files.
|
||||
* Linux: run `orca-slicer` from a terminal (Flatpak: `flatpak run com.orcaslicer.OrcaSlicer`) and paste everything it prints when it dies. On systemd systems `coredumpctl info orca-slicer` gives a backtrace.
|
||||
placeholder: |
|
||||
Zipped project file
|
||||
Zipped log folder
|
||||
Zipped macOS .ips crash report, or the terminal output on Linux
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: file_checklist
|
||||
attributes:
|
||||
label: Checklist of files to include
|
||||
options:
|
||||
- label: Log folder
|
||||
- label: Project file
|
||||
- label: Operating system crash report (macOS and Linux)
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Anything else?
|
||||
description: |
|
||||
Screenshots? References? Anything that will give us more context about the crash you are encountering!
|
||||
validations:
|
||||
required: false
|
||||
+131
-10
@@ -14,6 +14,7 @@ on:
|
||||
- 'localization/**'
|
||||
- 'resources/**'
|
||||
- ".github/workflows/build_*.yml"
|
||||
- 'scripts/build_preset_cache.*'
|
||||
- 'scripts/flatpak/**'
|
||||
- 'scripts/msix/**'
|
||||
- 'tests/**'
|
||||
@@ -32,7 +33,10 @@ on:
|
||||
- 'build_linux.sh'
|
||||
- 'build_release_vs.bat'
|
||||
- 'build_release_vs2022.bat'
|
||||
- 'build_win.bat'
|
||||
- 'scripts/test_build_win.ps1'
|
||||
- 'build_release_macos.sh'
|
||||
- 'scripts/build_preset_cache.*'
|
||||
- 'scripts/flatpak/**'
|
||||
- 'scripts/msix/**'
|
||||
- 'tests/**'
|
||||
@@ -54,6 +58,22 @@ concurrency:
|
||||
|
||||
|
||||
jobs:
|
||||
# build_win.bat ships a test suite. Run it before the Windows builds.
|
||||
check_build_script:
|
||||
name: Windows build script tests
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
lfs: 'false'
|
||||
|
||||
# Windows PowerShell rather than pwsh: the suite drives build_win.bat
|
||||
# through cmd, and the two differ in how they quote native arguments.
|
||||
- name: Run the build script test suite
|
||||
shell: powershell
|
||||
run: .\scripts\test_build_win.ps1
|
||||
|
||||
build_linux:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -79,14 +99,16 @@ jobs:
|
||||
# SELF_HOSTED skips arm64 (the self-hosted Windows server is x64-only).
|
||||
matrix:
|
||||
include: ${{ fromJSON(vars.SELF_HOSTED
|
||||
&& '[{"arch":"x64","os":"orca-win-server"}]'
|
||||
|| '[{"arch":"x64","os":"windows-latest"},{"arch":"arm64","os":"windows-11-arm"}]') }}
|
||||
&& '[{"arch":"x64","os":"orca-win-server","compiler":"clang"}]'
|
||||
|| '[{"arch":"x64","os":"windows-latest","compiler":"clang"},{"arch":"arm64","os":"windows-11-vs2026-arm","compiler":"clang"}]') }}
|
||||
needs: check_build_script
|
||||
# Don't run scheduled builds on forks:
|
||||
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||
if: ${{ !cancelled() && needs.check_build_script.result == 'success' && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
|
||||
uses: ./.github/workflows/build_check_cache.yml
|
||||
with:
|
||||
os: ${{ matrix.os }}
|
||||
arch: ${{ matrix.arch }}
|
||||
compiler: ${{ matrix.compiler }}
|
||||
build-deps-only: ${{ inputs.build-deps-only || false }}
|
||||
force-build: ${{ github.event_name == 'schedule' }}
|
||||
secrets: inherit
|
||||
@@ -147,7 +169,7 @@ jobs:
|
||||
if: ${{ !cancelled() && success() && !vars.SELF_HOSTED }}
|
||||
uses: ./.github/workflows/unit_tests.yml
|
||||
with:
|
||||
os: windows-11-arm
|
||||
os: windows-11-vs2026-arm
|
||||
artifact: ${{ github.sha }}-tests-windows-arm64
|
||||
test-dir: build-arm64/tests
|
||||
unit_tests_macos_arm64:
|
||||
@@ -257,21 +279,46 @@ jobs:
|
||||
echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||
echo "git_commit_hash=$git_commit_hash" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
# Manage flatpak-builder cache externally so PRs restore but never upload
|
||||
- name: Compute the flatpak-builder cache key
|
||||
id: fp_cache_key
|
||||
run: echo "key=flatpak-builder-${{ matrix.variant.arch }}-${{ hashFiles('deps/**', 'scripts/flatpak/com.orcaslicer.OrcaSlicer.yml', 'scripts/flatpak/make_deps_tar.sh') }}" >> "$GITHUB_OUTPUT"
|
||||
shell: bash
|
||||
# Manage flatpak-builder cache externally so PRs restore but never upload.
|
||||
# The compiler cache under it is keyed per run below, so it is left out.
|
||||
- name: Restore flatpak-builder cache
|
||||
if: github.event_name == 'pull_request'
|
||||
uses: actions/cache/restore@v6
|
||||
with:
|
||||
path: .flatpak-builder
|
||||
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.event.pull_request.base.sha }}
|
||||
path: |
|
||||
.flatpak-builder/*
|
||||
!.flatpak-builder/ccache
|
||||
key: ${{ steps.fp_cache_key.outputs.key }}
|
||||
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
|
||||
- name: Save/restore flatpak-builder cache
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: .flatpak-builder
|
||||
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.sha }}
|
||||
path: |
|
||||
.flatpak-builder/*
|
||||
!.flatpak-builder/ccache
|
||||
key: ${{ steps.fp_cache_key.outputs.key }}
|
||||
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
|
||||
# Compiler cache for the OrcaSlicer module, as in build_orca.yml. Pull
|
||||
# requests only restore it; every other run (main, release branches, the
|
||||
# nightly, a dispatch) saves it. orca_deps stays on the state cache above.
|
||||
- name: Name the compiler cache leg
|
||||
run: |
|
||||
leg="Flatpak-${{ matrix.variant.arch }}"
|
||||
echo "CCACHE_LEG=$leg" >> "$GITHUB_ENV"
|
||||
echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV"
|
||||
shell: bash
|
||||
- name: Restore compiler cache
|
||||
id: ccache_restore
|
||||
uses: actions/cache/restore@v6
|
||||
with:
|
||||
path: .flatpak-builder/ccache
|
||||
key: ${{ env.CCACHE_ENTRY }}
|
||||
restore-keys: ccache-${{ env.CCACHE_LEG }}-
|
||||
- name: Disable debug info for faster CI builds
|
||||
run: |
|
||||
sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' \
|
||||
@@ -282,13 +329,87 @@ jobs:
|
||||
sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \
|
||||
scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
|
||||
shell: bash
|
||||
# flatpak-builder's --ccache only wraps cc and gcc, and the manifest builds
|
||||
# with clang, so CMake's launcher runs ccache instead; --ccache is still what
|
||||
# mounts the cache directory into the sandbox. The settings go into that
|
||||
# directory's own config file, which the sandbox reads too.
|
||||
- name: Enable compiler cache
|
||||
run: |
|
||||
printf ' %s\n' \
|
||||
'CMAKE_C_COMPILER_LAUNCHER: ccache' \
|
||||
'CMAKE_CXX_COMPILER_LAUNCHER: ccache' > "$RUNNER_TEMP/ccache-env.yml"
|
||||
sed -i "/^ git_commit_hash: /r $RUNNER_TEMP/ccache-env.yml" \
|
||||
scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
|
||||
grep -q '^ CMAKE_CXX_COMPILER_LAUNCHER: ccache$' scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
|
||||
mkdir -p .flatpak-builder/ccache
|
||||
export CCACHE_DIR=$PWD/.flatpak-builder/ccache
|
||||
ccache --set-config=max_size=3G
|
||||
# The compiler is reinstalled every run, so its mtime means nothing.
|
||||
ccache --set-config=compiler_check=content
|
||||
# Headers a fresh checkout has just written, the few files that use
|
||||
# __DATE__ or __TIME__, and the precompiled header, whose macros ccache
|
||||
# cannot see.
|
||||
ccache --set-config=sloppiness=pch_defines,time_macros,include_file_mtime,include_file_ctime
|
||||
# Hash the includes the compiler reports instead of preprocessing every
|
||||
# miss before compiling it.
|
||||
ccache --set-config=depend_mode=true
|
||||
# The restored directory carries the previous run's counters.
|
||||
ccache -z
|
||||
shell: bash
|
||||
- name: Check the manifest keeps orca_deps cacheable
|
||||
run: ./scripts/flatpak/check_manifest_cacheable.sh
|
||||
shell: bash
|
||||
- name: Pack deps/ for the Flatpak manifest
|
||||
run: ./scripts/flatpak/make_deps_tar.sh
|
||||
shell: bash
|
||||
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
||||
with:
|
||||
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||
manifest-path: scripts/flatpak/com.orcaslicer.OrcaSlicer.yml
|
||||
cache: false
|
||||
# cache only turns on flatpak-builder --ccache; the caching itself is above.
|
||||
cache: true
|
||||
restore-cache: false
|
||||
save-cache: false
|
||||
arch: ${{ matrix.variant.arch }}
|
||||
upload-artifact: false
|
||||
# The build has just touched everything it can use, so an object untouched
|
||||
# for a week is dead, usually orphaned by a flag change.
|
||||
- name: Compiler cache statistics
|
||||
if: always()
|
||||
run: |
|
||||
export CCACHE_DIR=$PWD/.flatpak-builder/ccache
|
||||
ccache --evict-older-than 7d
|
||||
ccache -s -v || ccache -s
|
||||
shell: bash
|
||||
# Save the new entry first, then drop the older ones for this leg on this
|
||||
# ref, so a failed save leaves the previous entry in place. A cancelled or
|
||||
# failed build saves too, since what it compiled is still valid; a restore
|
||||
# that did not finish does not, since the directory may be a truncated copy.
|
||||
- name: Save compiler cache
|
||||
id: ccache_save
|
||||
if: ${{ always() && steps.ccache_restore.outcome == 'success' && github.event_name != 'pull_request' }}
|
||||
uses: actions/cache/save@v6
|
||||
with:
|
||||
path: .flatpak-builder/ccache
|
||||
key: ${{ env.CCACHE_ENTRY }}
|
||||
- name: Drop older compiler cache entries
|
||||
if: ${{ always() && steps.ccache_save.outcome == 'success' }}
|
||||
# The container has no gh, so this is the list and delete over the REST API.
|
||||
# Older means a lower run id, so two runs finishing close together keep
|
||||
# the newer entry whichever of them cleans up last.
|
||||
continue-on-error: true
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
api="$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/caches"
|
||||
curl -sSf -H "Authorization: Bearer $GH_TOKEN" \
|
||||
"$api?ref=$GITHUB_REF&key=ccache-$CCACHE_LEG-&per_page=100" \
|
||||
| jq -r --arg prefix "ccache-$CCACHE_LEG-" --argjson run "$GITHUB_RUN_ID" \
|
||||
'.actions_caches[] | select((.key | ltrimstr($prefix) | split("-")[0] | tonumber?) < $run) | .id' \
|
||||
| while read -r id; do
|
||||
curl -sSf -X DELETE -H "Authorization: Bearer $GH_TOKEN" "$api/$id"
|
||||
done
|
||||
shell: bash
|
||||
- name: Upload artifacts Flatpak
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
|
||||
@@ -9,6 +9,10 @@ on:
|
||||
arch:
|
||||
required: false
|
||||
type: string
|
||||
compiler:
|
||||
required: false
|
||||
type: string
|
||||
default: msvc
|
||||
build-deps-only:
|
||||
required: false
|
||||
type: boolean
|
||||
@@ -33,10 +37,10 @@ jobs:
|
||||
- name: set outputs
|
||||
id: set_outputs
|
||||
env:
|
||||
# Keep macOS/Windows cache keys architecture-specific. amd64 Linux passes
|
||||
# no arch (key stays 'linux-clang', preserving the existing cache);
|
||||
# aarch64 gets its own 'linux-clang-aarch64' key.
|
||||
cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && format('windows-{0}', inputs.arch) || format('linux-clang{0}', inputs.arch && format('-{0}', inputs.arch) || '')) }}
|
||||
# Anything that changes how the tree is built belongs in the key, or a job
|
||||
# restores one it cannot use. Linux amd64 passes no arch deliberately, so
|
||||
# 'linux-clang' keeps the cache it already has.
|
||||
cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && format('windows-{0}-{1}', inputs.arch, inputs.compiler) || format('linux-clang{0}', inputs.arch && format('-{0}', inputs.arch) || '')) }}
|
||||
# ARM64 builds use the build-arm64 tree (see build_release_vs.bat); x64/other use build.
|
||||
dep-folder-name: ${{ runner.os == 'macOS' && format('/{0}', inputs.arch) || (runner.os == 'Windows' && inputs.arch == 'arm64') && '-arm64/OrcaSlicer_dep' || '/OrcaSlicer_dep' }}
|
||||
output-cmd: ${{ runner.os == 'Windows' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
|
||||
@@ -62,6 +66,7 @@ jobs:
|
||||
valid-cache: ${{ needs.check_cache.outputs.valid-cache == 'true' }}
|
||||
os: ${{ inputs.os }}
|
||||
arch: ${{ inputs.arch }}
|
||||
compiler: ${{ inputs.compiler }}
|
||||
build-deps-only: ${{ inputs.build-deps-only }}
|
||||
force-build: ${{ inputs.force-build }}
|
||||
secrets: inherit
|
||||
|
||||
@@ -16,6 +16,10 @@ on:
|
||||
arch:
|
||||
required: false
|
||||
type: string
|
||||
compiler:
|
||||
required: false
|
||||
type: string
|
||||
default: msvc
|
||||
build-deps-only:
|
||||
required: false
|
||||
type: boolean
|
||||
@@ -135,11 +139,22 @@ jobs:
|
||||
choco install strawberryperl
|
||||
}
|
||||
$arch = "${{ inputs.arch }}"
|
||||
# -l selects clang-cl and -x Ninja; together they build the deps with clang.
|
||||
$clang = "${{ inputs.compiler }}" -eq "clang"
|
||||
$flags = if ($clang) { "-l", "-x" } else { @() }
|
||||
if ($clang) {
|
||||
# OpenSSL builds with nmake, which needs a VC environment.
|
||||
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||
$vs = & $vswhere -latest -property installationPath
|
||||
$devArch = if ($arch -eq "arm64") { "arm64" } else { "amd64" }
|
||||
Import-Module "$vs\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
|
||||
Enter-VsDevShell -VsInstallPath $vs -SkipAutomaticLocation -DevCmdArguments "-arch=$devArch"
|
||||
}
|
||||
if ($arch -eq "arm64") {
|
||||
.\build_release_vs.bat deps arm64
|
||||
.\build_release_vs.bat deps arm64 @flags
|
||||
.\build_release_vs.bat pack arm64
|
||||
} else {
|
||||
.\build_release_vs.bat deps
|
||||
.\build_release_vs.bat deps @flags
|
||||
.\build_release_vs.bat pack
|
||||
}
|
||||
shell: pwsh
|
||||
@@ -149,9 +164,9 @@ jobs:
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
if [ -z "${{ vars.SELF_HOSTED }}" ]; then
|
||||
brew install automake texinfo libtool
|
||||
brew install automake texinfo libtool pkgconf yasm nasm
|
||||
fi
|
||||
./build_release_macos.sh -dx ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15
|
||||
./build_release_macos.sh -dx ${{ !vars.SELF_HOSTED && '-j 3' || '' }} -a ${{ inputs.arch }} -t 10.15
|
||||
(cd "${{ github.workspace }}/deps/build/${{ inputs.arch }}" && \
|
||||
find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +)
|
||||
|
||||
@@ -204,4 +219,5 @@ jobs:
|
||||
cache-path: ${{ inputs.cache-path }}
|
||||
os: ${{ inputs.os }}
|
||||
arch: ${{ inputs.arch }}
|
||||
compiler: ${{ inputs.compiler }}
|
||||
secrets: inherit
|
||||
|
||||
@@ -13,6 +13,10 @@ on:
|
||||
arch:
|
||||
required: false
|
||||
type: string
|
||||
compiler:
|
||||
required: false
|
||||
type: string
|
||||
default: msvc
|
||||
macos-combine-only:
|
||||
required: false
|
||||
type: boolean
|
||||
@@ -72,6 +76,60 @@ jobs:
|
||||
if (-not (Test-Path "$cmakeBin\cmake.exe")) { throw "cmake.exe not found at $cmakeBin" }
|
||||
Add-Content -Path $env:GITHUB_PATH -Value $cmakeBin
|
||||
|
||||
# Compiler cache. Pushes save it, so main keeps it warm; pull requests
|
||||
# restore it and discard what they compiled. Objects are keyed on the
|
||||
# preprocessed source, the compiler and the flags, so a leg only ever
|
||||
# hits its own entries. A failed install costs the caching, not the build.
|
||||
- name: Name the compiler cache leg
|
||||
if: ${{ !inputs.macos-combine-only }}
|
||||
shell: bash
|
||||
run: |
|
||||
leg="${{ runner.os }}-${{ inputs.arch || 'amd64' }}${{ runner.os == 'Windows' && format('-{0}', inputs.compiler) || '' }}"
|
||||
echo "CCACHE_LEG=$leg" >> "$GITHUB_ENV"
|
||||
echo "CCACHE_ENTRY=ccache-$leg-${{ github.run_id }}-${{ github.run_attempt }}" >> "$GITHUB_ENV"
|
||||
|
||||
# The action only installs and configures ccache. Restore and save go
|
||||
# through actions/cache with one path string, since the cache service
|
||||
# only matches entries saved under the identical path and the action
|
||||
# spells it differently on Windows.
|
||||
- name: Compiler cache
|
||||
id: ccache
|
||||
if: ${{ !inputs.macos-combine-only }}
|
||||
continue-on-error: true
|
||||
uses: hendrikmuhs/ccache-action@v1.2.24
|
||||
with:
|
||||
key: ${{ env.CCACHE_LEG }}
|
||||
max-size: 3G
|
||||
restore: false
|
||||
save: false
|
||||
# ccache -s runs as its own step; no summary table per job.
|
||||
job-summary: ''
|
||||
|
||||
- name: Restore compiler cache
|
||||
id: ccache_restore
|
||||
if: ${{ steps.ccache.outcome == 'success' }}
|
||||
uses: actions/cache/restore@v6
|
||||
with:
|
||||
path: ${{ github.workspace }}/.ccache
|
||||
key: ${{ env.CCACHE_ENTRY }}
|
||||
restore-keys: ccache-${{ env.CCACHE_LEG }}-
|
||||
|
||||
- name: Enable compiler cache
|
||||
if: ${{ steps.ccache.outcome == 'success' }}
|
||||
shell: bash
|
||||
run: |
|
||||
echo "CMAKE_C_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV"
|
||||
echo "CMAKE_CXX_COMPILER_LAUNCHER=ccache" >> "$GITHUB_ENV"
|
||||
# Headers a fresh checkout has just written, the few files that
|
||||
# use __DATE__ or __TIME__, and the precompiled header, whose
|
||||
# macros ccache cannot see.
|
||||
echo "CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime,include_file_ctime" >> "$GITHUB_ENV"
|
||||
# Hash the includes the compiler reports instead of preprocessing
|
||||
# every miss before compiling it.
|
||||
echo "CCACHE_DEPEND=1" >> "$GITHUB_ENV"
|
||||
# The restored directory carries the previous run's counters.
|
||||
ccache -z
|
||||
|
||||
- name: Get the version and date on Ubuntu and macOS
|
||||
if: runner.os != 'Windows'
|
||||
run: |
|
||||
@@ -145,7 +203,7 @@ jobs:
|
||||
env:
|
||||
ORCA_TESTS_BUILD_ONLY: ${{ inputs.arch == 'arm64' && '1' || '' }}
|
||||
run: |
|
||||
./build_release_macos.sh -s -n -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15 ${{ inputs.arch == 'arm64' && '-T' || '' }}
|
||||
./build_release_macos.sh -s -n -x ${{ !vars.SELF_HOSTED && '-j 3' || '' }} -a ${{ inputs.arch }} -t 10.15 ${{ inputs.arch == 'arm64' && '-T' || '' }}
|
||||
|
||||
- name: Pack unit tests mac
|
||||
if: runner.os == 'macOS' && !inputs.macos-combine-only && inputs.arch == 'arm64'
|
||||
@@ -162,6 +220,14 @@ jobs:
|
||||
retention-days: 5
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Build system preset cache (macOS)
|
||||
if: runner.os == 'macOS' && !inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
shell: bash
|
||||
# The bundle was already packed from resources/, so the caches have to be
|
||||
# installed into it here; the source tree keeps its JSONs for later jobs.
|
||||
run: ./scripts/build_preset_cache.sh -b build/${{ inputs.arch }} build/${{ inputs.arch }}/OrcaSlicer/OrcaSlicer.app/Contents/Resources/profiles
|
||||
|
||||
- name: Pack macOS app bundle ${{ inputs.arch }}
|
||||
if: runner.os == 'macOS' && !inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
@@ -196,7 +262,7 @@ jobs:
|
||||
if: runner.os == 'macOS' && inputs.macos-combine-only
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
./build_release_macos.sh -u -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a universal -t 10.15
|
||||
./build_release_macos.sh -u -x ${{ !vars.SELF_HOSTED && '-j 3' || '' }} -a universal -t 10.15
|
||||
|
||||
# Thanks to RaySajuuk, it's working now
|
||||
- name: Sign app and notary
|
||||
@@ -387,9 +453,27 @@ jobs:
|
||||
# "tests" builds the unit tests too; the unit_tests_windows_* jobs run them.
|
||||
run: |
|
||||
$arch = "${{ inputs.arch }}"
|
||||
if ($arch -eq "arm64") { .\build_release_vs.bat slicer arm64 tests } else { .\build_release_vs.bat slicer tests }
|
||||
# -l selects clang-cl and -x Ninja; together they build the slicer with clang.
|
||||
$clang = "${{ inputs.compiler }}" -eq "clang"
|
||||
$flags = if ($clang) { "-l", "-x" } else { @() }
|
||||
if ($clang) {
|
||||
# Build against the same VC toolchain and SDK as the dependencies.
|
||||
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||
$vs = & $vswhere -latest -property installationPath
|
||||
$devArch = if ($arch -eq "arm64") { "arm64" } else { "amd64" }
|
||||
Import-Module "$vs\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
|
||||
Enter-VsDevShell -VsInstallPath $vs -SkipAutomaticLocation -DevCmdArguments "-arch=$devArch"
|
||||
}
|
||||
if ($arch -eq "arm64") { .\build_release_vs.bat slicer arm64 @flags tests } else { .\build_release_vs.bat slicer @flags tests }
|
||||
shell: pwsh
|
||||
|
||||
- name: Build system preset cache (Windows)
|
||||
if: runner.os == 'Windows'
|
||||
shell: cmd
|
||||
# Shipped into both the already-installed tree (portable zip, MSIX) and
|
||||
# the checkout cpack re-installs from when it builds the NSIS installer.
|
||||
run: scripts\build_preset_cache.bat --prune-source "%BUILD_DIR%" "resources\profiles" "%BUILD_DIR%\OrcaSlicer\resources\profiles"
|
||||
|
||||
- name: Pack unit tests Win
|
||||
if: runner.os == 'Windows'
|
||||
working-directory: ${{ github.workspace }}
|
||||
@@ -539,6 +623,20 @@ jobs:
|
||||
retention-days: 5
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Build system preset cache (Linux)
|
||||
if: runner.os == 'Linux'
|
||||
shell: bash
|
||||
run: |
|
||||
# Both were packed from resources/ before the caches existed, so the
|
||||
# AppImage is unpacked first and the caches shipped into it and into
|
||||
# the package tree; the source tree keeps its JSONs for later steps.
|
||||
appimage=$(find build -maxdepth 1 -name "OrcaSlicer_Linux_AppImage*.AppImage" | head -1)
|
||||
chmod +x "$appimage"
|
||||
"$appimage" --appimage-extract
|
||||
./scripts/build_preset_cache.sh -b build build/package/resources/profiles squashfs-root/resources/profiles
|
||||
appimagetool=$(find build -name "appimagetool.AppImage" | head -1)
|
||||
ARCH=$(uname -m) "$appimagetool" --appimage-extract-and-run squashfs-root "$appimage"
|
||||
rm -rf squashfs-root
|
||||
# Ship the freshly-built validator so slice_check_linux (build_all.yml)
|
||||
# can slice-sweep the shipped profiles with this PR's engine. Taken from
|
||||
# the aarch64 leg so the sweep also exercises the arm build; x86_64 on
|
||||
@@ -626,3 +724,41 @@ jobs:
|
||||
asset_name: orca_custom_preset_tests.zip
|
||||
asset_content_type: application/octet-stream
|
||||
max_releases: 1
|
||||
|
||||
# The build has just touched everything it can use, so an object
|
||||
# untouched for a week is dead, usually orphaned by a flag change.
|
||||
- name: Compiler cache statistics
|
||||
if: ${{ always() && steps.ccache.outcome == 'success' }}
|
||||
shell: bash
|
||||
run: |
|
||||
ccache --evict-older-than 7d
|
||||
ccache -s -v || ccache -s
|
||||
|
||||
# Entries are immutable, so the new one is saved first and the older
|
||||
# ones for this leg on this ref are dropped afterwards: a failed save
|
||||
# leaves the previous entry in place. A cancelled or failed build saves
|
||||
# too, since what it compiled is still valid; a restore that did not
|
||||
# finish does not, since the directory may be a truncated copy.
|
||||
- name: Save compiler cache
|
||||
id: ccache_save
|
||||
if: ${{ always() && steps.ccache_restore.outcome == 'success' && github.event_name != 'pull_request' }}
|
||||
uses: actions/cache/save@v6
|
||||
with:
|
||||
path: ${{ github.workspace }}/.ccache
|
||||
key: ${{ env.CCACHE_ENTRY }}
|
||||
|
||||
- name: Drop older compiler cache entries
|
||||
if: ${{ always() && steps.ccache_save.outcome == 'success' }}
|
||||
# A read-only token (fork PRs) cannot delete; that only costs storage.
|
||||
# Older means a lower run id, so two runs finishing close together keep
|
||||
# the newer entry whichever of them cleans up last.
|
||||
continue-on-error: true
|
||||
shell: bash
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh cache list --ref "$GITHUB_REF" --key "ccache-$CCACHE_LEG-" --limit 100 --json id,key \
|
||||
| jq -r --arg prefix "ccache-$CCACHE_LEG-" --argjson run "$GITHUB_RUN_ID" \
|
||||
'.[] | select((.key | ltrimstr($prefix) | split("-")[0] | tonumber?) < $run) | .id' \
|
||||
| tr -d '\r' \
|
||||
| while read -r id; do gh cache delete "$id"; done
|
||||
|
||||
@@ -9,6 +9,10 @@ on:
|
||||
- release/*
|
||||
paths:
|
||||
- 'resources/profiles/**'
|
||||
# The extra JSON check also validates resources/printers/bambu_filament_ids.json,
|
||||
# and lives in scripts/, so a PR touching only those must still run this workflow.
|
||||
- 'resources/printers/**'
|
||||
- 'scripts/**'
|
||||
- ".github/workflows/check_profiles.yml"
|
||||
|
||||
workflow_dispatch:
|
||||
@@ -64,13 +68,14 @@ jobs:
|
||||
set +e
|
||||
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -s -l 2 2>&1 | tee ${{ runner.temp }}/validate_slice.log
|
||||
exit ${PIPESTATUS[0]}
|
||||
# For now run filament subtype check only for BBL profiles until we fix other vendors' profiles.
|
||||
- name: validate filament subtype check for BBL profiles
|
||||
# All vendors' filament_id collisions were fixed (see scripts/filament_id_snapshot.json),
|
||||
# so the duplicate-filament-subtype check runs tree-wide.
|
||||
- name: validate filament subtype check
|
||||
id: validate_filament_subtypes
|
||||
continue-on-error: true
|
||||
run: |
|
||||
set +e
|
||||
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -v BBL -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log
|
||||
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log
|
||||
exit ${PIPESTATUS[0]}
|
||||
|
||||
- name: validate custom presets
|
||||
@@ -217,7 +222,7 @@ jobs:
|
||||
fi
|
||||
|
||||
if [ "${{ steps.validate_filament_subtypes.outcome }}" = "failure" ]; then
|
||||
echo "### BBL Filament Subtype Validation Failed"
|
||||
echo "### Filament Subtype Validation Failed"
|
||||
echo ""
|
||||
echo '```'
|
||||
head -c 30000 ${{ runner.temp }}/validate_filament_subtypes.log || echo "No output captured"
|
||||
|
||||
@@ -19,11 +19,18 @@ jobs:
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: thejerrybao/setup-swap-space@v1
|
||||
with:
|
||||
swap-space-path: /swapfile
|
||||
swap-size-gb: 8
|
||||
remove-existing-swap-files: true
|
||||
# Doxygen with call graphs over all of src/ outgrows the runner's RAM;
|
||||
# replace the runner's swapfile with an 8 GB one.
|
||||
- name: Grow swap space
|
||||
run: |
|
||||
set -euo pipefail
|
||||
sudo swapoff -a
|
||||
sudo rm -f /swapfile
|
||||
sudo fallocate -l 8G /swapfile
|
||||
sudo chmod 600 /swapfile
|
||||
sudo mkswap /swapfile
|
||||
sudo swapon /swapfile
|
||||
free -h
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v7
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
# Nightly parity checks from OrcaSlicer/orca-test-repo, kept out of the
|
||||
# per-build "Run external slicer regression tests" step because they take far
|
||||
# longer than that step's budget:
|
||||
# effect - the CLI override sweep's full effect stage: every landed option
|
||||
# re-sliced on its own to see whether it changes the G-code
|
||||
# harness - the GUI-vs-CLI parity harness (metrics only, never fails)
|
||||
# Both test the latest successful build_all.yml Linux AppImage from main, with
|
||||
# sources checked out at the commit that build was made from. Nothing here
|
||||
# gates a build or a PR.
|
||||
name: Parity Nightly
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# build_all.yml starts at 17:00 UTC and has finished by ~20:00
|
||||
- cron: "0 21 * * *"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
test_repo_ref:
|
||||
description: "orca-test-repo ref to run"
|
||||
required: false
|
||||
default: "main"
|
||||
build_branch:
|
||||
description: "branch whose latest successful build_all artifact to test"
|
||||
required: false
|
||||
default: "main"
|
||||
fixtures:
|
||||
description: "harness fixture ids, space-separated (empty = all)"
|
||||
required: false
|
||||
default: ""
|
||||
cli_presets:
|
||||
description: "harness lane C presets: flat = flatten inherits first, raw = leaf profile as-is"
|
||||
required: false
|
||||
default: "flat"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Find the build to test
|
||||
# Don't run scheduled checks on forks
|
||||
if: github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer'
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
run_id: ${{ steps.find.outputs.run_id }}
|
||||
head_sha: ${{ steps.find.outputs.head_sha }}
|
||||
steps:
|
||||
- id: find
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
gh run list --workflow build_all.yml \
|
||||
--branch "${{ inputs.build_branch || 'main' }}" \
|
||||
--status success --limit 1 --json databaseId,headSha \
|
||||
--jq '"run_id=\(.[0].databaseId)\nhead_sha=\(.[0].headSha)"' \
|
||||
>> "$GITHUB_OUTPUT"
|
||||
cat "$GITHUB_OUTPUT"
|
||||
|
||||
effect:
|
||||
name: Override sweep effect stage (shard ${{ matrix.shard }})
|
||||
needs: build
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 60
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# orca-test-repo's parity/effect_routing.json holds a 2-way split,
|
||||
# ~12.5 min a shard on this runner
|
||||
shard: [0, 1]
|
||||
steps:
|
||||
- &checkout-suite
|
||||
name: Check out the test suite
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
repository: OrcaSlicer/orca-test-repo
|
||||
ref: ${{ inputs.test_repo_ref || 'main' }}
|
||||
path: orca-test-repo
|
||||
|
||||
# The AppImage ships only packed preset caches, so profiles and the CLI
|
||||
# option surface come from the sources the build was made from
|
||||
- &checkout-slicer
|
||||
name: Check out OrcaSlicer at the build's commit
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
ref: ${{ needs.build.outputs.head_sha }}
|
||||
path: slicer
|
||||
lfs: 'false'
|
||||
|
||||
- &extract-appimage
|
||||
name: Download and extract the Linux AppImage
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
gh run download "${{ needs.build.outputs.run_id }}" --dir appimage \
|
||||
--pattern "OrcaSlicer_Linux_ubuntu_2404*"
|
||||
appimage=$(find appimage -name "*.AppImage" ! -name "*aarch64*" | head -1)
|
||||
[ -n "$appimage" ] || { echo "no x86_64 AppImage in run ${{ needs.build.outputs.run_id }}"; exit 1; }
|
||||
chmod +x "$appimage"
|
||||
"$appimage" --appimage-extract > /dev/null
|
||||
# The bare binary cannot find the AppImage's bundled libraries; AppRun
|
||||
# sets them up and execs it, so exit codes and signals pass through
|
||||
[ -x squashfs-root/AppRun ] || { echo "no AppRun in the AppImage"; exit 1; }
|
||||
echo "ORCA_BIN=$PWD/squashfs-root/AppRun" >> "$GITHUB_ENV"
|
||||
echo "ORCA_SOURCE=$PWD/slicer" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Install the AppImage's host runtime dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
libopengl0 libglu1-mesa libgl1 libegl1 libwebkit2gtk-4.1-0
|
||||
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Install suite dependencies
|
||||
run: pip install -r orca-test-repo/requirements.txt
|
||||
|
||||
- name: Run the override sweep with the full effect stage
|
||||
id: run
|
||||
continue-on-error: true
|
||||
working-directory: orca-test-repo
|
||||
run: |
|
||||
set -o pipefail
|
||||
# -rA keeps the per-stage summaries, which pytest otherwise swallows
|
||||
# for passing tests
|
||||
python -m pytest test_cli_overrides.py -c pytest.ini -v -rA \
|
||||
--effect-full --effect-shard ${{ matrix.shard }}/2 \
|
||||
--orca-bin "$ORCA_BIN" --orca-source "$ORCA_SOURCE" \
|
||||
2>&1 | tee ../sweep.log
|
||||
|
||||
- name: Publish job summary
|
||||
if: always()
|
||||
run: |
|
||||
{
|
||||
echo "## Override sweep effect stage, shard ${{ matrix.shard }}/2"
|
||||
echo "Build ${{ needs.build.outputs.head_sha }} (run ${{ needs.build.outputs.run_id }})"
|
||||
echo '```'
|
||||
grep -E "\[override sweep" sweep.log || echo "no stage summaries, see the log"
|
||||
grep -E "^=+ .*(passed|failed)" sweep.log | tail -1 || true
|
||||
echo '```'
|
||||
} >> "$GITHUB_STEP_SUMMARY"
|
||||
|
||||
- name: Upload the override report
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: override-report-shard${{ matrix.shard }}
|
||||
path: |
|
||||
orca-test-repo/.pytest_cache/override_report.json
|
||||
sweep.log
|
||||
if-no-files-found: warn
|
||||
retention-days: 30
|
||||
|
||||
# The sweep step continues on error so the summary and report still get
|
||||
# published; this puts the failure back on the job
|
||||
- name: Fail the job if the sweep failed
|
||||
if: steps.run.outcome == 'failure'
|
||||
run: |
|
||||
echo "the override sweep failed, see the job summary and the uploaded report" >&2
|
||||
exit 1
|
||||
|
||||
harness:
|
||||
name: GUI-vs-CLI parity harness
|
||||
needs: build
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 180
|
||||
steps:
|
||||
- *checkout-suite
|
||||
- *checkout-slicer
|
||||
- *extract-appimage
|
||||
|
||||
- name: Install display tooling and the AppImage's host runtime
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
xvfb xdotool imagemagick openbox mesa-utils \
|
||||
libopengl0 libglu1-mesa libgl1 libegl1 libwebkit2gtk-4.1-0
|
||||
|
||||
- name: Run the parity harness
|
||||
run: |
|
||||
set -euo pipefail
|
||||
fixtures=()
|
||||
for f in ${{ inputs.fixtures || '' }}; do
|
||||
fixtures+=(--fixture "$f")
|
||||
done
|
||||
# 2 GUI displays: ~1.5 cores peak / ~1.9 GB on this 4-vCPU runner,
|
||||
# and each fixture is fully isolated, so results match a serial run
|
||||
python3 orca-test-repo/parity/run_parity.py \
|
||||
--slicer-root "$ORCA_SOURCE" --bin "$ORCA_BIN" \
|
||||
--cli-presets "${{ inputs.cli_presets || 'flat' }}" \
|
||||
--gui-workers 2 --out "$PWD/parity-out" "${fixtures[@]}"
|
||||
|
||||
- name: Publish job summary
|
||||
if: always()
|
||||
run: |
|
||||
if [ -f parity-out/report.md ]; then
|
||||
cat parity-out/report.md >> "$GITHUB_STEP_SUMMARY"
|
||||
else
|
||||
echo "the harness produced no report, see the log" >> "$GITHUB_STEP_SUMMARY"
|
||||
fi
|
||||
|
||||
- name: Drop per-lane datadirs before upload
|
||||
if: always()
|
||||
run: rm -rf parity-out/*/seed parity-out/*/datadir-* || true
|
||||
|
||||
- name: Upload the scorecard and evidence
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: parity-scorecard
|
||||
path: parity-out/
|
||||
if-no-files-found: warn
|
||||
retention-days: 30
|
||||
@@ -32,13 +32,21 @@ jobs:
|
||||
}
|
||||
|
||||
const allowedLabels = [
|
||||
// kind of change
|
||||
'crash',
|
||||
'bug-fix',
|
||||
'enhancement',
|
||||
'Localization',
|
||||
'profile',
|
||||
'QoL',
|
||||
'optimization',
|
||||
// area
|
||||
'UI/UX',
|
||||
'dependencies'
|
||||
'profile',
|
||||
'Localization',
|
||||
// infrastructure
|
||||
'build',
|
||||
'test',
|
||||
'dependencies',
|
||||
'documentation'
|
||||
];
|
||||
const pr = context.payload.pull_request;
|
||||
const labelsList = `${allowedLabels
|
||||
@@ -182,13 +190,21 @@ jobs:
|
||||
}
|
||||
|
||||
const allowedLabels = [
|
||||
// kind of change
|
||||
'crash',
|
||||
'bug-fix',
|
||||
'enhancement',
|
||||
'Localization',
|
||||
'profile',
|
||||
'QoL',
|
||||
'optimization',
|
||||
// area
|
||||
'UI/UX',
|
||||
'dependencies'
|
||||
'profile',
|
||||
'Localization',
|
||||
// infrastructure
|
||||
'build',
|
||||
'test',
|
||||
'dependencies',
|
||||
'documentation'
|
||||
];
|
||||
|
||||
const issue = context.payload.issue;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
Build
|
||||
Build.bat
|
||||
/build*/
|
||||
/out/
|
||||
CMakeLists.txt.user
|
||||
CMakeUserPresets.json
|
||||
**/CMakeLists.txt.autosave
|
||||
deps/build*
|
||||
MYMETA.json
|
||||
@@ -49,3 +51,6 @@ internal_docs/
|
||||
# Python bytecode
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.opc
|
||||
/.test/
|
||||
docs/superpowers/
|
||||
@@ -25,6 +25,13 @@ ctest --test-dir ./tests/libslic3r # individual suite
|
||||
ctest --test-dir ./tests/fff_print
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- Docs live in `docs/`; the high-level design of a subsystem goes in `docs/HLSD/<subsystem>.md`.
|
||||
- Describe the design as it stands — what the subsystem does, why it exists, and the constraints that shape it. Not the route that got there: no phases, task lists, status markers, or "before/after this PR" framing.
|
||||
- Planning and investigation output (brainstorms, superpowers design and plan docs) stays in `docs/superpowers/`, which is gitignored. Never commit it.
|
||||
- Write a doc only when the design is not evident from the code, and when a change invalidates an existing one, update it in the same PR.
|
||||
|
||||
## Code Style
|
||||
|
||||
- C++17, selective C++20. PascalCase classes, snake_case functions/variables
|
||||
|
||||
+313
-83
@@ -4,6 +4,10 @@ endif()
|
||||
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
if(POLICY CMP0177)
|
||||
cmake_policy(SET CMP0177 NEW)
|
||||
endif()
|
||||
|
||||
|
||||
# The following line used to be in tests/CMakeLists.txt
|
||||
# Having it there causes rebuilds of all targets on any CMakeLists.txt change under tests/
|
||||
@@ -59,6 +63,13 @@ if (APPLE)
|
||||
message(STATUS "CMAKE_OSX_DEPLOYMENT_TARGET: ${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
endif ()
|
||||
|
||||
# Keep MSVC's default /W3 out of CMAKE_<LANG>_FLAGS so it can be applied to our own
|
||||
# targets only. Silencing a bundled target would otherwise override a warning level,
|
||||
# which cl reports as D9025 for every file it compiles.
|
||||
if (POLICY CMP0092)
|
||||
cmake_policy(SET CMP0092 NEW)
|
||||
endif ()
|
||||
|
||||
project(OrcaSlicer)
|
||||
|
||||
# Backward compatibility for old CMake versions
|
||||
@@ -88,33 +99,6 @@ else ()
|
||||
add_compile_definitions("$<$<CONFIG:Release>:WXINSPECTOR_DISABLE>")
|
||||
endif ()
|
||||
|
||||
find_package(Git)
|
||||
if(DEFINED ENV{git_commit_hash} AND NOT "$ENV{git_commit_hash}" STREQUAL "")
|
||||
message(STATUS "Specified git commit hash: $ENV{git_commit_hash}")
|
||||
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
# Convert the given hash to short hash
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --short "$ENV{git_commit_hash}"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
else()
|
||||
# No .git directory (e.g., Flatpak sandbox) — truncate directly
|
||||
string(SUBSTRING "$ENV{git_commit_hash}" 0 7 GIT_COMMIT_HASH)
|
||||
endif()
|
||||
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
|
||||
elseif(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
|
||||
# Check current Git commit hash
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} log -1 --format=%h
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
add_definitions("-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\"")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{SLIC3R_STATIC})
|
||||
set(SLIC3R_STATIC_INITIAL $ENV{SLIC3R_STATIC})
|
||||
else()
|
||||
@@ -126,8 +110,11 @@ option(SLIC3R_GUI "Compile OrcaSlicer with GUI components (OpenGL,
|
||||
option(SLIC3R_FHS "Assume OrcaSlicer is to be installed in a FHS directory structure" 0)
|
||||
option(SLIC3R_PROFILE "Compile OrcaSlicer with an invasive Shiny profiler" 0)
|
||||
option(SLIC3R_PCH "Use precompiled headers" 1)
|
||||
option(SLIC3R_WARNINGS "Emit compiler warnings for OrcaSlicer sources" 1)
|
||||
option(SLIC3R_BUNDLED_WARNINGS "Emit compiler warnings for bundled third-party sources" 0)
|
||||
option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1)
|
||||
option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1)
|
||||
option(SLIC3R_RELATIVE_DEBUG_PATHS "Record a relative compilation directory in debug info (clang-cl)" 0)
|
||||
option(SLIC3R_ASAN "Enable ASan on Clang and GCC" 0)
|
||||
|
||||
# Python stubgen module
|
||||
@@ -289,6 +276,8 @@ if (APPLE)
|
||||
SET(CMAKE_XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.orcaslicer.OrcaSlicer")
|
||||
|
||||
message(STATUS "Orca: IS_CROSS_COMPILE: ${IS_CROSS_COMPILE}")
|
||||
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN")
|
||||
endif ()
|
||||
|
||||
# Proposal for C++ unit tests and sandboxes
|
||||
@@ -335,23 +324,47 @@ if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||
|
||||
# clang-cl can interpret SYSTEM header paths if -imsvc is used
|
||||
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-imsvc")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall \
|
||||
-Wno-old-style-cast -Wno-reserved-id-macro -Wno-c++98-compat-pedantic")
|
||||
else ()
|
||||
set(IS_CLANG_CL FALSE)
|
||||
endif ()
|
||||
|
||||
if (MSVC)
|
||||
if (SLIC3R_MSVC_COMPILE_PARALLEL AND NOT IS_CLANG_CL)
|
||||
# CMP0092 only applies when the cache is created; an existing tree keeps its /W3,
|
||||
# which a silenced bundled target would then override (D9025, once per file).
|
||||
string(REGEX REPLACE "/W[0-4]" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||
string(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
|
||||
# /MP only matters for the VS generators, where CMake turns it into the
|
||||
# MultiProcessorCompilation property. Ninja parallelises on its own, and
|
||||
# clang-cl warns "argument unused" if the flag reaches it.
|
||||
if (SLIC3R_MSVC_COMPILE_PARALLEL AND CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
add_compile_options(/MP)
|
||||
endif ()
|
||||
|
||||
# Parse lambdas the way the standard says, as clang and GCC already do. Without it
|
||||
# MSVC keeps its legacy lambda processor under /std:c++17 and rejects reading a
|
||||
# constexpr constant inside a lambda that does not capture it (C3493), which no
|
||||
# other compiler requires. Implied by /std:c++20 and /permissive-, so it is only
|
||||
# needed while we are on C++17. clang-cl is conforming already and does not take
|
||||
# the flag. Requires VS2019 16.8 or newer.
|
||||
if (NOT IS_CLANG_CL)
|
||||
# cl.exe only warns (D9002) about an unknown /Zc: option, so without this the
|
||||
# flag would be dropped and the first lambda reading a constexpr constant would
|
||||
# fail with C3493 far from the cause.
|
||||
if (MSVC_VERSION LESS 1928)
|
||||
message(FATAL_ERROR "Visual Studio 2019 16.8 (MSVC 19.28) or newer is required; detected MSVC ${MSVC_VERSION}.")
|
||||
endif ()
|
||||
add_compile_options(/Zc:lambda)
|
||||
endif ()
|
||||
# /bigobj (Increase Number of Sections in .Obj file)
|
||||
add_compile_options(-bigobj)
|
||||
# error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm90' or greater
|
||||
# Generate symbols at every build target, even for the release.
|
||||
# -Zm520 fixes error C3859 but forces the compiler to pre-allocate that memory for every translation unit regardless
|
||||
# combining /Zi with /FS frees up a significant amount of memory pressure across all parallel compile jobs and makes /MP faster overall.
|
||||
add_compile_options(-bigobj /Zi /FS)
|
||||
if (SLIC3R_MSVC_PDB)
|
||||
add_compile_options(/Zi /FS)
|
||||
endif ()
|
||||
# Disable STL4007: Many result_type typedefs and all argument_type, first_argument_type, and second_argument_type typedefs are deprecated in C++17.
|
||||
#FIXME Remove this line after eigen library adapts to the new C++17 adaptor rules.
|
||||
add_compile_options(-D_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING)
|
||||
@@ -369,6 +382,16 @@ if (MSVC)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LTCG")
|
||||
endif ()
|
||||
|
||||
# Without this every object names its build directory and two worktrees never
|
||||
# share cache entries. The linker still writes absolute paths into the PDB.
|
||||
if (SLIC3R_RELATIVE_DEBUG_PATHS)
|
||||
if (IS_CLANG_CL)
|
||||
add_compile_options(-ffile-compilation-dir=.)
|
||||
else ()
|
||||
message(WARNING "SLIC3R_RELATIVE_DEBUG_PATHS is only implemented for clang-cl")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
|
||||
add_compile_definitions(BOOST_NO_CXX98_FUNCTION_BASE _HAS_AUTO_PTR_ETC=0)
|
||||
endif()
|
||||
@@ -523,63 +546,103 @@ if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fext-numeric-literals" )
|
||||
endif()
|
||||
|
||||
if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"))
|
||||
if (NOT MINGW)
|
||||
if ((NOT MSVC OR IS_CLANG_CL) AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang"))
|
||||
if (IS_CLANG_CL)
|
||||
# clang-cl reads -Wall as MSVC /Wall, which clang maps to -Weverything. /W4 is
|
||||
# its -Wall -Wextra and, unlike /clang:-Wall, is ordered with the -Wno-* below
|
||||
# instead of after them. The -Wextra-only warnings are dropped again so the set
|
||||
# matches what -Wall gives the GNU/Clang builds.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4" )
|
||||
add_compile_options(-Wno-unused-parameter -Wno-ignored-qualifiers -Wno-missing-field-initializers)
|
||||
elseif (NOT MINGW)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
|
||||
endif ()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-reorder" )
|
||||
|
||||
# On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error.
|
||||
# Every warning is an error unless it appears in one of the two lists below.
|
||||
# disabled - never wanted. Off everywhere, so it never warns or errors.
|
||||
# demoted - wanted, not cleared yet. Still warns, does not error.
|
||||
|
||||
# Disabled.
|
||||
set(warnings_disabled
|
||||
reorder # members initialised in an order we chose
|
||||
sign-compare # signed/unsigned comparisons throughout
|
||||
misleading-indentation # false positives on mixed tabs and spaces
|
||||
switch # unhandled enum value in a switch
|
||||
unused-function # commented-out or conditionally compiled code
|
||||
unused-variable # commented-out or conditionally compiled code
|
||||
unused-but-set-variable # commented-out or conditionally compiled code
|
||||
unused-label # commented-out or conditionally compiled code
|
||||
unused-local-typedefs # commented-out or conditionally compiled code
|
||||
)
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
list(APPEND warnings_disabled deprecated-declarations) # legacy OpenGL calls
|
||||
endif ()
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
|
||||
list(APPEND warnings_disabled ignored-attributes) # from Eigen headers marked SYSTEM
|
||||
endif ()
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
list(APPEND warnings_disabled unknown-pragmas) # igl pragmas, GCC bug 66943
|
||||
endif ()
|
||||
foreach (w IN LISTS warnings_disabled)
|
||||
add_compile_options(-Wno-${w})
|
||||
endforeach ()
|
||||
|
||||
# GCC is not built in CI, so don't throw errors CI won't catch.
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
add_compile_options(-Werror=return-type)
|
||||
|
||||
# Since some portions of code are just commented out or put under conditional compilation, there are
|
||||
# a bunch of warning related to unused functions and variables. Suppress those warnings to not pollute
|
||||
# compilers diagnostics output with warnings we not going to look at
|
||||
add_compile_options(-Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-label -Wno-unused-local-typedefs)
|
||||
|
||||
# Ignore signed/unsigned comparison warnings
|
||||
add_compile_options(-Wno-sign-compare)
|
||||
|
||||
# The mismatch of tabs and spaces throughout the project can sometimes
|
||||
# cause this warning to appear even though the indentation is fine.
|
||||
# Some includes also cause the warning
|
||||
add_compile_options(-Wno-misleading-indentation)
|
||||
|
||||
# Disable warning if enum value does not have a corresponding case in switch statement
|
||||
add_compile_options(-Wno-switch)
|
||||
|
||||
# removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1)
|
||||
# https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
|
||||
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
|
||||
add_compile_options(-Wno-ignored-attributes) # Tamas: Eigen include dirs are marked as SYSTEM
|
||||
else ()
|
||||
# Turn everything else into an error. Dependency headers are exempt because the
|
||||
# SYSTEM include flag (-imsvc on clang-cl, -isystem elsewhere) keeps their
|
||||
# diagnostics out.
|
||||
add_compile_options(-Werror)
|
||||
endif ()
|
||||
|
||||
# Clang reports legacy OpenGL calls as deprecated. Turn off the warning for now
|
||||
# to reduce the clutter, we know about this one. It should be reenabled after
|
||||
# we finally get rid of the deprecated code.
|
||||
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
||||
add_compile_options(-Wno-deprecated-declarations)
|
||||
# Demoted. Remove a name once its category is cleared on every compiler.
|
||||
set(warnings_demoted)
|
||||
if (APPLE)
|
||||
list(APPEND warnings_demoted
|
||||
# MacDarkMode.mm makes two calls to AppKit's private titlebarViewController
|
||||
# and one to a wxWidgets category on NSTableColumn whose header is not
|
||||
# imported. Clearing it means declaring the private selectors ourselves, which
|
||||
# needs a macOS build to verify.
|
||||
objc-method-access
|
||||
)
|
||||
endif ()
|
||||
if (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
|
||||
list(APPEND warnings_demoted
|
||||
# About two dozen GetProcAddress casts, most in the vendored dark_mode.hpp,
|
||||
# retype FARPROC to a real signature. The __stdcall typedefs are identical to
|
||||
# FARPROC on x64, so only arm64 reports them. Clearing them is a separate
|
||||
# sweep.
|
||||
cast-function-type-mismatch
|
||||
)
|
||||
endif ()
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
list(APPEND warnings_demoted
|
||||
# enum-constexpr-conversion is a Clang warning that defaults to an error,
|
||||
# present through clang 20 and gone in clang 21.
|
||||
enum-constexpr-conversion
|
||||
)
|
||||
endif ()
|
||||
|
||||
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang") AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 15)
|
||||
# The list mixes names not every compiler has, so add each exception only where the
|
||||
# compiler knows the warning. Probe with the positive -W<name>, which an unknown
|
||||
# warning fails on both compilers (GCC errors, Clang reports unknown-warning-option).
|
||||
# An option that takes a =N argument rejects the bare -W<name>, so fall back to
|
||||
# -W<name>=1 and demote with the trailing =.
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-Wno-error=enum-constexpr-conversion HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
|
||||
if(HAS_WNO_ERROR_ENUM_CONSTEXPR_CONV)
|
||||
add_compile_options(-Wno-error=enum-constexpr-conversion)
|
||||
foreach (category IN LISTS warnings_demoted)
|
||||
string(MAKE_C_IDENTIFIER "ORCA_HAS_W_${category}" _orca_has_w)
|
||||
check_cxx_compiler_flag("-W${category}" ${_orca_has_w})
|
||||
if (${_orca_has_w})
|
||||
add_compile_options(-Wno-error=${category})
|
||||
else ()
|
||||
check_cxx_compiler_flag("-W${category}=1" ${_orca_has_w}_arg)
|
||||
if (${${_orca_has_w}_arg})
|
||||
add_compile_options(-Wno-error=${category}=)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
#GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
||||
# We will turn the warning of for GCC for now:
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
# GCC generates loads of -Wunknown-pragmas when compiling igl. The fix is not easy due to a bug in gcc, see
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66943 or
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431
|
||||
# We will turn the warning of for GCC for now:
|
||||
add_compile_options(-Wno-unknown-pragmas)
|
||||
endif()
|
||||
endforeach ()
|
||||
|
||||
# Compress the debug info with zstd to save space in Flatpak CI builds
|
||||
if(FLATPAK)
|
||||
@@ -589,10 +652,6 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=template-id-cdtor" )
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if (SLIC3R_ASAN)
|
||||
@@ -762,6 +821,49 @@ find_package(OpenSSL REQUIRED)
|
||||
find_package(CURL REQUIRED)
|
||||
find_package(Freetype REQUIRED)
|
||||
|
||||
if (SLIC3R_GUI)
|
||||
# LibDataChannel's installed export references its bundled dependencies,
|
||||
# but does not install their CMake targets. Recreate those targets from
|
||||
# the same dependency prefix before loading the LibDataChannel config.
|
||||
if (NOT TARGET Usrsctp::usrsctp)
|
||||
find_library(_ORCA_USRSCTP_LIBRARY NAMES usrsctp
|
||||
PATHS "${CMAKE_PREFIX_PATH}/lib" NO_DEFAULT_PATH)
|
||||
if (_ORCA_USRSCTP_LIBRARY)
|
||||
add_library(Usrsctp::usrsctp UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(Usrsctp::usrsctp PROPERTIES
|
||||
IMPORTED_LOCATION "${_ORCA_USRSCTP_LIBRARY}"
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES C
|
||||
INTERFACE_LINK_LIBRARIES "Threads::Threads")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT TARGET libSRTP::srtp2)
|
||||
find_library(_ORCA_SRTP_LIBRARY NAMES srtp2
|
||||
PATHS "${CMAKE_PREFIX_PATH}/lib" NO_DEFAULT_PATH)
|
||||
if (_ORCA_SRTP_LIBRARY)
|
||||
add_library(libSRTP::srtp2 UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(libSRTP::srtp2 PROPERTIES
|
||||
IMPORTED_LOCATION "${_ORCA_SRTP_LIBRARY}"
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES C
|
||||
INTERFACE_LINK_LIBRARIES "OpenSSL::Crypto")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT TARGET LibJuice::LibJuice)
|
||||
find_library(_ORCA_LIBJUICE_LIBRARY NAMES juice
|
||||
PATHS "${CMAKE_PREFIX_PATH}/lib" NO_DEFAULT_PATH)
|
||||
if (_ORCA_LIBJUICE_LIBRARY)
|
||||
add_library(LibJuice::LibJuice UNKNOWN IMPORTED GLOBAL)
|
||||
set_target_properties(LibJuice::LibJuice PROPERTIES
|
||||
IMPORTED_LOCATION "${_ORCA_LIBJUICE_LIBRARY}"
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES C
|
||||
INTERFACE_LINK_LIBRARIES "Threads::Threads")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(LibDataChannel CONFIG REQUIRED)
|
||||
endif()
|
||||
|
||||
|
||||
add_library(libcurl INTERFACE)
|
||||
target_link_libraries(libcurl INTERFACE CURL::libcurl)
|
||||
@@ -1044,6 +1146,11 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
||||
${CMAKE_PREFIX_PATH}/bin/occt/TKXDESTEP.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/occt/TKXSBase.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/freetype.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/avformat-61.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/avcodec-61.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/swresample-5.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/swscale-8.dll
|
||||
${CMAKE_PREFIX_PATH}/bin/avutil-59.dll
|
||||
DESTINATION ${_out_dir})
|
||||
|
||||
set(${output_dlls}
|
||||
@@ -1079,15 +1186,118 @@ function(orcaslicer_copy_dlls target config postfix output_dlls)
|
||||
${_out_dir}/TKXSBase.dll
|
||||
|
||||
${_out_dir}/freetype.dll
|
||||
|
||||
${_out_dir}/avformat-61.dll
|
||||
${_out_dir}/avcodec-61.dll
|
||||
${_out_dir}/swresample-5.dll
|
||||
${_out_dir}/swscale-8.dll
|
||||
${_out_dir}/avutil-59.dll
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
endfunction()
|
||||
|
||||
function(orcaslicer_copy_sos target config postfix output_sos)
|
||||
|
||||
get_property(_is_multi GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
get_target_property(_alt_out_dir ${target} RUNTIME_OUTPUT_DIRECTORY)
|
||||
|
||||
if (_alt_out_dir)
|
||||
set(_out_dir "${_alt_out_dir}")
|
||||
elseif (_is_multi)
|
||||
set(_out_dir "${CMAKE_CURRENT_BINARY_DIR}/${config}")
|
||||
else ()
|
||||
set(_out_dir "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif ()
|
||||
|
||||
file(COPY ${CMAKE_PREFIX_PATH}/lib/libavformat.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libavformat.so.61
|
||||
${CMAKE_PREFIX_PATH}/lib/libavformat.so.61.1.100
|
||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61
|
||||
${CMAKE_PREFIX_PATH}/lib/libavcodec.so.61.3.100
|
||||
${CMAKE_PREFIX_PATH}/lib/libavutil.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libavutil.so.59
|
||||
${CMAKE_PREFIX_PATH}/lib/libavutil.so.59.8.100
|
||||
${CMAKE_PREFIX_PATH}/lib/libswscale.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libswscale.so.8
|
||||
${CMAKE_PREFIX_PATH}/lib/libswscale.so.8.1.100
|
||||
${CMAKE_PREFIX_PATH}/lib/libswresample.so
|
||||
${CMAKE_PREFIX_PATH}/lib/libswresample.so.5
|
||||
${CMAKE_PREFIX_PATH}/lib/libswresample.so.5.1.100
|
||||
DESTINATION ${_out_dir})
|
||||
|
||||
set(${output_sos}
|
||||
${_out_dir}/libavformat.so
|
||||
${_out_dir}/libavformat.so.61
|
||||
${_out_dir}/libavformat.so.61.1.100
|
||||
${_out_dir}/libavcodec.so
|
||||
${_out_dir}/libavcodec.so.61
|
||||
${_out_dir}/libavcodec.so.61.3.100
|
||||
${_out_dir}/libavutil.so
|
||||
${_out_dir}/libavutil.so.59
|
||||
${_out_dir}/libavutil.so.59.8.100
|
||||
${_out_dir}/libswscale.so
|
||||
${_out_dir}/libswscale.so.8
|
||||
${_out_dir}/libswscale.so.8.1.100
|
||||
${_out_dir}/libswresample.so
|
||||
${_out_dir}/libswresample.so.5
|
||||
${_out_dir}/libswresample.so.5.1.100
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
# Bundled sources set their own warning flags, and a plain -Wall there means /Wall
|
||||
# (= -Weverything) under clang-cl. Target options are applied after the ones a target
|
||||
# set on itself, so these win. Targets are discovered rather than listed so a newly
|
||||
# bundled library needs no maintenance here.
|
||||
function(orcaslicer_silence_third_party_warnings _dir)
|
||||
get_property(_subdirs DIRECTORY "${_dir}" PROPERTY SUBDIRECTORIES)
|
||||
foreach (_subdir IN LISTS _subdirs)
|
||||
orcaslicer_silence_third_party_warnings("${_subdir}")
|
||||
endforeach ()
|
||||
get_property(_targets DIRECTORY "${_dir}" PROPERTY BUILDSYSTEM_TARGETS)
|
||||
foreach (_target IN LISTS _targets)
|
||||
get_target_property(_type ${_target} TYPE)
|
||||
if (NOT _type STREQUAL "INTERFACE_LIBRARY" AND NOT _type STREQUAL "UTILITY")
|
||||
if (MSVC AND NOT IS_CLANG_CL)
|
||||
# Drop any level the target set for itself, or -w overrides it and cl
|
||||
# reports D9025 once per file.
|
||||
get_target_property(_opts ${_target} COMPILE_OPTIONS)
|
||||
if (_opts)
|
||||
string(REGEX REPLACE "/W[0-4]|/Wall" "" _opts "${_opts}")
|
||||
string(REGEX REPLACE ";;+" ";" _opts "${_opts}")
|
||||
set_target_properties(${_target} PROPERTIES COMPILE_OPTIONS "${_opts}")
|
||||
endif ()
|
||||
# CMake maps a level into the VS generator's WarningLevel element, while a
|
||||
# bare -w stays on the command line and trips D9025 there, once per file.
|
||||
target_compile_options(${_target} PRIVATE /W0)
|
||||
else ()
|
||||
target_compile_options(${_target} PRIVATE -w)
|
||||
endif ()
|
||||
endif ()
|
||||
endforeach ()
|
||||
endfunction()
|
||||
|
||||
|
||||
# libslic3r, OrcaSlicer GUI and the OrcaSlicer executable.
|
||||
add_subdirectory(deps_src)
|
||||
|
||||
if (NOT SLIC3R_BUNDLED_WARNINGS)
|
||||
orcaslicer_silence_third_party_warnings("${CMAKE_CURRENT_SOURCE_DIR}/deps_src")
|
||||
endif ()
|
||||
|
||||
# Warning level for the targets added below: our sources, plus glad and libvgcode,
|
||||
# which are vendored but live under src/. The deps_src libraries were configured just
|
||||
# above. CMP0092 left MSVC without a default level, so it is set here.
|
||||
if (NOT SLIC3R_WARNINGS)
|
||||
add_compile_options(-w)
|
||||
elseif (MSVC AND NOT IS_CLANG_CL)
|
||||
# /we4715 is C4715, no return from a non-void function, an error on the GNU/Clang
|
||||
# builds under -Werror. MSVC is not in that model, so this stays a single promoted
|
||||
# warning.
|
||||
add_compile_options(/W3 /we4715)
|
||||
endif ()
|
||||
|
||||
add_subdirectory(src)
|
||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT OrcaSlicer_app_gui)
|
||||
|
||||
@@ -1099,6 +1309,10 @@ endif()
|
||||
|
||||
if(BUILD_TESTS)
|
||||
add_subdirectory(tests)
|
||||
if (NOT SLIC3R_BUNDLED_WARNINGS)
|
||||
# Catch2 is vendored under tests/ and sets its own warning flags too.
|
||||
orcaslicer_silence_third_party_warnings("${CMAKE_CURRENT_SOURCE_DIR}/tests/catch2")
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
@@ -1143,6 +1357,22 @@ else ()
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(LIBRARY_FILES
|
||||
${LIBDIR_BIN}/libavformat.so.61
|
||||
${LIBDIR_BIN}/libavformat.so.61.1.100
|
||||
${LIBDIR_BIN}/libavcodec.so.61
|
||||
${LIBDIR_BIN}/libavcodec.so.61.3.100
|
||||
${LIBDIR_BIN}/libavutil.so.59
|
||||
${LIBDIR_BIN}/libavutil.so.59.8.100
|
||||
${LIBDIR_BIN}/libswresample.so.5
|
||||
${LIBDIR_BIN}/libswresample.so.5.1.100
|
||||
${LIBDIR_BIN}/libswscale.so.8
|
||||
${LIBDIR_BIN}/libswscale.so.8.1.100
|
||||
)
|
||||
install(FILES ${LIBRARY_FILES} DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||
endif ()
|
||||
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ".")
|
||||
configure_file(${LIBDIR}/dev-utils/platform/unix/fhs.hpp.in ${LIBDIR_BIN}/dev-utils/platform/unix/fhs.hpp)
|
||||
|
||||
|
||||
@@ -260,6 +260,9 @@ if [[ ! -f "./scripts/flatpak/com.orcaslicer.OrcaSlicer.yml" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}Packing deps/ for the manifest...${NC}"
|
||||
./scripts/flatpak/make_deps_tar.sh
|
||||
|
||||
# Build the Flatpak
|
||||
echo -e "${YELLOW}Building Flatpak package...${NC}"
|
||||
echo -e "This may take a while (30+ minutes depending on your system)..."
|
||||
|
||||
@@ -567,6 +567,8 @@ if [[ -n "${BUILD_ORCA}" ]] || [[ -n "${BUILD_TESTS}" ]] ; then
|
||||
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer
|
||||
echo "Building OrcaSlicer_profile_validator .."
|
||||
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target OrcaSlicer_profile_validator
|
||||
echo "Building generate_system_cache ..."
|
||||
print_and_run cmake --build $BUILD_DIR --config "${BUILD_CONFIG}" --target generate_system_cache
|
||||
./scripts/run_gettext.sh
|
||||
fi
|
||||
if [[ -n "${BUILD_TESTS}" ]] ; then
|
||||
|
||||
@@ -4,7 +4,7 @@ set -e
|
||||
set -o pipefail
|
||||
SECONDS=0
|
||||
|
||||
while getopts ":dpa:snt:xbc:i:1Tuh" opt; do
|
||||
while getopts ":dpa:snt:xbc:i:j:Tuh" opt; do
|
||||
case "${opt}" in
|
||||
d )
|
||||
export BUILD_TARGET="deps"
|
||||
@@ -38,8 +38,8 @@ while getopts ":dpa:snt:xbc:i:1Tuh" opt; do
|
||||
i )
|
||||
export CMAKE_IGNORE_PREFIX_PATH="${CMAKE_IGNORE_PREFIX_PATH:+$CMAKE_IGNORE_PREFIX_PATH;}$OPTARG"
|
||||
;;
|
||||
1 )
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||
j )
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL="$OPTARG"
|
||||
;;
|
||||
T )
|
||||
export BUILD_TESTS="1"
|
||||
@@ -58,7 +58,7 @@ while getopts ":dpa:snt:xbc:i:1Tuh" opt; do
|
||||
echo " -b: Build without reconfiguring CMake"
|
||||
echo " -c: Set CMake build configuration, default is Release"
|
||||
echo " -i: Add a prefix to ignore during CMake dependency discovery (repeatable), defaults to /opt/local:/usr/local:/opt/homebrew"
|
||||
echo " -1: Use single job for building"
|
||||
echo " -j: Set the number of parallel build jobs (CMAKE_BUILD_PARALLEL_LEVEL)"
|
||||
echo " -T: Build and run tests (set ORCA_TESTS_BUILD_ONLY=1 to build without running)"
|
||||
exit 0
|
||||
;;
|
||||
|
||||
+17
-4
@@ -20,6 +20,18 @@ for %%a in (%*) do (
|
||||
if "%%a"=="-x" set USE_NINJA=1
|
||||
)
|
||||
|
||||
@REM Check for clang-cl option (-l). Combined with -x it also builds the deps with
|
||||
@REM clang-cl; on the Visual Studio generator it applies to the slicer only, because
|
||||
@REM the dependency sub-builds have no toolset to inherit and stay on MSVC.
|
||||
set CLANG_ARG=
|
||||
set TOOLSET_ARG=
|
||||
for %%a in (%*) do (
|
||||
if "%%a"=="-l" (
|
||||
set CLANG_ARG=-DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
|
||||
set TOOLSET_ARG=-T ClangCL
|
||||
)
|
||||
)
|
||||
|
||||
@REM Check for unit-tests option ("tests")
|
||||
set BUILD_TESTS=OFF
|
||||
for %%a in (%*) do (
|
||||
@@ -74,7 +86,7 @@ if "%VS_MAJOR%"=="16" (
|
||||
set CMAKE_GENERATOR="Visual Studio 18 2026"
|
||||
) else (
|
||||
echo Error: Unsupported Visual Studio version: %VS_MAJOR%
|
||||
echo Supported versions: VS2019 (16.x^), VS2022 (17.x^), VS2026 (18.x^)
|
||||
echo Supported versions: VS2019 (16.8+^), VS2022 (17.x^), VS2026 (18.x^)
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
@@ -127,12 +139,13 @@ if "%1"=="slicer" (
|
||||
GOTO :slicer
|
||||
)
|
||||
echo "building deps.."
|
||||
if defined CLANG_ARG if "%USE_NINJA%"=="0" echo Note: -l needs -x for the dependencies; building them with MSVC.
|
||||
|
||||
echo on
|
||||
REM Set minimum CMake policy to avoid <3.5 errors
|
||||
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
if "%USE_NINJA%"=="1" (
|
||||
cmake ../ -G %CMAKE_GENERATOR% -DCMAKE_BUILD_TYPE=%build_type%
|
||||
cmake ../ -G %CMAKE_GENERATOR% %CLANG_ARG% -DCMAKE_BUILD_TYPE=%build_type%
|
||||
cmake --build . --config %build_type% --target deps
|
||||
) else (
|
||||
cmake ../ -G %CMAKE_GENERATOR% -A %arch% -DCMAKE_BUILD_TYPE=%build_type%
|
||||
@@ -151,10 +164,10 @@ cd %build_dir%
|
||||
echo on
|
||||
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
if "%USE_NINJA%"=="1" (
|
||||
cmake .. -G %CMAKE_GENERATOR% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
||||
cmake .. -G %CMAKE_GENERATOR% %CLANG_ARG% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
||||
cmake --build . --config %build_type% --target all
|
||||
) else (
|
||||
cmake .. -G %CMAKE_GENERATOR% -A %arch% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
||||
cmake .. -G %CMAKE_GENERATOR% -A %arch% %TOOLSET_ARG% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
||||
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
||||
)
|
||||
@echo off
|
||||
|
||||
+1396
File diff suppressed because it is too large
Load Diff
@@ -256,6 +256,13 @@ function(add_precompiled_header _target _input)
|
||||
message(STATUS "Adding precompiled header ${_input} to target ${_target}.")
|
||||
target_precompile_headers(${_target} PRIVATE ${_input})
|
||||
|
||||
# Clang records the modification time of every input in the precompiled
|
||||
# header, which makes it differ between two checkouts of the same source
|
||||
# and defeats a compiler cache. The build system already rebuilds the
|
||||
# header when an input changes.
|
||||
target_compile_options(${_target} PRIVATE
|
||||
"$<$<CXX_COMPILER_ID:Clang,AppleClang>:SHELL:-Xclang -fno-pch-timestamp>")
|
||||
|
||||
get_target_property(_sources ${_target} SOURCES)
|
||||
list(FILTER _sources INCLUDE REGEX ".*\\.mm?")
|
||||
|
||||
|
||||
Vendored
+43
@@ -0,0 +1,43 @@
|
||||
if(CMAKE_VERSION VERSION_LESS 3.22)
|
||||
set(_assimp_url "https://github.com/assimp/assimp/archive/refs/tags/v5.3.1.tar.gz")
|
||||
set(_assimp_hash "SHA256=a07666be71afe1ad4bc008c2336b7c688aca391271188eb9108d0c6db1be53f1")
|
||||
else()
|
||||
set(_assimp_url "https://github.com/assimp/assimp/archive/refs/tags/v5.4.3.tar.gz")
|
||||
set(_assimp_hash "SHA256=66dfbaee288f2bc43172440a55d0235dfc7bf885dda6435c038e8000e79582cb")
|
||||
endif()
|
||||
|
||||
# Assimp's bundled zlib (contrib/zlib) is too old to compile against the modern
|
||||
# macOS SDK: its zutil.h takes the classic-Mac branch under TARGET_OS_MAC and
|
||||
# does `#define fdopen(fd,mode) NULL`, which then clobbers the SDK's real
|
||||
# `fdopen` prototype in <stdio.h> and breaks the build. On macOS use the system
|
||||
# zlib (already found by find_package(ZLIB) in deps-unix-common) instead.
|
||||
if(APPLE)
|
||||
set(_assimp_build_zlib "-DASSIMP_BUILD_ZLIB=OFF")
|
||||
else()
|
||||
set(_assimp_build_zlib "-DASSIMP_BUILD_ZLIB=ON")
|
||||
endif()
|
||||
|
||||
orcaslicer_add_cmake_project(Assimp
|
||||
URL ${_assimp_url}
|
||||
URL_HASH ${_assimp_hash}
|
||||
CMAKE_ARGS
|
||||
# Assimp's ccache support sets the global RULE_LAUNCH_COMPILE, which breaks
|
||||
# the Ninja RC rule. The superbuild forwards CMAKE_<LANG>_COMPILER_LAUNCHER.
|
||||
-DASSIMP_BUILD_USE_CCACHE=OFF
|
||||
-DASSIMP_BUILD_TESTS=OFF
|
||||
-DASSIMP_BUILD_SAMPLES=OFF
|
||||
-DASSIMP_BUILD_ASSIMP_TOOLS=OFF
|
||||
-DASSIMP_INSTALL_PDB=OFF
|
||||
-DASSIMP_NO_EXPORT=ON
|
||||
-DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=OFF
|
||||
-DASSIMP_BUILD_GLTF_IMPORTER=ON
|
||||
-DASSIMP_BUILD_OBJ_IMPORTER=ON
|
||||
-DASSIMP_BUILD_FBX_IMPORTER=ON
|
||||
${_assimp_build_zlib}
|
||||
-DASSIMP_WARNINGS_AS_ERRORS=OFF
|
||||
-DBUILD_WITH_STATIC_CRT=OFF
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_Assimp)
|
||||
endif ()
|
||||
Vendored
+8
@@ -24,6 +24,13 @@ if (MSVC AND DEP_DEBUG)
|
||||
set(_options "FORWARD_CONFIG")
|
||||
endif ()
|
||||
|
||||
# Boost.Container's bundled dlmalloc passes int* where the Win32 Interlocked API
|
||||
# takes volatile long*; cl compiles that with a warning, clang errors out.
|
||||
set(_boost_c_flags_line "")
|
||||
if (MSVC AND CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||
set(_boost_c_flags_line "-DCMAKE_C_FLAGS:STRING=-Wno-incompatible-pointer-types")
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(Boost
|
||||
${_options}
|
||||
URL "https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.gz"
|
||||
@@ -38,6 +45,7 @@ orcaslicer_add_cmake_project(Boost
|
||||
"${_context_abi_line}"
|
||||
"${_context_arch_line}"
|
||||
"${_context_impl_line}"
|
||||
"${_boost_c_flags_line}"
|
||||
)
|
||||
|
||||
set(DEP_Boost_DEPENDS ZLIB)
|
||||
Vendored
+24
-4
@@ -157,8 +157,16 @@ endif ()
|
||||
function(orcaslicer_add_cmake_project projectname)
|
||||
cmake_parse_arguments(P_ARGS "FORWARD_CONFIG" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN})
|
||||
|
||||
# MSVC is true for clang-cl as well, so the sub-build toolchain has to key on the
|
||||
# generator. A non-Visual-Studio superbuild passes its own generator down, and with
|
||||
# it the CMAKE_C_COMPILER / CMAKE_CXX_COMPILER forwarded below.
|
||||
set(_dep_msvc_gen FALSE)
|
||||
if (MSVC AND CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
set(_dep_msvc_gen TRUE)
|
||||
endif ()
|
||||
|
||||
set(_configs_line -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
|
||||
if (_is_multi OR MSVC)
|
||||
if (_is_multi OR _dep_msvc_gen)
|
||||
if (P_ARGS_FORWARD_CONFIG)
|
||||
set(_configs_line -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
|
||||
elseif (ORCA_INCLUDE_DEBUG_INFO AND NOT DEP_DEBUG)
|
||||
@@ -174,7 +182,7 @@ function(orcaslicer_add_cmake_project projectname)
|
||||
set(_target_config "Release")
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
if (_dep_msvc_gen)
|
||||
set(_gen CMAKE_GENERATOR "${DEP_MSVC_GEN}" CMAKE_GENERATOR_PLATFORM "${DEP_PLATFORM}")
|
||||
else()
|
||||
set(_gen "")
|
||||
@@ -182,7 +190,7 @@ function(orcaslicer_add_cmake_project projectname)
|
||||
|
||||
if ($ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||
set(_build_j "") # assume environment will control --build parallel setting
|
||||
elseif(MSVC)
|
||||
elseif(_dep_msvc_gen)
|
||||
set(_build_j "/m")
|
||||
else()
|
||||
set(_build_j "-j${NPROC}")
|
||||
@@ -367,7 +375,6 @@ include(libnoise/libnoise.cmake)
|
||||
|
||||
include(Draco/Draco.cmake)
|
||||
|
||||
|
||||
# I *think* 1.1 is used for *just* md5 hashing?
|
||||
# 3.1 has everything in the right place, but the md5 funcs used are deprecated
|
||||
# a grep across the repo shows it is used for other things
|
||||
@@ -378,6 +385,16 @@ if(NOT OPENSSL_FOUND)
|
||||
set(OPENSSL_PKG dep_OpenSSL)
|
||||
endif()
|
||||
|
||||
include(FFMPEG/FFMPEG.cmake)
|
||||
include(Assimp/Assimp.cmake)
|
||||
|
||||
find_package(LibDataChannel QUIET)
|
||||
set(DATACHANNEL_PKG "")
|
||||
if (NOT LibDataChannel_FOUND)
|
||||
include(DataChannel/DataChannel.cmake)
|
||||
set(DATACHANNEL_PKG dep_DataChannel)
|
||||
endif()
|
||||
|
||||
# we don't want to load a "wrong" openssl when loading curl
|
||||
# so, just don't even bother
|
||||
# ...i think this is how it works? change if wrong
|
||||
@@ -448,6 +465,9 @@ set(_dep_list
|
||||
dep_libnoise
|
||||
dep_python3
|
||||
dep_wxInspector
|
||||
dep_FFMPEG
|
||||
dep_Assimp
|
||||
${DATACHANNEL_PKG}
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
|
||||
Vendored
+14
@@ -56,6 +56,18 @@ else()
|
||||
set(_curl_static ON)
|
||||
endif()
|
||||
|
||||
# curl 7.75's configure probes and code rely on C laxness cl allows but clang
|
||||
# errors on (implicit function declarations, int* vs u_long* in ioctlsocket),
|
||||
# which flips probe results and misconfigures nonblock.c into the AmigaOS
|
||||
# IoctlSocket branch. Relax both diagnostics so the probes behave like cl, and
|
||||
# pin the camel-case probes off since they only "pass" by implicit declaration.
|
||||
set(_curl_c_flags_line "")
|
||||
set(_curl_probe_overrides "")
|
||||
if (MSVC AND CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||
set(_curl_c_flags_line "-DCMAKE_C_FLAGS:STRING=-Wno-implicit-function-declaration -Wno-incompatible-pointer-types")
|
||||
set(_curl_probe_overrides -DHAVE_IOCTLSOCKET_CAMEL=0 -DHAVE_IOCTLSOCKET_CAMEL_FIONBIO=0)
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(CURL
|
||||
# GIT_REPOSITORY https://github.com/curl/curl.git
|
||||
# GIT_TAG curl-7_75_0
|
||||
@@ -69,6 +81,8 @@ orcaslicer_add_cmake_project(CURL
|
||||
-DBUILD_CURL_EXE:BOOL=OFF
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
-DCURL_STATICLIB=${_curl_static}
|
||||
"${_curl_c_flags_line}"
|
||||
${_curl_probe_overrides}
|
||||
${_curl_platform_flags}
|
||||
)
|
||||
|
||||
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
# libdatachannel is the native ICE/DTLS/SCTP/SRTP implementation used by the
|
||||
# GUI WebRTC camera controller. Keep the source revision fixed: the signaling
|
||||
# protocol is evolving independently of this transport dependency.
|
||||
orcaslicer_add_cmake_project(DataChannel
|
||||
DEPENDS ${OPENSSL_PKG}
|
||||
CMAKE_ARGS
|
||||
-DNO_EXAMPLES=ON
|
||||
-DNO_TESTS=ON
|
||||
-DNO_WEBSOCKET=ON
|
||||
-DNO_MEDIA=OFF
|
||||
-DUSE_NICE=OFF
|
||||
-DUSE_SYSTEM_SRTP=OFF
|
||||
-DUSE_SYSTEM_JUICE=OFF
|
||||
-DUSE_SYSTEM_USRSCTP=OFF
|
||||
-DOPENSSL_ROOT_DIR:PATH=${DESTDIR}
|
||||
-DOPENSSL_USE_STATIC_LIBS=ON
|
||||
GIT_REPOSITORY https://github.com/paullouisageneau/libdatachannel.git
|
||||
GIT_TAG v0.22.2
|
||||
GIT_SHALLOW ON
|
||||
GIT_SUBMODULES_RECURSE ON
|
||||
)
|
||||
Vendored
+15
@@ -7,5 +7,20 @@ orcaslicer_add_cmake_project(Eigen
|
||||
URL https://gitlab.com/libeigen/eigen/-/archive/5.0.1/eigen-5.0.1.zip
|
||||
URL_HASH SHA256=0dbb1f9e3aaad66f352c03227d8c983f6f0b49e0b07e71a7300f4abcc01aee12
|
||||
CMAKE_ARGS "${_eigen_extra_flags}"
|
||||
# Only the headers are consumed here. Everything below builds nothing we
|
||||
# use, and all three enable_language(Fortran): test/CMakeLists.txt:9,
|
||||
# lapack/CMakeLists.txt:6 and blas/testing/CMakeLists.txt:2. They default
|
||||
# to ON because the dependency configures as its own top-level project.
|
||||
#
|
||||
# Whether that probe is harmless depends on what CMake finds. The Visual
|
||||
# Studio generator supports no Fortran, so it finds nothing; clang-cl sits
|
||||
# next to the LLVM toolset's flang, which works. MSVC with Ninja finds
|
||||
# Strawberry Perl's MinGW gfortran instead, which the deps build already
|
||||
# requires for OpenSSL, and hands it the MSVC-style /machine:x64 that
|
||||
# MinGW's ld reads as a missing input file. The configure dies there and
|
||||
# takes the rest of the superbuild with it.
|
||||
-DEIGEN_BUILD_TESTING=OFF
|
||||
-DEIGEN_BUILD_BLAS=OFF
|
||||
-DEIGEN_BUILD_LAPACK=OFF
|
||||
DEPENDS dep_Boost dep_GMP dep_MPFR
|
||||
)
|
||||
|
||||
Vendored
+103
@@ -0,0 +1,103 @@
|
||||
set(_conf_cmd ./configure)
|
||||
|
||||
set(_ffmpeg_depends)
|
||||
set(_ffmpeg_configure_command ${_conf_cmd})
|
||||
if (TARGET dep_OpenSSL)
|
||||
set(_ffmpeg_depends DEPENDS dep_OpenSSL)
|
||||
set(_ffmpeg_configure_command
|
||||
${CMAKE_COMMAND} -E env
|
||||
"PKG_CONFIG_PATH=${DESTDIR}/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}"
|
||||
${_conf_cmd}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
set(_source_dir "${CMAKE_BINARY_DIR}/dep_FFMPEG-prefix/src/dep_FFMPEG")
|
||||
|
||||
set(PREBUILD_URL_arm64 "https://github.com/Noisyfox/FFmpeg-Builds-Orca/releases/download/autobuild-2026-07-17-14-28/ffmpeg-n7.0.3-31-g9b6ffd74b5-winarm64-orca-shared-7.0.zip")
|
||||
set(PREBUILD_HASH_arm64 "12f4140279f2f8469885e1b5b2e8be9d788882914c21523cacd56989f3548054")
|
||||
set(PREBUILD_URL_x64 "https://github.com/Noisyfox/FFmpeg-Builds-Orca/releases/download/autobuild-2026-07-17-14-28/ffmpeg-n7.0.3-31-g9b6ffd74b5-win64-orca-shared-7.0.zip")
|
||||
set(PREBUILD_HASH_x64 "e65916020ddb9ef84b2666dfbcbfc9b1d67f69d15b4a66db53754637bf2d498c")
|
||||
|
||||
ExternalProject_Add(dep_FFMPEG
|
||||
${_ffmpeg_depends}
|
||||
URL ${PREBUILD_URL_${DEPS_ARCH}}
|
||||
URL_HASH SHA256=${PREBUILD_HASH_${DEPS_ARCH}}
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/bin" "${DESTDIR}/bin"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/lib" "${DESTDIR}/lib"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${_source_dir}/include" "${DESTDIR}/include"
|
||||
)
|
||||
|
||||
else ()
|
||||
set(_openssl_cmd --enable-openssl)
|
||||
|
||||
if (APPLE)
|
||||
set(_minos_cmd
|
||||
"--extra-cflags=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
||||
"--extra-ldflags=-mmacosx-version-min=${DEP_OSX_TARGET}"
|
||||
)
|
||||
# Static FFmpeg: nothing to bundle into the .app, no rpath handling.
|
||||
# Disable the VideoToolbox/AudioToolbox HW-accel paths: the player decodes
|
||||
# in software (swscale), and the auto-detected HW objects would drag in
|
||||
# system frameworks that the static libs would then depend on.
|
||||
set(_link_cmd --enable-static --disable-shared --disable-videotoolbox --disable-audiotoolbox)
|
||||
if (IS_CROSS_COMPILE)
|
||||
set(_cross_cmd --enable-cross-compile)
|
||||
set(_pic_cmd --enable-pic)
|
||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
|
||||
set(_arch_cmd --arch=arm64)
|
||||
set(_cc_cmd "--cc=clang -arch arm64")
|
||||
else()
|
||||
set(_arch_cmd --arch=x86_64)
|
||||
set(_cc_cmd "--cc=clang -arch x86_64")
|
||||
endif()
|
||||
endif()
|
||||
else ()
|
||||
set(_link_cmd --enable-shared)
|
||||
endif ()
|
||||
|
||||
set(_build_j -j)
|
||||
if(DEFINED ENV{CMAKE_BUILD_PARALLEL_LEVEL})
|
||||
set(_build_j "-j$ENV{CMAKE_BUILD_PARALLEL_LEVEL}")
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(dep_FFMPEG
|
||||
${_ffmpeg_depends}
|
||||
URL https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n7.0.3.tar.gz
|
||||
URL_HASH SHA256=DEEDCABE339165214A3637DF4C86A507AEF0D793CF8774FF68735F4737E8DDBC
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/FFMPEG
|
||||
CONFIGURE_COMMAND ${_ffmpeg_configure_command}
|
||||
${_cross_cmd}
|
||||
${_pic_cmd}
|
||||
${_arch_cmd}
|
||||
${_cc_cmd}
|
||||
"--prefix=${DESTDIR}"
|
||||
${_link_cmd}
|
||||
${_minos_cmd}
|
||||
${_openssl_cmd}
|
||||
--disable-doc
|
||||
--enable-small
|
||||
--disable-outdevs
|
||||
--disable-filters
|
||||
--enable-filter=*null*,afade,*fifo,*format,*resample,aeval,allrgb,allyuv,atempo,pan,*bars,color,*key,crop,draw*,eq*,framerate,*_qsv,*_vaapi,*v4l2*,hw*,scale,volume,test*
|
||||
--disable-protocols
|
||||
--enable-protocol=file,fd,pipe,http,https,rtp,tcp,udp
|
||||
--disable-muxers
|
||||
--enable-muxer=rtp
|
||||
--disable-encoders
|
||||
--disable-decoders
|
||||
--enable-decoder=*aac*,h264*,mp3*,mjpeg,rv*
|
||||
--disable-demuxers
|
||||
--enable-demuxer=h264,mp3,mov,mpjpeg,rtsp,sdp
|
||||
--disable-zlib
|
||||
--disable-avdevice
|
||||
BUILD_IN_SOURCE ON
|
||||
BUILD_COMMAND make ${_build_j}
|
||||
INSTALL_COMMAND make install
|
||||
)
|
||||
|
||||
endif()
|
||||
Vendored
+43
@@ -1,3 +1,20 @@
|
||||
diff --git a/adm/cmake/occt_defs_flags.cmake b/adm/cmake/occt_defs_flags.cmake
|
||||
index 00000000..00000001 100644
|
||||
--- a/adm/cmake/occt_defs_flags.cmake
|
||||
+++ b/adm/cmake/occt_defs_flags.cmake
|
||||
@@ -134,7 +134,11 @@
|
||||
set (CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS}")
|
||||
endif()
|
||||
# Optimize size of binaries
|
||||
- set (CMAKE_SHARED_LINKER_FLAGS "-Wl,-s ${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
+ # clang-cl reports the Clang compiler ID, and OCCT builds shared on Windows,
|
||||
+ # where the MSVC-style linker gets this flag as an argument it does not know.
|
||||
+ if (NOT WIN32)
|
||||
+ set (CMAKE_SHARED_LINKER_FLAGS "-Wl,-s ${CMAKE_SHARED_LINKER_FLAGS}")
|
||||
+ endif()
|
||||
elseif(MINGW)
|
||||
add_definitions(-D_WIN32_WINNT=0x0601)
|
||||
# _WIN32_WINNT=0x0601 (use Windows 7 SDK)
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index d98acc0f..28eb8eb4 100644
|
||||
--- a/CMakeLists.txt
|
||||
@@ -168,6 +185,32 @@ index d98acc0f..28eb8eb4 100644
|
||||
endforeach()
|
||||
|
||||
if (BUILD_SAMPLES_QT)
|
||||
diff --git a/adm/cmake/occt_macros.cmake b/adm/cmake/occt_macros.cmake
|
||||
index 224c96b1..8c94a1c5 100644
|
||||
--- a/adm/cmake/occt_macros.cmake
|
||||
+++ b/adm/cmake/occt_macros.cmake
|
||||
@@ -608,7 +608,7 @@ macro (OCCT_INSERT_CODE_FOR_TARGET)
|
||||
install(CODE "if (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$\")
|
||||
set (OCCT_INSTALL_BIN_LETTER \"\")
|
||||
elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Rr][Ee][Ll][Ww][Ii][Tt][Hh][Dd][Ee][Bb][Ii][Nn][Ff][Oo])$\")
|
||||
- set (OCCT_INSTALL_BIN_LETTER \"i\")
|
||||
+ set (OCCT_INSTALL_BIN_LETTER \"\")
|
||||
elseif (\"\${CMAKE_INSTALL_CONFIG_NAME}\" MATCHES \"^([Dd][Ee][Bb][Uu][Gg])$\")
|
||||
set (OCCT_INSTALL_BIN_LETTER \"d\")
|
||||
endif()")
|
||||
diff --git a/adm/cmake/occt_toolkit.cmake b/adm/cmake/occt_toolkit.cmake
|
||||
index 550e0e2f..7ac1a3b8 100644
|
||||
--- a/adm/cmake/occt_toolkit.cmake
|
||||
+++ b/adm/cmake/occt_toolkit.cmake
|
||||
@@ -241,7 +241,7 @@
|
||||
else()
|
||||
set (aReleasePdbConf)
|
||||
endif()
|
||||
- install (FILES ${CMAKE_BINARY_DIR}/${OS_WITH_BIT}/${COMPILER}/bin\${OCCT_INSTALL_BIN_LETTER}/${PROJECT_NAME}.pdb
|
||||
+ install (FILES $<TARGET_PDB_FILE:${PROJECT_NAME}>
|
||||
CONFIGURATIONS Debug ${aReleasePdbConf} RelWithDebInfo
|
||||
DESTINATION "${INSTALL_DIR_BIN}\${OCCT_INSTALL_BIN_LETTER}")
|
||||
endif()
|
||||
diff --git a/src/Font/Font_FTFont.cxx b/src/Font/Font_FTFont.cxx
|
||||
index 5ae9899f..0a17372b 100644
|
||||
--- a/src/Font/Font_FTFont.cxx
|
||||
|
||||
Vendored
+8
@@ -1,3 +1,10 @@
|
||||
# clang-cl cannot emit IGESAppli_GeneralModule.cxx on ARM64
|
||||
# (llvm/llvm-project#62081). cl and clang-cl share an ABI.
|
||||
set(_occt_compiler_args "")
|
||||
if ("${DEPS_ARCH}" STREQUAL "arm64" AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||
set(_occt_compiler_args -DCMAKE_C_COMPILER:STRING=cl -DCMAKE_CXX_COMPILER:STRING=cl)
|
||||
endif ()
|
||||
|
||||
if(WIN32)
|
||||
set(library_build_type "Shared")
|
||||
else()
|
||||
@@ -31,6 +38,7 @@ orcaslicer_add_cmake_project(OCCT
|
||||
-DBUILD_MODULE_ModelingAlgorithms=OFF
|
||||
-DBUILD_MODULE_ModelingData=OFF
|
||||
-DBUILD_MODULE_Visualization=OFF
|
||||
${_occt_compiler_args}
|
||||
)
|
||||
|
||||
# add_dependencies(dep_OCCT ${FREETYPE_PKG})
|
||||
|
||||
Vendored
+8
@@ -10,6 +10,13 @@ else ()
|
||||
set(_options "")
|
||||
endif ()
|
||||
|
||||
# carotene is OpenCV's ARM NEON HAL. It uses M_PI without _USE_MATH_DEFINES
|
||||
# and does not compile with clang-cl.
|
||||
set(_disable_carotene "")
|
||||
if ("${DEPS_ARCH}" STREQUAL "arm64" AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||
set(_disable_carotene "-DWITH_CAROTENE=OFF")
|
||||
endif ()
|
||||
|
||||
if (IN_GIT_REPO)
|
||||
set(OpenCV_DIRECTORY_FLAG --directory ${BINARY_DIR_REL}/dep_OpenCV-prefix/src/dep_OpenCV)
|
||||
endif ()
|
||||
@@ -83,5 +90,6 @@ orcaslicer_add_cmake_project(OpenCV
|
||||
-DWITH_PROTOBUF=OFF
|
||||
-DWITH_WIN32UI=OFF
|
||||
-DHAVE_WIN32UI=FALSE
|
||||
${_disable_carotene}
|
||||
)
|
||||
|
||||
|
||||
Vendored
+14
-4
@@ -6,7 +6,7 @@ if(DEFINED OPENSSL_ARCH)
|
||||
set(_cross_arch ${OPENSSL_ARCH})
|
||||
else()
|
||||
if(WIN32)
|
||||
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64")
|
||||
if("${DEPS_ARCH}" STREQUAL "arm64")
|
||||
set(_cross_arch "VC-WIN64-ARM")
|
||||
else()
|
||||
set(_cross_arch "VC-WIN64A")
|
||||
@@ -17,10 +17,20 @@ else()
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(_conf_cmd perl Configure )
|
||||
set(_openssl_msvc_env CC=cl CXX=cl RC=rc CL=/FS)
|
||||
# OpenSSL's perl Configure honors the CC environment variable, but the
|
||||
# VC-WIN64A makefile only works with cl (an unquoted clang-cl path with
|
||||
# spaces, e.g. exported by CLion, silently produces no .obj files and the
|
||||
# lib step fails with LNK1181). Pin the upstream toolchain.
|
||||
# Keep rc.exe resolved from the MSVC developer environment as well. The
|
||||
# absolute Windows SDK path contains spaces and OpenSSL 1.1.1 writes it to
|
||||
# the generated nmake file without quoting, which skips .res generation.
|
||||
# /FS serializes access to OpenSSL's shared generated PDB when cl is
|
||||
# driven through nmake from a Ninja configure step.
|
||||
set(_conf_cmd ${CMAKE_COMMAND} -E env ${_openssl_msvc_env} perl Configure )
|
||||
set(_cross_comp_prefix_line "")
|
||||
set(_make_cmd nmake)
|
||||
set(_install_cmd nmake install_sw )
|
||||
set(_make_cmd ${CMAKE_COMMAND} -E env ${_openssl_msvc_env} nmake)
|
||||
set(_install_cmd ${CMAKE_COMMAND} -E env ${_openssl_msvc_env} nmake install_sw )
|
||||
else()
|
||||
if(APPLE)
|
||||
set(_conf_cmd export MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} && ./Configure -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET})
|
||||
|
||||
Vendored
+4
@@ -1,6 +1,10 @@
|
||||
if (APPLE)
|
||||
# Only disable NEON extension for Apple ARM builds, leave it enabled for Raspberry PI.
|
||||
set(_disable_neon_extension "-DPNG_ARM_NEON=off")
|
||||
elseif ("${DEPS_ARCH}" STREQUAL "arm64" AND CMAKE_CXX_COMPILER_ID STREQUAL Clang)
|
||||
# libpng's CMake ignores PNG_ARM_NEON on Windows ARM64 and skips the NEON
|
||||
# sources, but pngpriv.h enables NEON anyway.
|
||||
set(_disable_neon_extension "-DCMAKE_C_FLAGS=/DWIN32 /D_WINDOWS /DPNG_ARM_NEON_OPT=0")
|
||||
else ()
|
||||
set(_disable_neon_extension "")
|
||||
endif ()
|
||||
|
||||
Vendored
+9
-7
@@ -15,7 +15,13 @@ if(WIN32)
|
||||
# See https://github.com/python/cpython/issues/153438
|
||||
# Patch from https://github.com/python/cpython/pull/153608
|
||||
# This patch has not been merged to 3.12 yet so we need to apply it manually
|
||||
set(_patch_cmd git init && ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/01-windows-nuget.patch)
|
||||
#
|
||||
# Without core.autocrlf=false the patched find_python.bat comes out LF and
|
||||
# cmd.exe cannot find its goto labels.
|
||||
set(_patch_cmd git init
|
||||
&& ${GIT_EXECUTABLE} -c core.autocrlf=false apply --verbose
|
||||
--ignore-space-change --whitespace=fix
|
||||
${CMAKE_CURRENT_LIST_DIR}/01-windows-nuget.patch)
|
||||
|
||||
if(MSVC_VERSION EQUAL 1800)
|
||||
set(_python_platform_toolset v120)
|
||||
@@ -53,12 +59,9 @@ if(WIN32)
|
||||
set(_python_pcbuild_output_dir win32)
|
||||
endif()
|
||||
|
||||
# pybind11 undefines _DEBUG around Python.h so a debug build links the
|
||||
# release python3xx.lib; Py_DEBUG could not load release plugin modules.
|
||||
set(_python_pcbuild_config Release)
|
||||
set(_python_layout_debug OFF)
|
||||
if(DEFINED DEP_DEBUG AND DEP_DEBUG)
|
||||
set(_python_pcbuild_config Debug)
|
||||
set(_python_layout_debug ON)
|
||||
endif()
|
||||
|
||||
# CPython's PCbuild needs a 64-bit-hosted toolchain: find_msbuild.bat picks the
|
||||
# 32-bit Bin\MSBuild.exe, whose x86 cl.exe/link.exe run out of address space
|
||||
@@ -101,7 +104,6 @@ if(WIN32)
|
||||
-DPYTHON_BUILD_DIR=<SOURCE_DIR>/PCbuild/${_python_pcbuild_output_dir}
|
||||
-DPYTHON_DEST_DIR=${DESTDIR}/libpython
|
||||
-DPYTHON_LAYOUT_ARCH=${_python_layout_arch}
|
||||
-DPYTHON_DEBUG=${_python_layout_debug}
|
||||
-P ${CMAKE_CURRENT_LIST_DIR}/stage_windows.cmake
|
||||
)
|
||||
elseif(APPLE)
|
||||
|
||||
Vendored
-14
@@ -9,9 +9,6 @@ foreach(_var PYTHON_SOURCE_DIR PYTHON_BUILD_DIR PYTHON_DEST_DIR PYTHON_LAYOUT_AR
|
||||
endforeach()
|
||||
|
||||
set(_python_exe "${PYTHON_BUILD_DIR}/python.exe")
|
||||
if(PYTHON_DEBUG)
|
||||
set(_python_exe "${PYTHON_BUILD_DIR}/python_d.exe")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${_python_exe}")
|
||||
message(FATAL_ERROR "Built Python executable not found: ${_python_exe}")
|
||||
@@ -49,21 +46,10 @@ endif()
|
||||
set(_required_files
|
||||
"${PYTHON_DEST_DIR}/Lib/encodings/__init__.py"
|
||||
"${PYTHON_DEST_DIR}/include/Python.h"
|
||||
)
|
||||
|
||||
if(PYTHON_DEBUG)
|
||||
list(APPEND _required_files
|
||||
"${PYTHON_DEST_DIR}/python_d.exe"
|
||||
"${PYTHON_DEST_DIR}/python${_python_abi}_d.dll"
|
||||
"${PYTHON_DEST_DIR}/libs/python${_python_abi}_d.lib"
|
||||
)
|
||||
else()
|
||||
list(APPEND _required_files
|
||||
"${PYTHON_DEST_DIR}/python.exe"
|
||||
"${PYTHON_DEST_DIR}/python${_python_abi}.dll"
|
||||
"${PYTHON_DEST_DIR}/libs/python${_python_abi}.lib"
|
||||
)
|
||||
endif()
|
||||
|
||||
foreach(_required_file IN LISTS _required_files)
|
||||
if(NOT EXISTS "${_required_file}")
|
||||
|
||||
Vendored
+24
@@ -1,3 +1,26 @@
|
||||
# wxInspector finds wxWidgets through CMake's FindwxWidgets module, which only
|
||||
# searches lib/vc*_lib because _WX_TOOL is hardcoded to "vc". A superbuild driven
|
||||
# by clang-cl installs wxWidgets into lib/clang_x64_lib, so hand the module the
|
||||
# directory wxWidgets actually used, derived the same way wxWidgetsConfig.cmake
|
||||
# derives it.
|
||||
set(_wxinspector_wx_hints "")
|
||||
if (MSVC)
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
set(_wx_compiler_prefix "clang")
|
||||
else ()
|
||||
set(_wx_compiler_prefix "vc")
|
||||
endif ()
|
||||
set(_wx_arch_suffix "")
|
||||
if (CMAKE_GENERATOR_PLATFORM AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "Win32")
|
||||
string(TOLOWER "_${CMAKE_GENERATOR_PLATFORM}" _wx_arch_suffix)
|
||||
elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_wx_arch_suffix "_x64")
|
||||
endif ()
|
||||
set(_wxinspector_wx_hints
|
||||
"-DwxWidgets_ROOT_DIR=${DESTDIR}"
|
||||
"-DwxWidgets_LIB_DIR=${DESTDIR}/lib/${_wx_compiler_prefix}${_wx_arch_suffix}_lib")
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(
|
||||
wxInspector
|
||||
URL https://github.com/Noisyfox/wxInspector/archive/refs/tags/v1.0.0.zip
|
||||
@@ -6,6 +29,7 @@ orcaslicer_add_cmake_project(
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_CXX_FLAGS="-DwxDEBUG_LEVEL=0"
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
${_wxinspector_wx_hints}
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
|
||||
-28
@@ -1,28 +0,0 @@
|
||||
---
|
||||
build/cmake/wxWidgetsConfig.cmake.in | 10 +++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in
|
||||
index 1a83f36..70ad8a4 100644
|
||||
--- a/build/cmake/wxWidgetsConfig.cmake.in
|
||||
+++ b/build/cmake/wxWidgetsConfig.cmake.in
|
||||
@@ -58,7 +58,16 @@ if(WIN32_MSVC_NAMING)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
-include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||
+ if (CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(ARM64|arm64|aarch64)$")
|
||||
+ set(_wx_clang_msvc_lib_dir "vc_arm64_lib")
|
||||
+ else()
|
||||
+ set(_wx_clang_msvc_lib_dir "vc_x64_lib")
|
||||
+ endif()
|
||||
+ include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/${_wx_clang_msvc_lib_dir}/@PROJECT_NAME@Targets.cmake")
|
||||
+else()
|
||||
+ include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
+endif()
|
||||
|
||||
macro(wx_inherit_property source dest name)
|
||||
# property name without _<CONFIG>
|
||||
--
|
||||
2.43.0
|
||||
@@ -0,0 +1,29 @@
|
||||
diff --git a/src/osx/cocoa/colour.mm b/src/osx/cocoa/colour.mm
|
||||
index 31515d146f..86b33e94a2 100644
|
||||
--- a/src/osx/cocoa/colour.mm
|
||||
+++ b/src/osx/cocoa/colour.mm
|
||||
@@ -125,3 +125,3 @@
|
||||
wxOSXEffectiveAppearanceSetter helper;
|
||||
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
|
||||
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
|
||||
return [colRGBA redComponent];
|
||||
@@ -134,3 +134,3 @@
|
||||
wxOSXEffectiveAppearanceSetter helper;
|
||||
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
|
||||
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
|
||||
return [colRGBA greenComponent];
|
||||
@@ -143,3 +143,3 @@
|
||||
wxOSXEffectiveAppearanceSetter helper;
|
||||
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
|
||||
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
|
||||
return [colRGBA blueComponent];
|
||||
@@ -152,3 +152,3 @@
|
||||
wxOSXEffectiveAppearanceSetter helper;
|
||||
- if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] )
|
||||
+ if ( NSColor* colRGBA = [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] )
|
||||
return [colRGBA alphaComponent];
|
||||
@@ -160,3 +160,3 @@
|
||||
{
|
||||
- return [m_nsColour colorUsingColorSpaceName:NSCalibratedRGBColorSpace] != nil;
|
||||
+ return [m_nsColour colorUsingColorSpace:[NSColorSpace sRGBColorSpace]] != nil;
|
||||
}
|
||||
Vendored
+10
-1
@@ -21,14 +21,23 @@ else ()
|
||||
set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF")
|
||||
endif ()
|
||||
|
||||
set(_wx_patch_command "")
|
||||
if (APPLE)
|
||||
set(_wx_patch_command
|
||||
${GIT_EXECUTABLE} checkout -f -- src/osx/cocoa/colour.mm
|
||||
COMMAND ${GIT_EXECUTABLE} apply --verbose
|
||||
${CMAKE_CURRENT_LIST_DIR}/0001-macos-use-srgb-colour-components.patch
|
||||
)
|
||||
endif ()
|
||||
|
||||
orcaslicer_add_cmake_project(
|
||||
wxWidgets
|
||||
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
|
||||
GIT_TAG v3.3.2
|
||||
GIT_SHALLOW ON
|
||||
GIT_SUBMODULES 3rdparty/catch 3rdparty/pcre 3rdparty/libwebp
|
||||
PATCH_COMMAND ${_wx_patch_command}
|
||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
||||
PATCH_COMMAND git apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-Clang-CL-fix.patch
|
||||
CMAKE_ARGS
|
||||
-DwxBUILD_PRECOMP=ON
|
||||
${_wx_toolkit}
|
||||
|
||||
@@ -162,7 +162,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor
|
||||
rewind(fp);
|
||||
try{
|
||||
char solid_name[256];
|
||||
int res_solid = fscanf(fp, " solid %[^\n]", solid_name);
|
||||
int res_solid = fscanf(fp, " solid %255[^\n]", solid_name);
|
||||
if (res_solid == 1) {
|
||||
char* mw_position = strstr(solid_name, "MW");
|
||||
if (mw_position != NULL) {
|
||||
@@ -170,7 +170,7 @@ static bool stl_read(stl_file *stl, FILE *fp, int first_facet, bool first, Impor
|
||||
char version_str[16];
|
||||
char model_id_str[128];
|
||||
char country_code_str[16];
|
||||
int num_values = sscanf(mw_position + 3, "%s %s %s", version_str, model_id_str, country_code_str);
|
||||
int num_values = sscanf(mw_position + 3, "%15s %127s %15s", version_str, model_id_str, country_code_str);
|
||||
if (num_values == 3) {
|
||||
if (strcmp(version_str, "1.0") == 0) {
|
||||
model_id = model_id_str;
|
||||
|
||||
@@ -0,0 +1,508 @@
|
||||
# Filament IDs (`filament_id`)
|
||||
|
||||
`filament_id` identifies one **filament product**: one named spool product = one id, shared by
|
||||
all of that product's per-printer / per-nozzle variants, in every profile bundle that ships it.
|
||||
Devices use it to match a physical spool or tray to a filament preset. It is never per-color,
|
||||
per-printer, per-nozzle, or per-preset (per-preset identity is `setting_id`), and it is never
|
||||
per-bundle either — PolyLite PLA carries the same id whether the preset lives in the
|
||||
OrcaFilamentLibrary (OFL), Qidi, or Snapmaker bundle. The granularity is the name on the spool,
|
||||
not the brand behind it: `AAA PLA Lite` and `AAA PLA Pro` are two filaments with two ids, not
|
||||
variants of one.
|
||||
|
||||
**How it is generated:** an id is computed, never invented. `scripts/orca_id_tool.py`
|
||||
mints it as a deterministic hash of the product's identity — the triple
|
||||
`(filament_vendor, filament_type, filament name)`, where the filament name is the preset name
|
||||
with its `@...` variant suffix stripped — producing an 8-character `OF*` code that is the
|
||||
same for that product in every bundle, in every PR, on every machine. For example, Polymaker's
|
||||
PolyLite PLA presets (`PolyLite PLA @base`, `PolyLite PLA@Q2-Series`, …) resolve
|
||||
`filament_vendor` `Polymaker`, `filament_type` `PLA`, and filament name `PolyLite PLA`; hashing
|
||||
`filament_product/Polymaker/PLA/PolyLite PLA` yields `OF5CgdDq`, and that is the id the
|
||||
OrcaFilamentLibrary, OrcaArena, Qidi, and Snapmaker bundles all arrive at independently
|
||||
(derivation details in the Minting section).
|
||||
|
||||
**How it is used:** at runtime the id is the join key between hardware and profiles.
|
||||
When a printer reports what a tray holds (Bambu AMS, Qidi box, Creality CFS,
|
||||
Klipper, Snapmaker), OrcaSlicer matches the reported id against the filament presets
|
||||
compatible with that printer to select the right profile; other features — tray display
|
||||
names, support-material detection, vitrification warnings, multi-nozzle filament grouping —
|
||||
look up material properties by id alone. An id that changes is not forwarded anywhere: a
|
||||
tray or record still holding the old value falls back to matching by material type until the
|
||||
user re-selects the filament, so identity changes are made deliberately and rarely.
|
||||
|
||||
This page is the rule for authoring `filament_id` in system profiles
|
||||
(`resources/profiles/**`). CI enforces everything below; the short version is:
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Never write a `filament_id` value by hand.** A new filament gets its id from
|
||||
> `python scripts/orca_id_tool.py --generate`; one already in the tree has one — inherit it.
|
||||
|
||||
## The design, in two pieces
|
||||
|
||||
Because several consumers match **globally by id alone, first hit wins** (see the next
|
||||
section), any two materials sharing one id feed wrong data somewhere — a wrong tray name, a
|
||||
wrong support-material flag, a wrong nozzle grouping — and inside one printer a duplicated id
|
||||
makes AMS spool matching a coin toss. Hand-written ids produce such collisions constantly, so
|
||||
the system is built to make them impossible:
|
||||
|
||||
1. **Deterministic minting.** An id is a pure hash of the product's identity — no registry to
|
||||
maintain, no next-free-number ceremony, no way for two concurrent PRs to race for the same
|
||||
number, and no way to get it wrong by hand, because you never write it by hand.
|
||||
2. **A sanctioned snapshot.** The complete id landscape derived from the tree must equal
|
||||
`scripts/filament_id_snapshot.json` exactly, so every change to ids, claims (which bundles
|
||||
ship which id, and for which filament), or product identity surfaces as a reviewable diff to
|
||||
one file — the maintainer gate.
|
||||
|
||||
## Who consumes the id
|
||||
|
||||
The canonical consumer is tray-to-preset matching: a device reports a tray material id
|
||||
(`tray_info_idx`), and the shared matching pipeline (`PresetBundle::sync_ams_list` and
|
||||
friends) resolves it to a preset. The matcher is printer-scoped and first-match-wins:
|
||||
scanning only compatible root presets — system roots plus user-made custom filaments, which
|
||||
are user roots carrying their own `P*` ids; a preset derived from another resolves through
|
||||
its root and never matches directly — it picks the first one whose `filament_id` equals the
|
||||
tray's. On a miss it falls back by filament type: a system `Generic <type>` preset
|
||||
(matched by name, then by type similarity), else the slot's previous selection, else any compatible system generic or,
|
||||
failing that, any compatible system preset, else the slot is skipped — every fallback
|
||||
selection surfaces a user-visible notice.
|
||||
|
||||
Today only the Bambu AMS integration follows this pattern end to end — the device itself
|
||||
reports the id, `BBLPrinterAgent` translates it out of Bambu's catalog into ours, and the
|
||||
pipeline does all the matching. The other device integrations still synthesize a preset id
|
||||
client-side in their agents (by type, brand, or color lookups against the loaded presets)
|
||||
before the pipeline runs; they are intended to converge on the same pattern, with the
|
||||
device-reported tray material id flowing through the shared matcher.
|
||||
|
||||
| Ecosystem | Where the tray id comes from today |
|
||||
| --- | --- |
|
||||
| Bambu AMS | the device itself (RFID / user tray setting), in Bambu's own `GF*` catalog; `BBLPrinterAgent` rewrites it into our id before the matcher sees it (see [The Bambu catalog map](#the-bambu-catalog-map)) |
|
||||
| Qidi box | composed at runtime as `QD_<series>_<vendor>_<typeidx>` — vendor and type indices from the device's per-slot saved variables, the series digit inferred client-side from the printer model/name. No preset carries a `QD_*` value, so the slot currently resolves by filament type; mapping the composed id onto the filament's minted id belongs in the agent |
|
||||
| Creality CFS | runtime brand/type scoring returns the winning preset's id |
|
||||
| Klipper (AFC / Happy Hare) | runtime lookup by filament type |
|
||||
| Snapmaker | runtime color/vendor/type match |
|
||||
|
||||
Tray-to-preset matching is printer-scoped, but **several consumers match globally by id alone,
|
||||
first hit wins**: tray display names, `filament_is_support`, vitrification warnings, and
|
||||
multi-nozzle filament grouping in the slicing pipeline (`FilamentGroup::try_merge_filaments`
|
||||
merges plate slots sharing one `(filament_id, color)` pair, with matching
|
||||
extruder-printability, onto one nozzle group; the engine is implemented but no grouping path
|
||||
calls it yet).
|
||||
Two *different* materials sharing one id
|
||||
feed wrong data to those consumers even when the presets live in different vendors — so
|
||||
cross-material id sharing is never safe. Within one printer, duplicate ids break AMS matching:
|
||||
the matcher picks whichever preset loads first (it now logs an "Ambiguous AMS filament match"
|
||||
warning, but the pick is still arbitrary) and the tray-edit dialog, which lists one entry per
|
||||
id, hides the second preset entirely. The profile validator's `-f` check
|
||||
(`check_filament_subtypes` → `PresetBundle::check_duplicate_filament_subtypes`) rejects this
|
||||
per printer, and CI runs it tree-wide.
|
||||
|
||||
Two more consumer-side facts worth knowing:
|
||||
|
||||
- The machine-facing dialogs (AMS tray edit, AMS dry control, calibration history, extrusion
|
||||
calibration) offer the filaments a connected printer can use by the same compatibility rule
|
||||
the plater uses (an empty `compatible_printers` means *every* printer). Alias shadowing
|
||||
still applies: a vendor's same-name profile supersedes the library generic. That is what
|
||||
puts Orca Filament Library materials in those lists — deduplicated to one entry per
|
||||
`filament_id` in the AMS and calibration-history dialogs, while extrusion calibration
|
||||
deliberately lists every matching preset by full name.
|
||||
- The id is load-bearing at startup: an instantiated system filament (one marked
|
||||
`"instantiation": "true"` — see the structure rules) that resolves **no**
|
||||
`filament_id` anywhere in its `inherits` chain is a hard load error in the C++ loader
|
||||
(`Can not find filament_id for <name>`) that discards the entire vendor bundle (for the
|
||||
OrcaFilamentLibrary itself the failure is messier: library presets loaded before the
|
||||
failing one survive, and every vendor bundle whose filaments inherit from the library is
|
||||
then discarded for want of a base). CI's structure check catches this before it ships.
|
||||
|
||||
## Do I need a new id? The one-question test
|
||||
|
||||
> **Would a user consider this a different spool product than anything already in the tree?**
|
||||
|
||||
Different polymer, different sub-brand (Basic / Matte / Silk / HF), fiber-filled sibling, or a
|
||||
second selectable diameter → **new filament, new id**. The same spool tuned for another printer
|
||||
or nozzle → **join the existing filament** (keep its base name and inherit it; no id
|
||||
key needed). Tuning a generic material → **join the OrcaFilamentLibrary filament** (inherit
|
||||
`Generic X @System` and keep the `Generic X` base name; no id key needed).
|
||||
|
||||
| Situation | id |
|
||||
| --- | --- |
|
||||
| Per-printer / per-nozzle variant of an existing material | same id (inherit it) |
|
||||
| Sub-brand or product line (PLA vs PLA Matte vs PLA Silk vs PLA HF) | new id each |
|
||||
| Color | never a new id |
|
||||
| Second diameter of the same product (1.75 + 2.85) | sibling filament, new id |
|
||||
| "High-speed" tuned for a *different printer model* | same id (it is a printer variant) |
|
||||
| "High-speed" selectable *alongside* the normal preset on one printer | new name, so a new id (it is a product line) |
|
||||
|
||||
## Structure rules
|
||||
|
||||
1. **Every preset carries the id of its own product, wherever it gets it from.** The id is a
|
||||
function of the preset's own triple (rule 5), and `inherits` carries settings, never
|
||||
identity. So a preset may declare the key itself or inherit it from any ancestor — a
|
||||
`<Filament> @base` root, a real (instantiated) preset of the same filament, an
|
||||
OrcaFilamentLibrary preset — and CI checks one thing: the id it ends up with equals the
|
||||
mint of *its* triple. The usual shape is one `@base` root (`"instantiation": "false"`)
|
||||
declaring the key and the per-printer variants inheriting it; a filament may have several
|
||||
roots — Qidi's PolyLite PLA has four per-series roots (`PolyLite PLA@Q2-Series`,
|
||||
`@Q2C-Series`, `@X-Max 4-Series`, `@X-Plus 5-Series`) — which then all declare the identical
|
||||
id. A branded filament that borrows a generic's settings (`Flashforge ABS Basic @FF C5`
|
||||
inherits `Generic ABS @System`) declares its own id, because its triple is its own.
|
||||
2. **The filament name is the base name**: the preset name with everything from the first
|
||||
(optionally space-preceded) `@` stripped. `MyBrand PLA @Orca 3D Fuse1` and `MyBrand PLA@HS`
|
||||
are both the filament `MyBrand PLA`.
|
||||
3. **Within one filament, variants' `compatible_printers` are pairwise disjoint** — per printer,
|
||||
at most one compatible instantiated preset per id, or AMS matching turns ambiguous. The
|
||||
C++ validator's `-f` check enforces this, tree-wide in CI. Since one product carries one id
|
||||
and cannot be split onto two, this rule is the *only* remedy for such an ambiguity: narrow
|
||||
the `compatible_printers`, or retire the preset that duplicates another.
|
||||
4. **Generics belong to OrcaFilamentLibrary.** A vendor tuning a generic material inherits
|
||||
`Generic X @System`, keeps the `Generic X` base name (that alias is what hides the library
|
||||
preset on your printers, and it is what makes its triple — and so its id — the library's)
|
||||
and sets a non-empty `compatible_printers` — e.g. `Generic PLA @Sovol SV08 MAX` inherits
|
||||
`Generic PLA @System` and lists three Sovol nozzles. Renaming such a preset makes it a
|
||||
different product by rule 5, so it then needs its own id.
|
||||
5. **Ids follow the product identity.** The id is a pure function of the product triple
|
||||
`(filament_vendor, filament_type, filament name)`, so correcting any of them re-mints the id
|
||||
**by design**, applied by `--generate` (preview with `--dry-run`, confine with `--vendor`) and
|
||||
gated by the `--update-snapshot` diff; the exact sequence is in the FAQ. Nothing forwards
|
||||
the old value, so anything outside the tree that stored it — a device tray, a calibration
|
||||
record, a saved project — falls back to matching by filament type until the user re-selects
|
||||
the filament. Re-mint deliberately, and only to fix a genuinely wrong identity.
|
||||
(`renamed_from` still gates preset-*name* compatibility, as before.)
|
||||
|
||||
## Minting — nobody invents ids
|
||||
|
||||
New ids are deterministic, computed exactly like the `setting_id` precedent
|
||||
(the `setting_id` half of `scripts/orca_id_tool.py`):
|
||||
|
||||
```text
|
||||
FILAMENT_ID_NAMESPACE = uuid5(setting-id NAMESPACE, "filament_id")
|
||||
= c4d3ff49-4c32-5534-a3e3-00894157ab97
|
||||
filament_id = "OF" + base62_6( uuid5(FILAMENT_ID_NAMESPACE,
|
||||
"filament_product/<filament_vendor>/<filament_type>/<filament_name>") )
|
||||
```
|
||||
|
||||
`base62_6` is the low 6 base62 digits (alphabet `0-9A-Za-z`) of the UUID taken as a big-endian
|
||||
integer, most-significant digit first; with the `OF` prefix the full id is 8 chars, within the
|
||||
AMS length limit. The triple comes from the root preset's *flattened* config:
|
||||
`<filament_vendor>` is the filament
|
||||
**manufacturer** (`"Polymaker"`, or `"Generic"` for generics — never the printer brand),
|
||||
`<filament_type>` the material type, `<filament_name>` the root's base name; the two config
|
||||
values are inheritable list options and the first element counts.
|
||||
|
||||
Content-addressing on that triple is what makes the whole system converge. The key contains no
|
||||
bundle name, so the same product mints the same id in every bundle — moving a filament into
|
||||
OrcaFilamentLibrary never changes its id, and two vendors independently shipping the same
|
||||
product arrive at the same id without coordinating. `Polymaker/PLA/PolyLite PLA` mints
|
||||
`OF5CgdDq`, and that one id is declared by the OrcaFilamentLibrary, OrcaArena, Qidi, and
|
||||
Snapmaker bundles alike; the OFL generic `Generic/PLA/Generic PLA` mints `OFDSrzZ8`, claimed
|
||||
by 35 bundles — most by independent declarations converging on the same mint, the rest
|
||||
purely through inheritance from the OFL preset.
|
||||
|
||||
Nothing but the triple feeds the mint — not the rest of the tree, not the snapshot, not what
|
||||
another preset of the product happens to carry. Determined triple, determined id: one product
|
||||
carries one id and there is no second acceptable value for it, so any other value on a preset
|
||||
is a mismatch `--check` reports and `--generate` pulls back. Two *different* products whose
|
||||
triples mint the same base62 value would be a collision (a roughly 36-bit id space against a
|
||||
few thousand products); nothing salts past it: `--check` reports it naming both products,
|
||||
`--generate` refuses to write it, and the remedy is a rename so their triples differ. Where
|
||||
two presets of one product would be AMS-ambiguous on a printer, the fix is likewise in the
|
||||
profiles — make their `compatible_printers` disjoint (structure rule 3), retire the redundant
|
||||
preset, or, if they really are different products, give them different names so their triples
|
||||
differ. Never a second id for one triple.
|
||||
|
||||
Workflow for a new filament:
|
||||
|
||||
```bash
|
||||
# 1. Author the filament with NO filament_id key anywhere.
|
||||
python scripts/orca_id_tool.py --dry-run # 2. preview the ids — writes nothing
|
||||
python scripts/orca_id_tool.py --generate # 3. apply them to the profile file(s)
|
||||
python scripts/orca_id_tool.py --update-snapshot # 4. record the new claims in the snapshot
|
||||
python scripts/orca_id_tool.py --check # 5. validate the filament_id state
|
||||
python scripts/orca_extra_profile_check.py # 6. ...and everything else CI checks
|
||||
# 7. Commit the profile edits together with scripts/filament_id_snapshot.json, for review.
|
||||
```
|
||||
|
||||
`--generate` makes every filament's id equal the mint of its own
|
||||
`(filament_vendor, filament_type, filament name)` triple: it inserts one where an instantiated
|
||||
filament resolves none, and re-derives one that does not match. A preset that *inherits* a
|
||||
mismatching id is the one case left to the author — check 3b names it, and the fix is to inherit
|
||||
a preset of the same filament or to give the preset its own key. A declaration is left alone
|
||||
exactly when it already equals the one id its triple mints, and a collision (check 3d) is
|
||||
reported and left unwritten. The same run assigns
|
||||
`generate_preset_setting_id(vendor, type, name)` to every instantiated filament, process
|
||||
and machine preset of every vendor except BBL, which keeps its authoritative `G*` ids, strips
|
||||
`setting_id` from base profiles, and fixes the misspelled `settings_id` key — dropped, or, for
|
||||
BBL, whose ids have no formula to fall back on, restored under the correct name. It is idempotent and
|
||||
byte-preserving (indentation, BOM, and line endings intact, every edited file re-parsed to fail
|
||||
loudly), and a no-op on a tree that already passes `scripts/orca_extra_profile_check.py` — the
|
||||
check CI runs over both id kinds, of which `--check` is the `filament_id` half.
|
||||
|
||||
- `--filament-id` limits the run to `filament_id`.
|
||||
- `--setting-id` limits the run to `setting_id`. The two exclude each other; pass neither to
|
||||
write both.
|
||||
- `--vendor VENDOR` confines the run to that bundle; repeatable. The id is a function of the
|
||||
triple alone, so a narrowed run writes exactly what a full one would; `--check` reports
|
||||
whatever it left outside.
|
||||
- `--dry-run` reports what `--generate` would do and writes nothing; with no mode of its own it
|
||||
implies `--generate`, so `--dry-run --vendor <Vendor>` previews just that bundle.
|
||||
- `--profiles DIR` points the tooling at a different profile tree (default
|
||||
`resources/profiles`). `--check` and `--update-snapshot` read and write the sanctioned state of
|
||||
the tree they are given, so pointing them elsewhere needs `--snapshot PATH` for that tree too —
|
||||
`scripts/filament_id_snapshot.json` describes `resources/profiles` and no other tree.
|
||||
|
||||
**Identity fixes need no separate mode.** `--generate` re-derives an id that no longer matches its
|
||||
triple exactly the way it fills in a missing one, so a rename or a `filament_vendor` /
|
||||
`filament_type` correction is just: fix the config, run `--generate` (confine it with `--vendor`,
|
||||
preview it with `--dry-run`), then `--update-snapshot` and review the diff.
|
||||
|
||||
If you skip the tooling, CI fails and prints the remedy: the expected id for your filament and
|
||||
the instruction to run `python scripts/orca_id_tool.py --generate`; once the id is minted, the
|
||||
snapshot checks likewise point at `--update-snapshot` and tell you to commit the resulting
|
||||
diff.
|
||||
|
||||
## Reserved namespaces — never mint or hand-write into
|
||||
|
||||
A **reserved namespace** is an id space no system profile may declare, because an external
|
||||
catalog or a device protocol owns the values. None of them has an owning vendor: there is no
|
||||
bundle — not even the one whose printers use the catalog — that may write one into a profile.
|
||||
|
||||
| Space | Status | Rule |
|
||||
| --- | --- | --- |
|
||||
| `GF*` | Bambu AMS/RFID catalog | declarable by **nobody**, BBL included: Bambu's own ids live in the generated catalog map, never in a profile |
|
||||
| `QD_*` | Qidi device protocol | declarable by **nobody**, Qidi included: the box composes these ids at runtime and they are not preset ids |
|
||||
| `P` + 7 hex chars (case-insensitive), `"null"` | user-created custom filaments (`CreatePresetsDialog.cpp`) | never appears in system profiles |
|
||||
|
||||
The two device namespaces, in detail:
|
||||
|
||||
- **Bambu (`GF*`).** Bambu's device/RFID/cloud catalog is external and opaque, which is a
|
||||
reason to keep it out of the profiles rather than to let one bundle own it. Every BBL filament
|
||||
mints an `OF` id from its triple like every other vendor's, and the correspondence to Bambu's
|
||||
catalog ids lives in one generated file the app applies at the printer boundary — the next
|
||||
section. Nothing under `resources/profiles/**` carries a `GF*` id today and nothing can be
|
||||
exempted, so a `GF*` id appearing anywhere in the tree is a mistake, whoever wrote it.
|
||||
- **Qidi (`QD_*`).** `QD_*` is a device-*protocol* namespace, not a preset id space: the
|
||||
Qidi box path composes `QD_<series>_<vendor>_<typeidx>` ids at runtime (slot vendor and
|
||||
type indices reported by the device, the series digit inferred client-side from the printer
|
||||
model/name). Qidi presets carry ordinary minted `OF*` ids (generics share the OFL ids), so
|
||||
a composed id matches no preset and the slot falls back to filament type; translating it to
|
||||
the filament's id belongs in `QidiPrinterAgent`. The alternative — treating per-series
|
||||
protocol ids as preset ids — would put one product under five ids (`QIDI PLA Rapido` would
|
||||
be `QD_0_1_1` through `QD_4_1_1`), exactly the fragmentation the mint rule removes.
|
||||
|
||||
## The Bambu catalog map
|
||||
|
||||
Bambu's printers, its AMS and its cloud know only Bambu's own catalog ids. Our profiles carry
|
||||
minted `OF` ids like every other vendor's, so one generated file records the correspondence and
|
||||
the app applies it **only where an id crosses to or from a Bambu printer**.
|
||||
|
||||
**The file** is `resources/printers/bambu_filament_ids.json` — a header plus one row per
|
||||
catalogued product, keyed by our id:
|
||||
|
||||
```json
|
||||
{
|
||||
"source": "https://github.com/bambulab/BambuStudio",
|
||||
"bambustudio_commit": "66e405477",
|
||||
"generated": "2026-09-04",
|
||||
"filaments": {
|
||||
"OFhuaUQB": { "bambu_id": "GFB00", "vendor": "Bambu Lab", "type": "ABS", "name": "Bambu ABS" }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
It ships in `resources/printers/`, next to `filaments_blacklist.json` — deliberately not in
|
||||
`resources/profiles/`, where the loader reads every top-level `.json` as a vendor index. It
|
||||
holds 100 rows today, one per product BambuStudio ships, and the correspondence is
|
||||
one-to-one in both directions.
|
||||
|
||||
**It is generated, never hand-edited.** `python scripts/update_bambu_filament_ids.py` rebuilds
|
||||
it from **BambuStudio's own shipped BBL bundle** — a sparse shallow clone of upstream `master`,
|
||||
or `--bambustudio-dir <a BambuStudio resources/profiles checkout>`. Our BBL bundle is a fork of
|
||||
Bambu's, tuned and extended independently, so it is not the source of truth for Bambu's ids.
|
||||
A row's key is the id the product's `(filament_vendor, filament_type, filament name)` triple
|
||||
mints — the same id any bundle of ours carries for it, since the id is a function of the triple
|
||||
alone; the row of a product we do not ship sits inert until some bundle claims that triple —
|
||||
`OFdyfQvU` / `GFG03`, "Bambu PETG Matte", is such a row today.
|
||||
|
||||
**Regenerate it in the same commit as every BBL profile sync**, and read the drift report it
|
||||
prints. Two lines, both informational, neither blocking the write:
|
||||
|
||||
```text
|
||||
upstream ships 'Bambu PETG Matte' (Bambu Lab/PETG), we ship nothing with that identity
|
||||
Orca BBL filaments with no row: 135 Orca-only product(s)
|
||||
```
|
||||
|
||||
The first names each upstream product our BBL bundle has no same-identity filament for —
|
||||
sometimes a genuinely missing product, sometimes a name drift a follow-up rename would
|
||||
converge. The second counts our own BBL filaments that matched no row: 135 of 234 today, of
|
||||
which 109 send an `OF` id on the wire and 26 already rode `OF` ids inherited from the
|
||||
OrcaFilamentLibrary. **135 is the number to expect at every regeneration** — 109 was the
|
||||
one-off size of the transition and stopped being computable from the tree once the BBL bundle
|
||||
was re-minted, so do not "fix" the report to print it.
|
||||
|
||||
**Check 6** lives in `check_filament_ids`, so profile CI runs it alongside the other five. It
|
||||
holds the file to its contract: it parses, carries `source` / `bambustudio_commit` /
|
||||
`generated`, keys only `OF`-format ids, maps each Bambu id at most once, and — for every row
|
||||
whose key the tree actually claims — agrees with the tree on that id's `(vendor, type, name)`
|
||||
triple. A row for a product we do not ship is skipped, not an error. The remedy it prints is
|
||||
always the same: regenerate the map and commit the diff for review.
|
||||
|
||||
### The runtime rule: swap on hit
|
||||
|
||||
Outbound, our id with a row becomes Bambu's; inbound, Bambu's id with a row becomes ours.
|
||||
Everything else is forwarded untouched — an `OF` id with no row, a Bambu id for a product we do
|
||||
not ship, a `P`-hex user id, `"null"`, an empty string. Translation is confined to the
|
||||
boundary: nothing between the boundaries ever holds a Bambu id.
|
||||
|
||||
Translating one value is a capability of the printer agent: `IPrinterAgent` declares
|
||||
`to_orca_filament_id` and `from_orca_filament_id` returning their argument, and `BBLPrinterAgent`
|
||||
overrides them with Bambu's map, so an agent whose printers already speak our ids inherits the
|
||||
identity default and translates nothing. `NetworkAgent` forwards both to the live agent, so the
|
||||
comparison sites below reach them through `wxGetApp().getAgent()` and leave an id untranslated
|
||||
while no agent is live. Whole documents are Bambu's business alone:
|
||||
`BBLPrinterAgent::to_orca_payload` and `from_orca_payload` rewrite every string under
|
||||
`tray_info_idx`, `filament_id` or `filamentId` at any depth; text that does not parse, or carries
|
||||
none of those keys, comes back unchanged. The map is loaded once, lazily; a missing or malformed
|
||||
file degrades to identity with a log line rather than failing.
|
||||
|
||||
| Boundary | Where it translates |
|
||||
| --- | --- |
|
||||
| Everything the agent sends | `BBLPrinterAgent::send_message` and `send_message_to_printer`, plus `PrintParams::ams_mapping_info` in `dispatch_start` — the funnel all five `start_*` calls share |
|
||||
| Everything the agent receives | `set_on_message_fn` and `set_on_local_message_fn` wrap their callback, so `MachineObject::parse_json` and everything downstream see our ids only |
|
||||
| 3mf export | `Plater::export_3mf` writes Bambu's ids into `slice_info.config`, gated on `preset_bundle.is_bbl_vendor()` — the printer reads that file and knows only its own catalog, and no other vendor's export is affected. The CLI has its own writer in `OrcaSlicer.cpp`; it does the same, gated on the `printer_model` prefix that already decides `Print::is_BBL_printer()` for that run |
|
||||
| Project ingest | `Plater::priv::load_files` reverse-maps the project's `filament_ids` before the bundle ingests them, so a project saved by an older Orca or by BambuStudio still resolves the same presets |
|
||||
| Prints from the printer's SD card | `SelectMachineDialog::update_print_required_data` reverse-maps each plate's slice-info ids as it adopts the plates, so the AMS mapping dialog pairs them with trays |
|
||||
| Bambu-specific comparisons | `CalibUtils.cpp`, `DeviceManager.cpp`, `DeviceCore/DevFilaSystem.cpp`, `DeviceCore/DevFilaBlackList.cpp`, `SelectMachine.cpp`, `AMSDryControl.cpp`, `AMSMaterialsSetting.cpp`, `PresetComboBoxes.cpp`, `ColorDecomposeSupport.cpp` |
|
||||
|
||||
That last row is the rule to follow when a new Bambu-specific behaviour is added: **translate
|
||||
the value you are about to compare, never the table you compare it against.** The shipped data
|
||||
those sites read is Bambu's and stays verbatim — `white_fila_ids` in
|
||||
`resources/printers/filaments_blacklist.json`, the calibration id lists in
|
||||
`resources/printers/<model>.json`, `fila_id` in
|
||||
`resources/profiles/BBL/filament/filaments_color_codes.json`.
|
||||
|
||||
`tests/slic3rutils/test_bambu_filament_ids.cpp` covers the lookups, the payload rewrite and the
|
||||
Bambu-specific rules. `orcaslicer_discover_tests` registers a Catch2 tag as a CTest **label**,
|
||||
not as part of the test name, so `-R` matches nothing here and the filter is `-L`:
|
||||
|
||||
```bash
|
||||
ctest --test-dir <build dir>/tests/slic3rutils -L BambuFilamentIds
|
||||
```
|
||||
|
||||
### Three places the map deliberately does not reach
|
||||
|
||||
The map and its lookups live in the GUI library, which libslic3r cannot link against and which a
|
||||
GUI-less build does not link at all. Three consequences are known and documented; none is worth
|
||||
pulling the map down into libslic3r for.
|
||||
|
||||
- **The support display type in `PrintConfig.cpp`.** `DynamicPrintConfig::get_filament_type`
|
||||
picks `PLA-S` / `Sup.PLA` and `PA-S` / `Sup.PA` for a support filament by testing
|
||||
`filament_id` against `GFS00` and `GFS01`, and otherwise falls back on `filament_type` — a
|
||||
fallback that returns those same two pairs for `"PLA"` and `"PA"`. Bambu Support W inherits
|
||||
`fdm_filament_pla` and Bambu Support G inherits `fdm_filament_pa`, so with their `OF` ids the
|
||||
fallback produces exactly what the id branches produced. (The only config that ever carries a
|
||||
singular `filament_id` key is the AMS tray config built in `Plater.cpp`, and that one never
|
||||
reaches this function.) These two lines are the only mention of a Bambu id anywhere in
|
||||
libslic3r, and they need no change.
|
||||
- **Config imports.** `PresetBundle::import_presets` (File ▸ Import ▸ Import Configs, for
|
||||
`.json` / `.zip` / `.orca_filament` / `.orca_printer` / `.orca_bundle`) and
|
||||
`PresetBundle::load_config_file` (the CLI's `--load-settings` of a G-code file with an
|
||||
embedded config) both parse inside libslic3r, out of the GUI's reach, so a Bambu id carried
|
||||
in such a file lands on the imported preset untranslated. The effect is bounded: that preset
|
||||
does not auto-match an AMS tray while the stale id is live, and the id does not survive
|
||||
being saved — `Preset::save` writes a `filament_id` key only for a preset whose `inherits` is
|
||||
empty, and on the next load an inheriting preset takes its parent's id. A known gap, and not
|
||||
a regression: nothing forwarded a stale id before either.
|
||||
- **A build configured without the GUI.** `target_link_libraries(OrcaSlicer libslic3r_gui)` sits
|
||||
inside `if (SLIC3R_GUI)` in `src/CMakeLists.txt`, so the lookups are not linkable when the GUI
|
||||
is off. The CLI's 3mf writer in `src/OrcaSlicer.cpp` therefore guards its translation with
|
||||
`#ifdef SLIC3R_GUI`, and a 3mf that such a build slices for a Bambu printer carries our `OF`
|
||||
ids in `slice_info.config` rather than Bambu's. Every shipped build enables the GUI, so this
|
||||
reaches only a purpose-built GUI-less binary.
|
||||
|
||||
One more thing worth recording before it is rediscovered:
|
||||
`SyncAmsInfoDialog::update_print_required_data` is a structural twin of the SD-card function
|
||||
above and carries no translation. It has no callers today and its plate list is only ever read
|
||||
for `printer_model_id`, so it is not a live gap — but wiring it up without adding the reverse
|
||||
map would silently reproduce the bug.
|
||||
|
||||
## How CI enforces this
|
||||
|
||||
Profile CI (`check_profiles.yml`) runs `check_filament_ids()` tree-wide via
|
||||
`scripts/orca_extra_profile_check.py`. Its ground truth is
|
||||
**`scripts/filament_id_snapshot.json` — the sanctioned state**: the id state derived from the
|
||||
tree must equal the snapshot exactly, in both directions. Any change to the id landscape
|
||||
therefore surfaces as a diff to that file, and **that snapshot diff is what maintainers review
|
||||
and gate in a PR**. Never edit the snapshot by hand — `--update-snapshot` regenerates it
|
||||
deterministically (running it twice changes nothing). The snapshot holds one map, `ids`: each
|
||||
entry is the product the id is minted from (`filament_vendor`, `filament_type`, `name`) and the
|
||||
`filaments` claiming it (`Vendor/Filament`), and it sanctions *state*, never exceptions: no check
|
||||
consults it to excuse a preset from a rule, and there is no grandfather list of any kind.
|
||||
|
||||
The checks, in brief:
|
||||
|
||||
- **Format** — every id occurring in the tree is `OF` + 6 base62 chars. No exceptions: not a
|
||||
snapshot entry, not BBL.
|
||||
- **Snapshot equality** — tree claims == snapshot claims **and** each id's declared triple ==
|
||||
its snapshot entry, both directions: any `filament_vendor`/`filament_type`/name change
|
||||
surfaces as a snapshot diff.
|
||||
- **Identity** — the id is a function of the triple alone. A declared `OF*` id must equal the
|
||||
one id its declarer's own triple mints, with no second acceptable value; the id an
|
||||
instantiated preset *inherits* must equal the mint of *its* own triple, however it inherits
|
||||
it (a root, a real filament, a library preset — structure rule 1); and every instantiated
|
||||
system filament must resolve an effective id at all (recall: an id-less one is a hard load
|
||||
error in C++ that discards the whole vendor bundle); and no two products mint one id (a
|
||||
base62 collision, resolved by renaming one of them). The errors print the expected id.
|
||||
- **Reserved namespaces** — `GF*`, `QD_*`, `P<7-hex>` or `"null"` claimed by any vendor,
|
||||
BBL and Qidi included.
|
||||
- **Triple integrity** — every declarer must resolve a non-empty `filament_vendor` and
|
||||
`filament_type` (generics use `"Generic"`), and all declarers of one filament within a
|
||||
bundle must agree on the triple.
|
||||
- **Bambu catalog map** — `resources/printers/bambu_filament_ids.json` parses, carries its
|
||||
`source` / `bambustudio_commit` / `generated` header, keys only `OF`-format ids, maps each
|
||||
Bambu id at most once, and agrees with the tree on the triple of every row whose key the
|
||||
tree claims. See [The Bambu catalog map](#the-bambu-catalog-map); the remedy is always to
|
||||
regenerate, never to hand-edit.
|
||||
|
||||
A profile that declares a **reserved-namespace** id — `GF*`, `QD_*` or `P<7-hex>`, whatever
|
||||
its vendor — cannot pass the format check, so `--update-snapshot` refuses to sanction it
|
||||
rather than hide the mistake until CI. For a Bambu-cataloged product, the catalog map is where
|
||||
the correspondence belongs. Any other new sharing via a *declared* id is caught by the identity
|
||||
check; sharing through inheritance carries no declaration to check and surfaces only as a new
|
||||
claim in the snapshot diff — which is exactly why that diff is the gate.
|
||||
|
||||
`orca_extra_profile_check.py` separately holds every declared id to the AMS 8-character limit,
|
||||
tree-wide and for every vendor alike, scoped to the presets a vendor's index actually
|
||||
references (a file the index never loads cannot break AMS matching).
|
||||
|
||||
Complementing the Python checks, CI also runs the C++ profile validator with `-f`
|
||||
(`check_filament_subtypes`): it loads the bundle exactly as the app does and flags any printer
|
||||
for which two or more compatible filament presets share one `filament_id` — the runtime-shaped
|
||||
ambiguity check behind structure rule 3.
|
||||
|
||||
## FAQ
|
||||
|
||||
- **A new color of an existing product?** Never a new id — colors are not filaments.
|
||||
- **A second diameter (1.75 mm and 2.85 mm) of the same product?** A sibling filament with its
|
||||
own id: two diameters are separately selectable spool products.
|
||||
- **A high-speed tune of an existing material for another printer model?** Same filament:
|
||||
keep the base name and inherit its root; no id key needed.
|
||||
- **A tuned generic ("our profile for Generic PLA")?** Inherit `Generic PLA @System`, keep the
|
||||
`Generic PLA` base name, set `compatible_printers`; no id key needed.
|
||||
- **A branded filament that borrows a generic's settings?** Fine — inherit `Generic X @System`
|
||||
(or any real filament) for the settings and declare the id of your own filament; run
|
||||
`python scripts/orca_id_tool.py --generate` to mint it. Inheritance never changes the id.
|
||||
- **I need to fix a filament's `filament_vendor` or `filament_type`.** Fix the config, run
|
||||
`--generate --vendor <Vendor>` (preview with `--dry-run`), then `--update-snapshot`, and commit
|
||||
the profile and snapshot diffs together. The id re-derives from the corrected identity, and
|
||||
nothing forwards the old value, so a tray or record still holding it falls back to matching by
|
||||
filament type.
|
||||
- **I need to rename a filament.** Rename the presets (adding `renamed_from`, which keeps the
|
||||
preset *name* resolving), then `--generate --vendor <Vendor>` (preview with `--dry-run`), then
|
||||
`--update-snapshot`. The id follows the new filament name; as with any identity fix, the old id
|
||||
is not forwarded.
|
||||
- **Can I reuse a `QD_*` id for a Qidi profile?** No — nobody can. It is the device protocol's
|
||||
own id space: the box composes those values at runtime and no preset carries one. Author
|
||||
Qidi filaments like any other vendor's.
|
||||
- **CI says my filament needs an id.** Run `python scripts/orca_id_tool.py --generate`, then
|
||||
`--update-snapshot`, and commit both diffs. Do not type an id by hand.
|
||||
|
||||
For general profile authoring, see the profile development guide on the
|
||||
[OrcaSlicer wiki](https://www.orcaslicer.com/wiki).
|
||||
@@ -0,0 +1,402 @@
|
||||
# System Preset Cache — High Level Design
|
||||
|
||||
## Why it exists
|
||||
|
||||
OrcaSlicer ships tens of thousands of system preset JSON files. Every launch used to
|
||||
parse all of them: read each vendor profile, walk its machine, process and filament
|
||||
sub-files, resolve inheritance, and build the preset collections from scratch. That
|
||||
parse dominated startup, and it produced the same result every time, because system
|
||||
presets only change when the app is updated or a profile update is installed.
|
||||
|
||||
The preset cache replaces that parse with a read. Each vendor's presets are serialized
|
||||
once — at build time, in CI — into a single binary file the app reads in one pass. The
|
||||
read replaces the file walk and the JSON parsing, which is where the time went;
|
||||
resolving inheritance and registering the presets still runs at load, through the same
|
||||
code the JSON path uses, so the result is the parse's result without the parse.
|
||||
|
||||
The cache is **only ever an optimization**. Every rule below exists to guarantee that a
|
||||
cache is either provably equivalent to parsing the JSONs, or rejected. There is no
|
||||
"mostly right" cache.
|
||||
|
||||
## The unit is one vendor
|
||||
|
||||
A cache covers exactly one vendor. `BBL.opc` sits beside `BBL.json` and holds
|
||||
everything `BBL.json` and the `BBL/` sub-file tree would have produced.
|
||||
|
||||
Per-vendor granularity is what makes the system practical:
|
||||
|
||||
- A vendor whose profile is bumped invalidates only its own cache. The other 60-odd
|
||||
vendors keep theirs — even when the bumped vendor is the shared Orca filament
|
||||
library everyone else inherits from.
|
||||
- The setup wizard, which loads vendors one at a time, gets the same speedup as
|
||||
startup without a second code path.
|
||||
- A vendor with no cache, or a broken one, costs only that vendor a parse.
|
||||
|
||||
A cache holds *system* presets only. User presets, project settings and modified
|
||||
presets are never serialized — they have their own storage and their own lifecycle.
|
||||
|
||||
## Where the files live
|
||||
|
||||
| Location | Contents on a shipped build | Role |
|
||||
|---|---|---|
|
||||
| `resources/profiles/` | `<vendor>.opc` alone — the profile and its preset JSONs both pruned | What the app ships with; what installing copies from, and the only thing it is read for |
|
||||
| `<data_dir>/system/` | `<vendor>.opc` alone, or `<vendor>.json` + `<vendor>/` after an update | What the user has installed |
|
||||
| `<data_dir>/system/` (dev build) | `<vendor>.json` + `<vendor>/` + `<vendor>.opc` written at runtime | A developer tree caches as it parses |
|
||||
| `<data_dir>/cache/wizard_profile_data.json` | The wizard's derived vendor catalog plus the stamps it was built from | Written and read by the setup wizard only; never shipped (see "The wizard's profile-data cache") |
|
||||
|
||||
Two forms of the same vendor therefore exist, and the system's central rule is that
|
||||
**a vendor's cache is the whole of it**. Where a cache ships or is installed, no profile
|
||||
and no preset JSONs sit beside it: the cache carries the presets, the vendor profile,
|
||||
and the version stamp that says which release it came from. A vendor is "installed" if
|
||||
either form is present *and usable*, and its installed version is read from whichever
|
||||
form a load would serve.
|
||||
|
||||
What stays beside the caches in `resources/profiles/` is everything that is not a
|
||||
preset: each vendor's directory of printer thumbnails, cover images, bed models and
|
||||
hotend meshes, which are read from disk by path and were never part of the cache. Files
|
||||
that are not vendors at all, `blacklist.json` chief among them, are untouched.
|
||||
|
||||
The alternative — shipping both and treating the cache as a sidecar — was rejected. It
|
||||
doubles the installed size, and it creates a class of bug where the two disagree and
|
||||
the app's behavior depends on which one a given code path happened to read.
|
||||
|
||||
## What a cache file is
|
||||
|
||||
A fixed-size header followed by one binary stream.
|
||||
|
||||
The header carries a magic number, the cache format version, the payload size and a
|
||||
CRC32 of the payload. It exists so that a truncated download, a half-written file or a
|
||||
file from an entirely different program is rejected in microseconds, before anything
|
||||
tries to interpret it.
|
||||
|
||||
The payload opens with the stamps that decide whether the cache may be used at all —
|
||||
format version, vendor name, vendor version — then a dictionary, and then the vendor's
|
||||
data: its vendor profile, three lists of preset entries (process, filament, machine),
|
||||
and the count of errors the original parse hit.
|
||||
|
||||
Each entry is one preset **in source form**: what its JSON sub-file states and nothing
|
||||
that resolving it derives — the preset's own config diff, the name of the preset it
|
||||
inherits, and the parse metadata (name, sub-path, description, instantiation, setting
|
||||
and filament ids, renames). Non-instantiated base presets are stored too; the children
|
||||
that inherit from them cannot resolve without them.
|
||||
|
||||
**The payload names its own keys.** The dictionary holds the distinct `opt_key`s the
|
||||
file uses, the `ConfigOptionType` each was written as, and the distinct enum *value
|
||||
names*; an option in an entry's config is then a `uint16` index into that dictionary
|
||||
plus its value. Names are written once per file rather than once per occurrence, and a
|
||||
reader resolves the dictionary against this build's `print_config_def` once, after
|
||||
which reading an option is a vector index.
|
||||
|
||||
This is what makes the cache survive config-schema drift. The alternative — keying an
|
||||
option by its `serialization_key_ordinal`, the position `ConfigDef::add` assigns by
|
||||
declaration order at static init — cannot: inserting one option into the middle of
|
||||
`PrintConfig.cpp` shifts every later ordinal, and the lookup on the way back in then
|
||||
*succeeds on the wrong option*, silently, wherever the two share a type. Because a
|
||||
name-keyed payload instead drops the individual options this build cannot place, the
|
||||
file as a whole stays readable, and there is no schema fingerprint — no checksum over
|
||||
the option schema that would reject every cache on every release. An option this build
|
||||
no longer defines, or now defines with a different type, gets exactly what it gets from
|
||||
a JSON profile: read, dropped, and the rest of the preset loads.
|
||||
|
||||
The ordinal-keyed cereal hooks in `PrintConfig.hpp` are untouched — they are also the
|
||||
undo/redo wire format, where the process cannot change underneath them. The cache has
|
||||
its own serialization in `PresetCacheFormat.{hpp,cpp}`.
|
||||
|
||||
Three deliberate choices in the layout:
|
||||
|
||||
- **Stamps come first**, so the question "what version is this vendor installed at?"
|
||||
can be answered by reading the first kilobyte. The updater asks that question for
|
||||
every vendor on every launch; reading tens of megabytes to answer it would give back
|
||||
the startup time the cache saved. The dictionary sits behind them, ahead of the
|
||||
entries, so a reader that does go on resolves it once and then indexes.
|
||||
- **Nothing inherited is baked in.** A filament preset that inherits from the shared
|
||||
library is stored as its own diff plus its parent's name, and the parent is looked up
|
||||
when the entry is installed, against whatever library is loaded then. A cache
|
||||
therefore carries no other vendor's values, and no other vendor's update — the
|
||||
library's included — can make it stale.
|
||||
- **Nothing derived is stored.** Default presets, flattened configs, aliases and
|
||||
lookup maps are all reconstructed at load by the same code the JSON path runs, and
|
||||
state that path never fills (obsolete-preset lists) is not stored either. This keeps
|
||||
the cache a record of the vendor's data, not a memory image of the program's state.
|
||||
|
||||
## When a cache may be used
|
||||
|
||||
A cache is accepted only if every gate below passes. Any failure means "parse the
|
||||
JSONs instead" — never a hard error, never a partial load.
|
||||
|
||||
**1. Integrity.** Magic number, a declared body size that is exactly the rest of the
|
||||
file, CRC32 over the payload. The size is checked against the file's real length before
|
||||
anything is allocated on the strength of it, so an eight-byte field in an unauthenticated
|
||||
file cannot ask for a gigabyte.
|
||||
|
||||
**2. Cache format version.** A single integer bumped by hand whenever the binary layout
|
||||
changes in a way nothing else would catch: reordering or retyping a hand-written
|
||||
serialized field, or changing what the cache's own stamps mean. Config-schema drift is
|
||||
explicitly *not* such a change — the dictionary handles it — so this no longer moves
|
||||
every release.
|
||||
|
||||
**3. Vendor identity and version.** The cache names the vendor it holds and the profile
|
||||
version it was built from. It is accepted only if that version is at least as new as
|
||||
the profile now on disk. Where no profile sits beside the cache — the shipped,
|
||||
cache-only form — the comparison is skipped, because nothing on disk can be newer than
|
||||
a cache that is the installation.
|
||||
|
||||
**4. Every entry installs.** Entries are installed as they are read, and an entry that
|
||||
cannot be — typically one that inherits a parent the currently loaded filament library
|
||||
no longer provides — rejects the whole cache, never just the entry. A partial vendor is
|
||||
not a vendor.
|
||||
|
||||
There is deliberately no stamp for the shared filament library. A cache stores its
|
||||
filaments' inheritance by name and resolves it at load, so a library update changes
|
||||
what a cache load *produces*, never whether the cache is *valid* — the same file yields
|
||||
the updated result. This matters most on a shipped build, where a vendor is its cache
|
||||
and nothing else: a profile update that delivered only the library would otherwise have
|
||||
stranded every other vendor with a cache it invalidated and no JSONs to fall back on.
|
||||
|
||||
A vendor profile with no parsable version is never cached and never served from a
|
||||
cache. There would be no way to tell later whether the cache had gone stale, and a
|
||||
cache nothing can invalidate is worse than no cache.
|
||||
|
||||
## How a vendor is loaded
|
||||
|
||||
Vendors load in a fixed order, because filament inheritance crosses exactly one
|
||||
boundary: any vendor's filament may inherit from the shared Orca filament library,
|
||||
and nothing else reaches across vendors. The library therefore goes first, alone;
|
||||
every other vendor follows in parallel, resolving against it; and the results are
|
||||
merged in a stable order:
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
lib["1 · OrcaFilamentLibrary<br/>loaded first, synchronously"] --> par["2 · every other vendor in parallel,<br/>each into its own bundle, filaments<br/>resolving against the loaded library"] --> merge["3 · bundles merged into one,<br/>sequentially, in stable vendor order"]
|
||||
```
|
||||
|
||||
Whether a vendor comes from its cache or from a parse changes nothing in that
|
||||
order — both produce the same bundle, so cached and parsed vendors mix freely in
|
||||
one startup.
|
||||
|
||||
**A vendor is loaded from where it is installed and nowhere else.** For startup that
|
||||
is `<data_dir>/system/`; resources reaches the app by being *installed* into that
|
||||
directory first, never by being loaded from. (The setup wizard is the one caller with
|
||||
a different notion of "where": it also shows vendors the user has not installed, and
|
||||
loads those from `resources/profiles` — see "The wizard's profile-data cache".) There
|
||||
is one lookup tier and one parse source:
|
||||
|
||||
```
|
||||
load vendor V from <data_dir>/system:
|
||||
system/V.opc passes CACHE_VERSION + size + CRC + vendor name + version gate?
|
||||
yes -> serve from it
|
||||
no -> parse system/V.json, then write system/V.opc back
|
||||
```
|
||||
|
||||
The same decision drawn out — "the gates" are the four acceptance checks above:
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
start["load vendor V from a directory dir<br/>— normally <data_dir>/system/"]
|
||||
start --> stamp["installed version = version of dir/V.json<br/>— or ∞ with no profile there,<br/>the cache then being the installation"]
|
||||
stamp --> g1{"dir/V.opc<br/>passes all four gates?"}
|
||||
g1 -- "yes" --> hit(["served from the<br/>installed cache"])
|
||||
g1 -- "no" --> pd["parse the JSONs in dir"]
|
||||
pd --> ver{"profile version<br/>parsable?"}
|
||||
ver -- "yes" --> save(["loaded; dir/V.opc written back —<br/>the next load takes the top path"])
|
||||
ver -- "no" --> raw(["loaded, never cached"])
|
||||
```
|
||||
|
||||
A second tier into `resources/profiles/` used to sit between those two, and a parse
|
||||
fallback to the same place behind them. Both existed only because an installed cache
|
||||
died on every app upgrade, when the schema fingerprint rejected it; with the fingerprint
|
||||
gone there is nothing for them to rescue. They also had a cost: on a developer tree the
|
||||
shipped cache answered first, so the profile in `<data_dir>/system/` was never parsed
|
||||
and its cache was never written back.
|
||||
|
||||
Serving from a cache is not a memory-image restore. The entries are deserialized and
|
||||
then installed one by one — inheritance resolved against the presets installed before
|
||||
them and the currently loaded filament library, configs flattened onto the collection
|
||||
defaults, validated and registered — by the same function the JSON path calls straight
|
||||
after parsing a sub-file. The two paths share everything below the parse, which is what
|
||||
makes a cache-loaded bundle indistinguishable from a JSON-loaded one by construction
|
||||
rather than by test coverage. Installation also rebuilds each preset's file path from
|
||||
the local data directory, so a shipped cache never carries the generating machine's
|
||||
paths.
|
||||
|
||||
App upgrades work because a cache normally survives one. Only a deliberate
|
||||
`CACHE_VERSION` bump makes an installed cache unreadable, and that is handled at
|
||||
install time rather than at load: a vendor whose cache this build cannot read counts
|
||||
as **not installed**, so the updater lays down a working copy on the next launch (see
|
||||
below). A vendor that still has its profile JSONs beside the cache is simply parsed
|
||||
and re-cached.
|
||||
|
||||
If a parse does happen and the vendor's profile carries a version, the app writes the
|
||||
cache back beside where it looked for the vendor. That is how a developer build warms
|
||||
itself up on second launch, and how a vendor delivered by a profile update becomes
|
||||
cached without waiting for the next release.
|
||||
|
||||
## The wizard's profile-data cache
|
||||
|
||||
The setup wizard's printer and filament pages want every vendor in one bundle — the
|
||||
installed ones *and* the shipped ones the user has not installed yet, because the
|
||||
wizard is where installing is chosen. Its set therefore spans two directories:
|
||||
`<data_dir>/system/` for installed vendors (shadowing resources on a name collision),
|
||||
`resources/profiles` for the rest, each vendor loaded from its own directory.
|
||||
|
||||
What the wizard actually consumes from that bundle is one derived JSON — the model /
|
||||
machine / filament / process catalog its web pages render — and that JSON is a pure
|
||||
function of the vendor set: each vendor's name and version, in load order. A profile
|
||||
change requires a version bump, so name and version determine a vendor's content
|
||||
wherever its copy sits; which directory served it is deliberately **not** stamped,
|
||||
and installing or removing a copy at an unchanged version leaves the cache valid. So
|
||||
the wizard caches the *derived JSON*, not another form of the inputs:
|
||||
`<data_dir>/cache/wizard_profile_data.json` holds the stamp list and the catalog. On
|
||||
open, the wizard computes the current stamps (one version peek per vendor) and, when
|
||||
they match, serves the catalog from the file — no bundle built, no preset installed.
|
||||
Caching bundle inputs instead was tried and measured: rebuilding the bundle from
|
||||
per-vendor caches costs ~2 s of preset installation whatever feeds it, so only
|
||||
skipping the rebuild entirely wins.
|
||||
|
||||
Any change to the set — a vendor added, removed or updated, or its cache-only
|
||||
`.opc` replaced by a newer one — changes the stamps and retires the whole file;
|
||||
the wizard then rebuilds the bundle vendor by vendor (per-vendor caches serving where
|
||||
they cover) and writes the catalog back. Selections, region and per-open decorations
|
||||
are applied downstream of the cache either way, so a served catalog is
|
||||
indistinguishable from a rebuilt one. Nothing ships this file and the updater never
|
||||
touches it; it is a locally written artifact, re-derived whenever stale, written
|
||||
through a temp file and rename so half a cache is never readable.
|
||||
|
||||
The cache lives under `<data_dir>/cache/`, not beside the vendors: everything that
|
||||
scans `<data_dir>/system/` treats any `.opc` there as a vendor, so a non-vendor
|
||||
cache file must not sit in that directory. Relatedly, the stamp reader is hardened:
|
||||
`read_cache_stamps` validates the cache version before reading anything
|
||||
variable-length and bounds the stamp strings' lengths, so a reader pointed at a
|
||||
foreign or damaged `.opc` rejects it cleanly instead of aborting on a garbage
|
||||
64-bit allocation.
|
||||
|
||||
## How a vendor is installed
|
||||
|
||||
Installing copies from `resources/profiles/` into `<data_dir>/system/`. A shipped build
|
||||
offers only a cache and a source tree only JSONs, but a partially-generated tree can
|
||||
have both, at different versions, so the installer picks the form that ships at the
|
||||
**newer version** and installs only that one:
|
||||
|
||||
- Cache newer or equal, and readable → copy the `.opc`, verify the *copy* is one this
|
||||
build can read, and only then delete any profile and vendor directory a previous
|
||||
install left behind, so nothing can shadow it.
|
||||
- Profile newer, or the cache unreadable or absent → copy the profile and the vendor's
|
||||
preset JSONs exactly as the app did before caches existed, and delete any stale `.opc`
|
||||
once the profile is safely in place.
|
||||
|
||||
One vendor that cannot be installed is one vendor missing, not a reason to leave the
|
||||
rest uninstalled: the installer skips it, records the failure, and carries on with the
|
||||
batch. A vendor whose cache arrives unreadable falls back to installing its profile,
|
||||
which is decided by reading the copy rather than by the kilobyte peek that chose the
|
||||
form.
|
||||
|
||||
**"Installed" means present and usable.** Where the cache is the whole of a vendor's
|
||||
installation, a `.opc` this build cannot read is not an installation — counted as one,
|
||||
the vendor would be stranded with nothing to load and the updater would never repair
|
||||
it. The installed version is likewise whichever form a load would actually serve: the
|
||||
cache's stamp while it covers the profile beside it, the profile's own version once it
|
||||
does not.
|
||||
|
||||
The result is that only one form of a vendor is ever present, and it is the newest one
|
||||
the build has. This matters most for the update check, which compares what is installed
|
||||
against what installing *would* lay down: if those two disagreed about which form
|
||||
counts, a vendor could reinstall on every launch forever, or silently never update.
|
||||
|
||||
Profile updates delivered over the air always arrive as JSONs, and they win — an
|
||||
updated vendor's real profile lands in the data directory, the installed cache beside it
|
||||
is older and gets rejected, and the vendor is parsed and re-cached. An update that touches only
|
||||
the filament library needs nothing more: every other vendor's cache stays valid and
|
||||
simply resolves against the new library on its next load.
|
||||
|
||||
## How the caches are produced
|
||||
|
||||
Cache generation is a build step, not something a user ever runs.
|
||||
|
||||
One script per platform does the whole job, and CI calls it once on each. It builds a
|
||||
small dev-utility that loads a profiles directory exactly as the app would, with cache
|
||||
writing enabled, dropping a `<vendor>.opc` beside every vendor profile it parses; then
|
||||
it copies those caches into each packaged application it was pointed at and deletes
|
||||
every preset JSON they replace — the vendor's own profile included. Only a vendor that
|
||||
actually has a cache is pruned, so a vendor the generator skipped keeps its JSONs and is
|
||||
simply parsed at startup.
|
||||
|
||||
Caches are generated into the checkout's own `resources/profiles`, because that is what
|
||||
cpack re-installs from when it builds the NSIS installer — so that directory is also a
|
||||
prune target in CI. Pruning it deletes the checkout's preset JSONs, which is a packaging
|
||||
step, not something a build should do to a working tree by surprise: the Windows script
|
||||
refuses that target unless given `--prune-source`, and CI passes it.
|
||||
|
||||
Generation runs after the build, in the same job, so the caches ship with a build that
|
||||
can read them.
|
||||
|
||||
The flatpak differs only in where the script is called from. Nothing outside
|
||||
flatpak-builder ever builds it, so there is no packaged tree for the workflow to point
|
||||
the script at afterwards: the manifest runs it as a build step instead, against the
|
||||
profiles the install has already copied into `/app`.
|
||||
|
||||
## Behavior when things go wrong
|
||||
|
||||
The system is designed so that no cache problem is fatal:
|
||||
|
||||
- **Corrupt, truncated or foreign file** — rejected at the header, vendor parsed. A
|
||||
cache is written to a temp file beside its target and moved into place, so a write
|
||||
that dies partway leaves the previous cache intact rather than a truncated one.
|
||||
- **An option this build no longer has, or now types differently** — that option alone
|
||||
is dropped, exactly as a JSON profile's would be. The preset and the file load.
|
||||
- **Cache from a build with a different cache layout** — rejected on `CACHE_VERSION`.
|
||||
A vendor with JSONs beside it is parsed and re-cached; a cache-only vendor reads as
|
||||
not installed and the updater reinstalls it.
|
||||
- **Stale cache** — rejected on the vendor version stamp, vendor parsed and re-cached.
|
||||
- **Failure part-way through loading** — a deserialization error, or any entry that
|
||||
fails to install — rejects the whole cache, and the bundle is reset to a clean state
|
||||
before falling back, so a half-loaded cache can never leak into the parsed result.
|
||||
- **A vendor that can be neither read nor parsed** — logged, and left out. The setup
|
||||
wizard drops that vendor from its list and opens with the rest; startup records the
|
||||
error alongside the vendors that did load. One broken vendor never takes the app down.
|
||||
|
||||
The one genuine limit: on a shipped build a vendor is its cache and nothing else, so a
|
||||
rejected cache has nothing to fall back to for that vendor. This is by design — the
|
||||
alternative is shipping every preset twice — and it is why the acceptance gates are
|
||||
conservative and why CI generates the caches with the same build that ships them. The
|
||||
recovery path is a profile update, which delivers real JSONs.
|
||||
|
||||
It also means nothing may quietly assume a `<vendor>.json` exists. Discovery, version
|
||||
checks and the update decision all read whichever form is present, and a code path that
|
||||
enumerates only `*.json` will find no vendors at all in a packaged build.
|
||||
|
||||
## Maintenance rules
|
||||
|
||||
- **Adding, removing, retyping or reordering a config option** needs nothing. The
|
||||
payload names its keys and its enum values, so an option a cache carries and this
|
||||
build does not is dropped; one this build has and the cache does not is simply
|
||||
absent, as it would be from a JSON that predates it.
|
||||
- **Changing a hand-written `serialize()`** — `VendorProfile` or its nested types — or
|
||||
the `CachedPreset` field list — written and read by `visit_entry` in
|
||||
`PresetCacheFormat.cpp`, one list for the save, the load and the name peek alike — or
|
||||
the cache's own layout or stamps, requires bumping `CACHE_VERSION` by hand.
|
||||
- **The dictionary indexes with a `uint16`**, so `print_config_def` may hold at most
|
||||
65535 options and one cache at most 65535 distinct enum value names.
|
||||
`CacheDictionary::save` throws past that, which surfaces when CI generates the
|
||||
caches rather than on a user's machine.
|
||||
- **Bumping `CACHE_VERSION` is safe without a resources fallback** because
|
||||
`is_vendor_installed` means *present and usable*: cache-only vendors read as not
|
||||
installed after a bump, and the updater reinstalls them from resources.
|
||||
- **Bumping a vendor profile's version** invalidates that vendor's cache and nothing
|
||||
else — the filament library's included. Other vendors' caches resolve against the
|
||||
new library the next time they load.
|
||||
- **Caches are never committed.** They are build artifacts, generated per build,
|
||||
ignored by git.
|
||||
|
||||
## Where this lives in the tree
|
||||
|
||||
| Area | Files |
|
||||
|---|---|
|
||||
| Everything about the bytes on disk — the dictionary, one config's wire format, the file framing and stamps, entry serialization, `VendorCacheFile` save/load/peeks | `src/libslic3r/PresetCacheFormat.{hpp,cpp}` |
|
||||
| Serve-or-parse decision, installing cache entries into a bundle, cache write-back | `src/libslic3r/PresetBundle.{hpp,cpp}` |
|
||||
| Vendor profile serialization | `src/libslic3r/Preset.hpp` |
|
||||
| Vendor discovery, installed/shipped versions, installation | `src/libslic3r/utils.cpp` (declared in `Utils.hpp`) |
|
||||
| Update and reinstall decisions | `src/slic3r/Utils/PresetUpdater.cpp` |
|
||||
| Setup wizard and printer-selection dialog | `src/slic3r/GUI/ConfigWizard.cpp`, `src/slic3r/GUI/WebGuideDialog.cpp` |
|
||||
| Generator tool | `src/dev-utils/generate_system_cache.cpp` |
|
||||
| Build and packaging script | `scripts/build_preset_cache.{sh,bat}` |
|
||||
| Tests | `tests/libslic3r/test_vendor_cache.cpp` |
|
||||
@@ -1,111 +0,0 @@
|
||||
# Move `wxInspectable` into `DPIAware` — Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Move `wxInspector::wxInspectable` from individual leaf classes into the common `DPIAware<P>` template so every DPIAware widget is automatically inspectable and gets the inspector keyboard shortcut.
|
||||
|
||||
**Architecture:** `DPIAware<P>` gains `wxInspector::wxInspectable` as a second base class and calls `SetupInspectorAccelerator(this)` in its constructor. `DPIDialog` and `MainFrame` drop their now-redundant `wxInspectable` inheritance and `SetupInspectorAccelerator` calls.
|
||||
|
||||
**Tech Stack:** C++17, wxWidgets, wxInspector
|
||||
|
||||
## Global Constraints
|
||||
|
||||
- Build with `D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe`
|
||||
- Use `--config RelWithDebInfo` for all builds
|
||||
- Cross-platform: must compile on Windows, macOS, and Linux
|
||||
- Match existing code style: PascalCase classes, `#pragma once`
|
||||
- Do NOT commit files under `.superpowers/`
|
||||
- Do NOT commit `task.md`
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Move `wxInspectable` and `SetupInspectorAccelerator` into `DPIAware<P>`
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/slic3r/GUI/GUI_Utils.hpp:92` (DPIAware template — add wxInspectable base + SetupInspectorAccelerator call)
|
||||
- Modify: `src/slic3r/GUI/GUI_Utils.hpp:276` (DPIDialog — drop wxInspectable + SetupInspectorAccelerator)
|
||||
- Modify: `src/slic3r/GUI/MainFrame.hpp:96` (MainFrame — drop wxInspectable)
|
||||
- Modify: `src/slic3r/GUI/MainFrame.cpp:304` (MainFrame constructor — drop SetupInspectorAccelerator)
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: Nothing (standalone refactor)
|
||||
- Produces: All DPIAware widgets automatically inherit `wxInspector::wxInspectable` and get Ctrl+Shift+I accelerator
|
||||
|
||||
- [ ] **Step 1: Add `wxInspectable` to `DPIAware<P>` and call `SetupInspectorAccelerator`**
|
||||
|
||||
In `src/slic3r/GUI/GUI_Utils.hpp`, line 92, change the base class:
|
||||
|
||||
```cpp
|
||||
// Before:
|
||||
template<class P> class DPIAware : public P
|
||||
// After:
|
||||
template<class P> class DPIAware : public P, public wxInspector::wxInspectable
|
||||
```
|
||||
|
||||
In the constructor body of `DPIAware<P>`, after `this->CenterOnParent();` (currently line 110), add:
|
||||
|
||||
```cpp
|
||||
SetupInspectorAccelerator(this);
|
||||
```
|
||||
|
||||
(`<wx/inspector/inspector.h>` is already included at line 23.)
|
||||
|
||||
- [ ] **Step 2: Remove redundant `wxInspectable` and `SetupInspectorAccelerator` from `DPIDialog`**
|
||||
|
||||
In `src/slic3r/GUI/GUI_Utils.hpp`, line 276, change:
|
||||
|
||||
```cpp
|
||||
// Before:
|
||||
class DPIDialog : public DPIAware<wxDialog>, public wxInspector::wxInspectable
|
||||
// After:
|
||||
class DPIDialog : public DPIAware<wxDialog>
|
||||
```
|
||||
|
||||
In the `DPIDialog` constructor body, remove the `SetupInspectorAccelerator(this);` line (currently line 286). The rest of the constructor stays.
|
||||
|
||||
- [ ] **Step 3: Remove redundant `wxInspectable` from `MainFrame`**
|
||||
|
||||
In `src/slic3r/GUI/MainFrame.hpp`, line 96, change:
|
||||
|
||||
```cpp
|
||||
// Before:
|
||||
class MainFrame : public DPIFrame, public wxInspector::wxInspectable
|
||||
// After:
|
||||
class MainFrame : public DPIFrame
|
||||
```
|
||||
|
||||
`MainFrame` now gets `wxInspectable` through `DPIFrame` → `DPIAware<wxFrame>`.
|
||||
|
||||
- [ ] **Step 4: Remove redundant `SetupInspectorAccelerator` from `MainFrame` constructor**
|
||||
|
||||
In `src/slic3r/GUI/MainFrame.cpp`, line 304, remove the line:
|
||||
|
||||
```cpp
|
||||
SetupInspectorAccelerator(this);
|
||||
```
|
||||
|
||||
It is now called automatically by the `DPIAware<wxFrame>` constructor.
|
||||
|
||||
- [ ] **Step 5: Build to verify compilation**
|
||||
|
||||
```powershell
|
||||
$cmakePath = "D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"
|
||||
& $cmakePath --build . --config RelWithDebInfo --target ALL_BUILD -- -m
|
||||
```
|
||||
|
||||
Expected: Build succeeds with zero new errors or warnings.
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add src/slic3r/GUI/GUI_Utils.hpp src/slic3r/GUI/MainFrame.hpp src/slic3r/GUI/MainFrame.cpp
|
||||
git commit -m "refactor: move wxInspectable and SetupInspectorAccelerator into DPIAware
|
||||
|
||||
DPIAware<P> now inherits wxInspector::wxInspectable and calls
|
||||
SetupInspectorAccelerator in its constructor, making all DPIAware
|
||||
widgets automatically appear in the inspector tree with the
|
||||
Ctrl+Shift+I shortcut. Remove redundant wxInspectable inheritance
|
||||
and SetupInspectorAccelerator calls from DPIDialog and MainFrame.
|
||||
|
||||
Co-Authored-By: Claude <noreply@anthropic.com>"
|
||||
```
|
||||
@@ -1,753 +0,0 @@
|
||||
# wxInspector Plugins for OrcaSlicer — Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Build two wxInspector plugins (DPIAware + CustomWidgets) that expose OrcaSlicer custom control properties in the inspector's property grid.
|
||||
|
||||
**Architecture:** Two plugins in a shared folder under `src/slic3r/Utils/wxInspectorPlugins/`. DPIAwarePlugin uses `dynamic_cast<DPIFrame*>/<DPIDialog*>` for detection; CustomWidgetsPlugin uses per-type `dynamic_cast`. Both registered as static singletons via a single inline function in `Registration.hpp`, called from `MainFrame` constructor.
|
||||
|
||||
**Tech Stack:** C++17, wxWidgets, wxInspector plugin API (`wx/inspector/plugin.h`, `wx/inspector/inspector.h`), OrcaSlicer custom widget headers
|
||||
|
||||
## Global Constraints
|
||||
|
||||
- Plugins placed under `src/slic3r/Utils/wxInspectorPlugins/`
|
||||
- Build with `D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe`
|
||||
- Minimal source changes: only trivial (one-line) getters/setters added to existing classes
|
||||
- Cross-platform: must compile on Windows, macOS, and Linux
|
||||
- Match existing code style: PascalCase classes, snake_case functions, `#pragma once`
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Add getters/setters to existing Orca widget headers
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/slic3r/GUI/GUI_Utils.hpp` (DPIAware template — add 4 methods)
|
||||
- Modify: `src/slic3r/GUI/Widgets/Button.hpp` (add 3 getters)
|
||||
- Modify: `src/slic3r/GUI/Widgets/CheckBox.hpp` (add 1 getter)
|
||||
- Modify: `src/slic3r/GUI/Widgets/TextInput.hpp` (add 1 getter)
|
||||
- Modify: `src/slic3r/GUI/Widgets/LabeledStaticBox.hpp` (add 4 getter declarations)
|
||||
- Modify: `src/slic3r/GUI/Widgets/LabeledStaticBox.cpp` (add 4 getter implementations)
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: Nothing (prerequisite for all other tasks)
|
||||
- Produces:
|
||||
- `DPIAware<P>::set_scale_factor(float)`, `DPIAware<P>::set_prev_scale_factor(float)`, `DPIAware<P>::set_em_unit(int)`, `DPIAware<P>::force_rescale() const`
|
||||
- `Button::GetStyle()`, `Button::GetType()`, `Button::IsSelected()`
|
||||
- `CheckBox::IsHalfChecked()`
|
||||
- `TextInput::GetCornerRadius()`
|
||||
- `LabeledStaticBox::GetCornerRadius()`, `LabeledStaticBox::GetBorderWidth()`, `LabeledStaticBox::GetBorderColor()`, `LabeledStaticBox::GetScale()`
|
||||
|
||||
- [ ] **Step 1: Add DPIAware setters/getter in GUI_Utils.hpp**
|
||||
|
||||
After line 184 (`float prev_scale_factor() const { return m_prev_scale_factor; }`), add:
|
||||
|
||||
```cpp
|
||||
void set_scale_factor(float v) { m_scale_factor = v; }
|
||||
void set_prev_scale_factor(float v) { m_prev_scale_factor = v; }
|
||||
void set_em_unit(int v) { m_em_unit = v; }
|
||||
bool force_rescale() const { return m_force_rescale; }
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Add Button getters in Button.hpp**
|
||||
|
||||
After line 79 (`void SetSelected(bool selected = true) { m_selected = selected; }`), add:
|
||||
|
||||
```cpp
|
||||
ButtonStyle GetStyle() const { return m_style; }
|
||||
ButtonType GetType() const { return m_type; }
|
||||
bool IsSelected() const { return m_selected; }
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Add CheckBox getter in CheckBox.hpp**
|
||||
|
||||
After line 16 (`void SetHalfChecked(bool value = true);`), add:
|
||||
|
||||
```cpp
|
||||
bool IsHalfChecked() const { return m_half_checked; }
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Add TextInput getter in TextInput.hpp**
|
||||
|
||||
After line 44 (`void SetCornerRadius(double radius);`), add:
|
||||
|
||||
```cpp
|
||||
int GetCornerRadius() const { return static_cast<int>(radius); }
|
||||
```
|
||||
|
||||
(Note: `radius` is inherited from `StaticBox` which has it as a protected `double` member.)
|
||||
|
||||
- [ ] **Step 5: Add LabeledStaticBox getter declarations in LabeledStaticBox.hpp**
|
||||
|
||||
After line 46 (`bool Enable(bool enable) override;`), add:
|
||||
|
||||
```cpp
|
||||
int GetCornerRadius() const { return m_radius; }
|
||||
int GetBorderWidth() const { return m_border_width; }
|
||||
StateColor GetBorderColor() const { return border_color; }
|
||||
float GetScale() const { return m_scale; }
|
||||
```
|
||||
|
||||
(Note: all of `m_radius`, `m_border_width`, `border_color`, `m_scale` are protected members, accessible to inline methods.)
|
||||
|
||||
- [ ] **Step 6: Commit**
|
||||
|
||||
```bash
|
||||
git add src/slic3r/GUI/GUI_Utils.hpp src/slic3r/GUI/Widgets/Button.hpp src/slic3r/GUI/Widgets/CheckBox.hpp src/slic3r/GUI/Widgets/TextInput.hpp src/slic3r/GUI/Widgets/LabeledStaticBox.hpp
|
||||
git commit -m "feat: add getters/setters for wxInspector plugin access
|
||||
|
||||
Add minimal public accessors to DPIAware (set_scale_factor,
|
||||
set_prev_scale_factor, set_em_unit, force_rescale), Button
|
||||
(GetStyle, GetType, IsSelected), CheckBox (IsHalfChecked),
|
||||
TextInput (GetCornerRadius), and LabeledStaticBox
|
||||
(GetCornerRadius, GetBorderWidth, GetBorderColor, GetScale)."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 2: Create Registration helper header
|
||||
|
||||
**Files:**
|
||||
- Create: `src/slic3r/Utils/wxInspectorPlugins/Registration.hpp`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: Nothing (forward-declares plugin classes)
|
||||
- Produces: `RegisterOrcaInspectorPlugins()`
|
||||
|
||||
- [ ] **Step 1: Create directory**
|
||||
|
||||
```bash
|
||||
mkdir -p src/slic3r/Utils/wxInspectorPlugins
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Write Registration.hpp**
|
||||
|
||||
```cpp
|
||||
#pragma once
|
||||
|
||||
namespace wxInspector {
|
||||
class wxInspectorPlugin;
|
||||
void RegisterPlugin(wxInspectorPlugin* plugin);
|
||||
}
|
||||
|
||||
// Forward declare our plugins
|
||||
class DPIAwarePlugin;
|
||||
class CustomWidgetsPlugin;
|
||||
|
||||
inline void RegisterOrcaInspectorPlugins()
|
||||
{
|
||||
static DPIAwarePlugin dpiaware;
|
||||
static CustomWidgetsPlugin customWidgets;
|
||||
wxInspector::RegisterPlugin(&dpiaware);
|
||||
wxInspector::RegisterPlugin(&customWidgets);
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add src/slic3r/Utils/wxInspectorPlugins/Registration.hpp
|
||||
git commit -m "feat: add wxInspector plugin registration helper
|
||||
|
||||
Add RegisterOrcaInspectorPlugins() inline function that creates
|
||||
and registers the DPIAwarePlugin and CustomWidgetsPlugin as
|
||||
static instances (matching wxInspector's built-in pattern)."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 3: Create DPIAwarePlugin
|
||||
|
||||
**Files:**
|
||||
- Create: `src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp`
|
||||
- Create: `src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: Task 1 (DPIAware getters/setters), Task 2 (registration pattern)
|
||||
- Produces: `class DPIAwarePlugin : public wxInspector::wxInspectorPlugin`
|
||||
|
||||
- [ ] **Step 1: Write DPIAwarePlugin.hpp**
|
||||
|
||||
```cpp
|
||||
#pragma once
|
||||
|
||||
#include <wx/inspector/plugin.h>
|
||||
|
||||
class DPIAwarePlugin : public wxInspector::wxInspectorPlugin
|
||||
{
|
||||
public:
|
||||
wxString GetName() const override;
|
||||
|
||||
bool CanProvideProperties(wxClassInfo* info) override;
|
||||
|
||||
wxVector<wxInspector::PropertyDef> GetProperties(
|
||||
wxInspector::InspectableObject& obj) override;
|
||||
};
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Write DPIAwarePlugin.cpp**
|
||||
|
||||
```cpp
|
||||
#include "DPIAwarePlugin.hpp"
|
||||
|
||||
#include "slic3r/GUI/GUI_Utils.hpp" // DPIFrame, DPIDialog, DPIAware<P>
|
||||
|
||||
#include <wx/window.h>
|
||||
|
||||
namespace {
|
||||
|
||||
template<typename T>
|
||||
void addDPIProps(T* dpi, wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
props.push_back({"Scale Factor", "DPI Scaling", PropertyType::String,
|
||||
wxString::Format("%.2f", dpi->scale_factor()), false, {},
|
||||
[dpi]() { return wxString::Format("%.2f", dpi->scale_factor()); },
|
||||
[dpi](const wxString& v) {
|
||||
double val;
|
||||
if (wxSscanf(v, "%lf", &val) != 1) return false;
|
||||
dpi->set_scale_factor((float) val);
|
||||
return true;
|
||||
}});
|
||||
|
||||
props.push_back({"Prev Scale Factor", "DPI Scaling", PropertyType::String,
|
||||
wxString::Format("%.2f", dpi->prev_scale_factor()), false, {},
|
||||
[dpi]() { return wxString::Format("%.2f", dpi->prev_scale_factor()); },
|
||||
[dpi](const wxString& v) {
|
||||
double val;
|
||||
if (wxSscanf(v, "%lf", &val) != 1) return false;
|
||||
dpi->set_prev_scale_factor((float) val);
|
||||
return true;
|
||||
}});
|
||||
|
||||
props.push_back({"EM Unit", "DPI Scaling", PropertyType::Integer,
|
||||
wxString::Format("%d", dpi->em_unit()), false, {},
|
||||
[dpi]() { return wxString::Format("%d", dpi->em_unit()); },
|
||||
[dpi](const wxString& v) {
|
||||
long val;
|
||||
if (!v.ToLong(&val)) return false;
|
||||
dpi->set_em_unit((int) val);
|
||||
return true;
|
||||
}});
|
||||
|
||||
props.push_back({"Normal Font", "DPI Scaling", PropertyType::ReadOnly,
|
||||
dpi->normal_font().GetNativeFontInfoDesc(), true, {},
|
||||
[dpi]() { return dpi->normal_font().GetNativeFontInfoDesc(); },
|
||||
nullptr});
|
||||
|
||||
props.push_back({"Force Rescale", "DPI Scaling", PropertyType::Boolean,
|
||||
dpi->force_rescale() ? "true" : "false", true, {},
|
||||
[dpi]() { return dpi->force_rescale() ? "true" : "false"; },
|
||||
nullptr});
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
wxString DPIAwarePlugin::GetName() const
|
||||
{
|
||||
return "OrcaDPIAware";
|
||||
}
|
||||
|
||||
bool DPIAwarePlugin::CanProvideProperties(wxClassInfo* info)
|
||||
{
|
||||
return info->IsKindOf(CLASSINFO(wxWindow));
|
||||
}
|
||||
|
||||
wxVector<wxInspector::PropertyDef> DPIAwarePlugin::GetProperties(
|
||||
wxInspector::InspectableObject& obj)
|
||||
{
|
||||
wxVector<wxInspector::PropertyDef> props;
|
||||
wxWindow* win = obj.AsWindow();
|
||||
if (!win) return props;
|
||||
|
||||
if (auto* frame = dynamic_cast<DPIFrame*>(win)) {
|
||||
addDPIProps(frame, props);
|
||||
} else if (auto* dlg = dynamic_cast<DPIDialog*>(win)) {
|
||||
addDPIProps(dlg, props);
|
||||
}
|
||||
|
||||
return props;
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.hpp src/slic3r/Utils/wxInspectorPlugins/DPIAwarePlugin.cpp
|
||||
git commit -m "feat: add DPIAware wxInspector plugin
|
||||
|
||||
Exposes DPI scaling properties (scale_factor, prev_scale_factor,
|
||||
em_unit, normal_font, force_rescale) on DPIFrame and DPIDialog
|
||||
widgets. Uses dynamic_cast for detection and a template helper
|
||||
to capture the correct static type for lambda accessors."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 4: Create CustomWidgetsPlugin
|
||||
|
||||
**Files:**
|
||||
- Create: `src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp`
|
||||
- Create: `src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp`
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: Task 1 (all widget getters), Task 2 (registration pattern)
|
||||
- Produces: `class CustomWidgetsPlugin : public wxInspector::wxInspectorPlugin`
|
||||
|
||||
- [ ] **Step 1: Write CustomWidgetsPlugin.hpp**
|
||||
|
||||
```cpp
|
||||
#pragma once
|
||||
|
||||
#include <wx/inspector/plugin.h>
|
||||
|
||||
class CustomWidgetsPlugin : public wxInspector::wxInspectorPlugin
|
||||
{
|
||||
public:
|
||||
wxString GetName() const override;
|
||||
|
||||
bool CanProvideProperties(wxClassInfo* info) override;
|
||||
|
||||
wxVector<wxInspector::PropertyDef> GetProperties(
|
||||
wxInspector::InspectableObject& obj) override;
|
||||
|
||||
private:
|
||||
void addButtonProps(class Button* btn,
|
||||
wxVector<wxInspector::PropertyDef>& props);
|
||||
void addCheckBoxProps(class CheckBox* cb,
|
||||
wxVector<wxInspector::PropertyDef>& props);
|
||||
void addTextInputProps(class TextInput* ti,
|
||||
wxVector<wxInspector::PropertyDef>& props);
|
||||
void addSwitchButtonProps(class SwitchButton* sb,
|
||||
wxVector<wxInspector::PropertyDef>& props);
|
||||
void addProgressBarProps(class ProgressBar* pb,
|
||||
wxVector<wxInspector::PropertyDef>& props);
|
||||
void addLabelProps(class Label* lbl,
|
||||
wxVector<wxInspector::PropertyDef>& props);
|
||||
void addLabeledStaticBoxProps(class LabeledStaticBox* lsb,
|
||||
wxVector<wxInspector::PropertyDef>& props);
|
||||
};
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Write CustomWidgetsPlugin.cpp — includes and GetName/CanProvideProperties**
|
||||
|
||||
```cpp
|
||||
#include "CustomWidgetsPlugin.hpp"
|
||||
|
||||
#include "slic3r/GUI/Widgets/Button.hpp"
|
||||
#include "slic3r/GUI/Widgets/CheckBox.hpp"
|
||||
#include "slic3r/GUI/Widgets/TextInput.hpp"
|
||||
#include "slic3r/GUI/Widgets/SwitchButton.hpp"
|
||||
#include "slic3r/GUI/Widgets/ProgressBar.hpp"
|
||||
#include "slic3r/GUI/Widgets/Label.hpp"
|
||||
#include "slic3r/GUI/Widgets/LabeledStaticBox.hpp"
|
||||
|
||||
#include <wx/window.h>
|
||||
#include <wx/tglbtn.h>
|
||||
|
||||
wxString CustomWidgetsPlugin::GetName() const
|
||||
{
|
||||
return "OrcaCustomWidgets";
|
||||
}
|
||||
|
||||
bool CustomWidgetsPlugin::CanProvideProperties(wxClassInfo* info)
|
||||
{
|
||||
return info->IsKindOf(CLASSINFO(wxWindow));
|
||||
}
|
||||
|
||||
wxVector<wxInspector::PropertyDef> CustomWidgetsPlugin::GetProperties(
|
||||
wxInspector::InspectableObject& obj)
|
||||
{
|
||||
wxVector<wxInspector::PropertyDef> props;
|
||||
wxWindow* win = obj.AsWindow();
|
||||
if (!win) return props;
|
||||
|
||||
if (auto* btn = dynamic_cast<Button*>(win))
|
||||
addButtonProps(btn, props);
|
||||
if (auto* cb = dynamic_cast<CheckBox*>(win))
|
||||
addCheckBoxProps(cb, props);
|
||||
if (auto* ti = dynamic_cast<TextInput*>(win))
|
||||
addTextInputProps(ti, props);
|
||||
if (auto* sb = dynamic_cast<SwitchButton*>(win))
|
||||
addSwitchButtonProps(sb, props);
|
||||
if (auto* pb = dynamic_cast<ProgressBar*>(win))
|
||||
addProgressBarProps(pb, props);
|
||||
if (auto* lbl = dynamic_cast<Label*>(win))
|
||||
addLabelProps(lbl, props);
|
||||
if (auto* lsb = dynamic_cast<LabeledStaticBox*>(win))
|
||||
addLabeledStaticBoxProps(lsb, props);
|
||||
|
||||
return props;
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Write CustomWidgetsPlugin.cpp — addButtonProps**
|
||||
|
||||
```cpp
|
||||
void CustomWidgetsPlugin::addButtonProps(Button* btn,
|
||||
wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
wxVector<wxString> styleChoices;
|
||||
styleChoices.push_back("Regular");
|
||||
styleChoices.push_back("Confirm");
|
||||
styleChoices.push_back("Alert");
|
||||
styleChoices.push_back("Disabled");
|
||||
|
||||
auto styleToStr = [](ButtonStyle s) -> wxString {
|
||||
switch (s) {
|
||||
case ButtonStyle::Regular: return "Regular";
|
||||
case ButtonStyle::Confirm: return "Confirm";
|
||||
case ButtonStyle::Alert: return "Alert";
|
||||
case ButtonStyle::Disabled: return "Disabled";
|
||||
}
|
||||
return "Regular";
|
||||
};
|
||||
|
||||
props.push_back({"Button Style", "Orca Button", PropertyType::Choice,
|
||||
styleToStr(btn->GetStyle()), false, styleChoices,
|
||||
[btn, styleToStr]() { return styleToStr(btn->GetStyle()); },
|
||||
[btn](const wxString& v) {
|
||||
ButtonStyle s = ButtonStyle::Regular;
|
||||
if (v == "Confirm") s = ButtonStyle::Confirm;
|
||||
else if (v == "Alert") s = ButtonStyle::Alert;
|
||||
else if (v == "Disabled") s = ButtonStyle::Disabled;
|
||||
btn->SetStyle(s, btn->GetType());
|
||||
return true;
|
||||
}});
|
||||
|
||||
wxVector<wxString> typeChoices;
|
||||
typeChoices.push_back("Compact");
|
||||
typeChoices.push_back("Window");
|
||||
typeChoices.push_back("Choice");
|
||||
typeChoices.push_back("Parameter");
|
||||
typeChoices.push_back("Icon");
|
||||
typeChoices.push_back("Expanded");
|
||||
|
||||
auto typeToStr = [](ButtonType t) -> wxString {
|
||||
switch (t) {
|
||||
case ButtonType::Compact: return "Compact";
|
||||
case ButtonType::Window: return "Window";
|
||||
case ButtonType::Choice: return "Choice";
|
||||
case ButtonType::Parameter: return "Parameter";
|
||||
case ButtonType::Icon: return "Icon";
|
||||
case ButtonType::Expanded: return "Expanded";
|
||||
}
|
||||
return "Compact";
|
||||
};
|
||||
|
||||
props.push_back({"Button Type", "Orca Button", PropertyType::Choice,
|
||||
typeToStr(btn->GetType()), false, typeChoices,
|
||||
[btn, typeToStr]() { return typeToStr(btn->GetType()); },
|
||||
[btn](const wxString& v) {
|
||||
ButtonType t = ButtonType::Compact;
|
||||
if (v == "Window") t = ButtonType::Window;
|
||||
else if (v == "Choice") t = ButtonType::Choice;
|
||||
else if (v == "Parameter") t = ButtonType::Parameter;
|
||||
else if (v == "Icon") t = ButtonType::Icon;
|
||||
else if (v == "Expanded") t = ButtonType::Expanded;
|
||||
btn->SetStyle(btn->GetStyle(), t);
|
||||
return true;
|
||||
}});
|
||||
|
||||
props.push_back({"Selected", "Orca Button", PropertyType::Boolean,
|
||||
btn->IsSelected() ? "true" : "false", false, {},
|
||||
[btn]() { return btn->IsSelected() ? "true" : "false"; },
|
||||
[btn](const wxString& v) {
|
||||
btn->SetSelected(v == "true");
|
||||
btn->Refresh();
|
||||
return true;
|
||||
}});
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 4: Write CustomWidgetsPlugin.cpp — addCheckBoxProps**
|
||||
|
||||
```cpp
|
||||
void CustomWidgetsPlugin::addCheckBoxProps(CheckBox* cb,
|
||||
wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
props.push_back({"Half Checked", "Orca CheckBox", PropertyType::Boolean,
|
||||
cb->IsHalfChecked() ? "true" : "false", false, {},
|
||||
[cb]() { return cb->IsHalfChecked() ? "true" : "false"; },
|
||||
[cb](const wxString& v) {
|
||||
cb->SetHalfChecked(v == "true");
|
||||
return true;
|
||||
}});
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 5: Write CustomWidgetsPlugin.cpp — addTextInputProps**
|
||||
|
||||
```cpp
|
||||
void CustomWidgetsPlugin::addTextInputProps(TextInput* ti,
|
||||
wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
props.push_back({"Label", "Orca TextInput", PropertyType::String,
|
||||
ti->GetLabel(), false, {},
|
||||
[ti]() { return ti->GetLabel(); },
|
||||
[ti](const wxString& v) { ti->SetLabel(v); return true; }});
|
||||
|
||||
props.push_back({"Text Value", "Orca TextInput", PropertyType::String,
|
||||
ti->GetTextCtrl()->GetValue(), false, {},
|
||||
[ti]() { return ti->GetTextCtrl()->GetValue(); },
|
||||
[ti](const wxString& v) { ti->GetTextCtrl()->SetValue(v); return true; }});
|
||||
|
||||
props.push_back({"Corner Radius", "Orca TextInput", PropertyType::Integer,
|
||||
wxString::Format("%d", ti->GetCornerRadius()), false, {},
|
||||
[ti]() { return wxString::Format("%d", ti->GetCornerRadius()); },
|
||||
[ti](const wxString& v) {
|
||||
long val;
|
||||
if (!v.ToLong(&val)) return false;
|
||||
ti->SetCornerRadius((double) val);
|
||||
ti->Refresh();
|
||||
return true;
|
||||
}});
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 6: Write CustomWidgetsPlugin.cpp — addSwitchButtonProps**
|
||||
|
||||
```cpp
|
||||
void CustomWidgetsPlugin::addSwitchButtonProps(SwitchButton* sb,
|
||||
wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
props.push_back({"Value", "Orca SwitchButton", PropertyType::Boolean,
|
||||
sb->GetValue() ? "true" : "false", false, {},
|
||||
[sb]() { return sb->GetValue() ? "true" : "false"; },
|
||||
[sb](const wxString& v) {
|
||||
sb->SetValue(v == "true");
|
||||
return true;
|
||||
}});
|
||||
}
|
||||
```
|
||||
|
||||
(Note: `GetValue()` and `SetValue()` are inherited from `wxBitmapToggleButton` → `wxToggleButton`.)
|
||||
|
||||
- [ ] **Step 7: Write CustomWidgetsPlugin.cpp — addProgressBarProps**
|
||||
|
||||
```cpp
|
||||
void CustomWidgetsPlugin::addProgressBarProps(ProgressBar* pb,
|
||||
wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
props.push_back({"Proportion", "Orca ProgressBar", PropertyType::String,
|
||||
wxString::Format("%.2f", pb->m_proportion), false, {},
|
||||
[pb]() { return wxString::Format("%.2f", pb->m_proportion); },
|
||||
[pb](const wxString& v) {
|
||||
double val;
|
||||
if (wxSscanf(v, "%lf", &val) != 1) return false;
|
||||
pb->m_proportion = val;
|
||||
pb->Refresh();
|
||||
return true;
|
||||
}});
|
||||
|
||||
props.push_back({"Show Number", "Orca ProgressBar", PropertyType::Boolean,
|
||||
pb->m_shownumber ? "true" : "false", false, {},
|
||||
[pb]() { return pb->m_shownumber ? "true" : "false"; },
|
||||
[pb](const wxString& v) {
|
||||
pb->m_shownumber = (v == "true");
|
||||
pb->Refresh();
|
||||
return true;
|
||||
}});
|
||||
}
|
||||
```
|
||||
|
||||
(Note: `m_proportion` and `m_shownumber` are public members on `ProgressBar`.)
|
||||
|
||||
- [ ] **Step 8: Write CustomWidgetsPlugin.cpp — addLabelProps**
|
||||
|
||||
```cpp
|
||||
void CustomWidgetsPlugin::addLabelProps(Label* lbl,
|
||||
wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
bool isHyperlink = (lbl->GetWindowStyleFlag() & 0x0020) != 0; // LB_HYPERLINK
|
||||
|
||||
props.push_back({"Is Hyperlink", "Orca Label", PropertyType::Boolean,
|
||||
isHyperlink ? "true" : "false", true, {},
|
||||
[lbl]() {
|
||||
return (lbl->GetWindowStyleFlag() & 0x0020) ? "true" : "false";
|
||||
},
|
||||
nullptr});
|
||||
|
||||
props.push_back({"Font Point Size", "Orca Label", PropertyType::ReadOnly,
|
||||
wxString::Format("%d", lbl->GetFont().GetPointSize()), true, {},
|
||||
[lbl]() {
|
||||
return wxString::Format("%d", lbl->GetFont().GetPointSize());
|
||||
},
|
||||
nullptr});
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 9: Write CustomWidgetsPlugin.cpp — addLabeledStaticBoxProps**
|
||||
|
||||
```cpp
|
||||
void CustomWidgetsPlugin::addLabeledStaticBoxProps(LabeledStaticBox* lsb,
|
||||
wxVector<wxInspector::PropertyDef>& props)
|
||||
{
|
||||
using namespace wxInspector;
|
||||
|
||||
props.push_back({"Corner Radius", "LabeledStaticBox", PropertyType::Integer,
|
||||
wxString::Format("%d", lsb->GetCornerRadius()), false, {},
|
||||
[lsb]() { return wxString::Format("%d", lsb->GetCornerRadius()); },
|
||||
[lsb](const wxString& v) {
|
||||
long val;
|
||||
if (!v.ToLong(&val)) return false;
|
||||
lsb->SetCornerRadius((int) val);
|
||||
return true;
|
||||
}});
|
||||
|
||||
props.push_back({"Border Width", "LabeledStaticBox", PropertyType::Integer,
|
||||
wxString::Format("%d", lsb->GetBorderWidth()), false, {},
|
||||
[lsb]() { return wxString::Format("%d", lsb->GetBorderWidth()); },
|
||||
[lsb](const wxString& v) {
|
||||
long val;
|
||||
if (!v.ToLong(&val)) return false;
|
||||
lsb->SetBorderWidth((int) val);
|
||||
return true;
|
||||
}});
|
||||
|
||||
// Border Color: display as hex string
|
||||
wxColour bc = lsb->GetBorderColor().colorForStates(0);
|
||||
props.push_back({"Border Color", "LabeledStaticBox", PropertyType::String,
|
||||
bc.GetAsString(wxC2S_HTML_SYNTAX), false, {},
|
||||
[lsb]() {
|
||||
return lsb->GetBorderColor()
|
||||
.colorForStates(0)
|
||||
.GetAsString(wxC2S_HTML_SYNTAX);
|
||||
},
|
||||
[lsb](const wxString& v) {
|
||||
wxColour c(v);
|
||||
if (!c.IsOk()) return false;
|
||||
lsb->SetBorderColor(StateColor(c));
|
||||
return true;
|
||||
}});
|
||||
|
||||
props.push_back({"Scale", "LabeledStaticBox", PropertyType::ReadOnly,
|
||||
wxString::Format("%.2f", lsb->GetScale()), true, {},
|
||||
[lsb]() { return wxString::Format("%.2f", lsb->GetScale()); },
|
||||
nullptr});
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 10: Commit**
|
||||
|
||||
```bash
|
||||
git add src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp src/slic3r/Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp
|
||||
git commit -m "feat: add OrcaCustomWidgets wxInspector plugin
|
||||
|
||||
Exposes Orca-specific properties on 7 widget types:
|
||||
- Button: Style, Type, Selected
|
||||
- CheckBox: Half Checked
|
||||
- TextInput: Label, Text Value, Corner Radius
|
||||
- SwitchButton: Value
|
||||
- ProgressBar: Proportion, Show Number
|
||||
- Label: Is Hyperlink, Font Point Size
|
||||
- LabeledStaticBox: Corner Radius, Border Width, Border Color, Scale
|
||||
|
||||
Each widget type uses dynamic_cast for safe detection."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 5: Wire plugins into MainFrame and CMakeLists
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/slic3r/GUI/MainFrame.cpp` (add include + registration call)
|
||||
- Modify: `src/slic3r/CMakeLists.txt` (add 4 source files)
|
||||
|
||||
**Interfaces:**
|
||||
- Consumes: Tasks 1-4 (all plugins and registration helper)
|
||||
- Produces: Registered plugins available at runtime, buildable project
|
||||
|
||||
- [ ] **Step 1: Add include in MainFrame.cpp**
|
||||
|
||||
After the existing includes (around line 30, near the other Utils includes), add:
|
||||
|
||||
```cpp
|
||||
#include "slic3r/Utils/wxInspectorPlugins/Registration.hpp"
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Add registration call in MainFrame constructor**
|
||||
|
||||
After `SetupInspectorAccelerator(this);` (currently line ~303), add:
|
||||
|
||||
```cpp
|
||||
RegisterOrcaInspectorPlugins();
|
||||
```
|
||||
|
||||
- [ ] **Step 3: Add source files to CMakeLists.txt**
|
||||
|
||||
Find the `SLIC3R_GUI_SOURCES` list in `src/slic3r/CMakeLists.txt`. After the existing `Utils/*.cpp` entries (around line 650-754), add:
|
||||
|
||||
```cmake
|
||||
Utils/wxInspectorPlugins/DPIAwarePlugin.hpp
|
||||
Utils/wxInspectorPlugins/DPIAwarePlugin.cpp
|
||||
Utils/wxInspectorPlugins/CustomWidgetsPlugin.hpp
|
||||
Utils/wxInspectorPlugins/CustomWidgetsPlugin.cpp
|
||||
Utils/wxInspectorPlugins/Registration.hpp
|
||||
```
|
||||
|
||||
(Note: Add all 5 files — 2 .hpp + 2 .cpp + 1 Registration.hpp. wxWidgets cmake needs headers listed too for the resource system.)
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add src/slic3r/GUI/MainFrame.cpp src/slic3r/CMakeLists.txt
|
||||
git commit -m "feat: wire wxInspector plugins into MainFrame and build
|
||||
|
||||
- Call RegisterOrcaInspectorPlugins() after SetupInspectorAccelerator
|
||||
- Add all plugin source files to SLIC3R_GUI_SOURCES"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 6: Build and verify
|
||||
|
||||
**Files:**
|
||||
- None modified (verification only)
|
||||
|
||||
- [ ] **Step 1: Configure the build**
|
||||
|
||||
```powershell
|
||||
$cmakePath = "D:\VisualStudio\2026\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe"
|
||||
& $cmakePath --build . --config Debug --target ALL_BUILD -- -m
|
||||
```
|
||||
|
||||
Expected: Build succeeds with zero errors and zero warnings from our new files.
|
||||
|
||||
- [ ] **Step 2: Fix any compilation errors**
|
||||
|
||||
If the build fails:
|
||||
- Check that `#include` paths resolve (the `slic3r/GUI/…` relative paths use `src/` as the include root — verify this is set up in CMake via `include_directories`)
|
||||
- Check that `ButtonStyle` and `ButtonType` enums are visible (they're defined in `Button.hpp`)
|
||||
- Check that `StateColor` constructor from `wxColour` is valid (it has `StateColor(wxColour const&)`)
|
||||
- Check that `LabeledStaticBox::GetBorderColor()` returns by value (StateColor copy is fine)
|
||||
- On macOS: static box margin removal call needs `#ifdef __WXOSX__` guard
|
||||
|
||||
- [ ] **Step 3: Launch OrcaSlicer and verify inspector**
|
||||
|
||||
Launch the built OrcaSlicer, press Ctrl+Shift+I to open the inspector:
|
||||
1. Select the MainFrame in the tree — verify "DPI Scaling" category appears with Scale Factor, Prev Scale Factor, EM Unit, Normal Font, Force Rescale
|
||||
2. Select an Orca Button — verify "Orca Button" category appears
|
||||
3. Select an Orca CheckBox — verify "Orca CheckBox" category appears
|
||||
4. Edit a property value (e.g., Scale Factor) — verify the setter applies correctly
|
||||
5. Select a LabeledStaticBox — verify corner radius, border width, border color, scale appear
|
||||
|
||||
- [ ] **Step 5: Commit (if fixes were needed) or mark complete**
|
||||
|
||||
```bash
|
||||
git status
|
||||
```
|
||||
|
||||
If clean: verification complete. If changes were made: `git add` and commit with fix message.
|
||||
@@ -1,102 +0,0 @@
|
||||
# Move `wxInspectable` into `DPIAware` — Design Spec
|
||||
|
||||
Date: 2026-07-23
|
||||
Branch: `dev/layout-inspector`
|
||||
|
||||
## Overview
|
||||
|
||||
Move the `wxInspector::wxInspectable` base class from individual leaf classes (`DPIDialog`, `MainFrame`) into the common `DPIAware<P>` template. This makes every DPIAware widget automatically visible in the inspector tree without requiring each subclass to opt in.
|
||||
|
||||
## Motivation
|
||||
|
||||
Currently, only `DPIDialog` and `MainFrame` explicitly inherit `wxInspectable`. `DPIFrame` (which `MainFrame` inherits from) does not — `MainFrame` adds it manually. This means:
|
||||
|
||||
- Any `DPIAware<T>` widget that isn't `DPIDialog` or `MainFrame` is invisible in the inspector tree
|
||||
- `DPIFrame` subclasses (`BaseTransparentDPIFrame`, `ImageDPIFrame`, `ModelMallDialog`, `MediaFileFrame`, `SecondaryCheckDialog`, `PrintErrorDialog`, etc.) don't appear
|
||||
- Adding a new DPIAware widget type requires remembering to also inherit `wxInspectable`
|
||||
|
||||
Moving `wxInspectable` to `DPIAware` fixes this for all current and future DPIAware widgets at once.
|
||||
|
||||
## Design
|
||||
|
||||
### Change 1: `GUI_Utils.hpp` — `DPIAware<P>`
|
||||
|
||||
Add `wxInspector::wxInspectable` as a second base class, and call `SetupInspectorAccelerator(this)` in the constructor (after `this->CenterOnParent()`):
|
||||
|
||||
```cpp
|
||||
// Before:
|
||||
template<class P> class DPIAware : public P
|
||||
|
||||
// After:
|
||||
template<class P> class DPIAware : public P, public wxInspector::wxInspectable
|
||||
```
|
||||
|
||||
Add in the constructor body (after `this->CenterOnParent()` at line 110):
|
||||
```cpp
|
||||
SetupInspectorAccelerator(this);
|
||||
```
|
||||
|
||||
This gives every `DPIAware<T>` widget both inspectability and the Ctrl+Shift+I keyboard shortcut automatically. `#include <wx/inspector/inspector.h>` is already present in the file.
|
||||
|
||||
### Change 2: `GUI_Utils.hpp` — `DPIDialog`
|
||||
|
||||
Remove the now-redundant `wxInspector::wxInspectable` and the `SetupInspectorAccelerator(this)` call:
|
||||
|
||||
```cpp
|
||||
// Before:
|
||||
class DPIDialog : public DPIAware<wxDialog>, public wxInspector::wxInspectable
|
||||
// ...
|
||||
SetupInspectorAccelerator(this);
|
||||
|
||||
// After:
|
||||
class DPIDialog : public DPIAware<wxDialog>
|
||||
// (SetupInspectorAccelerator call removed — now done in DPIAware constructor)
|
||||
```
|
||||
|
||||
`DPIDialog` gets `wxInspectable` and the accelerator through `DPIAware<wxDialog>` now.
|
||||
|
||||
### Change 3: `MainFrame.hpp` — `MainFrame`
|
||||
|
||||
Remove the now-redundant `wxInspector::wxInspectable`:
|
||||
|
||||
```cpp
|
||||
// Before:
|
||||
class MainFrame : public DPIFrame, public wxInspector::wxInspectable
|
||||
|
||||
// After:
|
||||
class MainFrame : public DPIFrame
|
||||
```
|
||||
|
||||
`MainFrame` gets `wxInspectable` through `DPIFrame` → `DPIAware<wxFrame>`.
|
||||
|
||||
### Change 4: `MainFrame.cpp` — `MainFrame` constructor
|
||||
|
||||
Remove the now-redundant `SetupInspectorAccelerator(this)` call (line 304). It will be called automatically by the `DPIAware` constructor.
|
||||
|
||||
## Impact
|
||||
|
||||
| Widget | Before | After |
|
||||
|--------|--------|-------|
|
||||
| `DPIDialog` subclasses (~80) | ✓ inspectable | ✓ inspectable (transitive) |
|
||||
| `MainFrame` | ✓ inspectable | ✓ inspectable (transitive) |
|
||||
| `DPIFrame` subclasses (8 others) | ✗ invisible | ✓ inspectable |
|
||||
| Future `DPIAware<T>` | ✗ invisible | ✓ inspectable |
|
||||
|
||||
## Files Modified
|
||||
|
||||
| File | Change |
|
||||
|------|--------|
|
||||
| `src/slic3r/GUI/GUI_Utils.hpp` | `DPIAware<P>` gains `wxInspector::wxInspectable` + `SetupInspectorAccelerator(this)` call; `DPIDialog` drops redundant `wxInspector::wxInspectable` and `SetupInspectorAccelerator(this)` |
|
||||
| `src/slic3r/GUI/MainFrame.hpp` | `MainFrame` drops redundant `wxInspector::wxInspectable` |
|
||||
| `src/slic3r/GUI/MainFrame.cpp` | Remove redundant `SetupInspectorAccelerator(this)` from MainFrame constructor |
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- The `DPIAwarePlugin` detection logic (`dynamic_cast<DPIFrame*>` / `dynamic_cast<DPIDialog*>`) is unchanged
|
||||
- No new DPI properties — this is purely about tree visibility and accelerator setup
|
||||
|
||||
## Risk Assessment
|
||||
|
||||
- **Multiple inheritance**: `DPIAware<P>` already has a vtable (virtual destructor). Adding `wxInspectable` adds a second base but no additional data members. The `wxInspector::wxInspectable` class is expected to be a lightweight marker interface.
|
||||
- **Build**: No new includes needed; `<wx/inspector/inspector.h>` is already included in `GUI_Utils.hpp`.
|
||||
- **Cross-platform**: The change is standard C++ multiple inheritance — no platform-specific concerns.
|
||||
@@ -1,244 +0,0 @@
|
||||
# wxInspector Plugins for OrcaSlicer Custom Controls — Design Spec
|
||||
|
||||
Date: 2026-07-23
|
||||
Branch: `dev/layout-inspector`
|
||||
|
||||
## Overview
|
||||
|
||||
Create wxInspector plugins that expose OrcaSlicer's custom widget properties in the inspector's property grid. Without these plugins, the inspector shows only generic wxWidgets properties — missing all DPI-awareness data, custom styling, and Orca-specific control state.
|
||||
|
||||
## Goals
|
||||
|
||||
1. **DPIAware properties** — Inspect and update `scale_factor`, `prev_scale_factor`, `em_unit`, and `normal_font` on any DPIAware-derived widget
|
||||
2. **Custom widget properties** — Surface Orca-specific properties on `Button`, `CheckBox`, `TextInput`, `SwitchButton`, `ProgressBar`, `Label`, and `LabeledStaticBox`
|
||||
3. **Minimal source changes** — Only add trivial (one-line) getters/setters to existing classes; no architectural refactoring of Orca's widget hierarchy
|
||||
|
||||
## Non-Goals
|
||||
|
||||
- Custom inspector panels or AUI tabs (use the existing property grid and method invoker)
|
||||
- Python-plugin integration (this is C++ wxInspector, not Orca's Python plugin system)
|
||||
- Event logging customization (the built-in event logger already works)
|
||||
|
||||
## Architecture
|
||||
|
||||
### Two Plugins
|
||||
|
||||
| Plugin | Class | Files |
|
||||
|--------|-------|-------|
|
||||
| DPIAware plugin | `DPIAwarePlugin` | `DPIAwarePlugin.hpp`, `DPIAwarePlugin.cpp` |
|
||||
| Custom widgets plugin | `CustomWidgetsPlugin` | `CustomWidgetsPlugin.hpp`, `CustomWidgetsPlugin.cpp` |
|
||||
| Registration helper | inline function | `Registration.hpp` |
|
||||
|
||||
All files live under `src/slic3r/Utils/wxInspectorPlugins/`.
|
||||
|
||||
### Plugin Detection Strategy
|
||||
|
||||
**DPIAware plugin**: Uses `dynamic_cast<DPIFrame*>` and `dynamic_cast<DPIDialog*>` as detection gates. `DPIFrame` = `DPIAware<wxFrame>`, `DPIDialog` = `DPIAware<wxDialog>`. Since these are concrete typedefs, `dynamic_cast` works at runtime. This covers `MainFrame`, `SettingsDialog`, and all 8 calibration dialogs (which inherit `DPIDialog`).
|
||||
|
||||
**Custom widgets plugin**: Gates broadly on `CLASSINFO(wxWindow)`, then uses per-type `dynamic_cast` inside `GetProperties` to check each Orca-specific type. Only matching types append properties.
|
||||
|
||||
### Registration
|
||||
|
||||
A single `RegisterOrcaInspectorPlugins()` inline function in `Registration.hpp` creates both plugins as function-local statics (matching the wxInspector built-in provider pattern) and registers them via `wxInspector::RegisterPlugin()`.
|
||||
|
||||
Called once from `MainFrame::MainFrame()` after `SetupInspectorAccelerator(this)`.
|
||||
|
||||
### Why Separate Plugins?
|
||||
|
||||
- DPIAware is a C++ template concept (not a wxClassInfo-isKindOf check), so it needs its own detection logic
|
||||
- Custom widgets use standard wxClassInfo-based detection, matching the built-in provider pattern
|
||||
- Two focused files are easier to review and maintain than one monolithic plugin
|
||||
- Compile-time failure isolation: if a widget header changes, only one plugin breaks
|
||||
|
||||
## DPIAware Plugin — Property Specification
|
||||
|
||||
### Source Changes (GUI_Utils.hpp)
|
||||
|
||||
Four one-liner methods added to the `DPIAware<P>` template class (public section):
|
||||
|
||||
```cpp
|
||||
float scale_factor() const { return m_scale_factor; } // already exists
|
||||
float prev_scale_factor() const { return m_prev_scale_factor; } // already exists
|
||||
int em_unit() const { return m_em_unit; } // already exists
|
||||
void set_scale_factor(float v) { m_scale_factor = v; } // NEW
|
||||
void set_prev_scale_factor(float v) { m_prev_scale_factor = v; } // NEW
|
||||
void set_em_unit(int v) { m_em_unit = v; } // NEW
|
||||
bool force_rescale() const { return m_force_rescale; } // NEW
|
||||
// m_normal_font getter already exists: normal_font()
|
||||
```
|
||||
|
||||
### Detection
|
||||
|
||||
```cpp
|
||||
bool CanProvideProperties(wxClassInfo* info) override {
|
||||
// Gated in GetProperties via dynamic_cast on the window itself
|
||||
return info->IsKindOf(CLASSINFO(wxWindow));
|
||||
}
|
||||
```
|
||||
|
||||
In `GetProperties`:
|
||||
```cpp
|
||||
auto* win = obj.AsWindow();
|
||||
bool isDPI = dynamic_cast<DPIFrame*>(win) || dynamic_cast<DPIDialog*>(win);
|
||||
if (!isDPI) return props;
|
||||
```
|
||||
|
||||
### Property Table (category: "DPI Scaling")
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Scale Factor | String (float) | Yes | `dpi->scale_factor()` | `dpi->set_scale_factor(v)` |
|
||||
| Prev Scale Factor | String (float) | Yes | `dpi->prev_scale_factor()` | `dpi->set_prev_scale_factor(v)` |
|
||||
| EM Unit | Integer | Yes | `dpi->em_unit()` | `dpi->set_em_unit(v)` |
|
||||
| Normal Font | ReadOnly | No | `dpi->normal_font().GetNativeFontInfoDesc()` | — |
|
||||
| Force Rescale | Boolean (ReadOnly) | No | `dpi->force_rescale()` | — |
|
||||
|
||||
**Note on setters**: The setters simply store values. They do NOT trigger a widget rescale/layout. To see the effect of a changed scale factor, use the inspector's Methods panel to call `Layout()` or resize the window — which triggers the DPI_CHANGED event path naturally.
|
||||
|
||||
## Custom Widgets Plugin — Property Specification
|
||||
|
||||
All properties are appended to the built-in wxWindow properties. Each widget type is independently detected via `dynamic_cast`.
|
||||
|
||||
### Detection gates (in `GetProperties`)
|
||||
|
||||
```cpp
|
||||
auto* win = obj.AsWindow();
|
||||
if (auto* btn = dynamic_cast<Button*>(win)) { addButtonProperties(btn, props); }
|
||||
if (auto* cb = dynamic_cast<CheckBox*>(win)) { addCheckBoxProperties(cb, props); }
|
||||
if (auto* ti = dynamic_cast<TextInput*>(win)) { addTextInputProperties(ti, props); }
|
||||
if (auto* sb = dynamic_cast<SwitchButton*>(win)) { addSwitchButtonProperties(sb, props); }
|
||||
if (auto* pb = dynamic_cast<ProgressBar*>(win)) { addProgressBarProperties(pb, props); }
|
||||
if (auto* lbl = dynamic_cast<Label*>(win)) { addLabelProperties(lbl, props); }
|
||||
if (auto* lsb = dynamic_cast<LabeledStaticBox*>(win)) { addLabeledStaticBoxProperties(lsb, props); }
|
||||
```
|
||||
|
||||
### Orca Button (`Button`) — category: "Orca Button"
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Button Style | Choice | Yes | enum→string | string→enum |
|
||||
| Button Type | Choice | Yes | enum→string | string→enum |
|
||||
| Selected | Boolean | Yes | `m_selected` (needs getter) | `SetSelected(v)` |
|
||||
| Active Icon | ReadOnly | No | icon name string | — |
|
||||
| Inactive Icon | ReadOnly | No | icon name string | — |
|
||||
|
||||
Choices for Button Style: `Regular`, `Confirm`, `Alert`, `Disabled`
|
||||
Choices for Button Type: `Compact`, `Window`, `Choice`, `Parameter`, `Icon`, `Expanded`
|
||||
|
||||
**Source changes needed**: Button's `m_selected` is private. Add one-liner getter:
|
||||
```cpp
|
||||
bool IsSelected() const { return m_selected; }
|
||||
```
|
||||
|
||||
### Orca CheckBox (`CheckBox`) — category: "Orca CheckBox"
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Half Checked | Boolean | Yes | `m_half_checked` (needs getter) | `SetHalfChecked(v)` |
|
||||
|
||||
**Source changes needed**: `m_half_checked` is private. Add one-liner getter:
|
||||
```cpp
|
||||
bool IsHalfChecked() const { return m_half_checked; }
|
||||
```
|
||||
|
||||
### Orca TextInput (`TextInput`) — category: "Orca TextInput"
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Label | String | Yes | `GetLabel()` (inherited from wxWindow) | `SetLabel(v)` (exists) |
|
||||
| Text Value | String | Yes | `GetTextCtrl()->GetValue()` (GetTextCtrl is public) | `GetTextCtrl()->SetValue(v)` |
|
||||
| Corner Radius | Integer | Yes | `GetCornerRadius()` (NEW) | `SetCornerRadius(v)` (exists) |
|
||||
|
||||
**Source changes needed**: Add one getter to `TextInput`:
|
||||
```cpp
|
||||
int GetCornerRadius() const { return static_cast<int>(radius); }
|
||||
```
|
||||
(`radius` is inherited from StaticBox. `SetCornerRadius(double)` already exists. `GetTextCtrl()` is already public.)
|
||||
|
||||
### Orca SwitchButton (`SwitchButton`) — category: "Orca SwitchButton"
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Value | Boolean | Yes | existing getter | existing setter |
|
||||
|
||||
### Orca ProgressBar (`ProgressBar`) — category: "Orca ProgressBar"
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Proportion | Float (0-1) | Yes | `pb->m_proportion` (public member) | `pb->m_proportion = v` |
|
||||
| Show Number | Boolean | Yes | `pb->m_shownumber` (public member) | `pb->m_shownumber = v` |
|
||||
|
||||
**No source changes needed**: `m_proportion` and `m_shownumber` are already public members. `SetValue(int)` and `SetProgress(int)` already exist as public methods.
|
||||
|
||||
### Orca Label (`Label`) — category: "Orca Label"
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Is Hyperlink | Boolean | No | existing flag check | — |
|
||||
| Font Size | ReadOnly | No | `GetFont().GetPointSize()` | — |
|
||||
|
||||
### LabeledStaticBox — category: "LabeledStaticBox"
|
||||
|
||||
| Name | Type | Editable | Getter | Setter |
|
||||
|------|------|----------|--------|--------|
|
||||
| Corner Radius | Integer | Yes | `GetCornerRadius()` (NEW) | `SetCornerRadius(v)` (exists) |
|
||||
| Border Width | Integer | Yes | `GetBorderWidth()` (NEW) | `SetBorderWidth(v)` (exists) |
|
||||
| Border Color | String (hex) | Yes | `GetBorderColor()` (NEW) | `SetBorderColor(v)` (exists) |
|
||||
| Scale | Float (ReadOnly) | No | `m_scale` (protected, needs getter) | — |
|
||||
|
||||
**Source changes needed**: Four one-liner getters added to `LabeledStaticBox`:
|
||||
```cpp
|
||||
int GetCornerRadius() const { return m_radius; }
|
||||
int GetBorderWidth() const { return m_border_width; }
|
||||
StateColor GetBorderColor() const { return border_color; }
|
||||
float GetScale() const { return m_scale; }
|
||||
```
|
||||
|
||||
## Files Modified (Existing Code)
|
||||
|
||||
| File | Changes |
|
||||
|------|---------|
|
||||
| `src/slic3r/GUI/GUI_Utils.hpp` | +4 methods in `DPIAware<P>`: `set_scale_factor()`, `set_prev_scale_factor()`, `set_em_unit()`, `force_rescale()` |
|
||||
| `src/slic3r/GUI/Widgets/LabeledStaticBox.hpp` | +4 getter declarations: `GetCornerRadius()`, `GetBorderWidth()`, `GetBorderColor()`, `GetScale()` |
|
||||
| `src/slic3r/GUI/Widgets/LabeledStaticBox.cpp` | +4 getter implementations |
|
||||
| `src/slic3r/GUI/Widgets/Button.hpp` | +1 getter: `IsSelected()` |
|
||||
| `src/slic3r/GUI/Widgets/CheckBox.hpp` | +1 getter: `IsHalfChecked()` |
|
||||
| `src/slic3r/GUI/Widgets/TextInput.hpp` | +1 getter: `GetCornerRadius()` |
|
||||
| `src/slic3r/GUI/Widgets/ProgressBar.hpp` | None (public members are used directly) |
|
||||
| `src/slic3r/GUI/MainFrame.cpp` | +1 `#include`, +1 call to `RegisterOrcaInspectorPlugins()` |
|
||||
| `src/slic3r/CMakeLists.txt` | +4 entries in `SLIC3R_GUI_SOURCES` (the .cpp plugin files) |
|
||||
|
||||
## Files Created
|
||||
|
||||
```
|
||||
src/slic3r/Utils/wxInspectorPlugins/
|
||||
├── DPIAwarePlugin.hpp
|
||||
├── DPIAwarePlugin.cpp
|
||||
├── CustomWidgetsPlugin.hpp
|
||||
├── CustomWidgetsPlugin.cpp
|
||||
└── Registration.hpp
|
||||
```
|
||||
|
||||
## Build & Linking
|
||||
|
||||
The `wxInspector` dependency is already wired:
|
||||
- `deps/wxInspector/wxInspector.cmake` fetches and builds wxInspector
|
||||
- `src/CMakeLists.txt` lines 92-93 link `wxInspector::wxInspector` into `wxWidgets_LIBRARIES`
|
||||
- The plugin files only need `#include <wx/inspector/plugin.h>` and `#include <wx/inspector/inspector.h>` — both available from the installed dependency
|
||||
|
||||
No new CMake dependencies needed. Only the new source files need listing in `SLIC3R_GUI_SOURCES`.
|
||||
|
||||
## Error Handling & Edge Cases
|
||||
|
||||
- **Stale pointers**: Plugin lambdas capture raw pointers, regenerated on every `GetProperties` call (matching wxInspector's built-in provider pattern). Pointers live only until the next tree selection.
|
||||
- **Widget destruction**: If a widget is destroyed while the inspector is showing its properties, `InspectableObject::IsValid()` returns false and properties are not displayed. The inspector won't show stale data.
|
||||
- **Invalid property values**: Setters use `sscanf` / `ToLong` with validation (matching built-in patterns). Bogus input is rejected — setter returns `false`, property grid shows error state.
|
||||
- **DPI drift**: Setting `scale_factor` without triggering rescale means displayed sizes don't match the new factor. This is acceptable — the inspector is a developer tool; operators know to call `Layout()` after making changes.
|
||||
- **Missing widget type**: If a `dynamic_cast` fails for all types, only built-in wxWindow properties are shown. No crash, no error — just reduced info.
|
||||
|
||||
## Future Work (Out of Scope)
|
||||
|
||||
- **StateColor visualization**: `StateColor` is a multi-value type (maps bitmask states to colors). A full solution would need a custom property editor (e.g., a table showing each state→color pair). Keep it simple for now.
|
||||
- **ScalableBitmap display**: Could show the bitmap as an inline thumbnail. Complex property editor work — deferred.
|
||||
- **More widget types**: `SwitchBoard`, `MultiSwitchButton`, `StepCtrl`, `FanControl`, `DropDown`, `ComboBox`, `AMS*` widgets could all benefit. Add as needed.
|
||||
- **Property refresh on tree selection**: Currently properties are static snapshots. A "refresh" button or auto-poll could keep values current for rapidly-changing widgets (progress bars, etc.). The built-in wxInspector already provides a tree-refresh button.
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -2293,8 +2293,6 @@ msgstr ""
|
||||
msgid "%s has been removed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr ""
|
||||
@@ -2762,6 +2760,9 @@ msgstr ""
|
||||
msgid "Merge with"
|
||||
msgstr ""
|
||||
|
||||
msgid "Decompose Color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr ""
|
||||
|
||||
@@ -3039,6 +3040,9 @@ msgstr ""
|
||||
msgid "Merge parts to an object"
|
||||
msgstr ""
|
||||
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add layers"
|
||||
msgstr ""
|
||||
|
||||
@@ -4452,6 +4456,20 @@ msgstr ""
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
"It has been reset to 0.2"
|
||||
@@ -4483,7 +4501,7 @@ msgid ""
|
||||
"The value will be reset to 0."
|
||||
msgstr ""
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -4514,13 +4532,13 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
|
||||
@@ -4533,6 +4551,12 @@ msgid ""
|
||||
"No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim ear radius"
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr ""
|
||||
|
||||
@@ -4545,6 +4569,9 @@ msgid ""
|
||||
"No - Cancel enabling spiral mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Printing"
|
||||
msgstr ""
|
||||
|
||||
@@ -4784,6 +4811,12 @@ msgstr ""
|
||||
msgid "Calibration error"
|
||||
msgstr ""
|
||||
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr ""
|
||||
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr ""
|
||||
|
||||
msgid "Network unavailable"
|
||||
msgstr ""
|
||||
|
||||
@@ -4962,9 +4995,7 @@ msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
@@ -4987,9 +5018,6 @@ msgstr ""
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr ""
|
||||
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
msgid "System agents"
|
||||
msgstr ""
|
||||
|
||||
@@ -5615,7 +5643,7 @@ msgstr ""
|
||||
msgid "Size:"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
#, possible-boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr ""
|
||||
|
||||
@@ -5790,6 +5818,9 @@ msgstr ""
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Device (Web)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
@@ -5916,16 +5947,22 @@ msgstr ""
|
||||
msgid "Save current project as"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr ""
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7374,6 +7411,9 @@ msgstr ""
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr ""
|
||||
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr ""
|
||||
@@ -7494,12 +7534,36 @@ msgstr ""
|
||||
msgid "Set filaments to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed Filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr ""
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pellets"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr ""
|
||||
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr ""
|
||||
@@ -7634,7 +7698,13 @@ msgstr ""
|
||||
msgid "Customized Preset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr ""
|
||||
|
||||
msgid "Because of unsupported text encoding, garbage characters may appear!"
|
||||
@@ -7671,6 +7741,12 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Texture Import Warning"
|
||||
msgstr ""
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr ""
|
||||
|
||||
@@ -7780,19 +7856,19 @@ msgstr ""
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr ""
|
||||
|
||||
@@ -7865,6 +7941,18 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr ""
|
||||
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr ""
|
||||
|
||||
msgid "Applying texture colors..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Updating 3D view..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Texture colors applied."
|
||||
msgstr ""
|
||||
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr ""
|
||||
|
||||
@@ -7994,6 +8082,17 @@ msgstr ""
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr ""
|
||||
|
||||
@@ -8191,8 +8290,6 @@ msgstr ""
|
||||
msgid "Language selection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr ""
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr ""
|
||||
@@ -8472,6 +8569,15 @@ msgstr ""
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Visible plugin pages"
|
||||
msgstr ""
|
||||
|
||||
msgid "pages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr ""
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr ""
|
||||
|
||||
@@ -8797,6 +8903,14 @@ msgstr ""
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr ""
|
||||
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
|
||||
msgid "Experimental Features"
|
||||
msgstr ""
|
||||
|
||||
@@ -8997,6 +9111,9 @@ msgstr ""
|
||||
msgid "First layer filament sequence"
|
||||
msgstr ""
|
||||
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr ""
|
||||
|
||||
msgid "By Layer"
|
||||
msgstr ""
|
||||
|
||||
@@ -9024,9 +9141,6 @@ msgstr ""
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr ""
|
||||
|
||||
@@ -9042,6 +9156,64 @@ msgstr ""
|
||||
msgid "Jump to webpage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr ""
|
||||
@@ -9052,9 +9224,21 @@ msgstr ""
|
||||
msgid "Preset Inside Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr ""
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unique preset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parent preset"
|
||||
msgstr ""
|
||||
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr ""
|
||||
|
||||
@@ -9732,20 +9916,6 @@ msgstr ""
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr ""
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr ""
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr ""
|
||||
|
||||
@@ -9931,6 +10101,9 @@ msgstr ""
|
||||
msgid "Setting Overrides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr ""
|
||||
|
||||
@@ -10057,6 +10230,12 @@ msgstr ""
|
||||
msgid "Printable space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr ""
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, possible-boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10179,9 +10358,6 @@ msgstr ""
|
||||
msgid "Z-Hop"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
"\n"
|
||||
@@ -10279,11 +10455,11 @@ msgstr ""
|
||||
msgid "No modifications need to be copied."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
@@ -10757,27 +10933,6 @@ msgstr ""
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr ""
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr ""
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr ""
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr ""
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr ""
|
||||
|
||||
@@ -11445,6 +11600,9 @@ msgstr ""
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr ""
|
||||
|
||||
@@ -11457,6 +11615,9 @@ msgstr ""
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr ""
|
||||
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -11493,6 +11654,9 @@ msgstr ""
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr ""
|
||||
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr ""
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
@@ -11740,9 +11904,6 @@ msgstr ""
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr ""
|
||||
|
||||
@@ -11824,7 +11985,7 @@ msgstr ""
|
||||
msgid "Other layers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
@@ -12279,9 +12440,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr ""
|
||||
|
||||
@@ -12347,6 +12505,12 @@ msgid ""
|
||||
"0 to deactivate."
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim ears outer only"
|
||||
msgstr ""
|
||||
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr ""
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr ""
|
||||
|
||||
@@ -12905,6 +13069,7 @@ msgstr ""
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr ""
|
||||
|
||||
@@ -13198,6 +13363,48 @@ msgstr ""
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr ""
|
||||
|
||||
msgid "Is mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament components"
|
||||
msgstr ""
|
||||
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr ""
|
||||
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr ""
|
||||
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr ""
|
||||
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr ""
|
||||
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr ""
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr ""
|
||||
|
||||
@@ -13359,6 +13566,12 @@ msgstr ""
|
||||
msgid "Gyroid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr ""
|
||||
|
||||
@@ -13839,6 +14052,12 @@ msgstr ""
|
||||
msgid "Klipper"
|
||||
msgstr ""
|
||||
|
||||
msgid "Skip G-code config block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr ""
|
||||
|
||||
@@ -14333,6 +14552,7 @@ msgstr ""
|
||||
msgid "The allowed maximum output force of Y axis"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr ""
|
||||
|
||||
@@ -14342,6 +14562,7 @@ msgstr ""
|
||||
msgid "The machine bed mass load of Y axis"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr ""
|
||||
|
||||
@@ -14610,7 +14831,7 @@ msgstr ""
|
||||
msgid "Reduce infill retraction"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr ""
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -14766,7 +14987,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
|
||||
@@ -14800,10 +15021,16 @@ msgstr ""
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr ""
|
||||
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -14893,6 +15120,9 @@ msgstr ""
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr ""
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr ""
|
||||
|
||||
@@ -15278,6 +15508,12 @@ msgstr ""
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr ""
|
||||
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr ""
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr ""
|
||||
|
||||
@@ -15754,6 +15990,12 @@ msgid ""
|
||||
"Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr ""
|
||||
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr ""
|
||||
|
||||
@@ -16781,6 +17023,9 @@ msgstr ""
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr ""
|
||||
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr ""
|
||||
|
||||
@@ -18111,17 +18356,17 @@ msgstr ""
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr ""
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please select at least one printer or filament."
|
||||
@@ -18253,9 +18498,6 @@ msgstr ""
|
||||
msgid "Print Host upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18339,7 +18581,7 @@ msgstr ""
|
||||
msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue."
|
||||
@@ -18381,7 +18623,7 @@ msgstr ""
|
||||
msgid "Stored logs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid "Profiles"
|
||||
@@ -18446,7 +18688,7 @@ msgstr ""
|
||||
msgid "Authorizing..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr ""
|
||||
|
||||
msgid "Could not parse server response."
|
||||
@@ -18884,7 +19126,7 @@ msgstr ""
|
||||
msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Fila Saving"
|
||||
msgid "File Saving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't remind me again"
|
||||
@@ -19087,9 +19329,6 @@ msgstr ""
|
||||
msgid "User canceled."
|
||||
msgstr ""
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr ""
|
||||
|
||||
@@ -19170,6 +19409,15 @@ msgstr ""
|
||||
msgid "Skipping objects."
|
||||
msgstr ""
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr ""
|
||||
|
||||
@@ -19247,6 +19495,9 @@ msgstr ""
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr ""
|
||||
|
||||
msgid "s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr ""
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2430,8 +2430,6 @@ msgstr "Es ist ein Update verfügbar. Öffnen Sie den Profilbündel-Dialog, um e
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s wurde entfernt."
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr "Wechsel der Sprache"
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Sprache wählen"
|
||||
@@ -2917,6 +2915,10 @@ msgstr "Bearbeiten"
|
||||
msgid "Merge with"
|
||||
msgstr "Zusammenführen mit"
|
||||
|
||||
# AI Translated
|
||||
msgid "Decompose Color"
|
||||
msgstr "Farbe zerlegen"
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr "Diesen Filament löschen"
|
||||
|
||||
@@ -3216,6 +3218,10 @@ msgstr "Zusammenbau"
|
||||
msgid "Merge parts to an object"
|
||||
msgstr "Teile zu einem Objekt zusammenführen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr "Die Verwendung einer variablen Schichthöhe zusammen mit der Mischfarben-Unterschicht kann zu einer schlechten Farbmischqualität führen."
|
||||
|
||||
# AI Translated
|
||||
msgid "Add layers"
|
||||
msgstr "Schichten hinzufügen"
|
||||
@@ -4692,6 +4698,23 @@ msgstr "Die aktuelle Kammer-Temperatur ist höher als die sichere Temperatur des
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr "Die minimale Druckraumtemperatur (%d℃) ist höher als die Ziel-Druckraumtemperatur (%d℃). Der Minimalwert ist der Schwellenwert, bei dem der Druck beginnt, während der Druckraum weiter auf die Zieltemperatur heizt; er sollte diese daher nicht überschreiten. Er wird auf die Zieltemperatur begrenzt."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr "Die Schichthöhe ist zu klein. Sie wird auf den Mindestwert (%g mm) gesetzt."
|
||||
|
||||
# AI Translated
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "Die Schichthöhe liegt außerhalb der in Druckereinstellungen -> Extruder -> Schichthöhenlimits festgelegten Grenzen. Dies kann zu Problemen mit der Druckqualität führen."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr "Automatisch an den Grenzwert (%g mm) anpassen?"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Anpassen"
|
||||
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
"It has been reset to 0.2"
|
||||
@@ -4740,7 +4763,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Der Wert wird auf 0 zurückgesetzt."
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr "Der alternative zusätzliche Wandmodus funktioniert nicht gut, wenn die vertikale Wanddicke auf Alle eingestellt ist."
|
||||
|
||||
msgid ""
|
||||
@@ -4786,7 +4809,7 @@ msgstr ""
|
||||
"NEIN - unabhängige Stütz-Schichthöhen beibehalten"
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
"seam_slope_start_height muss kleiner als layer_height sein.\n"
|
||||
@@ -4794,7 +4817,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
"Die Verriegelungstiefe sollte kleiner als die Hauttiefe sein.\n"
|
||||
@@ -4812,6 +4835,13 @@ msgstr ""
|
||||
"Ja - Arachne Wall Generator aktivieren\n"
|
||||
"Nein - Arachne Wall Generator deaktivieren und den Modus [Verschiebung] des Fuzzy Skin setzen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ear radius"
|
||||
msgstr "Radius der Brim-Ohren"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Randbreite"
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr "Der Spiralmodus funktioniert nur, wenn die Wandschleifen 1 sind, die Stütze deaktiviert ist, die Klumpenerkennung durch Abtasten deaktiviert ist, die oberen Schichtlagen 0 sind, die Dichte der spärlichen Füllung 0 ist und der Zeitraffertyp traditionell ist."
|
||||
|
||||
@@ -4827,6 +4857,9 @@ msgstr ""
|
||||
"Ja - Diese Einstellungen ändern und den Spiralmodus automatisch aktivieren\n"
|
||||
"Nein - Spiralmodus nicht aktivieren"
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "Nicht verfügbar"
|
||||
|
||||
msgid "Printing"
|
||||
msgstr "Drucken"
|
||||
|
||||
@@ -5066,6 +5099,14 @@ msgstr "Fehler beim Generieren des Kalibrierungs-G-Codes"
|
||||
msgid "Calibration error"
|
||||
msgstr "Kalibrierungsfehler"
|
||||
|
||||
# AI Translated
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr "Dieser Drucker ist nicht mit der Hardware ausgestattet, die dieses Bedienelement benötigt."
|
||||
|
||||
# AI Translated
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr "Dieses Bedienelement wird von diesem Drucker nicht unterstützt."
|
||||
|
||||
# AI Translated
|
||||
msgid "Network unavailable"
|
||||
msgstr "Netzwerk nicht verfügbar"
|
||||
@@ -5250,13 +5291,9 @@ msgstr "Wert %s ist außerhalb des Bereichs. Der gültige Bereich liegt zwischen
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
"Heißt es %s%% oder %s %s?\n"
|
||||
"Ja für %s%%, \n"
|
||||
"Nein für %s %s."
|
||||
"Heißt es %s%% oder %s %s?"
|
||||
|
||||
#, boost-format
|
||||
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
|
||||
@@ -5278,9 +5315,6 @@ msgstr "Ungültiges Muster. Verwenden Sie N, N#K oder eine durch Kommas getrennt
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr "Ungültiges Format. Erwartetes Vektorformat: \"%1%\""
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "Nicht verfügbar"
|
||||
|
||||
# AI Translated
|
||||
msgid "System agents"
|
||||
msgstr "Systemagenten"
|
||||
@@ -5923,7 +5957,7 @@ msgstr "Volumen:"
|
||||
msgid "Size:"
|
||||
msgstr "Größe:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Konflikte von G-Code-Pfaden wurden bei Layer %d, Z = %.2lf mm gefunden.Bitte trennen Sie die konfliktbehafteten Objekte weiter voneinander (%s <-> %s)."
|
||||
|
||||
@@ -6103,6 +6137,10 @@ msgstr "Multi-Gerät"
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Device (Web)"
|
||||
msgstr "Gerät (Web)"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Ja"
|
||||
|
||||
@@ -6230,16 +6268,22 @@ msgstr "Projekt speichern als"
|
||||
msgid "Save current project as"
|
||||
msgstr "Aktuelles Projekt speichern als"
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr "Importiere 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr "Lade ein Modell"
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr "Zip-Archiv importieren"
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr "Modelle aus einem Zip-Archiv laden"
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7755,6 +7799,10 @@ msgstr "Aktuelle Platte anpassen"
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr "Die %s Düse kann %s nicht drucken."
|
||||
|
||||
# AI Translated
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr "Der Druck von Mischfarben-Filament auf einem Drucker mit nur einem Extruder erfordert häufige Filamentwechsel und Spülvorgänge, was den Abfall und das Risiko einer Verstopfung von Düse bzw. Abfallschacht deutlich erhöhen kann."
|
||||
|
||||
#, boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr "Mischen von %1% mit %2% im Druck wird nicht empfohlen.\n"
|
||||
@@ -7880,6 +7928,26 @@ msgstr "Filamentliste von AMS synchronisieren"
|
||||
msgid "Set filaments to use"
|
||||
msgstr "Zu verwendende Filamente einstellen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr "Mischfilament hinzufügen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed Filament"
|
||||
msgstr "Mischfilament"
|
||||
|
||||
# AI Translated
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr "Letztes Mischfilament entfernen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add mixed filament"
|
||||
msgstr "Mischfilament hinzufügen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr "Das Mischfilament enthält ungültige oder nicht zusammenpassende Komponenten. Bitte bearbeiten Sie die betroffenen Einträge erneut."
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr "Suche Platte, Objekt und Teil."
|
||||
|
||||
@@ -7887,6 +7955,18 @@ msgstr "Suche Platte, Objekt und Teil."
|
||||
msgid "Pellets"
|
||||
msgstr "Pellets"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr "Das Mischfilament enthält ungültige Komponentenverweise"
|
||||
|
||||
# AI Translated
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr "Bearbeiten / Löschen / Zusammenführen"
|
||||
|
||||
# AI Translated
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr "Das Ziel-Mischfilament verwendet dieses physische Filament als Komponente. Beim Zusammenführen wird dieses physische Filament entfernt und das Mischfilament kann dadurch ungültig werden. Fortfahren?"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr "Nach Abschluss Ihrer Operation wird das %s-Projekt geschlossen und ein neues Projekt erstellt."
|
||||
@@ -8027,8 +8107,14 @@ msgstr "Bitte bestätigen Sie, dass die G-Codes innerhalb dieser Profile sicher
|
||||
msgid "Customized Preset"
|
||||
msgstr "Benutzerdefinierte Profile"
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF8-Format!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr "Der Name der Komponenten in der Step-Datei ist nicht im UTF-8-Format!"
|
||||
|
||||
msgid "Because of unsupported text encoding, garbage characters may appear!"
|
||||
msgstr "Aufgrund der nicht unterstützten Textkodierung können unbrauchbare Zeichen erscheinen!"
|
||||
@@ -8070,6 +8156,14 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr "Mehrteiliges Objekt erkannt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr "Texturen werden den Filamenten zugeordnet"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture Import Warning"
|
||||
msgstr "Warnung beim Texturimport"
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr "Diese Dateien als ein einziges Objekt mit mehreren Teilen laden?\n"
|
||||
|
||||
@@ -8191,19 +8285,19 @@ msgstr "Verzeichnis um daraus zu ersetzen wurde nicht ausgewählt"
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr "Ersetzt durch 3D-Dateien aus Verzeichnis:\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr "✖ Übersprungen %s: gleiche Datei.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr "✖ Übersprungen %s: Datei existiert nicht.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr "✖ Übersprungen %s: Ersetzen fehlgeschlagen.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr "✔ Ersetzt %s.\n"
|
||||
|
||||
@@ -8283,6 +8377,22 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr "Jetzt synchronisieren"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr "Der Texturimport ist fehlgeschlagen. Das Modell scheint Texturdaten zu enthalten, der Importvorgang konnte jedoch nicht abgeschlossen werden. Das Modell wird nur als Geometrie importiert."
|
||||
|
||||
# AI Translated
|
||||
msgid "Applying texture colors..."
|
||||
msgstr "Texturfarben werden angewendet..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Updating 3D view..."
|
||||
msgstr "3D-Ansicht wird aktualisiert..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture colors applied."
|
||||
msgstr "Texturfarben angewendet."
|
||||
|
||||
# AI Translated
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr "Sie können die geänderten Profile für das neue Projekt beibehalten oder sie verwerfen"
|
||||
@@ -8415,6 +8525,17 @@ msgstr "Geslicte Datei speichern unter:"
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr "Die Datei %s wurde an den Speicher des Druckers gesendet und kann auf dem Drucker angezeigt werden."
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Veröffentlichen"
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr "Die Düsenart ist nicht eingestellt. Bitte stellen Sie die Düse ein und versuchen Sie es erneut."
|
||||
|
||||
@@ -8627,8 +8748,6 @@ msgstr "Möchten Sie fortfahren?"
|
||||
msgid "Language selection"
|
||||
msgstr "Sprachauswahl"
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr "Umschalten der Anwendungssprache, während einige Profile geändert werden."
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asien-Pazifik"
|
||||
@@ -8941,6 +9060,18 @@ msgstr "Wenn diese Option aktiviert ist, können Sie eine Aufgabe gleichzeitig a
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Popup zum Auswählen des Filament-Gruppierungsmodus"
|
||||
|
||||
# AI Translated
|
||||
msgid "Visible plugin pages"
|
||||
msgstr "Sichtbare Plugin-Seiten"
|
||||
|
||||
# AI Translated
|
||||
msgid "pages"
|
||||
msgstr "Seiten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr "Anzahl der Plugin-Seiten, die als feste Tabs angezeigt werden, bevor die übrigen Seiten im letzten Tab zu einem Dropdown zusammengefasst werden."
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr "Verhalten"
|
||||
|
||||
@@ -9296,6 +9427,18 @@ msgstr "Nicht unterstützte Profile anzeigen"
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr "Zeigt inkompatible/nicht unterstützte Profile in den Dropdown-Listen für Drucker und Filament an. Diese Profile können nicht ausgewählt werden."
|
||||
|
||||
# AI Translated
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr "(Experimentell) Drucker-Agenten anstelle von Druck-Hosts verwenden"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
"Leitet Druckaufträge für Nicht-Bambu-Drucker über Drucker-Plugin-Agenten statt über den klassischen Druck-Host-Upload.\n"
|
||||
"Wenn deaktiviert, verwendet OrcaSlicer das bisherige Druck-Host-Verhalten."
|
||||
|
||||
msgid "Experimental Features"
|
||||
msgstr "Experimentelle Funktionen"
|
||||
|
||||
@@ -9503,6 +9646,10 @@ msgstr "Vasenmodus"
|
||||
msgid "First layer filament sequence"
|
||||
msgstr "Erste Filament-Schichtsequenz"
|
||||
|
||||
# AI Translated
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr "Die Filamentliste enthält Mischfilamente. Die benutzerdefinierte Filamentreihenfolge wird nicht wirksam."
|
||||
|
||||
msgid "By Layer"
|
||||
msgstr "Nach Schicht"
|
||||
|
||||
@@ -9530,9 +9677,6 @@ msgstr "Zur Modellveröffentlichungs-Webseite springen"
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr "Hinweis: Die Vorbereitung kann einige Minuten dauern. Bitte haben Sie Geduld."
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Veröffentlichen"
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr "Veröffentlichung wurde abgebrochen"
|
||||
|
||||
@@ -9548,6 +9692,64 @@ msgstr "Daten werden hochgeladen"
|
||||
msgid "Jump to webpage"
|
||||
msgstr "Zu einer Website springen"
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr "%s speichern als"
|
||||
@@ -9558,9 +9760,25 @@ msgstr "Benutzerprofil"
|
||||
msgid "Preset Inside Project"
|
||||
msgstr "Projektbasiertes Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr "Kopiert alle vom übergeordneten Profil geerbten Werte in dieses Profil und entfernt die Vererbungsbeziehung. Profile, die nur mit dem übergeordneten Profil kompatibel sind, können dadurch nicht mehr unterstützt werden."
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr "Vom übergeordneten Element trennen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Eigenständiges Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Parent preset"
|
||||
msgstr "Übergeordnetes Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr "Dieses Profil erbt nicht von einem anderen Profil."
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr "Der Name ist nicht verfügbar."
|
||||
|
||||
@@ -10296,22 +10514,6 @@ msgstr "Sind Sie sicher, dass Sie diese Option aktivieren möchten?"
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr "Infill-Muster sind in der Regel so konzipiert, dass sie eine automatische Drehung ermöglichen, um einen ordnungsgemäßen Druck zu gewährleisten und die beabsichtigten Effekte zu erzielen (z. B. Gyroid, Cubic). Das Drehen des aktuellen spärlichen Infill-Musters kann zu unzureichender Unterstützung führen. Bitte gehen Sie vorsichtig vor und überprüfen Sie gründlich auf mögliche Druckprobleme. Sind Sie sicher, dass Sie diese Option aktivieren möchten?"
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
"Die Schichthöhe ist zu klein.\n"
|
||||
"Sie wird auf min_layer_height gesetzt\n"
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder -> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen."
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr "Automatisch an den eingestellten Bereich anpassen?\n"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Anpassen"
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr "Experimentelle Funktion: Filament beim Filamentwechsel weiter zurückziehen und abschneiden, um den Flush zu minimieren. Obwohl dies den Flush deutlich reduzieren kann, kann es auch das Risiko von Düsenverstopfungen oder anderen Druckkomplikationen erhöhen."
|
||||
|
||||
@@ -10505,6 +10707,9 @@ msgstr "Reservierte Schlüsselwörter gefunden"
|
||||
msgid "Setting Overrides"
|
||||
msgstr "Überschreiben der Einstellungen"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Rückzug bei Materialwechsel"
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr "Grundlegende Informationen"
|
||||
|
||||
@@ -10634,6 +10839,12 @@ msgstr "Kompatible Prozessprofile"
|
||||
msgid "Printable space"
|
||||
msgstr "Druckbarer Raum"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Drucker-Agent"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Wählen Sie die Implementierung des Netzwerkagenten für die Druckerkommunikation. Verfügbare Agenten werden beim Start registriert."
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10759,9 +10970,6 @@ msgstr "Höhenbegrenzungen für Schichten"
|
||||
msgid "Z-Hop"
|
||||
msgstr "Z-Hop"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Rückzug bei Materialwechsel"
|
||||
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
"\n"
|
||||
@@ -10874,11 +11082,11 @@ msgstr "%s: %s"
|
||||
msgid "No modifications need to be copied."
|
||||
msgstr "Es müssen keine Änderungen kopiert werden."
|
||||
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr "Parameter kopieren"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr "Parameter von %s ändern"
|
||||
|
||||
#, c-format, boost-format
|
||||
@@ -11394,27 +11602,6 @@ msgstr "Reinigungsvolumen für Filamentwechsel"
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr "Bitte wählen Sie die Filamentfarbe"
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr "Native Wayland Liveview erfordert das GStreamer GTK Video Sink. Bitte installieren Sie das gtksink-Plugin für GStreamer und starten Sie OrcaSlicer neu."
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr "Fehler beim Initialisieren des nativen Wayland GStreamer Video Sinks. Bitte überprüfen Ihre GStreamer GTK-Plugin-Installation."
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr "Windows Media Player wird für diese Aufgabe benötigt! Möchten Sie 'Windows Media Player' für Ihr Betriebssystem aktivieren?"
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr "BambuSource wurde nicht korrekt für das Abspielen von Medien registriert! Drücken Sie Ja, um es erneut zu registrieren. Sie werden zweimal aufgefordert"
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr "Fehlende BambuSource-Komponente, die für das Abspielen von Medien registriert ist! Bitte installieren Sie OrcaSlicer neu oder suchen Sie Hilfe in der Community."
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr "Verwendung eines BambuSource aus einer anderen Installation, das Abspielen von Videos funktioniert möglicherweise nicht korrekt! Drücken Sie Ja, um es zu beheben."
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr "Ihr System fehlt H.264-Codecs für GStreamer, die zum Abspielen von Videos erforderlich sind. (Versuchen Sie, die Pakete gstreamer1.0-plugins-bad oder gstreamer1.0-libav zu installieren und starten Sie Orca Slicer neu?)"
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr "Cloud-Agent ist nicht verfügbar. Bitte starten Sie OrcaSlicer neu und versuchen Sie es erneut."
|
||||
|
||||
@@ -12103,6 +12290,10 @@ msgstr " ist zu nahe am Sperrbereich und es werden Kollisionen verursacht.\n"
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr " ist zu nahe am Klumpenerkennungsbereich und es werden Kollisionen verursacht.\n"
|
||||
|
||||
# AI Translated
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr " liegt teilweise außerhalb des druckbaren Bereichs und kann nicht gedruckt werden.\n"
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr "Die ausgewählten Düsentemperaturen sind nicht kompatibel. Die Düsentemperatur jedes Filaments muss innerhalb des empfohlenen Düsentemperaturbereichs der anderen Filamente liegen. Andernfalls kann es zu Düsenverstopfungen oder Druckerschäden kommen."
|
||||
|
||||
@@ -12115,6 +12306,10 @@ msgstr "Wenn Sie trotzdem drucken möchten, können Sie die Option in Einstellun
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr "Keine Extrusion unter den aktuellen Einstellungen."
|
||||
|
||||
# AI Translated
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr "Es wird ein Mischfilament mit Verlauf verwendet, aber „Mischfarben-Unterschicht“ ist deaktiviert. Der Verlauf wird nicht gedruckt."
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr "Der gewählte Zeitraffermodus wird nicht unterstützt, wenn die Sequenz \"nach Objekt\" aktiviert ist."
|
||||
|
||||
@@ -12151,6 +12346,10 @@ msgstr "Sie möchten möglicherweise die Größe Ihres Modells reduzieren oder d
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr "Variable Schichthöhe wird nicht mit organischen Stützstrukturen unterstützt."
|
||||
|
||||
# AI Translated
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr "Das Filament des Reinigungsturms darf kein Mischfilament sein."
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr "Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser funktionieren möglicherweise nicht gut, wenn der Reinigungsturm aktiviert ist. Es ist sehr experimentell, also gehen Sie bitte vorsichtig vor."
|
||||
|
||||
@@ -12418,9 +12617,6 @@ msgstr "Benutze 3MF statt G-Code"
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr "Aktivieren Sie diese Option, wenn der Drucker eine 3MF-Datei als Druckauftrag akzeptiert. Wenn aktiviert, sendet Orca Slicer die geslicete Datei als .gcode.3mf, anstatt als einfache .gcode-Datei."
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Drucker-Agent"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr "Wählen Sie die Netzwerk-Agent-Implementierung für die Druckerkommunikation aus."
|
||||
|
||||
@@ -12503,7 +12699,7 @@ msgstr "mm o. %"
|
||||
msgid "Other layers"
|
||||
msgstr "Andere Schichten"
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "Dies ist die Betttemperatur für Schichten mit Ausnahme der Ersten. Ein Wert von 0 bedeutet, dass das Filament auf der kalten Druckplatte SuperTack nicht unterstützt wird."
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
@@ -13091,9 +13287,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr "Geschwindigkeit der internen Brücken. Wenn der Wert als Prozentsatz angegeben wird, wird er auf der Grundlage der Brückengeschwindigkeit berechnet. Der Standardwert beträgt 150 %."
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Randbreite"
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr "Abstand vom Modell zur äußersten Randlinie"
|
||||
|
||||
@@ -13174,6 +13367,14 @@ msgstr ""
|
||||
"Die Geometrie wird vor der Erkennung scharfer Winkel reduziert. Dieser Parameter ist ein Indikator für die minimale Länge der Abweichung für die Reduzierung.\n"
|
||||
"0 zum Deaktivieren."
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ears outer only"
|
||||
msgstr "Brim-Ohren nur außen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr "Erzeugt Mausohren nur an der Außenkontur des Modells, ohne Löcher und geschlossene Bereiche."
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr "Aufwärtskompatible Maschine"
|
||||
|
||||
@@ -13862,6 +14063,8 @@ msgstr "Schichtdauer"
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr "Der Bauteillüfter wird für Schichten aktiviert, deren geschätzte Zeit kürzer als dieser Wert ist. Die Lüftergeschwindigkeit wird zwischen der minimalen und maximalen Geschwindigkeit entsprechend der Druckzeit der Schicht interpoliert."
|
||||
|
||||
# AI Translated
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
@@ -14166,6 +14369,62 @@ msgstr "Stützmaterial"
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr "Stützmaterial wird üblicherweise zum Drucken von Stützen und Stütz-Schnittstellen verwendet."
|
||||
|
||||
# AI Translated
|
||||
msgid "Is mixed filament"
|
||||
msgstr "Ist Mischfilament"
|
||||
|
||||
# AI Translated
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr "Gibt an, ob dieser Filamentplatz ein Mischfilament aus mehreren physischen Filamenten ist"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament components"
|
||||
msgstr "Komponenten des Mischfilaments"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr "Durch Kommas getrennte Indizes der Komponentenfilamente, beginnend bei 1, z. B. \"1,3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr "Unterschicht-Anteile des Mischfilaments"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr "Durch Kommas getrennte Anteilswerte, die in der Summe 1.0 ergeben, z. B. \"0.7,0.3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr "Verlauf des Mischfilaments"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr "Aktiviert den Verlaufsmodus in Z-Richtung für die Unterschichten des Mischfilaments. Wenn aktiviert, ändern sich die Anteile der Unterschichten linear über die Schichten hinweg."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr "Verlaufsbereich des Mischfilaments"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr "Start- und Endanteil der ersten Komponente im Verlaufsmodus. Durch Komma getrenntes Paar, z. B. \"0.10,0.90\" bedeutet 10% bis 90%."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr "Verlaufskurve des Mischfilaments"
|
||||
|
||||
# AI Translated
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr "Optionale benutzerdefinierte Kurve im Photoshop-Stil, die den Z-Fortschritt auf den Anteil der ersten Komponente abbildet. Kodiert als durch senkrechte Striche getrennte Kontrollpunkte, entweder \"x,y\" (veraltet) oder \"x,y,m_in,m_out\", wenn die Tangente überschrieben werden soll (ein leerer Wert oder \"nan\" verwendet den PCHIP-Standard). x liegt in [0,1]; y wird auf den konfigurierten Anteilsbereich begrenzt, z. B. \"0,0.15|0.5,0.50|1,0.85\". Bleibt das Feld leer, wird stattdessen der lineare gradient_range verwendet."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr "Verlauf pro Teil beim Mischfilament"
|
||||
|
||||
# AI Translated
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr "Wenn der Verlaufsmodus aktiviert ist, wird der Verlauf auf jedes Teil eines Zusammenbaus einzeln angewendet, anstatt den gesamten Zusammenbau als einen einzigen Z-Bereich zu behandeln."
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr "Filament druckbar"
|
||||
|
||||
@@ -14341,6 +14600,14 @@ msgstr "TPMS-FK"
|
||||
msgid "Gyroid"
|
||||
msgstr "Gyroid"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr "Glättungsfaktor der Füllung"
|
||||
|
||||
# AI Translated
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr "Legt fest, wie stark die Ecken der Füllung abgerundet werden. 0% behält den ursprünglichen scharfkantigen Pfad bei, während 100% die größtmöglichen Kurven zwischen benachbarten Fülllinien erzeugt."
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr "Dies ist die Beschleunigung der Füllung von der obersten Schicht. Die Verwendung eines niedrigeren Werts kann die Qualität der Oberfläche verbessern."
|
||||
|
||||
@@ -14874,6 +15141,14 @@ msgstr "Mit welcher Art von G-Code ist der Drucker kompatibel."
|
||||
msgid "Klipper"
|
||||
msgstr "Klipper"
|
||||
|
||||
# AI Translated
|
||||
msgid "Skip G-code config block"
|
||||
msgstr "G-code-Konfigurationsblock auslassen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr "Schreibt den CONFIG_BLOCK (die Schlüssel-Wert-Paare der Slicer-Konfiguration) nicht in die G-code-Datei. Das kann bei Druckern helfen, deren Firmware beim Verarbeiten dieser Kommentarzeilen abstürzt (z. B. Anycubic go-klipper). Hinweis: Die G-code-Datei enthält dann keine Slicer-Einstellungen mehr, sodass beim erneuten Importieren in OrcaSlicer die Konfiguration nicht wiederhergestellt wird."
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr "Pellet-Modifizierter Drucker"
|
||||
|
||||
@@ -15390,6 +15665,7 @@ msgid "The allowed maximum output force of Y axis"
|
||||
msgstr "Die maximal zulässige Ausgangskraft der Y-Achse"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr "N"
|
||||
|
||||
@@ -15400,6 +15676,7 @@ msgid "The machine bed mass load of Y axis"
|
||||
msgstr "Die Maschinenbett-Massenlast der Y-Achse"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
@@ -15714,7 +15991,7 @@ msgstr "Die Start- und Endpunkte, vom Schnittbereich bis zum Auswurfschacht."
|
||||
msgid "Reduce infill retraction"
|
||||
msgstr "Rückzug bei der Füllung verringern"
|
||||
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr "Kein Rückzug, wenn sich die Bewegung des Druckkopfes vollständig in einem Füllbereich befindet. Das bedeutet, dass das herauslaufen des Filaments nicht zu sehen ist. Dies kann die Zeit für das zurückziehen des Filaments bei komplexeren Modellen verkürzen und Druckzeit sparen, verlangsamt aber das Slicen und die G-Code Generierung."
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -15884,7 +16161,7 @@ msgstr "Rückzugsmenge nach dem Wischen"
|
||||
# AI Translated
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
"Die Länge des schnellen Rückzugs nach dem Wischen, relativ zur Rückzugslänge.\n"
|
||||
@@ -15920,10 +16197,18 @@ msgstr "Langer Rückzug beim Extruderwechsel"
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr "Rückzugslänge beim Extruderwechsel"
|
||||
|
||||
# AI Translated
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr "Rückzugslänge (Werkzeugwechsel)"
|
||||
|
||||
# AI Translated
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr "Wenn vor einem Werkzeugwechsel ein Rückzug ausgelöst wird, wird das Filament um den angegebenen Betrag zurückgezogen (die Länge wird am rohen Filament gemessen, bevor es in den Extruder gelangt)."
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr "Z-Hub-Höhe"
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr "Bei jedem Rückzug wird die Düse ein wenig angehoben, um einen Abstand zwischen Düse und Druck zu schaffen. Dadurch wird verhindert, dass die Düse bei der Verfahrbewegung gegen den Druck stößt. Die Verwendung einer Spirallinie zum Anheben von z kann Fadenbildung verhindern."
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -16014,6 +16299,10 @@ msgstr "Zusätzliche Länge beim Neustart"
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr "Wenn die Rückzugskompensation nach dem Reisemove durchgeführt wird, wird der Extruder diese zusätzliche Menge an Filament schieben. Diese Einstellung wird nur selten benötigt."
|
||||
|
||||
# AI Translated
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr "Zusätzliche Länge beim Neustart (Werkzeugwechsel)"
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr "Wenn die Rückzugskompensation nach dem Wechsel des Werkzeugs durchgeführt wird, wird der Extruder diese zusätzliche Menge an Filament schieben."
|
||||
|
||||
@@ -16431,6 +16720,14 @@ msgstr "Werkzeugwechsel auf dem Reinigungsturm"
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr "Erzwinge, dass der Werkzeugkopf zum Reinigungsturm fährt, bevor der Werkzeugwechselbefehl (Tx) ausgegeben wird. Nur relevant für Mehrfach-Extruder (Mehrfach-Werkzeugkopf) Drucker, die einen Typ-2-Reinigungsturm verwenden. Standardmäßig überspringt Orca die Fahrt auf Mehrfach-Werkzeugkopf-Maschinen, da die Firmware den Kopfwechsel übernimmt, was dazu führen kann, dass der Tx-Befehl über dem gedruckten Teil ausgegeben wird. Aktivieren Sie diese Option, wenn Sie möchten, dass der Werkzeugwechsel immer über dem Reinigungsturm ausgegeben wird."
|
||||
|
||||
# AI Translated
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr "Auf Temperatur am Reinigungsturm warten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr "Nimmt das neue Werkzeug auf, ohne auf das Erreichen der Drucktemperatur zu warten, fährt zum Reinigungsturm und wartet dort unmittelbar vor dem Spülen auf die Temperatur. Das beim Aufheizen austretende Material landet auf dem Turm statt auf dem Modell, und die Fahrt überlappt sich mit dem Aufheizen. Nur relevant für Multi-Extruder-Drucker (mehrere Werkzeugköpfe) mit einem Reinigungsturm vom Typ 2. Die Firmware bzw. das Werkzeugwechsel-Makro darf nicht selbst auf die Temperatur warten. Wenn deaktiviert, wird das Warten auf die Temperatur direkt nach dem Werkzeugwechselbefehl ausgegeben."
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr "Keine dünnen Schichten (Beta)"
|
||||
|
||||
@@ -16962,6 +17259,14 @@ msgstr ""
|
||||
"\n"
|
||||
"Wenn ein Wert in der Einstellung \"Rückzugsmenge vor dem Wischen\" unten angegeben ist, wird ein überschüssiger Rückzug vor dem Wischen ausgeführt, ansonsten wird er danach ausgeführt."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr "Mischfarben-Unterschicht"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr "Aktiviert die Aufteilung in Mischfarben-Unterschichten. Wenn aktiviert, werden Schichten mit Mischfarben-Filamenten in Unterschichten aufgeteilt, um Farbmischeffekte zu erzielen."
|
||||
|
||||
# AI Translated
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr "Der Reinigungsturm kann verwendet werden, um Rückstände auf der Düse zu entfernen und den Kammerdruck im Inneren der Düse zu stabilisieren, um Erscheinungsdefekte beim Drucken von Objekten zu vermeiden."
|
||||
@@ -18032,6 +18337,10 @@ msgstr "Das Erstellen eines Netzes aus der Modelldatei ist fehlgeschlagen oder e
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr "Die angegebene Datei konnte nicht gelesen werden, weil sie leer ist."
|
||||
|
||||
# AI Translated
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr "Das Dateiformat ist nicht kompatibel und kann nicht gelesen werden."
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr "Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .stl, .obj oder .amf(.xml) haben."
|
||||
|
||||
@@ -19492,19 +19801,19 @@ msgstr "Nur Druckernamen mit Änderungen an Drucker-, Filament- und Prozessprofi
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr "Nur die Filamentnamen mit Änderungen an den Filamentprofilen werden angezeigt."
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr "Nur Druckernamen mit Benutzerdruckerprofilen werden angezeigt, und jedes Profil, das Sie auswählen, wird als ZIP exportiert."
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Nur die Filamentnamen mit Benutzerfilamentvorlagen werden angezeigt, \n"
|
||||
"und alle Benutzerfilamentvorlagen in jedem Filamentnamen, den Sie auswählen, "
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Nur Druckernamen mit geänderten Prozessvorlagen werden angezeigt, \n"
|
||||
"und alle Benutzerprozessvorlagen in jedem Druckernamen, den Sie auswählen, werden als ZIP exportiert."
|
||||
@@ -19650,9 +19959,6 @@ msgstr "Drucker"
|
||||
msgid "Print Host upload"
|
||||
msgstr "Hochladen zum Druck-Host"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Wählen Sie die Implementierung des Netzwerkagenten für die Druckerkommunikation. Verfügbare Agenten werden beim Start registriert."
|
||||
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr "Wählen Sie einen Flashforge-Drucker aus"
|
||||
|
||||
@@ -19736,7 +20042,7 @@ msgstr "Systeminformationen in die Zwischenablage kopieren"
|
||||
msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide."
|
||||
msgstr "Wir benötigen Informationen zur Diagnose der Ursache des Problems. Überprüfen Sie die Wiki-Seite für eine detaillierte Anleitung."
|
||||
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr "Die Schaltfläche „Packen“ sammelt die Projektdatei und Protokolle der aktuellen Sitzung in einer ZIP-Datei."
|
||||
|
||||
msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue."
|
||||
@@ -19778,7 +20084,7 @@ msgstr "Protokollstufe"
|
||||
msgid "Stored logs"
|
||||
msgstr "Gespeicherte Protokolle"
|
||||
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr "Packt alle gespeicherten Protokolle in eine ZIP-Datei."
|
||||
|
||||
msgid "Profiles"
|
||||
@@ -19845,7 +20151,7 @@ msgstr "Druckertyp nicht gefunden, bitte manuell auswählen."
|
||||
msgid "Authorizing..."
|
||||
msgstr "Autorisierung..."
|
||||
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr "Fehler. Kann kein API-Token für die Autorisierung erhalten"
|
||||
|
||||
msgid "Could not parse server response."
|
||||
@@ -20293,8 +20599,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to
|
||||
msgstr "Intelligente Filamentzuweisung aktivieren: Ein Filament mehreren Düsen zuweisen, um Einsparungen zu maximieren"
|
||||
|
||||
# AI Translated
|
||||
msgid "Fila Saving"
|
||||
msgstr "Filamentersparnis"
|
||||
msgid "File Saving"
|
||||
msgstr "Datei speichern"
|
||||
|
||||
msgid "Don't remind me again"
|
||||
msgstr "Nicht mehr erinnern"
|
||||
@@ -20500,9 +20806,6 @@ msgstr "Es ist etwas Unerwartetes passiert, als Sie versucht haben, sich anzumel
|
||||
msgid "User canceled."
|
||||
msgstr "Benutzer abgebrochen."
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr "Kopfdurchmesser"
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr "Maximaler Winkel"
|
||||
|
||||
@@ -20583,6 +20886,15 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden. Fortsetzen?"
|
||||
msgid "Skipping objects."
|
||||
msgstr "Objekte werden übersprungen."
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr "Filament auswählen"
|
||||
|
||||
@@ -20662,6 +20974,9 @@ msgstr "Jetzt neu starten"
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr "KEIN RAMMING ÜBERALL"
|
||||
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr "Volumetrische Geschwindigkeit"
|
||||
|
||||
@@ -21286,6 +21601,55 @@ msgstr ""
|
||||
"Verwerfungen vermeiden\n"
|
||||
"Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "Native Wayland Liveview erfordert das GStreamer GTK Video Sink. Bitte installieren Sie das gtksink-Plugin für GStreamer und starten Sie OrcaSlicer neu."
|
||||
|
||||
#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
#~ msgstr "Fehler beim Initialisieren des nativen Wayland GStreamer Video Sinks. Bitte überprüfen Ihre GStreamer GTK-Plugin-Installation."
|
||||
|
||||
#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
#~ msgstr "Windows Media Player wird für diese Aufgabe benötigt! Möchten Sie 'Windows Media Player' für Ihr Betriebssystem aktivieren?"
|
||||
|
||||
#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
#~ msgstr "BambuSource wurde nicht korrekt für das Abspielen von Medien registriert! Drücken Sie Ja, um es erneut zu registrieren. Sie werden zweimal aufgefordert"
|
||||
|
||||
#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
#~ msgstr "Fehlende BambuSource-Komponente, die für das Abspielen von Medien registriert ist! Bitte installieren Sie OrcaSlicer neu oder suchen Sie Hilfe in der Community."
|
||||
|
||||
#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
#~ msgstr "Verwendung eines BambuSource aus einer anderen Installation, das Abspielen von Videos funktioniert möglicherweise nicht korrekt! Drücken Sie Ja, um es zu beheben."
|
||||
|
||||
#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
#~ msgstr "Ihr System fehlt H.264-Codecs für GStreamer, die zum Abspielen von Videos erforderlich sind. (Versuchen Sie, die Pakete gstreamer1.0-plugins-bad oder gstreamer1.0-libav zu installieren und starten Sie Orca Slicer neu?)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "N"
|
||||
#~ msgstr "N"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "g"
|
||||
#~ msgstr "g"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Fila Saving"
|
||||
#~ msgstr "Filamentersparnis"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Layer height is too small.\n"
|
||||
#~ "It will set to min_layer_height\n"
|
||||
#~ msgstr ""
|
||||
#~ "Die Schichthöhe ist zu klein.\n"
|
||||
#~ "Sie wird auf min_layer_height gesetzt\n"
|
||||
|
||||
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
#~ msgstr "Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder -> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen."
|
||||
|
||||
#~ msgid "Adjust to the set range automatically?\n"
|
||||
#~ msgstr "Automatisch an den eingestellten Bereich anpassen?\n"
|
||||
|
||||
#~ msgid "Head diameter"
|
||||
#~ msgstr "Kopfdurchmesser"
|
||||
|
||||
#~ msgid "Print order within a single layer."
|
||||
#~ msgstr "Druckreihenfolge innerhalb einer einzelnen Schicht"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"PO-Revision-Date: 2026-06-17 15:44-0300\n"
|
||||
"Last-Translator: Alexandre Folle de Menezes\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2289,8 +2289,6 @@ msgstr ""
|
||||
msgid "%s has been removed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr ""
|
||||
@@ -2758,6 +2756,9 @@ msgstr ""
|
||||
msgid "Merge with"
|
||||
msgstr ""
|
||||
|
||||
msgid "Decompose Color"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr ""
|
||||
|
||||
@@ -3035,6 +3036,9 @@ msgstr ""
|
||||
msgid "Merge parts to an object"
|
||||
msgstr ""
|
||||
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add layers"
|
||||
msgstr ""
|
||||
|
||||
@@ -4448,6 +4452,20 @@ msgstr ""
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
"It has been reset to 0.2"
|
||||
@@ -4479,7 +4497,7 @@ msgid ""
|
||||
"The value will be reset to 0."
|
||||
msgstr ""
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -4510,13 +4528,13 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
|
||||
@@ -4529,6 +4547,12 @@ msgid ""
|
||||
"No - Disable Arachne Wall Generator and set [Displacement] mode of the Fuzzy Skin"
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim ear radius"
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr ""
|
||||
|
||||
@@ -4541,6 +4565,9 @@ msgid ""
|
||||
"No - Cancel enabling spiral mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
msgid "Printing"
|
||||
msgstr ""
|
||||
|
||||
@@ -4780,6 +4807,12 @@ msgstr ""
|
||||
msgid "Calibration error"
|
||||
msgstr ""
|
||||
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr ""
|
||||
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr ""
|
||||
|
||||
msgid "Network unavailable"
|
||||
msgstr ""
|
||||
|
||||
@@ -4958,9 +4991,7 @@ msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
@@ -4983,9 +5014,6 @@ msgstr ""
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr ""
|
||||
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
msgid "System agents"
|
||||
msgstr ""
|
||||
|
||||
@@ -5611,7 +5639,7 @@ msgstr ""
|
||||
msgid "Size:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr ""
|
||||
|
||||
@@ -5786,6 +5814,9 @@ msgstr ""
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Device (Web)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
@@ -5912,16 +5943,22 @@ msgstr ""
|
||||
msgid "Save current project as"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr ""
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7370,6 +7407,9 @@ msgstr ""
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr ""
|
||||
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr ""
|
||||
@@ -7490,12 +7530,36 @@ msgstr ""
|
||||
msgid "Set filaments to use"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed Filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr ""
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pellets"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr ""
|
||||
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr ""
|
||||
@@ -7630,7 +7694,13 @@ msgstr ""
|
||||
msgid "Customized Preset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr ""
|
||||
|
||||
msgid "Because of unsupported text encoding, garbage characters may appear!"
|
||||
@@ -7667,6 +7737,12 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Texture Import Warning"
|
||||
msgstr ""
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr ""
|
||||
|
||||
@@ -7776,19 +7852,19 @@ msgstr ""
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr ""
|
||||
|
||||
@@ -7861,6 +7937,18 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr ""
|
||||
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr ""
|
||||
|
||||
msgid "Applying texture colors..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Updating 3D view..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Texture colors applied."
|
||||
msgstr ""
|
||||
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr ""
|
||||
|
||||
@@ -7990,6 +8078,17 @@ msgstr ""
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr ""
|
||||
|
||||
@@ -8187,8 +8286,6 @@ msgstr ""
|
||||
msgid "Language selection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr ""
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr ""
|
||||
@@ -8468,6 +8565,15 @@ msgstr ""
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Visible plugin pages"
|
||||
msgstr ""
|
||||
|
||||
msgid "pages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr ""
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr ""
|
||||
|
||||
@@ -8793,6 +8899,14 @@ msgstr ""
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr ""
|
||||
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
|
||||
msgid "Experimental Features"
|
||||
msgstr ""
|
||||
|
||||
@@ -8993,6 +9107,9 @@ msgstr ""
|
||||
msgid "First layer filament sequence"
|
||||
msgstr ""
|
||||
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr ""
|
||||
|
||||
msgid "By Layer"
|
||||
msgstr ""
|
||||
|
||||
@@ -9020,9 +9137,6 @@ msgstr ""
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr ""
|
||||
|
||||
@@ -9038,6 +9152,64 @@ msgstr ""
|
||||
msgid "Jump to webpage"
|
||||
msgstr ""
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr ""
|
||||
@@ -9048,9 +9220,21 @@ msgstr ""
|
||||
msgid "Preset Inside Project"
|
||||
msgstr ""
|
||||
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr ""
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unique preset"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parent preset"
|
||||
msgstr ""
|
||||
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr ""
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr ""
|
||||
|
||||
@@ -9728,20 +9912,6 @@ msgstr ""
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr ""
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr ""
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr ""
|
||||
|
||||
@@ -9927,6 +10097,9 @@ msgstr ""
|
||||
msgid "Setting Overrides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr ""
|
||||
|
||||
@@ -10053,6 +10226,12 @@ msgstr ""
|
||||
msgid "Printable space"
|
||||
msgstr ""
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr ""
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10175,9 +10354,6 @@ msgstr ""
|
||||
msgid "Z-Hop"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
"\n"
|
||||
@@ -10275,11 +10451,11 @@ msgstr ""
|
||||
msgid "No modifications need to be copied."
|
||||
msgstr ""
|
||||
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
@@ -10753,27 +10929,6 @@ msgstr ""
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr ""
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr ""
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr ""
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr ""
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr ""
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr ""
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr ""
|
||||
|
||||
@@ -11441,6 +11596,9 @@ msgstr ""
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr ""
|
||||
|
||||
@@ -11453,6 +11611,9 @@ msgstr ""
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr ""
|
||||
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr ""
|
||||
|
||||
@@ -11489,6 +11650,9 @@ msgstr ""
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr ""
|
||||
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr ""
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr ""
|
||||
|
||||
@@ -11736,9 +11900,6 @@ msgstr ""
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr ""
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr ""
|
||||
|
||||
@@ -11820,7 +11981,7 @@ msgstr ""
|
||||
msgid "Other layers"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
@@ -12275,9 +12436,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr ""
|
||||
|
||||
@@ -12343,6 +12501,12 @@ msgid ""
|
||||
"0 to deactivate."
|
||||
msgstr ""
|
||||
|
||||
msgid "Brim ears outer only"
|
||||
msgstr ""
|
||||
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr ""
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr ""
|
||||
|
||||
@@ -12901,6 +13065,7 @@ msgstr ""
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr ""
|
||||
|
||||
@@ -13194,6 +13359,48 @@ msgstr ""
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr ""
|
||||
|
||||
msgid "Is mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament components"
|
||||
msgstr ""
|
||||
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr ""
|
||||
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr ""
|
||||
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr ""
|
||||
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr ""
|
||||
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr ""
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr ""
|
||||
|
||||
@@ -13355,6 +13562,12 @@ msgstr ""
|
||||
msgid "Gyroid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr ""
|
||||
|
||||
@@ -13835,6 +14048,12 @@ msgstr ""
|
||||
msgid "Klipper"
|
||||
msgstr ""
|
||||
|
||||
msgid "Skip G-code config block"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr ""
|
||||
|
||||
@@ -14329,6 +14548,7 @@ msgstr ""
|
||||
msgid "The allowed maximum output force of Y axis"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr ""
|
||||
|
||||
@@ -14338,6 +14558,7 @@ msgstr ""
|
||||
msgid "The machine bed mass load of Y axis"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr ""
|
||||
|
||||
@@ -14606,7 +14827,7 @@ msgstr ""
|
||||
msgid "Reduce infill retraction"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr ""
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -14762,7 +14983,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
|
||||
@@ -14796,10 +15017,16 @@ msgstr ""
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr ""
|
||||
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr ""
|
||||
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr ""
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -14889,6 +15116,9 @@ msgstr ""
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr ""
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr ""
|
||||
|
||||
@@ -15274,6 +15504,12 @@ msgstr ""
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr ""
|
||||
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr ""
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr ""
|
||||
|
||||
@@ -15750,6 +15986,12 @@ msgid ""
|
||||
"Setting a value in the retract amount before wipe setting below will perform any excess retraction before the wipe, else it will be performed after."
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr ""
|
||||
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr ""
|
||||
|
||||
@@ -16777,6 +17019,9 @@ msgstr ""
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr ""
|
||||
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr ""
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr ""
|
||||
|
||||
@@ -18107,17 +18352,17 @@ msgstr ""
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr ""
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid "Please select at least one printer or filament."
|
||||
@@ -18249,9 +18494,6 @@ msgstr ""
|
||||
msgid "Print Host upload"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr ""
|
||||
|
||||
@@ -18335,7 +18577,7 @@ msgstr ""
|
||||
msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide."
|
||||
msgstr ""
|
||||
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue."
|
||||
@@ -18377,7 +18619,7 @@ msgstr ""
|
||||
msgid "Stored logs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr ""
|
||||
|
||||
msgid "Profiles"
|
||||
@@ -18442,7 +18684,7 @@ msgstr ""
|
||||
msgid "Authorizing..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr ""
|
||||
|
||||
msgid "Could not parse server response."
|
||||
@@ -18880,7 +19122,7 @@ msgstr ""
|
||||
msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings"
|
||||
msgstr ""
|
||||
|
||||
msgid "Fila Saving"
|
||||
msgid "File Saving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Don't remind me again"
|
||||
@@ -19083,9 +19325,6 @@ msgstr ""
|
||||
msgid "User canceled."
|
||||
msgstr ""
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr ""
|
||||
|
||||
@@ -19166,6 +19405,15 @@ msgstr ""
|
||||
msgid "Skipping objects."
|
||||
msgstr ""
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr ""
|
||||
|
||||
@@ -19243,6 +19491,9 @@ msgstr ""
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr ""
|
||||
|
||||
msgid "s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Ian A. Bassi <>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2356,8 +2356,6 @@ msgstr "Hay una actualización disponible. Abra el cuadro de diálogo del paquet
|
||||
msgid "%s has been removed."
|
||||
msgstr "Se ha eliminado %s."
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr "Cambiando el idioma de la aplicación"
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Seleccionar el idioma"
|
||||
@@ -2832,6 +2830,9 @@ msgstr "Editar"
|
||||
msgid "Merge with"
|
||||
msgstr "Fusionar con"
|
||||
|
||||
msgid "Decompose Color"
|
||||
msgstr "Descomponer color"
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr "Eliminar este filamento"
|
||||
|
||||
@@ -3113,6 +3114,9 @@ msgstr "Ensamblaje"
|
||||
msgid "Merge parts to an object"
|
||||
msgstr "Fusionar piezas en un objeto"
|
||||
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr "Usar altura de capa variable junto con la subcapa de color mezclado puede reducir la calidad de la mezcla de colores."
|
||||
|
||||
msgid "Add layers"
|
||||
msgstr "Añadir capas"
|
||||
|
||||
@@ -4564,6 +4568,23 @@ msgstr "La temperatura actual de la recámara es superior a la temperatura de se
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr "La temperatura mínima de la recámara (%d℃) es superior a la temperatura objetivo de la recámara (%d℃). El valor mínimo es el umbral en el que comienza la impresión mientras la recámara continúa calentándose hacia el objetivo, por lo que no debería superarlo. Se ajustará al valor objetivo."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr "La altura de capa es demasiado pequeña. Se establecerá en el mínimo (%g mm)."
|
||||
|
||||
# AI Translated
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "La altura de capa está fuera de los límites establecidos en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr "¿Ajustarla automáticamente al límite (%g mm)?"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Ajustar"
|
||||
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
"It has been reset to 0.2"
|
||||
@@ -4612,7 +4633,7 @@ msgstr ""
|
||||
"\n"
|
||||
"El valor se restablecerá a 0."
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr "Perímetro adicional alternado no funciona bien cuando \"Garantizar el grosor vertical de las cubiertas\" se establece en Todos."
|
||||
|
||||
msgid ""
|
||||
@@ -4658,7 +4679,7 @@ msgstr ""
|
||||
"NO - Mantener la altura de capa de soportes independiente"
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
"seam_slope_start_height debe ser menor que layer_height.\n"
|
||||
@@ -4666,7 +4687,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
"La profundidad de bloqueo debe ser menor que la profundidad de piel.\n"
|
||||
@@ -4684,6 +4705,13 @@ msgstr ""
|
||||
"Sí: habilitar el generador de muros Arachne\n"
|
||||
"No: deshabilitar el generador de paredes Arachne y establecer el modo [Desplazamiento] de la piel rugosa"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ear radius"
|
||||
msgstr "Radio de las orejas de borde"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Ancho del borde de adherencia"
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr "El modo espiral solo funciona cuando los bucles de perímetro son 1, el soporte está desactivado, la detección de agrupamientos mediante sondeo está desactivada, las capas superiores de la carcasa son 0, la densidad de relleno es 0 y el tipo de lapso de tiempo es tradicional."
|
||||
|
||||
@@ -4699,6 +4727,9 @@ msgstr ""
|
||||
"Sí - Cambiar estos ajustes y activar el modo espiral automáticamente\n"
|
||||
"No - Dejar de usar el modo espiral esta vez"
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "N/A"
|
||||
|
||||
msgid "Printing"
|
||||
msgstr "Imprimiendo"
|
||||
|
||||
@@ -4938,6 +4969,14 @@ msgstr "Fallo al generar el G-Code de calibración"
|
||||
msgid "Calibration error"
|
||||
msgstr "Error de calibración"
|
||||
|
||||
# AI Translated
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr "Esta impresora no está configurada con el hardware que necesita este control."
|
||||
|
||||
# AI Translated
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr "Este control no es compatible con esta impresora."
|
||||
|
||||
msgid "Network unavailable"
|
||||
msgstr "Red no disponible"
|
||||
|
||||
@@ -5116,13 +5155,9 @@ msgstr "El valor %s está fuera de rango. El rango válido es de %d a %d."
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
"¿Es %s%% o %s %s?\n"
|
||||
"SÍ para %s%%, \n"
|
||||
"NO para %s %s."
|
||||
"¿Es %s%% o %s %s?"
|
||||
|
||||
#, boost-format
|
||||
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
|
||||
@@ -5144,9 +5179,6 @@ msgstr "Patrón inválido. Use N, N#K, o una lista separada por comas con #K opc
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr "Formato inválido. Formato de vector esperado: \"%1%\""
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "N/A"
|
||||
|
||||
msgid "System agents"
|
||||
msgstr "Agentes del sistema"
|
||||
|
||||
@@ -5779,7 +5811,7 @@ msgstr "Volumen:"
|
||||
msgid "Size:"
|
||||
msgstr "Tamaño:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Se han encontrado conflictos de rutas G-Code en la capa %d, Z = %.2lfmm. Por favor, separe más los objetos en conflicto (%s <-> %s)."
|
||||
|
||||
@@ -5960,6 +5992,10 @@ msgstr "Multi-dispositivo"
|
||||
msgid "Project"
|
||||
msgstr "Proyecto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Device (Web)"
|
||||
msgstr "Dispositivo (Web)"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Sí"
|
||||
|
||||
@@ -6087,16 +6123,22 @@ msgstr "Guardar proyecto como"
|
||||
msgid "Save current project as"
|
||||
msgstr "Guardar el proyecto actual como"
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr "Cargar un modelo"
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr "Importar archivo Zip"
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr "Cargar modelos contenidos en un archivo zip"
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7577,6 +7619,9 @@ msgstr "Personalizar cama actual"
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr "La boquilla %s no puede imprimir %s."
|
||||
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr "Imprimir filamento de color mezclado en una impresora de un solo extrusor requiere cambios de filamento y purgas frecuentes, lo que puede aumentar considerablemente el desperdicio y el riesgo de obstrucción de la boquilla o del conducto de residuos."
|
||||
|
||||
#, boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr "No se recomienda mezclar %1% con %2% en la impresión.\n"
|
||||
@@ -7699,12 +7744,36 @@ msgstr "Sicronizar filamentos de la lista AMS"
|
||||
msgid "Set filaments to use"
|
||||
msgstr "Elegir filamentos para usar"
|
||||
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr "Añadir filamento mixto"
|
||||
|
||||
msgid "Mixed Filament"
|
||||
msgstr "Filamento mixto"
|
||||
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr "Eliminar el último filamento mixto"
|
||||
|
||||
msgid "Add mixed filament"
|
||||
msgstr "Añadir filamento mixto"
|
||||
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr "El filamento mixto tiene componentes no válidos o incoherentes. Vuelva a editar las entradas afectadas."
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr "Buscar cama, objeto y parte."
|
||||
|
||||
msgid "Pellets"
|
||||
msgstr "Pellets"
|
||||
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr "El filamento mixto tiene referencias de componentes rotas"
|
||||
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr "Editar / Borrar / Fusionar"
|
||||
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr "El filamento mixto de destino usa este filamento físico como componente. Al fusionarlos se eliminará este filamento físico y el filamento mixto puede quedar no válido. ¿Continuar?"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr "Al completar la operación, el proyecto %s se cerrará y se creará un nuevo proyecto."
|
||||
@@ -7841,8 +7910,14 @@ msgstr "¡Por favor, confirme que el G-Code dentro de los perfiles son seguros p
|
||||
msgid "Customized Preset"
|
||||
msgstr "Perfil Personalizado"
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF-8!"
|
||||
|
||||
msgid "Because of unsupported text encoding, garbage characters may appear!"
|
||||
msgstr "¡El nombre puede mostrar caracteres no válidos!"
|
||||
@@ -7883,6 +7958,12 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr "Objeto multipieza detectado"
|
||||
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr "Asociando texturas a los filamentos"
|
||||
|
||||
msgid "Texture Import Warning"
|
||||
msgstr "Aviso de importación de texturas"
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr "¿Cargar estos archivos como un objeto único con múltiples piezas?\n"
|
||||
|
||||
@@ -7997,19 +8078,19 @@ msgstr "No se seleccionó el directorio para el reemplazo"
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr "Reemplazado con archivos 3D desde el directorio:\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr "✖ Omitido %s: mismo archivo.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr "✖ Omitido %s: el archivo no existe.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr "✖ Omitido %s: fallo al reemplazar.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr "✔ Reemplazado %s.\n"
|
||||
|
||||
@@ -8087,6 +8168,18 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr "Sincronizar ahora"
|
||||
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr "No se ha podido importar la textura. El modelo parece contener datos de textura, pero no se ha podido completar el proceso de importación. El modelo se importará solo como geometría."
|
||||
|
||||
msgid "Applying texture colors..."
|
||||
msgstr "Aplicando colores de textura..."
|
||||
|
||||
msgid "Updating 3D view..."
|
||||
msgstr "Actualizando la vista 3D..."
|
||||
|
||||
msgid "Texture colors applied."
|
||||
msgstr "Colores de textura aplicados."
|
||||
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr "Puedes mantener los perfiles modificados en el nuevo proyecto o descartarlos"
|
||||
|
||||
@@ -8218,6 +8311,17 @@ msgstr "Guardar el archivo laminado como:"
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr "El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visualizado en la impresora."
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Publicar"
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr "El tipo de boquilla no está establecido. Configure la boquilla e inténtelo de nuevo."
|
||||
|
||||
@@ -8419,8 +8523,6 @@ msgstr "¿Quieres continuar?"
|
||||
msgid "Language selection"
|
||||
msgstr "Selección de idiomas"
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr "Cambiando idioma de la aplicación mientras se modifican algunos perfiles."
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asia-Pacífico"
|
||||
@@ -8725,6 +8827,18 @@ msgstr "Con esta opción activada, puede enviar una tarea a varios dispositivos
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Ventana emergente para seleccionar el modo de agrupación de filamentos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Visible plugin pages"
|
||||
msgstr "Páginas de plugins visibles"
|
||||
|
||||
# AI Translated
|
||||
msgid "pages"
|
||||
msgstr "páginas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr "Número de páginas de plugins que se muestran como pestañas fijas antes de que el resto de páginas se agrupe en un desplegable en la última pestaña."
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr "Comportamiento"
|
||||
|
||||
@@ -9074,6 +9188,18 @@ msgstr "Mostrar ajustes preestablecidos no compatibles"
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr "Mostrar los ajustes preestablecidos incompatibles o no compatibles en los menús desplegables de impresoras y filamentos. Estos ajustes preestablecidos no se pueden seleccionar."
|
||||
|
||||
# AI Translated
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr "(Experimental) Usar agentes de impresora en lugar de hosts de impresión"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
"Envía los trabajos de impresión de impresoras que no son Bambu a través de los agentes de plugin de impresora en lugar del flujo clásico de subida al host de impresión.\n"
|
||||
"Cuando está desactivado, OrcaSlicer utiliza el comportamiento heredado del host de impresión."
|
||||
|
||||
msgid "Experimental Features"
|
||||
msgstr "Funciones experimentales"
|
||||
|
||||
@@ -9278,6 +9404,9 @@ msgstr "Vaso en espiral"
|
||||
msgid "First layer filament sequence"
|
||||
msgstr "Secuencia de primera capa de filamento"
|
||||
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr "La lista de filamentos contiene filamentos mixtos. La secuencia de filamentos personalizada no tendrá efecto."
|
||||
|
||||
msgid "By Layer"
|
||||
msgstr "Por Capa"
|
||||
|
||||
@@ -9305,9 +9434,6 @@ msgstr "Ir a la página web de publicación de modelos"
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente."
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Publicar"
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr "La publicación fue cancelada"
|
||||
|
||||
@@ -9323,6 +9449,64 @@ msgstr "Cargando datos"
|
||||
msgid "Jump to webpage"
|
||||
msgstr "Ir a la página web"
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr "Guardar %s como"
|
||||
@@ -9333,9 +9517,25 @@ msgstr "Perfil de usuario"
|
||||
msgid "Preset Inside Project"
|
||||
msgstr "Perfil interno del proyecto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr "Copia en este perfil todos los valores heredados del perfil padre y elimina la relación de herencia. Los perfiles compatibles solo con el perfil padre pueden dejar de ser compatibles."
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr "Separar del elemento padre"
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Perfil único"
|
||||
|
||||
# AI Translated
|
||||
msgid "Parent preset"
|
||||
msgstr "Perfil padre"
|
||||
|
||||
# AI Translated
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr "Este perfil no hereda de otro perfil."
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr "El nombre no está disponible."
|
||||
|
||||
@@ -10031,22 +10231,6 @@ msgstr "¿Está seguro de que desea activar esta opción?"
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr "Los patrones de relleno suelen diseñarse para gestionar la rotación automáticamente y asegurar una impresión adecuada y lograr sus efectos previstos (p. ej., Giroide, Cúbico). Rotar el patrón de relleno actual puede provocar soporte insuficiente. Proceda con precaución y compruebe detenidamente posibles problemas de impresión. ¿Está seguro de que desea activar esta opción?"
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
"La altura de la capa es demasiado pequeña.\n"
|
||||
"Se establecerá en min_layer_height\n"
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "La altura de la capa excede el límite en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión."
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr "¿Desea ajustar el rango automáticamente?\n"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Ajustar"
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr "Función experimental: retraer y cortar el filamento a una mayor distancia durante los cambios de filamento para minimizar el purgado. Aunque puede reducir notablemente el purgado, también puede aumentar el riesgo de atascos de boquilla u otras complicaciones de impresión.Característica experimental: Retraer y cortar el filamento a mayor distancia durante los cambios de filamento para minimizar el descarte. Aunque puede reducir notablemente el descarte, también puede elevar el riesgo de atascos de boquillas u otros problemas en la impresión."
|
||||
|
||||
@@ -10238,6 +10422,9 @@ msgstr "Palabras clave utilizadas y encontradas"
|
||||
msgid "Setting Overrides"
|
||||
msgstr "Sobreescribir Ajustes de impresora"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Retracción al cambiar de material"
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr "Información básica"
|
||||
|
||||
@@ -10364,6 +10551,12 @@ msgstr "Perfiles de proceso compatibles"
|
||||
msgid "Printable space"
|
||||
msgstr "Espacio imprimible"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Agente de impresora"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora. Los agentes disponibles se registran al iniciar el sistema."
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10489,9 +10682,6 @@ msgstr "Límites de altura de la capa"
|
||||
msgid "Z-Hop"
|
||||
msgstr "Salto en Z"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Retracción al cambiar de material"
|
||||
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
"\n"
|
||||
@@ -10604,11 +10794,11 @@ msgstr "%s: %s"
|
||||
msgid "No modifications need to be copied."
|
||||
msgstr "No hay modificaciones que copiar."
|
||||
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr "Copiar parámetros"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr "Modificar parámetros de %s"
|
||||
|
||||
#, c-format, boost-format
|
||||
@@ -11115,27 +11305,6 @@ msgstr "Volúmenes de purgado para el cambio de filamentos"
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr "Por favor, elija el color del filamento"
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr "La función de visualización en directo nativa de Wayland requiere el receptor de vídeo GTK de GStreamer. Instale el plugin gtksink para GStreamer y, a continuación, reinicie OrcaSlicer."
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr "No se pudo inicializar el receptor de vídeo nativo de Wayland GStreamer. Compruebe la instalación del plugin GTK de GStreamer."
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr "Para esta tarea se necesita el Reproductor de Windows Media. ¿Desea activar el \"Reproductor de Windows Media\" en su sistema operativo?"
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr "BambuSource no se ha registrado correctamente para la reproducción multimedia. Pulse Sí para volver a registrarlo. Será promocionado dos veces"
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr "¡Falta el componente BambuSource para la reproducción de medios! Reinstale OrcaSlicer o busque ayuda en la comunidad."
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr "Si utiliza una BambuSource de una instalación diferente, es posible que la reproducción de vídeo no funcione correctamente. Pulsa Sí para solucionarlo."
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr "A tu sistema le faltan los codecs H.264 para GStreamer, necesarios para reproducir vídeo. (Prueba a instalar los paquetes gstreamer1.0-plugins-bad o gstreamer1.0-libav y, a continuación, reinicia Orca Slicer...)."
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr "El proveedor de servicios en la nube no está disponible. Reinicia OrcaSlicer e inténtalo de nuevo."
|
||||
|
||||
@@ -11809,6 +11978,10 @@ msgstr " está demasiado cerca de una zona de exclusión, lo que provocará coli
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr " está demasiado cerca del área de detección de aglomeraciones, y se producirán colisiones.\n"
|
||||
|
||||
# AI Translated
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr " está parcialmente fuera del área imprimible, y no se puede imprimir.\n"
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr "Las temperaturas de boquilla seleccionadas son incompatibles. La temperatura de boquilla de cada filamento debe estar dentro del rango de temperaturas recomendado para los demás filamentos. De lo contrario, podrían producirse atascos en la boquilla o daños en la impresora."
|
||||
|
||||
@@ -11821,6 +11994,9 @@ msgstr "Si aún así quieres imprimir, puedes activar la opción en Preferencias
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr "No hay extrusiones con los ajustes actuales."
|
||||
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr "Se está usando un filamento mixto con degradado, pero 'Subcapa de color mezclado' está desactivado. El degradado no se imprimirá."
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr "Modo de timelapse suave no está soportado cuando la secuencia \"por objeto\" está activada."
|
||||
|
||||
@@ -11857,6 +12033,9 @@ msgstr "Es posible que desee reducir el tamaño de su modelo o cambiar la config
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr "La altura de capa adaptativa no es compatible con los soportes orgánicos."
|
||||
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr "El filamento de la torre de purga no puede ser un filamento mixto."
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr "Diámetros de boquillas y diámetros de filamento diferentes pueden no funcionar correctamente cuando la torre de purga está activada. Esta función es experimental, así que proceda con cautela."
|
||||
|
||||
@@ -12116,9 +12295,6 @@ msgstr "Utiliza 3MF en lugar de G-code"
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr "Activa esta opción si la impresora admite un archivo 3MF como trabajo de impresión. Cuando está activada, Orca Slicer envía el archivo cortado como un archivo .gcode.3mf, en lugar de como un archivo .gcode convencional."
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Agente de impresora"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora."
|
||||
|
||||
@@ -12200,8 +12376,8 @@ msgstr "mm o %"
|
||||
msgid "Other layers"
|
||||
msgstr "Otras capas"
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "Temperatura de la cama para las capas, excepto la inicial. Un valor de 0 significa que el filamento no es compatible con la Cama Fría SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 significa que el filamento no es compatible con la Cama Fría SuperTack."
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
msgstr "Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 significa que el filamento no admite la impresión en la Cama Fría."
|
||||
@@ -12794,9 +12970,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr "Velocidad de los puntes internos. Si se expresa como un porcentaje, será Calculado en base a la velocidad de puente. El valor por defecto es 150%."
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Ancho del borde de adherencia"
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr "Distancia del modelo a la línea más externa del borde de adherencia."
|
||||
|
||||
@@ -12876,6 +13049,14 @@ msgstr ""
|
||||
"La geometría se verá diezmada antes de detectar angulos agudos. Este parámetro indica la longitud mínima de desviación para el diezmado\n"
|
||||
"0 para desactivar."
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ears outer only"
|
||||
msgstr "Orejas de borde solo en el exterior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr "Genera orejas de ratón únicamente en el contorno exterior del modelo, excluyendo agujeros y secciones cerradas."
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr "máquina compatible ascendente"
|
||||
|
||||
@@ -13539,6 +13720,7 @@ msgstr "Tiempo de capa"
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr "El ventilador de refrigeración de la pieza se activará para las capas cuyo tiempo estimado sea inferior a este valor. La velocidad del ventilador se interpola entre las velocidades mínima y máxima del ventilador en función del tiempo de impresión de cada capa."
|
||||
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
@@ -13844,6 +14026,50 @@ msgstr "Material de soporte"
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr "El material de soporte se utiliza habitualmente para imprimir soportes y la interfaz de los soportes."
|
||||
|
||||
msgid "Is mixed filament"
|
||||
msgstr "Es filamento mixto"
|
||||
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr "Indica si esta ranura de filamento es un filamento mixto compuesto por varios filamentos físicos"
|
||||
|
||||
msgid "Mixed filament components"
|
||||
msgstr "Componentes del filamento mixto"
|
||||
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr "Índices (empezando en 1) de los filamentos componentes, separados por comas; p. ej. \"1,3\""
|
||||
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr "Proporciones de subcapa del filamento mixto"
|
||||
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr "Valores de proporción separados por comas cuya suma sea 1.0; p. ej. \"0.7,0.3\""
|
||||
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr "Degradado del filamento mixto"
|
||||
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr "Activa el modo de degradado en dirección Z para las subcapas del filamento mixto. Al activarlo, las proporciones de las subcapas varían linealmente entre capas."
|
||||
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr "Rango del degradado del filamento mixto"
|
||||
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr "Proporciones inicial y final del primer componente en el modo de degradado. Par separado por comas; p. ej. \"0.10,0.90\" significa del 10% al 90%."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr "Curva del degradado del filamento mixto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr "Curva personalizada opcional, al estilo de Photoshop, que asigna el progreso en Z a la proporción del primer componente. Se codifica como puntos de control separados por barras verticales, con el formato \"x,y\" (heredado) o \"x,y,m_in,m_out\" cuando se necesita anular la tangente (un valor vacío o \"nan\" usa el valor PCHIP predeterminado). x está en [0,1]; y se limita al rango de proporciones configurado; p. ej. \"0,0.15|0.5,0.50|1,0.85\". Si se deja vacío, se usa el gradient_range lineal."
|
||||
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr "Degradado por pieza del filamento mixto"
|
||||
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr "Cuando el modo de degradado está activado, aplica el degradado a cada pieza de un ensamblaje de forma independiente en lugar de tratar todo el ensamblaje como un único rango Z."
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr "Filamento imprimible"
|
||||
|
||||
@@ -14011,6 +14237,14 @@ msgstr "TPMS-FK"
|
||||
msgid "Gyroid"
|
||||
msgstr "Giroide"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr "Factor de suavizado del relleno poco denso"
|
||||
|
||||
# AI Translated
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr "Controla cuánto se redondean las esquinas del relleno poco denso. 0% mantiene el trazado original con esquinas vivas, mientras que 100% produce las curvas más amplias posibles entre líneas de relleno adyacentes."
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr "Aceleración del relleno de la superficie superior. El uso de un valor más bajo puede mejorar la calidad de la superficie superior."
|
||||
|
||||
@@ -14544,6 +14778,14 @@ msgstr "Con qué tipo de G-Code es compatible la impresora."
|
||||
msgid "Klipper"
|
||||
msgstr "Klipper"
|
||||
|
||||
# AI Translated
|
||||
msgid "Skip G-code config block"
|
||||
msgstr "Omitir el bloque de configuración del G-code"
|
||||
|
||||
# AI Translated
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr "No escribe el CONFIG_BLOCK (los pares clave/valor de la configuración del laminador) en el archivo G-code. Esto puede ayudar con impresoras cuyo firmware falla al analizar esas líneas de comentario (p. ej. Anycubic go-klipper). Nota: el archivo G-code ya no contendrá los ajustes del laminador, por lo que al importarlo de nuevo en OrcaSlicer no se restaurará la configuración."
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr "Impresora Modificada para Pellets"
|
||||
|
||||
@@ -15062,6 +15304,7 @@ msgstr "Fuerza máxima del eje Y"
|
||||
msgid "The allowed maximum output force of Y axis"
|
||||
msgstr "La fuerza máxima permitida del eje Y"
|
||||
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr "N"
|
||||
|
||||
@@ -15071,6 +15314,7 @@ msgstr "Masa de la cama del eje Y"
|
||||
msgid "The machine bed mass load of Y axis"
|
||||
msgstr "La carga de la masa de la cama de la máquina del eje Y"
|
||||
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
@@ -15382,7 +15626,7 @@ msgstr "Los puntos de inicio y fin, desde la zona de corte al cubo de basura."
|
||||
msgid "Reduce infill retraction"
|
||||
msgstr "Reducir la retracción del relleno"
|
||||
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr "Desactiva la retracción cuando el desplazamiento se realiza en su totalidad dentro de un área de relleno, donde los artefactos causados por un rezumado no son visibles. Puede reducir el número de retracciones y por ende el tiempo total de retracción al imprimir modelos complejos, reduciendo el tiempo total de impresión. Sin embargo, puede que las operaciones de laminado y de generación del archivo G-Code sean más lentas."
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -15547,7 +15791,7 @@ msgstr "Cantidad de retracción después de la limpieza"
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
"La longitud de la retracción rápida después de la limpieza, relativa a la longitud de retracción.\n"
|
||||
@@ -15583,10 +15827,18 @@ msgstr "Retracción larga al cambiar de extrusor"
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr "Distancia de retracción al cambiar de extrusor"
|
||||
|
||||
# AI Translated
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr "Longitud de retracción (Cambio de herramienta)"
|
||||
|
||||
# AI Translated
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr "Cuando se activa la retracción antes de un cambio de herramienta, el filamento se retrae la cantidad especificada (la longitud se mide sobre el filamento en bruto, antes de entrar en el extrusor)."
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr "Altura de Salto en Z"
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr "Cada vez que se realiza una retracción, la boquilla se levanta un poco para crear un pequeño margen entre la boquilla y la impresión. Esto evita que la boquilla golpee la pieza cuando se desplaza. El uso de la línea espiral para levantar z puede evitar la aparición de hilos."
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -15676,6 +15928,10 @@ msgstr "Longitud extra de reinicio"
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr "Cuando la retracción se compensa después de un desplazamiento, el extrusor expulsará esta cantidad adicional de filamento. Esta función no suele ser necesaria."
|
||||
|
||||
# AI Translated
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr "Longitud extra de reinicio (Cambio de herramienta)"
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr "Cuando se compensa la retracción después de cambiar de cabezal, el extrusor expulsará esta cantidad adicional de filamento."
|
||||
|
||||
@@ -16082,6 +16338,14 @@ msgstr "Cambio de herramienta en la torre de purga"
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr "Obliga al cabezal a desplazarse hasta la torre de purga antes de emitir el comando de cambio de herramienta (Tx). Solo es relevante para impresoras con múltiples extrusores (múltiples cabezales) que utilicen una torre de limpieza de tipo 2. Por defecto, Orca omite el desplazamiento en máquinas con múltiples cabezales porque el firmware se encarga del cambio de cabezal, lo que puede provocar que el comando Tx se emita por encima de la pieza impresa. Habilita esta opción si deseas que el cambio de herramienta se emita siempre por encima de la torre de purga."
|
||||
|
||||
# AI Translated
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr "Esperar la temperatura en la torre de purga"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr "Recoge la nueva herramienta sin esperar a que alcance la temperatura de impresión, se desplaza a la torre de purga y espera allí la temperatura, justo antes de purgar. El rezumado del calentamiento cae sobre la torre en lugar de sobre el modelo, y el desplazamiento se solapa con el calentamiento. Solo es relevante para impresoras multiextrusor (multicabezal) que usan una torre de purga de tipo 2. El firmware o la macro de cambio de herramienta no deben esperar la temperatura por su cuenta. Cuando está desactivado, la espera de temperatura se emite justo después del comando de cambio de herramienta."
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr "Sin capas de baja densidad (beta)"
|
||||
|
||||
@@ -16607,6 +16871,14 @@ msgstr ""
|
||||
"\n"
|
||||
"Fijando un valor en la cantidad de retracción antes del purgado se realizará cualquier exceso de retracción antes del purgado, de lo contrario se realizará después."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr "Subcapa de color mezclado"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr "Activa la división en subcapas de color mezclado. Al activarlo, las capas que contienen filamentos de color mezclado se dividen en subcapas para lograr efectos de mezcla de colores."
|
||||
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr "La torre de purga puede utilizarse para limpiar los residuos de la boquilla y estabilizar la presión de la recámara en el interior de la boquilla, con el fin de evitar defectos visuales al imprimir objetos."
|
||||
|
||||
@@ -17315,7 +17587,7 @@ msgid "Current Z-hop"
|
||||
msgstr "Z-Hop actual"
|
||||
|
||||
msgid "Contains Z-hop present at the beginning of the custom G-code block."
|
||||
msgstr "Contiene el z-hop presente al principio del bloque de G-Code personalizado."
|
||||
msgstr "Contiene el Z-hop presente al principio del bloque de G-Code personalizado."
|
||||
|
||||
msgid "Position of the extruder at the beginning of the custom G-code block. If the custom G-code travels somewhere else, it should write to this variable so OrcaSlicer knows where it travels from when it gets control back."
|
||||
msgstr "Posición del extrusor al comienzo del bloque de G-Code personalizado. Si el G-Code personalizado viaja a otro lugar, debe escribir en esta variable para que OrcaSlicer sepa desde dónde viaja cuando recupere el control."
|
||||
@@ -17663,6 +17935,10 @@ msgstr "La generación de la malla del archivo del modelo falló o no hay una fo
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr "No se ha podido leer el archivo proporcionado porque está vacío."
|
||||
|
||||
# AI Translated
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr "El formato del archivo es incompatible y no se puede analizar."
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr "Formato de archivo desconocido: el archivo de entrada debe tener extensión .STL, .obj o .amf (.xml)."
|
||||
|
||||
@@ -19125,17 +19401,17 @@ msgstr "Mostrar sólo los nombres de impresora con cambios en los perfiles de im
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr "Mostrar sólo los nombres de impresora con cambios en los perfiles de filamento."
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr "Sólo se mostrarán los nombres de impresoras con perfiles de impresora de usuario, y cada perfil que elija se exportará como un archivo zip."
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr "Sólo se mostrarán los nombres de filamento con perfiles de filamento de usuario, y todos los perfiles de filamento de usuario de cada nombre de filamento que seleccione se exportarán como un archivo zip."
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Sólo se mostrarán los nombres de impresoras con perfiles de procesos modificados, \n"
|
||||
"y todos los perfiles de procesos de usuario de cada nombre de impresora que seleccione se exportarán como un archivo zip."
|
||||
@@ -19281,9 +19557,6 @@ msgstr "Impresora física"
|
||||
msgid "Print Host upload"
|
||||
msgstr "Mandar al servidor de impresión"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Seleccione la implementación del agente de red para la comunicación con la impresora. Los agentes disponibles se registran al iniciar el sistema."
|
||||
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr "Selecciona una impresora Flashforge"
|
||||
|
||||
@@ -19367,7 +19640,7 @@ msgstr "Copiar información del sistema al portapapeles"
|
||||
msgid "We need information for diagnosing source of the issue. Check wiki page for detailed guide."
|
||||
msgstr "Necesitamos información para diagnosticar el origen del problema. Consulta la página wiki para una guía detallada."
|
||||
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr "El botón Empaquetar recopila el archivo del proyecto y los registros de la sesión actual en un archivo zip."
|
||||
|
||||
msgid "Any additional visual examples like images or screen recordings might be helpful while reporting the issue."
|
||||
@@ -19409,7 +19682,7 @@ msgstr "Nivel de registro"
|
||||
msgid "Stored logs"
|
||||
msgstr "Registros almacenados"
|
||||
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr "Empaqueta todos los registros almacenados en un archivo zip."
|
||||
|
||||
msgid "Profiles"
|
||||
@@ -19476,7 +19749,7 @@ msgstr "No se ha encontrado el tipo de impresora; selecciónelo manualmente."
|
||||
msgid "Authorizing..."
|
||||
msgstr "Autorizando..."
|
||||
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr "Error. No se puede obtener el token de la API para la autorización"
|
||||
|
||||
msgid "Could not parse server response."
|
||||
@@ -19922,8 +20195,9 @@ msgstr "Eliminado"
|
||||
msgid "Enable smart filament assign: Assign one filament to multiple nozzles to maximize savings"
|
||||
msgstr "Activar la asignación inteligente de filamento: asigna un filamento a varias boquillas para maximizar el ahorro"
|
||||
|
||||
msgid "Fila Saving"
|
||||
msgstr "Ahorro de filamento"
|
||||
# AI Translated
|
||||
msgid "File Saving"
|
||||
msgstr "Guardado de archivo"
|
||||
|
||||
msgid "Don't remind me again"
|
||||
msgstr "No me recuerdes de nuevo"
|
||||
@@ -20125,9 +20399,6 @@ msgstr "Ha ocurrido algo inesperado al intentar iniciar sesión, inténtelo de n
|
||||
msgid "User canceled."
|
||||
msgstr "Cancelado por el usuario."
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr "Diámetro de la cabeza"
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr "Ángulo máximo"
|
||||
|
||||
@@ -20208,6 +20479,15 @@ msgstr "Esta acción no se puede deshacer. ¿Continuar?"
|
||||
msgid "Skipping objects."
|
||||
msgstr "Omitiendo objetos."
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr "Seleccionar Filamento"
|
||||
|
||||
@@ -20285,6 +20565,9 @@ msgstr "Reiniciar ahora"
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr "NO CHOCAR EN ABSOLUTO"
|
||||
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr "Velocidad volumétrica"
|
||||
|
||||
@@ -20861,6 +21144,52 @@ msgstr ""
|
||||
"Evita la deformación\n"
|
||||
"¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "La función de visualización en directo nativa de Wayland requiere el receptor de vídeo GTK de GStreamer. Instale el plugin gtksink para GStreamer y, a continuación, reinicie OrcaSlicer."
|
||||
|
||||
#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
#~ msgstr "No se pudo inicializar el receptor de vídeo nativo de Wayland GStreamer. Compruebe la instalación del plugin GTK de GStreamer."
|
||||
|
||||
#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
#~ msgstr "Para esta tarea se necesita el Reproductor de Windows Media. ¿Desea activar el \"Reproductor de Windows Media\" en su sistema operativo?"
|
||||
|
||||
#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
#~ msgstr "BambuSource no se ha registrado correctamente para la reproducción multimedia. Pulse Sí para volver a registrarlo. Será promocionado dos veces"
|
||||
|
||||
#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
#~ msgstr "¡Falta el componente BambuSource para la reproducción de medios! Reinstale OrcaSlicer o busque ayuda en la comunidad."
|
||||
|
||||
#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
#~ msgstr "Si utiliza una BambuSource de una instalación diferente, es posible que la reproducción de vídeo no funcione correctamente. Pulsa Sí para solucionarlo."
|
||||
|
||||
#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
#~ msgstr "A tu sistema le faltan los codecs H.264 para GStreamer, necesarios para reproducir vídeo. (Prueba a instalar los paquetes gstreamer1.0-plugins-bad o gstreamer1.0-libav y, a continuación, reinicia Orca Slicer...)."
|
||||
|
||||
#~ msgid "N"
|
||||
#~ msgstr "N"
|
||||
|
||||
#~ msgid "g"
|
||||
#~ msgstr "g"
|
||||
|
||||
#~ msgid "Fila Saving"
|
||||
#~ msgstr "Ahorro de filamento"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Layer height is too small.\n"
|
||||
#~ "It will set to min_layer_height\n"
|
||||
#~ msgstr ""
|
||||
#~ "La altura de la capa es demasiado pequeña.\n"
|
||||
#~ "Se establecerá en min_layer_height\n"
|
||||
|
||||
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
#~ msgstr "La altura de la capa excede el límite en Ajustes de la Impresora -> Extrusor -> Limite de Altura de Capa, esto puede causar problemas de calidad de impresión."
|
||||
|
||||
#~ msgid "Adjust to the set range automatically?\n"
|
||||
#~ msgstr "¿Desea ajustar el rango automáticamente?\n"
|
||||
|
||||
#~ msgid "Head diameter"
|
||||
#~ msgstr "Diámetro de la cabeza"
|
||||
|
||||
#~ msgid "Print order within a single layer."
|
||||
#~ msgstr "Orden de impresión dentro de cada capa."
|
||||
|
||||
@@ -20924,7 +21253,7 @@ msgstr ""
|
||||
#~ msgid "Select Filament && Hotends"
|
||||
#~ msgstr "Seleccionar Filamento && Hotends"
|
||||
|
||||
#~ msgid "External spools is not supported since Filament Track Switch has been installed. If you want to use external spool, please uninstall it."
|
||||
#~ msgid "External spools are not supported since Filament Track Switch has been installed. If you want to use external spool, please uninstall it."
|
||||
#~ msgstr "Los carretes externos no son compatibles porque se ha instalado el Filament Track Switch. Si desea utilizar un carrete externo, desinstálelo."
|
||||
|
||||
#, c-format, boost-format
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -2460,8 +2460,6 @@ msgstr "Frissítés érhető el. Nyisd meg a beállításcsomag párbeszédablak
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s eltávolítva."
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr "Alkalmazás nyelvének váltása"
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Válaszd ki a nyelvet"
|
||||
@@ -2948,6 +2946,10 @@ msgstr "Szerkesztés"
|
||||
msgid "Merge with"
|
||||
msgstr "Egyesítés ezzel"
|
||||
|
||||
# AI Translated
|
||||
msgid "Decompose Color"
|
||||
msgstr "Szín szétbontása"
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr "Filament törlése"
|
||||
|
||||
@@ -3247,6 +3249,10 @@ msgstr "Összeállítás"
|
||||
msgid "Merge parts to an object"
|
||||
msgstr "Tárgyak egyesítése egy objektummá"
|
||||
|
||||
# AI Translated
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr "A változó rétegmagasság és a kevert színű alréteg együttes használata ronthatja a színkeverés minőségét."
|
||||
|
||||
# AI Translated
|
||||
msgid "Add layers"
|
||||
msgstr "Rétegek hozzáadása"
|
||||
@@ -4739,6 +4745,23 @@ msgstr "A kamra aktuális hőmérséklete magasabb az anyag biztonságos hőmér
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr "A minimális kamrahőmérséklet (%d℃) magasabb a cél kamrahőmérsékletnél (%d℃). A minimális érték az a küszöb, amelynél a nyomtatás elindul, miközben a kamra tovább melegszik a célérték felé, ezért nem haladhatja meg azt. Az érték a célértékre lesz korlátozva."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr "A rétegmagasság túl kicsi. A minimumra lesz állítva (%g mm)."
|
||||
|
||||
# AI Translated
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "A rétegmagasság a Nyomtatóbeállítások -> Extruder -> Rétegmagasság limitek menüpontban megadott határértékeken kívül esik, ez minőségbeli problémákat okozhat a nyomtatás során."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr "Szeretnéd automatikusan a határértékre (%g mm) igazítani?"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Módosítás"
|
||||
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
"It has been reset to 0.2"
|
||||
@@ -4786,7 +4809,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Az érték 0-ra áll vissza."
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr "A váltakozó extra fal nem működik jól, ha a függőleges héjvastagság biztosítása \"Mind\" értékre van állítva."
|
||||
|
||||
msgid ""
|
||||
@@ -4832,7 +4855,7 @@ msgstr ""
|
||||
"NEM - Független támasz rétegmagasság megtartása"
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
"A seam_slope_start_height értékének kisebbnek kell lennie, mint a layer_height.\n"
|
||||
@@ -4840,7 +4863,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
"A rögzítési mélységnek kisebbnek kell lennie, mint a felületi réteg mélysége.\n"
|
||||
@@ -4858,6 +4881,13 @@ msgstr ""
|
||||
"Igen - Engedélyezd az Arachne falgenerátort\n"
|
||||
"Nem - Tiltsd le az Arachne falgenerátort, majd állítsd a barázdált felületet [Eltolás] módra"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ear radius"
|
||||
msgstr "Peremfül sugara"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Perem szélessége"
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr "A spirál mód csak akkor működik, ha a falhurkok száma 1, a támasz és a szondázásos csomósodásészlelés ki van kapcsolva, a felső héjrétegek száma 0, a kitöltés sűrűsége 0, a Timelapse típusa pedig hagyományos."
|
||||
|
||||
@@ -4873,6 +4903,10 @@ msgstr ""
|
||||
"Igen - Módosítsd ezeket a beállításokat, és automatikusan kapcsold be a spirál módot\n"
|
||||
"Nem - Most ne kapcsold be a spirál módot"
|
||||
|
||||
# AI Translated
|
||||
msgid "N/A"
|
||||
msgstr "N/A"
|
||||
|
||||
msgid "Printing"
|
||||
msgstr "Nyomtatás"
|
||||
|
||||
@@ -5112,6 +5146,14 @@ msgstr "Nem sikerült létrehozni a kalibrációs G-kódot"
|
||||
msgid "Calibration error"
|
||||
msgstr "Kalibrációs hiba"
|
||||
|
||||
# AI Translated
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr "Ez a nyomtató nincs felszerelve a vezérlőelemhez szükséges hardverrel."
|
||||
|
||||
# AI Translated
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr "Ez a vezérlőelem nem támogatott ezen a nyomtatón."
|
||||
|
||||
# AI Translated
|
||||
msgid "Network unavailable"
|
||||
msgstr "A hálózat nem érhető el"
|
||||
@@ -5296,13 +5338,9 @@ msgstr "%s érték tartományon kívül van. Az érvényes tartomány: %d - %d."
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
"%s%% vagy %s %s?\n"
|
||||
"IGEN %s%%, \n"
|
||||
"NEM %s %s."
|
||||
"%s%% vagy %s %s?"
|
||||
|
||||
#, boost-format
|
||||
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
|
||||
@@ -5324,10 +5362,6 @@ msgstr "Érvénytelen minta. Használj N, N#K formátumot, vagy vesszővel elvá
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr "Érvénytelen formátum. Elvárt vektor formátum: \"%1%\""
|
||||
|
||||
# AI Translated
|
||||
msgid "N/A"
|
||||
msgstr "N/A"
|
||||
|
||||
# AI Translated
|
||||
msgid "System agents"
|
||||
msgstr "Rendszerügynökök"
|
||||
@@ -5971,7 +6005,7 @@ msgstr "Térfogat:"
|
||||
msgid "Size:"
|
||||
msgstr "Méret:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "G-kód útvonalütközés található a(z) %d. rétegen, Z = %.2lfmm. Helyezd távolabb egymástól az ütköző objektumokat (%s <-> %s)."
|
||||
|
||||
@@ -6153,6 +6187,10 @@ msgstr "Több eszköz"
|
||||
msgid "Project"
|
||||
msgstr "Projekt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Device (Web)"
|
||||
msgstr "Nyomtató (Web)"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Igen"
|
||||
|
||||
@@ -6281,16 +6319,22 @@ msgstr "Projekt mentése másként"
|
||||
msgid "Save current project as"
|
||||
msgstr "Jelenlegi projekt mentése másként"
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr "Importálás 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr "Modell betöltése"
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr "Zip archívum importálása"
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr "Zip archívumban található modellek betöltése"
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7811,6 +7855,10 @@ msgstr "Aktuális tálca testreszabása"
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr "A(z) %s fúvóka nem tudja nyomtatni ezt: %s."
|
||||
|
||||
# AI Translated
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr "A kevert színű filament nyomtatása egyextruderes nyomtatón gyakori filamentcserét és öblítést igényel, ami jelentősen növelheti a hulladék mennyiségét, valamint a fúvóka vagy a hulladékcsúszda eltömődésének kockázatát."
|
||||
|
||||
#, boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr "A(z) %1% és %2% keverése nyomtatás közben nem ajánlott.\n"
|
||||
@@ -7936,12 +7984,44 @@ msgstr "Filamentlista szinkronizálása az AMS-ből"
|
||||
msgid "Set filaments to use"
|
||||
msgstr "Használni kívánt filament beállítása"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr "Kevert filament hozzáadása"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed Filament"
|
||||
msgstr "Kevert filament"
|
||||
|
||||
# AI Translated
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr "Utolsó kevert filament eltávolítása"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add mixed filament"
|
||||
msgstr "Kevert filament hozzáadása"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr "A kevert filament érvénytelen vagy nem egyező összetevőket tartalmaz. Szerkessze újra az érintett bejegyzéseket."
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr "Tálca, objektum és tárgy keresése."
|
||||
|
||||
msgid "Pellets"
|
||||
msgstr "Pelletek"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr "A kevert filament hibás összetevő-hivatkozásokat tartalmaz"
|
||||
|
||||
# AI Translated
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr "Szerkesztés / Törlés / Egyesítés"
|
||||
|
||||
# AI Translated
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr "A cél kevert filament ezt a fizikai filamentet használja összetevőként. Az egyesítés eltávolítja ezt a fizikai filamentet, és a kevert filament érvénytelenné válhat. Folytatja?"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr "A művelet befejezésekor a(z) %s projekt bezárul, majd új projekt jön létre."
|
||||
@@ -8079,7 +8159,13 @@ msgstr "Kérlek, győződj meg arról, hogy a beállításokban található G-k
|
||||
msgid "Customized Preset"
|
||||
msgstr "Egyedi beállítás"
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr "A STEP fájlon belüli komponens neve nem UTF-8 formátumban van!"
|
||||
|
||||
# AI Translated
|
||||
@@ -8124,6 +8210,14 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr "Több részből álló objektum észlelve"
|
||||
|
||||
# AI Translated
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr "Textúrák hozzárendelése a filamentekhez"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture Import Warning"
|
||||
msgstr "Textúraimportálási figyelmeztetés"
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr "Betöltöd ezeket a fájlokat több részből álló egyetlen objektumként?\n"
|
||||
|
||||
@@ -8244,19 +8338,19 @@ msgstr "A cseréhez nem lett mappa kiválasztva"
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr "Cserélve a mappából származó 3D fájlokra:\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr "✖ %s kihagyva: azonos fájl.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr "✖ %s kihagyva: a fájl nem létezik.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr "✖ %s kihagyva: a csere sikertelen.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr "✔%s lecserélve.\n"
|
||||
|
||||
@@ -8335,6 +8429,22 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr "Szinkronizálás most"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr "A textúra importálása sikertelen. Úgy tűnik, hogy a modell textúraadatokat tartalmaz, de az importálási folyamatot nem sikerült befejezni. A modell csak geometriaként lesz importálva."
|
||||
|
||||
# AI Translated
|
||||
msgid "Applying texture colors..."
|
||||
msgstr "Textúraszínek alkalmazása..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Updating 3D view..."
|
||||
msgstr "3D nézet frissítése..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture colors applied."
|
||||
msgstr "A textúraszínek alkalmazva."
|
||||
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr "Megtarthatod az új projekt módosított beállításait, vagy elvetheted őket"
|
||||
|
||||
@@ -8467,6 +8577,17 @@ msgstr "Szeletelt fájl mentése mint:"
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr "A(z) %s fájlt elküldtük a nyomtató tárhelyére. A fájl a nyomtatón tekinthető meg."
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Közzététel"
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr "A fúvókatípus nincs beállítva. Állítsd be a fúvókát, majd próbáld újra."
|
||||
|
||||
@@ -8679,8 +8800,6 @@ msgstr "Szeretnéd folytatni?"
|
||||
msgid "Language selection"
|
||||
msgstr "Nyelv kiválasztása"
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak."
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Ázsia-Csendes-óceáni térség"
|
||||
@@ -8993,6 +9112,18 @@ msgstr "Ezzel az opcióval egyszerre több eszközre küldhetsz feladatot és t
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Felugró ablak a filamentcsoportosítási mód kiválasztásához"
|
||||
|
||||
# AI Translated
|
||||
msgid "Visible plugin pages"
|
||||
msgstr "Látható bővítményoldalak"
|
||||
|
||||
# AI Translated
|
||||
msgid "pages"
|
||||
msgstr "oldal"
|
||||
|
||||
# AI Translated
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr "A rögzített fülként megjelenő bővítményoldalak száma; a fennmaradó oldalak az utolsó fülön lenyíló listába kerülnek."
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr "Viselkedés"
|
||||
|
||||
@@ -9362,6 +9493,18 @@ msgstr "Nem támogatott beállítások megjelenítése"
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr "Megjeleníti a nem kompatibilis vagy nem támogatott beállításokat a nyomtató- és filamentlegördülő listákban. Ezek a beállítások nem választhatók ki."
|
||||
|
||||
# AI Translated
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr "(Kísérleti) Nyomtatóügynökök használata nyomtatókiszolgálók helyett"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
"A nem Bambu nyomtatók nyomtatási feladatait a nyomtató bővítményügynökein keresztül továbbítja a klasszikus nyomtatókiszolgálóra való feltöltés helyett.\n"
|
||||
"Ha ki van kapcsolva, az OrcaSlicer a régi nyomtatókiszolgáló-viselkedést használja."
|
||||
|
||||
# AI Translated
|
||||
msgid "Experimental Features"
|
||||
msgstr "Kísérleti funkciók"
|
||||
@@ -9573,6 +9716,10 @@ msgstr "Spirál (váza)"
|
||||
msgid "First layer filament sequence"
|
||||
msgstr "Kezdőréteg filament sorrendje"
|
||||
|
||||
# AI Translated
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr "A filamentlista kevert filamenteket tartalmaz. Az egyéni filamentsorrend nem lép érvénybe."
|
||||
|
||||
# AI Translated
|
||||
msgid "By Layer"
|
||||
msgstr "Rétegenként"
|
||||
@@ -9604,9 +9751,6 @@ msgstr "Ugrás a modell közzététele weboldalra"
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr "Megjegyzés: Az előkészítés több percig is eltarthat. Kérlek, várj."
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Közzététel"
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr "A közzététel törlésre került"
|
||||
|
||||
@@ -9622,6 +9766,64 @@ msgstr "Adatok feltöltése"
|
||||
msgid "Jump to webpage"
|
||||
msgstr "Ugrás a weboldalra"
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr "%s mentése"
|
||||
@@ -9632,9 +9834,25 @@ msgstr "Felhasználói beállítás"
|
||||
msgid "Preset Inside Project"
|
||||
msgstr "Projekt a beállításon belül"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr "Az összes örökölt értéket átmásolja a szülő előbeállításból ebbe az előbeállításba, és megszünteti az öröklési kapcsolatot. A csak a szülővel kompatibilis előbeállítások támogatása megszűnhet."
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr "Leválasztás a szülőről"
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Önálló előbeállítás"
|
||||
|
||||
# AI Translated
|
||||
msgid "Parent preset"
|
||||
msgstr "Szülő előbeállítás"
|
||||
|
||||
# AI Translated
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr "Ez az előbeállítás nem örököl másik előbeállításból."
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr "A név nem elérhető."
|
||||
|
||||
@@ -10376,22 +10594,6 @@ msgstr "Biztos, hogy engedélyezed ezt az opciót?"
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr "A kitöltési minták általában maguk kezelik a forgatást a megfelelő nyomtatás és a kívánt hatás elérése érdekében (pl. Gyroid, Cubic). A jelenlegi kitöltési minta elforgatása elégtelen alátámasztáshoz vezethet. Kérlek, járj el körültekintően, és alaposan ellenőrizd a lehetséges nyomtatási problémákat. Biztos, hogy engedélyezed ezt a beállítást?"
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
"A rétegmagasság túl kicsi.\n"
|
||||
"A rendszer a min_layer_height értékre állítja.\n"
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "A rétegmagasság meghaladja a Nyomtatóbeállítások -> Extruder -> Rétegmagasság limitek menüpontban megadott értéket, ez minőségbeli problémákat okozhat a nyomtatás során."
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr "Szeretnéd az értéket automatikusan a beállított tartományhoz igazítani?\n"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Módosítás"
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr "Kísérleti funkció: Filamentcsere közben nagyobb távolságon történő visszahúzás és elvágás az öblítés minimalizálása érdekében. Bár ez jelentősen csökkentheti az öblítés mértékét, növelheti a fúvóka eltömődésének vagy más nyomtatási problémák kockázatát."
|
||||
|
||||
@@ -10587,6 +10789,9 @@ msgstr "Foglalt kulcsszavakat találtunk"
|
||||
msgid "Setting Overrides"
|
||||
msgstr "Beállítások felülbírálása"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Visszahúzás anyagváltáskor"
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr "Alapinformációk"
|
||||
|
||||
@@ -10720,6 +10925,12 @@ msgstr "Kompatibilis folyamatprofilok"
|
||||
msgid "Printable space"
|
||||
msgstr "Nyomtatási terület"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Nyomtatóügynök"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Válaszd ki a nyomtatóval való kommunikációhoz használt hálózati ügynököt. Az elérhető ügynököket indításkor regisztrálja a rendszer."
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10845,9 +11056,6 @@ msgstr "Rétegmagasság limitek"
|
||||
msgid "Z-Hop"
|
||||
msgstr "Z-emelés"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Visszahúzás anyagváltáskor"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
@@ -10964,12 +11172,12 @@ msgid "No modifications need to be copied."
|
||||
msgstr "Nincs másolandó módosítás."
|
||||
|
||||
# AI Translated
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr "Paraméterek másolása"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr "A(z) %s paramétereinek módosítása"
|
||||
|
||||
# AI Translated
|
||||
@@ -11486,27 +11694,6 @@ msgstr "Filamentcsere öblítési mennyisége"
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr "Kérlek, válaszd ki a filament színét"
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr "A natív Wayland élőképhez a GStreamer GTK videonyelő szükséges. Telepítsd a gtksink beépülő modult a GStreamerhez, majd indítsd újra az OrcaSlicert."
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr "Nem sikerült inicializálni a natív Wayland GStreamer videonyelőt. Ellenőrizd a GStreamer GTK bővítmény telepítését."
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr "Ehhez a művelethez Windows Media Player szükséges. Szeretnéd engedélyezni a \"Windows Media Player\"-t az operációs rendszerben?"
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr "A BambuSource nincs megfelelően regisztrálva médialejátszáshoz. Kattints az Igen gombra az újbóli regisztráláshoz. Kétszer kapsz majd megerősítési kérést."
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr "A médialejátszáshoz szükséges BambuSource-összetevő hiányzik. Kérlek, telepítsd újra az OrcaSlicert, vagy kérj segítséget a közösségtől."
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr "Ha egy másik telepítésből származó BambuSource van használatban, előfordulhat, hogy a videólejátszás nem működik megfelelően. Kattints az Igen gombra a javításhoz."
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr "A rendszerből hiányoznak a GStreamer H.264 kodekjei, amelyek szükségesek a videolejátszáshoz. (Próbáld telepíteni a gstreamer1.0-plugins-bad vagy a gstreamer1.0-libav csomagokat, majd indítsd újra az Orca Slicert.)"
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr "A felhőszolgáltatás nem érhető el. Indítsd újra az OrcaSlicert, majd próbáld újra."
|
||||
|
||||
@@ -12200,6 +12387,10 @@ msgstr " túl közel van a tiltott területhez, a nyomtatás során előfordulha
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr " túl közel van a csomósodásészlelési területhez, és ez ütközést fog okozni.\n"
|
||||
|
||||
# AI Translated
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr " részben a nyomtatható területen kívül esik, ezért nem nyomtatható ki.\n"
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr "A kiválasztott fúvóka hőmérsékletek nem kompatibilisek. Mindegyik filament fúvóka hőmérsékletének a többi filament ajánlott fúvóka hőmérsékleti tartományába kell esnie. Ellenkező esetben a fúvóka eltömődhet vagy a nyomtató megsérülhet."
|
||||
|
||||
@@ -12212,6 +12403,10 @@ msgstr "Ha továbbra is szeretnél nyomtatni, engedélyezheted az opciót itt: B
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr "A jelenlegi beállításokkal nincsenek extrudálások."
|
||||
|
||||
# AI Translated
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr "Színátmenetes kevert filament van használatban, de a 'Kevert színű alréteg' ki van kapcsolva. A színátmenet nem lesz kinyomtatva."
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr "A sima Timelapse nem használható, ha a nyomtatási sorrend \"Tárgyanként\"."
|
||||
|
||||
@@ -12248,6 +12443,10 @@ msgstr "Próbáld meg csökkenteni a modell méretét vagy módosítani a jelenl
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr "A változó rétegmagasság nem működik az organikus támaszokkal."
|
||||
|
||||
# AI Translated
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr "A törlőtorony filamentje nem lehet kevert filament."
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr "Eltérő fúvókaátmérők és eltérő filamentátmérők mellett a törlőtorony nem biztos, hogy megfelelően működik. Ez nagyon kísérleti funkció, ezért körültekintően használd."
|
||||
|
||||
@@ -12530,9 +12729,6 @@ msgstr "3MF használata G-kód helyett"
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr "Kapcsold be, ha a nyomtató 3MF fájlt fogad el nyomtatási feladatként. Bekapcsolva az Orca Slicer a szeletelt fájlt .gcode.3mf formátumban küldi el egyszerű .gcode fájl helyett."
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Nyomtatóügynök"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr "Válaszd ki a nyomtató kommunikációjához használt hálózati ügynök implementációját."
|
||||
|
||||
@@ -12618,7 +12814,7 @@ msgstr "mm vagy %"
|
||||
msgid "Other layers"
|
||||
msgstr "Többi réteg"
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "A kezdőréteg utáni asztalhőmérséklet. A 0 azt jelenti, hogy a filament nem nyomtatható a SuperTack hűvös tálcára."
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
@@ -13220,9 +13416,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr "A belső hidak sebessége. Ha az érték százalékban van megadva, a bridge_speed alapján lesz kiszámítva. Az alapértelmezett érték 150%."
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Perem szélessége"
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr "A modell és a legkülső peremvonal közötti távolság"
|
||||
|
||||
@@ -13302,6 +13495,14 @@ msgstr ""
|
||||
"Az éles szögek észlelése előtt a geometria egyszerűsítve lesz. Ez a paraméter a leegyszerűsítésnél figyelembe vett eltérés minimális hosszát adja meg.\n"
|
||||
"0 értékkel kikapcsolható."
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ears outer only"
|
||||
msgstr "Peremfülek csak kívül"
|
||||
|
||||
# AI Translated
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr "Egérfüleket csak a modell külső kontúrján hoz létre, a furatokat és a zárt szakaszokat kihagyva."
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr "felfelé kompatibilis gép"
|
||||
|
||||
@@ -13991,6 +14192,8 @@ msgstr "Rétegidő"
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr "A tárgyhűtő ventilátor azon rétegek esetében lesz engedélyezve, amelyek becsült ideje rövidebb ennél az értéknél. A ventilátor fordulatszáma a rétegnyomtatási időnek megfelelően skálázódik a minimális és maximális ventilátor fordulatszám között"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr "mp"
|
||||
|
||||
@@ -14298,6 +14501,62 @@ msgstr "Támaszanyag"
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr "A támaszanyagot általában a támaszok és azok érintkező felületeinek nyomtatására használják."
|
||||
|
||||
# AI Translated
|
||||
msgid "Is mixed filament"
|
||||
msgstr "Kevert filament-e"
|
||||
|
||||
# AI Translated
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr "Megadja, hogy ez a filamenthely több fizikai filamentből álló kevert filament-e"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament components"
|
||||
msgstr "Kevert filament összetevői"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr "Az összetevő filamentek vesszővel elválasztott, 1-től induló indexei, pl. \"1,3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr "Kevert filament alréteg-arányai"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr "Vesszővel elválasztott arányértékek, amelyek összege 1.0, pl. \"0.7,0.3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr "Kevert filament színátmenete"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr "Bekapcsolja a Z irányú színátmenet módot a kevert filament alrétegeihez. Bekapcsolva az alrétegek arányai lineárisan változnak a rétegek mentén."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr "Kevert filament színátmenetének tartománya"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr "Az első összetevő kezdő és záró aránya színátmenet módban. Vesszővel elválasztott számpár, pl. a \"0.10,0.90\" 10%-tól 90%-ig tartót jelent."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr "Kevert filament színátmenet-görbéje"
|
||||
|
||||
# AI Translated
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr "Opcionális, Photoshop stílusú egyéni görbe, amely a Z irányú haladást az első összetevő arányához rendeli. Függőleges vonallal elválasztott vezérlőpontokként van kódolva, \"x,y\" (régi) vagy \"x,y,m_in,m_out\" formában, ha az érintő felülbírálására van szükség (üres érték vagy \"nan\" esetén a PCHIP alapértelmezés érvényes). x a [0,1] tartományban van; y a beállított aránytartományra van korlátozva, pl. \"0,0.15|0.5,0.50|1,0.85\". Ha üresen marad, helyette a lineáris gradient_range kerül felhasználásra."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr "Kevert filament színátmenete tárgyanként"
|
||||
|
||||
# AI Translated
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr "Ha a színátmenet mód be van kapcsolva, a színátmenet az összeállítás minden tárgyára külön-külön érvényesül, ahelyett hogy az egész összeállítást egyetlen Z tartományként kezelné."
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr "Filament nyomtatható"
|
||||
|
||||
@@ -14475,6 +14734,14 @@ msgstr "TPMS-FK"
|
||||
msgid "Gyroid"
|
||||
msgstr "Gyroid"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr "Kitöltés simítási tényezője"
|
||||
|
||||
# AI Translated
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr "Azt szabályozza, hogy a kitöltés sarkai mennyire legyenek lekerekítve. A 0% megtartja az eredeti éles útvonalat, a 100% pedig a lehető legnagyobb íveket hozza létre a szomszédos kitöltővonalak között."
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr "A felső felületi kitöltés gyorsulása. Alacsonyabb érték használata javíthatja a felső felület minőségét"
|
||||
|
||||
@@ -15017,6 +15284,14 @@ msgstr "Milyen G-kóddal kompatibilis a nyomtató."
|
||||
msgid "Klipper"
|
||||
msgstr "Klipper"
|
||||
|
||||
# AI Translated
|
||||
msgid "Skip G-code config block"
|
||||
msgstr "G-code konfigurációs blokk kihagyása"
|
||||
|
||||
# AI Translated
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr "Nem írja a CONFIG_BLOCK blokkot (a szeletelő beállításainak kulcs/érték párjait) a G-code fájlba. Ez segíthet azoknál a nyomtatóknál, amelyek firmware-e összeomlik ezeknek a megjegyzéssoroknak a feldolgozásakor (pl. Anycubic go-klipper). Megjegyzés: a G-code fájl így már nem tartalmazza a szeletelő beállításait, ezért az OrcaSlicerbe való visszaimportálás nem állítja vissza a konfigurációt."
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr "Granulátumos módosított nyomtató"
|
||||
|
||||
@@ -15545,6 +15820,7 @@ msgid "The allowed maximum output force of Y axis"
|
||||
msgstr "Az Y tengely megengedett maximális kimeneti ereje"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr "N"
|
||||
|
||||
@@ -15555,6 +15831,7 @@ msgid "The machine bed mass load of Y axis"
|
||||
msgstr "Az Y tengely gépasztaltömeg-terhelése"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
@@ -15869,7 +16146,7 @@ msgid "Reduce infill retraction"
|
||||
msgstr "Csökkentett visszahúzás kitöltésnél"
|
||||
|
||||
# AI Translated
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr "Nem történik visszahúzás, amikor a fej csak kitöltés felett halad el, mert az itt történő szivárgás egyébként sem látható. Ez az opció lerövidítheti a nyomtatási időt a visszahúzások csökkentésével komplex modelleknél, de egyúttal lassabbá teszi a szeletelést és a G-kód generálást. Vedd figyelembe, hogy a Z-emelés sem történik meg azokon a területeken, ahol a visszahúzás ki van hagyva."
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -16043,7 +16320,7 @@ msgstr "Visszahúzás mértéke törlés után"
|
||||
# AI Translated
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
"A törlés utáni gyors visszahúzás hossza a visszahúzási hosszhoz viszonyítva.\n"
|
||||
@@ -16079,10 +16356,18 @@ msgstr "Hosszú visszahúzás extruderváltáskor"
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr "Visszahúzási távolság extruderváltáskor"
|
||||
|
||||
# AI Translated
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr "Visszahúzás hossza (Eszközváltás)"
|
||||
|
||||
# AI Translated
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr "Amikor a visszahúzás eszközváltás előtt aktiválódik, a filament a megadott értékkel húzódik vissza (a hossz a nyers filamenten mérve, mielőtt az az extruderbe kerülne)."
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr "Z-emelés magassága"
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr "Visszahúzáskor a fúvóka egy kicsit megemelkedik, hogy a fúvóka és a nyomtatott tárgy között rés keletkezzen. Ez megakadályozza, hogy a fúvóka nagyobb mozgás közben a tárgynak ütközzön. A Z tengely emelésekor használt körkörös mozgás megelőzheti a szálazást."
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -16172,6 +16457,10 @@ msgstr "Extra hossz újraindításkor"
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr "Amikor a visszahúzás kompenzálásra kerül utazási mozgás után, az extruder ezt a további szálmennyiséget nyomja előre. Erre a beállításra ritkán van szükség."
|
||||
|
||||
# AI Translated
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr "Extra hossz újraindításkor (Eszközváltás)"
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr "Amikor a visszahúzás kompenzálásra kerül szerszámváltás után, az extruder ezt a további szálmennyiséget nyomja előre."
|
||||
|
||||
@@ -16588,6 +16877,14 @@ msgstr "Szerszámcsere a törlőtoronyban"
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr "A szerszámcsere parancs (Tx) kiadása előtt a törlőtoronyhoz mozgatja a szerszámfejet. Csak a 2-es típusú törlőtornyot használó többextruderes (több szerszámfejes) nyomtatóknál van jelentősége. Az Orca alapértelmezés szerint kihagyja ezt a mozgást a több szerszámfejes gépeknél, mert a fejcserét a firmware kezeli. Emiatt azonban előfordulhat, hogy a Tx parancsot a nyomtatott tárgy felett adja ki. Kapcsold be ezt a beállítást, ha azt szeretnéd, hogy a szerszámcsere mindig a törlőtorony felett történjen."
|
||||
|
||||
# AI Translated
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr "Várakozás a hőmérsékletre a törlőtornyon"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr "Felveszi az új szerszámot anélkül, hogy megvárná a nyomtatási hőmérséklet elérését, a törlőtoronyhoz áll, és ott várja meg a hőmérsékletet, közvetlenül az öblítés előtt. A felfűtés közben kiszivárgó anyag a toronyra kerül a modell helyett, a mozgás pedig átfedésben van a fűtéssel. Csak több extruderes (több szerszámfejes) nyomtatóknál releváns, amelyek 2-es típusú törlőtornyot használnak. A firmware vagy a szerszámváltó makró nem várhat magától a hőmérsékletre. Ha ki van kapcsolva, a hőmérsékletre várakozás közvetlenül a szerszámváltó parancs után kerül kiadásra."
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr "Nincsenek ritka rétegek (béta)"
|
||||
|
||||
@@ -17125,6 +17422,14 @@ msgstr ""
|
||||
"\n"
|
||||
"Ha az alábbi \"visszahúzási mennyiség törlés előtt\" beállításban értéket adsz meg, akkor az esetleges többletvisszahúzás a törlés előtt történik meg, különben utána."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr "Kevert színű alréteg"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr "Bekapcsolja a kevert színű alrétegekre bontást. Bekapcsolva a kevert színű filamentet tartalmazó rétegek alrétegekre lesznek bontva a színkeverési hatás eléréséhez."
|
||||
|
||||
# AI Translated
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr "A törlőtorony a fúvókán lévő maradék eltávolítására és a fúvóka belsejében lévő nyomás stabilizálására szolgál, hogy elkerülhetők legyenek a megjelenésbeli hibák az objektumok nyomtatásakor."
|
||||
@@ -18198,6 +18503,10 @@ msgstr "A modellfájl hálósítása sikertelen volt, vagy nincs érvényes alak
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr "A megadott fájl nem olvasható be, mert üres"
|
||||
|
||||
# AI Translated
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr "A fájlformátum nem kompatibilis, ezért nem értelmezhető."
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr "Ismeretlen fájlformátum. A bemeneti fájlnak .stl, .obj vagy .amf(.xml) kiterjesztésűnek kell lennie."
|
||||
|
||||
@@ -19688,19 +19997,19 @@ msgstr "Csak azok a nyomtatók jelennek meg, amelyeknél változtak a nyomtató-
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr "Csak azok a filamentnevek jelennek meg, ahol változtak a filamentbeállítások."
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr "Csak azok a nyomtatónevek jelennek meg, amelyekhez tartoznak felhasználói beállítások. A kiválasztott beállítások ZIP fájlként kerülnek exportálásra."
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Csak azok a filamentnevek jelennek meg, amelyekhez tartoznak felhasználói filamentbeállítások,\n"
|
||||
"és a kiválasztott filamentnevekhez tartozó összes felhasználói filamentbeállítás ZIP-fájlként lesz exportálva."
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Csak azok a nyomtatónevek jelennek meg, amelyekhez módosított folyamatbeállítások tartoznak,\n"
|
||||
"és a kiválasztott nyomtatónevekhez tartozó összes felhasználói folyamatbeállítás ZIP-fájlként lesz exportálva."
|
||||
@@ -19847,9 +20156,6 @@ msgstr "Fizikai nyomtató"
|
||||
msgid "Print Host upload"
|
||||
msgstr "Feltöltés a nyomtatóra"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Válaszd ki a nyomtatóval való kommunikációhoz használt hálózati ügynököt. Az elérhető ügynököket indításkor regisztrálja a rendszer."
|
||||
|
||||
# AI Translated
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr "Válassz egy Flashforge nyomtatót"
|
||||
@@ -19949,7 +20255,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f
|
||||
msgstr "Információra van szükségünk a probléma forrásának feltárásához. A részletes útmutatót a wiki oldalon találod."
|
||||
|
||||
# AI Translated
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr "A Csomagolás gomb egy zip fájlba gyűjti a projektfájlt és az aktuális munkamenet naplóit."
|
||||
|
||||
# AI Translated
|
||||
@@ -20005,7 +20311,7 @@ msgid "Stored logs"
|
||||
msgstr "Tárolt naplók"
|
||||
|
||||
# AI Translated
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr "Az összes tárolt naplót egy zip fájlba csomagolja."
|
||||
|
||||
# AI Translated
|
||||
@@ -20093,7 +20399,7 @@ msgid "Authorizing..."
|
||||
msgstr "Engedélyezés..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr "Hiba. Nem sikerült API-tokent szerezni az engedélyezéshez"
|
||||
|
||||
# AI Translated
|
||||
@@ -20549,8 +20855,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to
|
||||
msgstr "Intelligens filament-hozzárendelés bekapcsolása: egy filament több fúvókához rendelése a megtakarítás maximalizálásához"
|
||||
|
||||
# AI Translated
|
||||
msgid "Fila Saving"
|
||||
msgstr "Filamentmegtakarítás"
|
||||
msgid "File Saving"
|
||||
msgstr "Fájl mentése"
|
||||
|
||||
msgid "Don't remind me again"
|
||||
msgstr "Ne emlékeztessen újra"
|
||||
@@ -20791,9 +21097,6 @@ msgstr "Bejelentkezés közben váratlan hiba történt, próbáld újra."
|
||||
msgid "User canceled."
|
||||
msgstr "Felhasználó által megszakítva."
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr "Fej átmérő"
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr "Maximális szög"
|
||||
|
||||
@@ -20877,6 +21180,15 @@ msgstr "Ez a művelet nem vonható vissza. Folytatod?"
|
||||
msgid "Skipping objects."
|
||||
msgstr "Objektumok kihagyása."
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr "Filament kiválasztása"
|
||||
|
||||
@@ -20956,6 +21268,9 @@ msgstr "Újraindítás most"
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr "EGYÁLTALÁN NINCS TÖMÖRÍTÉS"
|
||||
|
||||
msgid "s"
|
||||
msgstr "mp"
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr "Volumetrikus sebesség"
|
||||
|
||||
@@ -21607,6 +21922,55 @@ msgstr ""
|
||||
"Kunkorodás elkerülése\n"
|
||||
"Tudtad, hogy a kunkorodásra hajlamos anyagok (például ABS) nyomtatásakor az asztal hőmérsékletének növelése csökkentheti a kunkorodás valószínűségét?"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "A natív Wayland élőképhez a GStreamer GTK videonyelő szükséges. Telepítsd a gtksink beépülő modult a GStreamerhez, majd indítsd újra az OrcaSlicert."
|
||||
|
||||
#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
#~ msgstr "Nem sikerült inicializálni a natív Wayland GStreamer videonyelőt. Ellenőrizd a GStreamer GTK bővítmény telepítését."
|
||||
|
||||
#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
#~ msgstr "Ehhez a művelethez Windows Media Player szükséges. Szeretnéd engedélyezni a \"Windows Media Player\"-t az operációs rendszerben?"
|
||||
|
||||
#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
#~ msgstr "A BambuSource nincs megfelelően regisztrálva médialejátszáshoz. Kattints az Igen gombra az újbóli regisztráláshoz. Kétszer kapsz majd megerősítési kérést."
|
||||
|
||||
#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
#~ msgstr "A médialejátszáshoz szükséges BambuSource-összetevő hiányzik. Kérlek, telepítsd újra az OrcaSlicert, vagy kérj segítséget a közösségtől."
|
||||
|
||||
#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
#~ msgstr "Ha egy másik telepítésből származó BambuSource van használatban, előfordulhat, hogy a videólejátszás nem működik megfelelően. Kattints az Igen gombra a javításhoz."
|
||||
|
||||
#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
#~ msgstr "A rendszerből hiányoznak a GStreamer H.264 kodekjei, amelyek szükségesek a videolejátszáshoz. (Próbáld telepíteni a gstreamer1.0-plugins-bad vagy a gstreamer1.0-libav csomagokat, majd indítsd újra az Orca Slicert.)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "N"
|
||||
#~ msgstr "N"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "g"
|
||||
#~ msgstr "g"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Fila Saving"
|
||||
#~ msgstr "Filamentmegtakarítás"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Layer height is too small.\n"
|
||||
#~ "It will set to min_layer_height\n"
|
||||
#~ msgstr ""
|
||||
#~ "A rétegmagasság túl kicsi.\n"
|
||||
#~ "A rendszer a min_layer_height értékre állítja.\n"
|
||||
|
||||
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
#~ msgstr "A rétegmagasság meghaladja a Nyomtatóbeállítások -> Extruder -> Rétegmagasság limitek menüpontban megadott értéket, ez minőségbeli problémákat okozhat a nyomtatás során."
|
||||
|
||||
#~ msgid "Adjust to the set range automatically?\n"
|
||||
#~ msgstr "Szeretnéd az értéket automatikusan a beállított tartományhoz igazítani?\n"
|
||||
|
||||
#~ msgid "Head diameter"
|
||||
#~ msgstr "Fej átmérő"
|
||||
|
||||
#~ msgid "Print order within a single layer."
|
||||
#~ msgstr "Nyomtatási sorrend egyetlen rétegen belül."
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -2466,8 +2466,6 @@ msgstr "È disponibile un aggiornamento. Apri la finestra di dialogo del bundle
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s è stato rimosso."
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr "Cambio lingua applicazione"
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "Seleziona la lingua"
|
||||
@@ -2953,6 +2951,10 @@ msgstr "Modifica"
|
||||
msgid "Merge with"
|
||||
msgstr "Unisci con"
|
||||
|
||||
# AI Translated
|
||||
msgid "Decompose Color"
|
||||
msgstr "Scomponi colore"
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr "Elimina questo filamento"
|
||||
|
||||
@@ -3252,6 +3254,10 @@ msgstr "Assemblaggio"
|
||||
msgid "Merge parts to an object"
|
||||
msgstr "Unisci parti in un oggetto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr "L'uso dell'altezza strato variabile insieme al sottostrato di colore misto può ridurre la qualità della miscelazione dei colori."
|
||||
|
||||
# AI Translated
|
||||
msgid "Add layers"
|
||||
msgstr "Aggiungi strati"
|
||||
@@ -4741,6 +4747,23 @@ msgstr "L'attuale temperatura della camera è superiore alla temperatura di sicu
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr "La temperatura minima della camera (%d℃) è superiore alla temperatura target della camera (%d℃). Il valore minimo è la soglia alla quale inizia la stampa mentre la camera continua a riscaldarsi verso il target, quindi non dovrebbe superarlo. Verrà limitato al valore target."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr "L'altezza dello strato è troppo piccola. Sarà impostata al valore minimo (%g mm)."
|
||||
|
||||
# AI Translated
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "L'altezza dello strato è fuori dai limiti impostati in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato, ciò potrebbe causare problemi di qualità di stampa."
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr "Regolarla automaticamente al limite (%g mm)?"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Regola"
|
||||
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
"It has been reset to 0.2"
|
||||
@@ -4788,7 +4811,7 @@ msgstr ""
|
||||
"\n"
|
||||
"Il valore verrà reimpostato a 0."
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr "Parete aggiuntiva alternativa non funziona bene quando \"Garantisci spessore verticale del guscio\" è impostato su Tutto."
|
||||
|
||||
msgid ""
|
||||
@@ -4834,7 +4857,7 @@ msgstr ""
|
||||
"NO - Mantieni Altezza strato di supporto indipendente"
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
"seam_slope_start_height deve essere inferiore a layer_height.\n"
|
||||
@@ -4842,7 +4865,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
"La profondità di intersezione deve essere inferiore alla profondità della pelle.\n"
|
||||
@@ -4860,6 +4883,13 @@ msgstr ""
|
||||
"Sì - Abilita generatore di pareti Arachne\n"
|
||||
"No - Disabilita generatore di pareti Arachne e imposta la modalità [Spostamento] della Superficie ruvida"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ear radius"
|
||||
msgstr "Raggio della tesa ad orecchio"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Larghezza tesa"
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr "La modalità spirale funziona solo quando i perimetri sono 1, il supporto è disabilitato, il rilevamento degli ammassi tramite sondaggio è disabilitato, gli strati superiori della shell sono 0, la densità del riempimento sparso è 0 e il tipo di timelapse è tradizionale."
|
||||
|
||||
@@ -4875,6 +4905,9 @@ msgstr ""
|
||||
"Sì - Modifica queste impostazioni ed abilita la modalità spirale automaticamente\n"
|
||||
"No - Annulla l'attivazione della modalità a spirale"
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "N/D"
|
||||
|
||||
msgid "Printing"
|
||||
msgstr "Stampa"
|
||||
|
||||
@@ -5114,6 +5147,14 @@ msgstr "Impossibile generare G-code di calibrazione"
|
||||
msgid "Calibration error"
|
||||
msgstr "Errore di calibrazione"
|
||||
|
||||
# AI Translated
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr "Questa stampante non dispone dell'hardware richiesto da questo controllo."
|
||||
|
||||
# AI Translated
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr "Questo controllo non è supportato su questa stampante."
|
||||
|
||||
# AI Translated
|
||||
msgid "Network unavailable"
|
||||
msgstr "Rete non disponibile"
|
||||
@@ -5298,13 +5339,9 @@ msgstr "Il valore %s è fuori intervallo. L'intervallo valido è da %d a %d."
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
"È %s%% o %s %s?\n"
|
||||
"Sì per %s%%, \n"
|
||||
"NO per %s %s."
|
||||
"È %s%% o %s %s?"
|
||||
|
||||
#, boost-format
|
||||
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
|
||||
@@ -5326,9 +5363,6 @@ msgstr "Schema non valido. Utilizzare N, N#K o un elenco separato da virgole con
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr "Formato non valido. Formato vettoriale previsto: \"%1%\""
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "N/D"
|
||||
|
||||
# AI Translated
|
||||
msgid "System agents"
|
||||
msgstr "Agenti di sistema"
|
||||
@@ -5973,7 +6007,7 @@ msgstr "Volume:"
|
||||
msgid "Size:"
|
||||
msgstr "Dimensione:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Sono stati trovati conflitti di percorsi nel G-code sullo strato %d, Z = %.2lfmm. Si prega di separare gli oggetti in conflitto (%s <-> %s)."
|
||||
|
||||
@@ -6154,6 +6188,10 @@ msgstr "Multi-dispositivo"
|
||||
msgid "Project"
|
||||
msgstr "Progetto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Device (Web)"
|
||||
msgstr "Dispositivo (Web)"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "Sì"
|
||||
|
||||
@@ -6283,16 +6321,22 @@ msgstr "Salva progetto con nome"
|
||||
msgid "Save current project as"
|
||||
msgstr "Salva progetto corrente con nome"
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr "Importa 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr "Carica modello"
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr "Importa archivio Zip"
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr "Carica i modelli contenuti in un archivio zip"
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7815,6 +7859,10 @@ msgstr "Personalizza il piatto corrente"
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr "L'ugello %s non può stampare %s."
|
||||
|
||||
# AI Translated
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr "La stampa di filamento a colore misto su una stampante a estrusore singolo richiede frequenti cambi di filamento e spurghi, il che può aumentare notevolmente gli scarti e il rischio di intasamento dell'ugello o dello scivolo di scarto."
|
||||
|
||||
#, boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr "Non è consigliato miscelare %1% con %2% nella stampa.\n"
|
||||
@@ -7940,12 +7988,44 @@ msgstr "Sincronizza l'elenco filamenti dall'AMS"
|
||||
msgid "Set filaments to use"
|
||||
msgstr "Imposta filamenti da usare"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr "Aggiungi filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed Filament"
|
||||
msgstr "Filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr "Rimuovi l'ultimo filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add mixed filament"
|
||||
msgstr "Aggiungi filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr "Il filamento misto ha componenti non validi o incoerenti. Modificare nuovamente le voci interessate."
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr "Cerca piatto, oggetto e parte."
|
||||
|
||||
msgid "Pellets"
|
||||
msgstr "Granuli"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr "Il filamento misto ha riferimenti a componenti non validi"
|
||||
|
||||
# AI Translated
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr "Modifica / Elimina / Unisci"
|
||||
|
||||
# AI Translated
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr "Il filamento misto di destinazione utilizza questo filamento fisico come componente. L'unione rimuoverà questo filamento fisico e potrebbe invalidare il filamento misto. Continuare?"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr "Al completamento dell'operazione, il progetto %s verrà chiuso e ne verrà creato uno nuovo."
|
||||
@@ -8083,8 +8163,14 @@ msgstr "Si prega di confermare che i G-code all'interno di questi profili sono s
|
||||
msgid "Customized Preset"
|
||||
msgstr "Profilo personalizzato"
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF8!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr "Il nome dei componenti all'interno del file STEP non è in formato UTF-8!"
|
||||
|
||||
msgid "Because of unsupported text encoding, garbage characters may appear!"
|
||||
msgstr "A causa di una codifica del testo non supportata, potrebbero apparire caratteri inutili!"
|
||||
@@ -8125,6 +8211,14 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr "Rilevato oggetto in più parti"
|
||||
|
||||
# AI Translated
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr "Associazione delle trame ai filamenti"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture Import Warning"
|
||||
msgstr "Avviso di importazione trama"
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr "Caricare questi file come un singolo oggetto con più parti?\n"
|
||||
|
||||
@@ -8244,19 +8338,19 @@ msgstr "La directory per la sostituzione non è stata selezionata"
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr "Sostituito con file 3D dalla directory:\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr "✖ Saltato %s: stesso file.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr "✖ Saltato %s: il file non esiste.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr "✖ Saltato %s: sostituzione fallita.\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr "✔ Sostituito %s.\n"
|
||||
|
||||
@@ -8335,6 +8429,22 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr "Sincronizza ora"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr "Importazione della trama non riuscita. Il modello sembra contenere dati di trama, ma non è stato possibile completare il processo di importazione. Il modello verrà importato solo come geometria."
|
||||
|
||||
# AI Translated
|
||||
msgid "Applying texture colors..."
|
||||
msgstr "Applicazione dei colori della trama..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Updating 3D view..."
|
||||
msgstr "Aggiornamento della vista 3D..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture colors applied."
|
||||
msgstr "Colori della trama applicati."
|
||||
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr "È possibile conservare i profili modificati per il nuovo progetto o scartarli"
|
||||
|
||||
@@ -8466,6 +8576,17 @@ msgstr "Salva file elaborato con nome:"
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr "Il file %s è stato inviato alla memoria della stampante e può essere visualizzato da lì."
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Pubblica"
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr "Il tipo di ugello non è impostato. Impostare l'ugello e riprovare."
|
||||
|
||||
@@ -8680,8 +8801,6 @@ msgstr "Vuoi continuare?"
|
||||
msgid "Language selection"
|
||||
msgstr "Selezione lingua"
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr "Cambio lingua applicazione durante la modifica di alcuni profili."
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "Asia-Pacifico"
|
||||
@@ -8995,6 +9114,18 @@ msgstr "Abilitando questa opzione, puoi inviare un'attività a più dispositivi
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "Popup per selezionare la modalità di raggruppamento filamenti"
|
||||
|
||||
# AI Translated
|
||||
msgid "Visible plugin pages"
|
||||
msgstr "Pagine dei plugin visibili"
|
||||
|
||||
# AI Translated
|
||||
msgid "pages"
|
||||
msgstr "pagine"
|
||||
|
||||
# AI Translated
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr "Numero di pagine dei plugin mostrate come schede fisse prima che le pagine rimanenti vengano raccolte in un menu a discesa nell'ultima scheda."
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr "Comportamento"
|
||||
|
||||
@@ -9381,6 +9512,18 @@ msgstr "Mostra i profili non supportati"
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr "Mostra i profili incompatibili/non supportati negli elenchi a discesa di stampante e filamento. Questi profili non possono essere selezionati."
|
||||
|
||||
# AI Translated
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr "(Sperimentale) Usa gli agenti stampante invece degli host di stampa"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
"Instrada i lavori di stampa delle stampanti non Bambu attraverso gli agenti plugin della stampante invece del classico flusso di caricamento sull'host di stampa.\n"
|
||||
"Quando è disattivato, OrcaSlicer usa il comportamento legacy dell'host di stampa."
|
||||
|
||||
# AI Translated
|
||||
msgid "Experimental Features"
|
||||
msgstr "Funzionalità sperimentali"
|
||||
@@ -9594,6 +9737,10 @@ msgstr "Vaso a spirale"
|
||||
msgid "First layer filament sequence"
|
||||
msgstr "Sequenza filamenti primo strato"
|
||||
|
||||
# AI Translated
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr "L'elenco dei filamenti contiene filamenti misti. La sequenza di filamenti personalizzata non avrà effetto."
|
||||
|
||||
msgid "By Layer"
|
||||
msgstr "Per strato"
|
||||
|
||||
@@ -9622,9 +9769,6 @@ msgstr "Vai alla pagina web di pubblicazione del modello"
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr "Nota: la preparazione può richiedere alcuni minuti. Si prega di avere pazienza."
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "Pubblica"
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr "La pubblicazione è stata annullata"
|
||||
|
||||
@@ -9640,6 +9784,64 @@ msgstr "Caricamento dati"
|
||||
msgid "Jump to webpage"
|
||||
msgstr "Vai alla pagina web"
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr "Salva %s con nome"
|
||||
@@ -9650,9 +9852,25 @@ msgstr "Profilo utente"
|
||||
msgid "Preset Inside Project"
|
||||
msgstr "Profilo interno al progetto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr "Copia in questo profilo tutti i valori ereditati dal profilo padre e rimuove la relazione di ereditarietà. I profili compatibili solo con il profilo padre potrebbero non essere più supportati."
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr "Scollega dal genitore"
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "Profilo unico"
|
||||
|
||||
# AI Translated
|
||||
msgid "Parent preset"
|
||||
msgstr "Profilo padre"
|
||||
|
||||
# AI Translated
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr "Questo profilo non eredita da un altro profilo."
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr "Nome non disponibile."
|
||||
|
||||
@@ -10392,22 +10610,6 @@ msgstr "Sei sicuro di voler abilitare questa opzione?"
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr "I pattern di riempimento sono generalmente progettati per gestire automaticamente la rotazione per garantire una stampa corretta e ottenere gli effetti desiderati (ad es. Gyroid, Cubico). La rotazione del pattern di riempimento sparso corrente potrebbe portare a un supporto insufficiente. Procedere con cautela e verificare accuratamente eventuali problemi di stampa. Sei sicuro di voler abilitare questa opzione?"
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
"L'altezza dello strato è troppo piccola.\n"
|
||||
"Sarà impostato su min_layer_height\n"
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato. Ciò potrebbe causare problemi di qualità di stampa."
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr "Regolare automaticamente l'intervallo impostato?\n"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "Regola"
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr "Funzionalità sperimentale: ritrazione e taglio del filamento a una distanza maggiore durante i cambi di filamento per ridurre al minimo lo spurgo. Sebbene possa ridurre notevolmente lo spurgo, può anche aumentare il rischio di intasamento degli ugelli o di altre complicazioni di stampa."
|
||||
|
||||
@@ -10603,6 +10805,9 @@ msgstr "Parole chiave riservate trovate"
|
||||
msgid "Setting Overrides"
|
||||
msgstr "Sovrascrivi impostazioni"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Retrazione quando si cambia materiale"
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr "Informazioni di base"
|
||||
|
||||
@@ -10734,6 +10939,12 @@ msgstr "Profili di processo compatibili"
|
||||
msgid "Printable space"
|
||||
msgstr "Spazio di stampa"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Agente stampante"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante. Gli agenti disponibili vengono registrati all'avvio."
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10859,9 +11070,6 @@ msgstr "Limiti altezza strati"
|
||||
msgid "Z-Hop"
|
||||
msgstr "Sollevamento Z"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "Retrazione quando si cambia materiale"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
@@ -10978,12 +11186,12 @@ msgid "No modifications need to be copied."
|
||||
msgstr "Non è necessario copiare alcuna modifica."
|
||||
|
||||
# AI Translated
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr "Copia parametri"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr "Modifica i parametri di %s"
|
||||
|
||||
# AI Translated
|
||||
@@ -11505,27 +11713,6 @@ msgstr "Volumi di spurgo per cambio filamento"
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr "Scegliere il colore del filamento"
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr "La funzione di visualizzazione in tempo reale nativa di Wayland richiede il ricevitore video GTK di GStreamer. Installare il modulo gtksink per GStreamer e riavviare OrcaSlicer."
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr "Impossibile inizializzare il ricevitore video nativo di Wayland GStreamer. Verificare l'installazione del modulo GTK di GStreamer."
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr "Per questa operazione è necessario Windows Media Player! Desideri abilitare 'Windows Media Player' sul il tuo sistema operativo?"
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr "BambuSource non è stato registrato correttamente per la riproduzione multimediale! Fare clic su Sì per effettuare nuovamente la registrazione. Sarai promosso due volte"
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr "Componente BambuSource mancante per la riproduzione multimediale! Reinstallare OrcaSlicer o cercare aiuto nella comunità."
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr "È in uso una versione di BambuSource da un'installazione diversa. La riproduzione video potrebbe non funzionare correttamente! Fare clic su Sì per risolvere il problema."
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr "Nel tuo sistema mancano i codec H.264 per GStreamer, necessari per riprodurre i video. (Provare a installare i pacchetti gstreamer1.0-plugins-bad o gstreamer1.0-libav e riavviare OrcaSlicer?)"
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr "Il fornitore di servizi cloud non è disponibile. Riavviare OrcaSlicer e riprovare."
|
||||
|
||||
@@ -12221,6 +12408,10 @@ msgstr " è troppo vicino all'area di esclusione e si verificheranno collisioni.
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr " è troppo vicino all'area di rilevamento ammassi e verranno causate collisioni.\n"
|
||||
|
||||
# AI Translated
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr " è parzialmente fuori dall'area stampabile e non può essere stampato.\n"
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr "Le temperature degli ugelli selezionate sono incompatibili. La temperatura dell'ugello per ciascun filamento deve rientrare nell'intervallo di temperatura consigliato per gli altri filamenti. In caso contrario, potrebbero verificarsi ostruzioni degli ugelli o danni alla stampante."
|
||||
|
||||
@@ -12233,6 +12424,10 @@ msgstr "Se desideri comunque stampare, puoi abilitare l'opzione in Preferenze /
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr "Nessuna estrusione con le impostazioni attuali."
|
||||
|
||||
# AI Translated
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr "È in uso un filamento misto con gradiente, ma 'Sottostrato di colore misto' è disattivato. Il gradiente non verrà stampato."
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr "La modalità fluida del timelapse non è supportata quando è abilitata la sequenza \"Per oggetto\"."
|
||||
|
||||
@@ -12269,6 +12464,10 @@ msgstr "È possibile ridurre le dimensioni del modello o modificare le impostazi
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr "Altezza strato adattiva non è compatibile con i Supporti organici."
|
||||
|
||||
# AI Translated
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr "Il filamento della torre di spurgo non può essere un filamento misto."
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr "Ugelli e filamenti di diverso diametro potrebbero non funzionare correttamente quando è abilitata la torre di spurgo. Questa funzione è sperimentale, quindi procedere con cautela."
|
||||
|
||||
@@ -12550,9 +12749,6 @@ msgstr "Usa 3MF invece di G-code"
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr "Abilita questa opzione se la stampante accetta un file 3MF come processo di stampa. Quando è abilitata, Orca Slicer invia il file elaborato come .gcode.3mf, invece di un semplice file .gcode."
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "Agente stampante"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante."
|
||||
|
||||
@@ -12638,8 +12834,8 @@ msgstr "mm o %"
|
||||
msgid "Other layers"
|
||||
msgstr "Altri strati"
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "Temperatura del piatto per gli strati diversi dal primo. Un valore di 0 significa che il filamento non supporta la stampa su Cool Plate SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "Indica la temperatura del piatto per tutti gli strati eccetto il primo. Un valore di 0 significa che il filamento non supporta la stampa su Cool Plate SuperTack."
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
msgstr "Indica la temperatura del piatto per tutti gli strati eccetto il primo. Un valore pari a 0 indica che il filamento non supporta la stampa su Piatto a bassa temperatura."
|
||||
@@ -13239,9 +13435,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr "Velocità dei ponti interni. Se il valore è espresso in percentuale, verrà calcolato in base a bridge_speed. Il valore predefinito è 150%."
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Larghezza tesa"
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr "Questa è la distanza tra il modello e la linea più esterna della tesa."
|
||||
|
||||
@@ -13321,6 +13514,14 @@ msgstr ""
|
||||
"La geometria verrà decimata prima di rilevare gli spigoli vivi. Questo parametro indica la lunghezza minima dello scostamento per la decimazione.\n"
|
||||
"0 per disattivare."
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ears outer only"
|
||||
msgstr "Tesa ad orecchio solo sul contorno esterno"
|
||||
|
||||
# AI Translated
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr "Genera gli orecchi di topo solo sul contorno esterno del modello, escludendo fori e sezioni chiuse."
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr "macchina compatibile con versioni successive"
|
||||
|
||||
@@ -14010,6 +14211,8 @@ msgstr "Durata strato"
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr "La ventola di raffreddamento verrà attivata per gli strati in cui il tempo stimato è inferiore a questo valore. La velocità della ventola varierà tra la velocità minima e massima in base alla durata stimata di stampa dello strato."
|
||||
|
||||
# AI Translated
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
@@ -14316,6 +14519,62 @@ msgstr "Materiale di supporto"
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr "Il materiale di supporto viene comunemente utilizzato per stampare supporti e interfacce di supporto."
|
||||
|
||||
# AI Translated
|
||||
msgid "Is mixed filament"
|
||||
msgstr "È filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr "Indica se questo slot di filamento è un filamento misto composto da più filamenti fisici"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament components"
|
||||
msgstr "Componenti del filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr "Indici (a partire da 1) dei filamenti componenti, separati da virgole; es. \"1,3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr "Proporzioni dei sottostrati del filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr "Valori di proporzione separati da virgole la cui somma sia 1.0; es. \"0.7,0.3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr "Gradiente del filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr "Attiva la modalità gradiente in direzione Z per i sottostrati del filamento misto. Se attivata, le proporzioni dei sottostrati variano linearmente tra gli strati."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr "Intervallo del gradiente del filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr "Proporzioni iniziale e finale del primo componente in modalità gradiente. Coppia separata da virgola; es. \"0.10,0.90\" significa dal 10% al 90%."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr "Curva del gradiente del filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr "Curva personalizzata opzionale, in stile Photoshop, che mappa l'avanzamento in Z sulla proporzione del primo componente. Codificata come punti di controllo separati da barre verticali, nel formato \"x,y\" (legacy) oppure \"x,y,m_in,m_out\" quando è necessario forzare la tangente (un valore vuoto o \"nan\" usa il valore PCHIP predefinito). x è compreso in [0,1]; y viene limitato all'intervallo di proporzioni configurato; es. \"0,0.15|0.5,0.50|1,0.85\". Se vuoto, viene usato il gradient_range lineare."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr "Gradiente per parte del filamento misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr "Quando la modalità gradiente è attiva, applica il gradiente a ciascuna parte di un assemblaggio in modo indipendente anziché trattare l'intero assemblaggio come un unico intervallo Z."
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr "Filamento stampabile"
|
||||
|
||||
@@ -14495,6 +14754,14 @@ msgstr "TPMS-FK"
|
||||
msgid "Gyroid"
|
||||
msgstr "Giroide"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr "Fattore di arrotondamento del riempimento sparso"
|
||||
|
||||
# AI Translated
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr "Controlla quanto vengono arrotondati gli angoli del riempimento sparso. 0% mantiene il percorso originale con angoli vivi, mentre 100% produce le curve più ampie possibili tra linee di riempimento adiacenti."
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr "Accelerazione del riempimento della superficie superiore. L'utilizzo di un valore inferiore può migliorare la qualità della superficie superiore."
|
||||
|
||||
@@ -15039,6 +15306,14 @@ msgstr "Con quale tipo di G-code la stampante è compatibile."
|
||||
msgid "Klipper"
|
||||
msgstr "Klipper"
|
||||
|
||||
# AI Translated
|
||||
msgid "Skip G-code config block"
|
||||
msgstr "Ometti il blocco di configurazione del G-code"
|
||||
|
||||
# AI Translated
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr "Non scrive il CONFIG_BLOCK (le coppie chiave/valore della configurazione dello slicer) nel file G-code. Può essere utile con stampanti il cui firmware va in crash durante l'analisi di queste righe di commento (ad es. Anycubic go-klipper). Nota: il file G-code non conterrà più le impostazioni dello slicer, quindi reimportandolo in OrcaSlicer la configurazione non verrà ripristinata."
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr "Stampante modificata per granuli"
|
||||
|
||||
@@ -15567,6 +15842,7 @@ msgid "The allowed maximum output force of Y axis"
|
||||
msgstr "La forza di uscita massima consentita dell'asse Y"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr "N"
|
||||
|
||||
@@ -15577,6 +15853,7 @@ msgid "The machine bed mass load of Y axis"
|
||||
msgstr "Il carico di massa del piano della macchina sull'asse Y"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
@@ -15888,7 +16165,7 @@ msgid "Reduce infill retraction"
|
||||
msgstr "Evita retrazione nel riempimento"
|
||||
|
||||
# AI Translated
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr "Non ritrarre quando gli spostamenti si trovano interamente in un'area di riempimento. Ciò significa che il trasudo del materiale non è visibile. Questo può ridurre i tempi di retrazione per i modelli complessi e far risparmiare tempo di stampa, ma rende più lente l'elaborazione e la generazione del G-code. Nota che anche il sollevamento Z non viene eseguito nelle aree in cui la retrazione viene saltata."
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -16062,7 +16339,7 @@ msgstr "Quantità di retrazione dopo la pulizia"
|
||||
# AI Translated
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
"La lunghezza della retrazione rapida dopo la pulizia, relativa alla lunghezza di retrazione.\n"
|
||||
@@ -16098,10 +16375,18 @@ msgstr "Retrazione lunga al cambio estrusore"
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr "Distanza di retrazione al cambio estrusore"
|
||||
|
||||
# AI Translated
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr "Lunghezza di retrazione (Cambio testina)"
|
||||
|
||||
# AI Translated
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr "Quando la retrazione viene attivata prima di un cambio testina, il filamento viene ritirato della quantità specificata (la lunghezza è misurata sul filamento grezzo, prima che entri nell'estrusore)."
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr "Altezza sollevamento Z"
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr "Ogni volta che si verifica una retrazione, l'ugello viene sollevato leggermente per creare spazio tra ugello e stampa. Ciò impedisce all'ugello di colpire la stampa negli spostamenti. L'uso di linee a spirale per il sollevamento sull'asse Z può evitare gli sfilacciamenti sulla stampa."
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -16195,6 +16480,10 @@ msgstr "Lunghezza aggiuntiva in ripresa"
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr "Quando la retrazione è compensata dopo uno spostamento, l'estrusore espelle questa quantità aggiuntiva di filamento. Questa impostazione è raramente necessaria."
|
||||
|
||||
# AI Translated
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr "Lunghezza aggiuntiva in ripresa (Cambio testina)"
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr "Quando la retrazione è compensata dopo un cambio di testina, l'estrusore espelle questa quantità aggiuntiva di filamento."
|
||||
|
||||
@@ -16612,6 +16901,14 @@ msgstr "Cambio utensile sulla torre di spurgo"
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr "Forza la testa di stampa a spostarsi sulla torre di spurgo prima di emettere il comando di cambio utensile (Tx). Rilevante solo per le stampanti multi-estrusore (multi-testa) che utilizzano una torre di spurgo di Tipo 2. Per impostazione predefinita Orca salta lo spostamento sulle macchine multi-testa perché il firmware gestisce il cambio della testa, il che può far sì che il comando Tx venga emesso sopra la parte stampata. Abilita questa opzione se desideri che il cambio utensile venga sempre emesso sopra la torre di spurgo."
|
||||
|
||||
# AI Translated
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr "Attendi la temperatura sulla torre di spurgo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr "Preleva la nuova testina senza attendere che raggiunga la temperatura di stampa, si sposta sulla torre di spurgo e attende lì la temperatura, subito prima dello spurgo. Il trasudo dovuto al riscaldamento finisce sulla torre invece che sul modello, e lo spostamento si sovrappone al riscaldamento. Rilevante solo per stampanti multi-estrusore (multi-testina) che usano una torre di spurgo di tipo 2. Il firmware o la macro di cambio testina non devono attendere la temperatura autonomamente. Quando è disattivato, l'attesa della temperatura viene emessa subito dopo il comando di cambio testina."
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr "Nessuno strato sparso (beta)"
|
||||
|
||||
@@ -17150,6 +17447,14 @@ msgstr ""
|
||||
"\n"
|
||||
"Impostando un valore di quantità di retrazione prima dell'impostazione di spurgo di seguito, verra eseguita qualsiasi retrazione in eccesso prima dello spurgo. Altrimenti verrà eseguita dopo."
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr "Sottostrato di colore misto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr "Attiva la suddivisione in sottostrati di colore misto. Se attivata, gli strati che contengono filamenti a colore misto vengono suddivisi in sottostrati per ottenere effetti di miscelazione dei colori."
|
||||
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr "La torre di spurgo può essere utilizzata per pulire i residui presenti sull'ugello e stabilizzare la pressione della camera all'interno dell'ugello, al fine di evitare difetti estetici durante la stampa."
|
||||
|
||||
@@ -18221,6 +18526,10 @@ msgstr "La generazione della mesh del file del modello è fallita o la forma non
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr "Impossibile leggere il file fornito perché è vuoto"
|
||||
|
||||
# AI Translated
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr "Il formato del file non è compatibile e non può essere interpretato."
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr "Formato file sconosciuto: il file di input deve avere un'estensione .stl, .obj o .amf(.xml)."
|
||||
|
||||
@@ -19705,21 +20014,21 @@ msgstr "Vengono visualizzate solo le stampanti con modifiche ai profili di stamp
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr "Nomi dei filamenti con modifiche ai profili di filamento."
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Nomi delle stampanti con profili creati dell'utente.\n"
|
||||
"Tutti i profili selezionati saranno esportati come file zip."
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Nomi dei filamenti con profili creati dell'utente.\n"
|
||||
"Tutti i profili selezionati saranno esportati come file zip."
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"Nomi delle stampanti con profili di processo modificati.\n"
|
||||
"Tutti i profili selezionati saranno esportati come file zip."
|
||||
@@ -19865,9 +20174,6 @@ msgstr "Stampante fisica"
|
||||
msgid "Print Host upload"
|
||||
msgstr "Caricamento host di stampa"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "Selezionare l'implementazione dell'agente di rete per la comunicazione con la stampante. Gli agenti disponibili vengono registrati all'avvio."
|
||||
|
||||
# AI Translated
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr "Seleziona una stampante Flashforge"
|
||||
@@ -19967,7 +20273,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f
|
||||
msgstr "Abbiamo bisogno di informazioni per diagnosticare l'origine del problema. Consulta la pagina wiki per una guida dettagliata."
|
||||
|
||||
# AI Translated
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr "Il pulsante Comprimi raccoglie il file di progetto e i log della sessione corrente in un file zip."
|
||||
|
||||
# AI Translated
|
||||
@@ -20023,7 +20329,7 @@ msgid "Stored logs"
|
||||
msgstr "Log memorizzati"
|
||||
|
||||
# AI Translated
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr "Comprime tutti i log memorizzati in un file zip."
|
||||
|
||||
# AI Translated
|
||||
@@ -20111,7 +20417,7 @@ msgid "Authorizing..."
|
||||
msgstr "Autorizzazione in corso..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr "Errore. Impossibile ottenere il token API per l'autorizzazione"
|
||||
|
||||
# AI Translated
|
||||
@@ -20567,8 +20873,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to
|
||||
msgstr "Abilita l'assegnazione intelligente del filamento: assegna un filamento a più ugelli per massimizzare il risparmio"
|
||||
|
||||
# AI Translated
|
||||
msgid "Fila Saving"
|
||||
msgstr "Risparmio filamento"
|
||||
msgid "File Saving"
|
||||
msgstr "Salvataggio file"
|
||||
|
||||
msgid "Don't remind me again"
|
||||
msgstr "Non ricordarmelo più"
|
||||
@@ -20810,9 +21116,6 @@ msgstr "Si è verificato un problema imprevisto durante il tentativo di accesso.
|
||||
msgid "User canceled."
|
||||
msgstr "Utente rimosso."
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr "Diametro testa"
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr "Angolo massimo"
|
||||
|
||||
@@ -20901,6 +21204,15 @@ msgstr "Questa azione non può essere annullata. Continuare?"
|
||||
msgid "Skipping objects."
|
||||
msgstr "Salto degli oggetti."
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr "Seleziona filamento"
|
||||
|
||||
@@ -20980,6 +21292,9 @@ msgstr "Riavvia ora"
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr "NESSUNA SPINTA"
|
||||
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr "Velocità volumetrica"
|
||||
|
||||
@@ -21631,6 +21946,55 @@ msgstr ""
|
||||
"Evita le deformazioni\n"
|
||||
"Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "La funzione di visualizzazione in tempo reale nativa di Wayland richiede il ricevitore video GTK di GStreamer. Installare il modulo gtksink per GStreamer e riavviare OrcaSlicer."
|
||||
|
||||
#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
#~ msgstr "Impossibile inizializzare il ricevitore video nativo di Wayland GStreamer. Verificare l'installazione del modulo GTK di GStreamer."
|
||||
|
||||
#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
#~ msgstr "Per questa operazione è necessario Windows Media Player! Desideri abilitare 'Windows Media Player' sul il tuo sistema operativo?"
|
||||
|
||||
#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
#~ msgstr "BambuSource non è stato registrato correttamente per la riproduzione multimediale! Fare clic su Sì per effettuare nuovamente la registrazione. Sarai promosso due volte"
|
||||
|
||||
#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
#~ msgstr "Componente BambuSource mancante per la riproduzione multimediale! Reinstallare OrcaSlicer o cercare aiuto nella comunità."
|
||||
|
||||
#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
#~ msgstr "È in uso una versione di BambuSource da un'installazione diversa. La riproduzione video potrebbe non funzionare correttamente! Fare clic su Sì per risolvere il problema."
|
||||
|
||||
#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
#~ msgstr "Nel tuo sistema mancano i codec H.264 per GStreamer, necessari per riprodurre i video. (Provare a installare i pacchetti gstreamer1.0-plugins-bad o gstreamer1.0-libav e riavviare OrcaSlicer?)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "N"
|
||||
#~ msgstr "N"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "g"
|
||||
#~ msgstr "g"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Fila Saving"
|
||||
#~ msgstr "Risparmio filamento"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Layer height is too small.\n"
|
||||
#~ "It will set to min_layer_height\n"
|
||||
#~ msgstr ""
|
||||
#~ "L'altezza dello strato è troppo piccola.\n"
|
||||
#~ "Sarà impostato su min_layer_height\n"
|
||||
|
||||
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
#~ msgstr "L'altezza dello strato supera il limite in Impostazioni stampante -> Estrusore -> Limiti Altezza Strato. Ciò potrebbe causare problemi di qualità di stampa."
|
||||
|
||||
#~ msgid "Adjust to the set range automatically?\n"
|
||||
#~ msgstr "Regolare automaticamente l'intervallo impostato?\n"
|
||||
|
||||
#~ msgid "Head diameter"
|
||||
#~ msgstr "Diametro testa"
|
||||
|
||||
#~ msgid "Print order within a single layer."
|
||||
#~ msgstr "Ordine di stampa all'interno di un singolo strato."
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -136,6 +136,7 @@ src/slic3r/GUI/BackgroundSlicingProcess.cpp
|
||||
src/slic3r/GUI/BedShapeDialog.cpp
|
||||
src/slic3r/GUI/BedShapeDialog.hpp
|
||||
src/slic3r/GUI/ConfigManipulation.cpp
|
||||
src/slic3r/GUI/ConfigValueFormatter.cpp
|
||||
src/slic3r/GUI/DeviceManager.cpp
|
||||
src/slic3r/GUI/DeviceErrorDialog.cpp
|
||||
src/slic3r/GUI/ExtraRenderers.cpp
|
||||
@@ -175,6 +176,7 @@ src/slic3r/GUI/ProgressStatusBar.cpp
|
||||
src/slic3r/GUI/PlateSettingsDialog.cpp
|
||||
src/slic3r/GUI/PrivacyUpdateDialog.cpp
|
||||
src/slic3r/GUI/PublishDialog.cpp
|
||||
src/slic3r/GUI/PublishSettingsDialog.cpp
|
||||
src/slic3r/GUI/SavePresetDialog.cpp
|
||||
src/slic3r/GUI/Search.cpp
|
||||
src/slic3r/GUI/Selection.cpp
|
||||
@@ -193,7 +195,6 @@ src/slic3r/GUI/ObjColorDialog.cpp
|
||||
src/slic3r/GUI/SyncAmsInfoDialog.cpp
|
||||
src/slic3r/GUI/WipeTowerDialog.cpp
|
||||
src/slic3r/GUI/wxExtensions.cpp
|
||||
src/slic3r/GUI/wxMediaCtrl2.cpp
|
||||
src/slic3r/GUI/WebUserLoginDialog.cpp
|
||||
src/slic3r/GUI/WebGuideDialog.cpp
|
||||
src/slic3r/GUI/KBShortcutsDialog.hpp
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Slic3rPE\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"PO-Revision-Date: 2026-06-11 12:37-0300\n"
|
||||
"Last-Translator: Handle <mail@bysb.net>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2361,8 +2361,6 @@ msgstr "有更新可用。打开预设包对话框进行更新。"
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s 已被移除。"
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr "切换应用程序语言"
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "选择语言"
|
||||
@@ -2843,6 +2841,10 @@ msgstr "编辑"
|
||||
msgid "Merge with"
|
||||
msgstr "与其合并"
|
||||
|
||||
# AI Translated
|
||||
msgid "Decompose Color"
|
||||
msgstr "分解颜色"
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr "移除此耗材"
|
||||
|
||||
@@ -3124,6 +3126,10 @@ msgstr "组合体"
|
||||
msgid "Merge parts to an object"
|
||||
msgstr "合并零件到对象"
|
||||
|
||||
# AI Translated
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr "同时使用可变层高与混色子层可能导致混色质量不佳。"
|
||||
|
||||
msgid "Add layers"
|
||||
msgstr "添加层"
|
||||
|
||||
@@ -4574,6 +4580,23 @@ msgstr "当前腔体温度高于材料的安全温度,这可能导致材料软
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr "最低机箱温度(%d℃)高于目标机箱温度(%d℃)。最低值是开始打印的阈值,此时机箱会持续朝目标温度加热,因此它不应超过目标值。该值将被限制到目标值。"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr "层高太小,将设置为最小值(%g mm)。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "层高超出了打印机设置 -> 挤出机 -> 层高限制中设置的范围,这可能导致打印质量问题。"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr "是否自动调整到限制值(%g mm)?"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "调整"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
@@ -4624,7 +4647,7 @@ msgstr ""
|
||||
"\n"
|
||||
"这个数值将被重置为0。"
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr "“交替添加额外”与“确保垂直外壳厚度”的”全部“选项不兼容。"
|
||||
|
||||
msgid ""
|
||||
@@ -4670,7 +4693,7 @@ msgstr ""
|
||||
"否 - 选择保留支撑独立层高"
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
"seam_slope_start_height需要小于layer_height。\n"
|
||||
@@ -4678,7 +4701,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
"锁定深度应小于表皮深度。\n"
|
||||
@@ -4696,6 +4719,13 @@ msgstr ""
|
||||
"是 - 启用Arachne墙生成器\n"
|
||||
"否 - 禁用Arachne墙生成器并将绒毛表面设置为[位移]模式"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ear radius"
|
||||
msgstr "圆盘半径"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Brim宽度"
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr "螺旋模式仅在壁环为 1、支撑被禁用、探测结块检测被禁用、顶部壳层为 0、稀疏填充密度为 0 且延时类型为传统时才起作用。"
|
||||
|
||||
@@ -4711,6 +4741,9 @@ msgstr ""
|
||||
"是 - 自动调整这些设置并开启旋转模式\n"
|
||||
"否 - 暂不使用旋转模式"
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "不适用"
|
||||
|
||||
msgid "Printing"
|
||||
msgstr "打印中"
|
||||
|
||||
@@ -4950,6 +4983,14 @@ msgstr "生成校准gcode失败"
|
||||
msgid "Calibration error"
|
||||
msgstr "校准错误"
|
||||
|
||||
# AI Translated
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr "此打印机未配置该控件所需的硬件。"
|
||||
|
||||
# AI Translated
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr "此打印机不支持该控件。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Network unavailable"
|
||||
msgstr "网络不可用"
|
||||
@@ -5134,13 +5175,9 @@ msgstr "值 %s 超出了范围,有效的范围是从 %d 到 %d 。"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
"%s%%还是%s %s?\n"
|
||||
"是:%s%%\n"
|
||||
"否:%s %s"
|
||||
"%s%%还是%s %s?"
|
||||
|
||||
#, boost-format
|
||||
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
|
||||
@@ -5162,9 +5199,6 @@ msgstr "无效的模式。请使用 N、N#K 或逗号分隔的列表(每个条
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr "无效格式,应该是\"%1%\"这种数组格式"
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "不适用"
|
||||
|
||||
# AI Translated
|
||||
msgid "System agents"
|
||||
msgstr "系统代理"
|
||||
@@ -5807,7 +5841,7 @@ msgstr "体积:"
|
||||
msgid "Size:"
|
||||
msgstr "尺寸:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "发现G-code路径在层%d,高度为%.2lf mm处有冲突。请将有冲突的对象分离得更远(%s <-> %s)。"
|
||||
|
||||
@@ -5988,6 +6022,10 @@ msgstr "多设备"
|
||||
msgid "Project"
|
||||
msgstr "项目"
|
||||
|
||||
# AI Translated
|
||||
msgid "Device (Web)"
|
||||
msgstr "设备(网页)"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
@@ -6115,16 +6153,22 @@ msgstr "项目另存为"
|
||||
msgid "Save current project as"
|
||||
msgstr "项目另存为"
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr "导入 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr "加载模型"
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr "导入 ZIP 压缩文件"
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr "从 ZIP 压缩文件中导入一个或多个模型"
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7602,6 +7646,10 @@ msgstr "自定义当前盘"
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr "%s 喷嘴无法打印 %s。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr "在单挤出机打印机上打印混色耗材丝需要频繁换料和冲刷,可能显著增加废料以及喷嘴/废料槽堵塞的风险。"
|
||||
|
||||
#, boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr "不建议在打印时将 %1% 与 %2% 混合。\n"
|
||||
@@ -7727,12 +7775,44 @@ msgstr "从AMS同步材料列表"
|
||||
msgid "Set filaments to use"
|
||||
msgstr "配置可选择的材料"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr "添加混合耗材丝"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed Filament"
|
||||
msgstr "混合耗材丝"
|
||||
|
||||
# AI Translated
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr "移除最后一个混合耗材丝"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add mixed filament"
|
||||
msgstr "添加混合耗材丝"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr "混合耗材丝的组分无效或不匹配。请重新编辑受影响的条目。"
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr "搜索盘、模型和零件。"
|
||||
|
||||
msgid "Pellets"
|
||||
msgstr "颗粒"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr "混合耗材丝的组分引用已失效"
|
||||
|
||||
# AI Translated
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr "编辑 / 删除 / 合并"
|
||||
|
||||
# AI Translated
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr "目标混合耗材丝将此物理耗材丝用作组分。合并将移除此物理耗材丝,并可能使该混合耗材丝失效。是否继续?"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr "完成操作后,%s 项目将关闭并创建一个新项目。"
|
||||
@@ -7869,8 +7949,14 @@ msgstr "请确认这些预设中的G-codes是否安全,以防止对机器造
|
||||
msgid "Customized Preset"
|
||||
msgstr "自定义的预设"
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgstr "STEP 文件中的部件名称不是 UTF8 格式!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr "STEP 文件中的部件名称不是 UTF-8 格式!"
|
||||
|
||||
# AI Translated
|
||||
msgid "Because of unsupported text encoding, garbage characters may appear!"
|
||||
@@ -7913,6 +7999,14 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr "检测到多部分对象"
|
||||
|
||||
# AI Translated
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr "正在将纹理匹配到耗材丝"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture Import Warning"
|
||||
msgstr "纹理导入警告"
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr "将这些文件加载为一个多零件对象?\n"
|
||||
|
||||
@@ -8028,19 +8122,19 @@ msgstr "未选择替换目录"
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr "替换为目录中的 3D 文件:\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr "✖ 跳过 %s:同一文件。\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr "✖ 跳过%s:文件不存在。\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr "✖ 跳过%s:替换失败。\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr "✔ 替换了 %s。\n"
|
||||
|
||||
@@ -8118,6 +8212,22 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr "立即同步"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr "纹理导入失败。模型中似乎包含纹理数据,但纹理导入过程未能完成。将仅导入模型的几何数据。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Applying texture colors..."
|
||||
msgstr "正在应用纹理颜色..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Updating 3D view..."
|
||||
msgstr "正在更新 3D 视图..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture colors applied."
|
||||
msgstr "纹理颜色已应用。"
|
||||
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr "您可以保留修改的预设到新项目中或者忽略这些修改"
|
||||
|
||||
@@ -8250,6 +8360,17 @@ msgstr "切片文件另存为:"
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr "文件%s已经发送到打印机的存储空间,可以在打印机上浏览。"
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "发布"
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr "未设置喷嘴类型。请设置喷嘴并重试。"
|
||||
|
||||
@@ -8460,8 +8581,6 @@ msgstr "是否继续?"
|
||||
msgid "Language selection"
|
||||
msgstr "语言选择"
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr "在切换应用语言之前发现某些参数预设有更改。"
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "亚太"
|
||||
@@ -8767,6 +8886,18 @@ msgstr "启用此选项后,您可以同时向多个设备发送任务并管理
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "弹出选择耗材丝分组模式"
|
||||
|
||||
# AI Translated
|
||||
msgid "Visible plugin pages"
|
||||
msgstr "可见插件页数"
|
||||
|
||||
# AI Translated
|
||||
msgid "pages"
|
||||
msgstr "页"
|
||||
|
||||
# AI Translated
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr "作为固定标签显示的插件页数量,其余页面将折叠到最后一个标签的下拉菜单中。"
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr "行为"
|
||||
|
||||
@@ -9121,6 +9252,18 @@ msgstr "显示不受支持的预设"
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr "在打印机和耗材下拉列表中显示不兼容/不受支持的预设。这些预设无法被选择。"
|
||||
|
||||
# AI Translated
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr "(实验性)使用打印机代理替代打印主机"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
"非 Bambu 打印机的打印任务将通过打印机插件代理发送,而不是经典的打印主机上传流程。\n"
|
||||
"禁用时,OrcaSlicer 使用旧的打印主机行为。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Experimental Features"
|
||||
msgstr "实验性功能"
|
||||
@@ -9329,6 +9472,10 @@ msgstr "旋转花瓶"
|
||||
msgid "First layer filament sequence"
|
||||
msgstr "首层耗材打印顺序"
|
||||
|
||||
# AI Translated
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr "耗材丝列表中包含混合耗材丝。自定义耗材丝顺序将不会生效。"
|
||||
|
||||
msgid "By Layer"
|
||||
msgstr "逐层"
|
||||
|
||||
@@ -9357,9 +9504,6 @@ msgstr "跳转到发布页面"
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr "提示:发布前需要一些准备时间,请耐心等待。"
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "发布"
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr "发布已取消"
|
||||
|
||||
@@ -9375,6 +9519,64 @@ msgstr "正在上传数据"
|
||||
msgid "Jump to webpage"
|
||||
msgstr "跳转到网页"
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr "另存%s为"
|
||||
@@ -9385,9 +9587,25 @@ msgstr "用户预设"
|
||||
msgid "Preset Inside Project"
|
||||
msgstr "项目预设"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr "将父预设继承的所有数值复制到当前预设,并解除继承关系。仅与父预设兼容的预设可能会变为不受支持。"
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr "与父级分离"
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "独立预设"
|
||||
|
||||
# AI Translated
|
||||
msgid "Parent preset"
|
||||
msgstr "父预设"
|
||||
|
||||
# AI Translated
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr "此预设未继承自其它预设。"
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr "名称不可用。"
|
||||
|
||||
@@ -10093,24 +10311,6 @@ msgstr "您确定要启用此选项吗?"
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr "填充图案通常设计为自动处理旋转,以确保正确打印并实现其预期效果(例如,Gyroid、Cubic)。旋转当前的稀疏填充图案可能会导致支撑不足。请谨慎操作并彻底检查是否存在任何潜在的打印问题。您确定要启用此选项吗?"
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
"层高太小。\n"
|
||||
"将设置为min_layer_height\n"
|
||||
"层高太小。\n"
|
||||
"将自动设置为min_layer_height的值\n"
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "层高超出了打印机设置->挤出机->层高限制中的范围,这可能导致打印质量问题。"
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr "是否自动调整到范围内?\n"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "调整"
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr "实验性选项。在更换耗材丝时,将耗材丝回抽一段距离后再切断以最小化冲刷。虽然这可以显著减少冲刷,但也可能增加喷嘴堵塞或其他打印问题的风险。"
|
||||
|
||||
@@ -10303,6 +10503,9 @@ msgstr "检测到保留的关键字"
|
||||
msgid "Setting Overrides"
|
||||
msgstr "参数覆盖"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "切换材料时的回抽量"
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr "基础信息"
|
||||
|
||||
@@ -10433,6 +10636,12 @@ msgstr "兼容的切片配置"
|
||||
msgid "Printable space"
|
||||
msgstr "可打印区域"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "打印机代理"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "为打印机通信选择网络代理。可用的代理将在启动时列出。"
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10558,9 +10767,6 @@ msgstr "层高限制"
|
||||
msgid "Z-Hop"
|
||||
msgstr "Z轴抬升"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "切换材料时的回抽量"
|
||||
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
"\n"
|
||||
@@ -10674,12 +10880,12 @@ msgid "No modifications need to be copied."
|
||||
msgstr "没有需要复制的修改。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr "复制参数"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr "修改 %s 的参数"
|
||||
|
||||
# AI Translated
|
||||
@@ -11194,27 +11400,6 @@ msgstr "耗材丝更换时的冲刷体积"
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr "请选择耗材丝颜色"
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr "原生 Wayland 实时画面需要 GStreamer GTK 视频接收器。请安装 GStreamer 的 gtksink 插件,然后重启 OrcaSlicer。"
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr "原生 Wayland GStreamer 视频接收器初始化失败。请检查您的 GStreamer GTK 插件安装情况。"
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr "此任务需要 Windows Media Player!您是否要为您的操作系统启用'Windows Media Player'?"
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr "BambuSource 未正确注册用于媒体播放!按是重新注册它。您将被提示两次"
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr "缺少用于媒体播放的已注册 BambuSource 组件!请重新安装 OrcaSlicer 或寻求社区帮助。"
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr "使用来自不同安装的 BambuSource,视频播放可能无法正常工作!按是修复它。"
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr "您的系统缺少 GStreamer 所需的 H.264 编解码器,这是播放视频所必需的。(尝试安装 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 软件包,然后重新启动 Orca Slicer?)"
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr "云代理不可用。请重启 OrcaSlicer 后重试。"
|
||||
|
||||
@@ -11911,6 +12096,10 @@ msgstr "离不可打印区域太近,会发生碰撞。\n"
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr "距离聚集检测区域太近,会引起碰撞。\n"
|
||||
|
||||
# AI Translated
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr "有部分超出可打印区域,无法打印。\n"
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr "所选的喷嘴温度不兼容。每种耗材的喷嘴温度都必须落在其他耗材的推荐喷嘴温度范围内。否则可能会发生喷嘴堵塞或打印机损坏。"
|
||||
|
||||
@@ -11923,6 +12112,10 @@ msgstr "如果您仍要打印,可以在 偏好设置 / 控制 / 切片 / 移
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr "根据当前设置,不会生成任何打印。"
|
||||
|
||||
# AI Translated
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr "使用了渐变混合耗材丝,但“混色子层”已关闭。渐变将不会被打印。"
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr "平滑模式的延时摄影不支持在逐件打印模式下使用。"
|
||||
|
||||
@@ -11959,6 +12152,10 @@ msgstr "或许您想要缩小模型的尺寸,或者更改当前打印设置,
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr "Organic支撑不支持可变层高。"
|
||||
|
||||
# AI Translated
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr "擦拭塔耗材丝不能是混合耗材丝。"
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr "当启用擦拭塔时,不同的喷嘴直径和不同的耗材丝直径可能无法很好地工作。这是非常实验性的,所以请谨慎操作。"
|
||||
|
||||
@@ -12224,9 +12421,6 @@ msgstr "使用 3MF 代替 G-code"
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr "如果打印机接受 3MF 文件作为打印任务,请启用此选项。启用后,Orca Slicer 将以 .gcode.3mf 格式发送切片文件,而不是普通的 .gcode 文件。"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "打印机代理"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr "选择打印机通信的网络代理实施。"
|
||||
|
||||
@@ -12309,7 +12503,7 @@ msgstr "mm 或 %"
|
||||
msgid "Other layers"
|
||||
msgstr "其它层"
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "除首层外的其他层的热床温度。0值表示该耗材丝不支持在Cool Plate SuperTack上打印。"
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
@@ -12861,9 +13055,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr "内部桥接的速度。如果该值以百分比表示,将基于桥接速度计算。默认值为150%。"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Brim宽度"
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr "从模型到最外圈brim走线的距离"
|
||||
|
||||
@@ -12944,6 +13135,14 @@ msgstr ""
|
||||
"在检测尖锐角度之前,几何形状将被简化。此参数表示简化的最小偏差长度。\n"
|
||||
"设为0以停用"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ears outer only"
|
||||
msgstr "仅外轮廓生成圆盘"
|
||||
|
||||
# AI Translated
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr "仅在模型的外轮廓上生成圆盘,不包括孔洞和封闭区域。"
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr "向上兼容的机器"
|
||||
|
||||
@@ -13625,6 +13824,8 @@ msgstr "层时间"
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr "当层预估打印时间小于该数值时,部件冷却风扇将会被开启。风扇转速将根据层打印时间在最大和最小风扇转速之间插值获得"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
@@ -13943,6 +14144,62 @@ msgstr "支撑材料"
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr "支撑材料通常用于打印支撑体和支撑接触面"
|
||||
|
||||
# AI Translated
|
||||
msgid "Is mixed filament"
|
||||
msgstr "是否为混合耗材丝"
|
||||
|
||||
# AI Translated
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr "该耗材丝槽位是否为由多种物理耗材丝组成的混合耗材丝"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament components"
|
||||
msgstr "混合耗材丝组分"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr "以逗号分隔的组分耗材丝序号(从 1 开始),例如 \"1,3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr "混合耗材丝子层比例"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr "以逗号分隔、总和为 1.0 的比例值,例如 \"0.7,0.3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr "混合耗材丝渐变"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr "为混合耗材丝的子层启用 Z 方向渐变模式。启用后,子层比例会随层数线性变化。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr "混合耗材丝渐变范围"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr "渐变模式下第一个组分的起始和结束比例。以逗号分隔的一对数值,例如 \"0.10,0.90\" 表示从 10% 到 90%。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr "混合耗材丝渐变曲线"
|
||||
|
||||
# AI Translated
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr "可选的 Photoshop 风格自定义曲线,将 Z 方向进度映射到第一个组分的比例。以竖线分隔的控制点进行编码,格式为 \"x,y\"(旧格式)或在需要覆盖切线时使用 \"x,y,m_in,m_out\"(留空或填 \"nan\" 表示使用 PCHIP 默认值)。x 取值范围为 [0,1];y 会被限制在所配置的比例范围内,例如 \"0,0.15|0.5,0.50|1,0.85\"。留空时改用线性的 gradient_range。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr "混合耗材丝逐零件渐变"
|
||||
|
||||
# AI Translated
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr "启用渐变模式时,对组合体中的每个零件分别应用渐变,而不是将整个组合体视为一个 Z 范围。"
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr "可打印耗材"
|
||||
|
||||
@@ -14119,6 +14376,14 @@ msgstr "TPMS-FK结构"
|
||||
msgid "Gyroid"
|
||||
msgstr "螺旋体"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr "稀疏填充平滑系数"
|
||||
|
||||
# AI Translated
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr "控制稀疏填充拐角的圆滑程度。0% 保持原有的尖锐路径,100% 则在相邻填充线之间生成尽可能大的圆弧。"
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr "顶面填充的加速度。使用较低值可能会改善顶面质量"
|
||||
|
||||
@@ -14659,6 +14924,14 @@ msgstr "打印机兼容的G-code风格'"
|
||||
msgid "Klipper"
|
||||
msgstr "Klipper固件"
|
||||
|
||||
# AI Translated
|
||||
msgid "Skip G-code config block"
|
||||
msgstr "跳过 G-code 配置块"
|
||||
|
||||
# AI Translated
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr "不将 CONFIG_BLOCK(切片软件配置的键值对)写入 G-code 文件。这对固件在解析这些注释行时会崩溃的打印机(例如 Anycubic go-klipper)有帮助。注意:G-code 文件将不再包含切片设置,因此重新导入到 OrcaSlicer 时无法恢复配置。"
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr "颗粒改装打印机"
|
||||
|
||||
@@ -15178,6 +15451,7 @@ msgid "The allowed maximum output force of Y axis"
|
||||
msgstr "Y 轴允许的最大输出力"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr "N"
|
||||
|
||||
@@ -15190,6 +15464,7 @@ msgid "The machine bed mass load of Y axis"
|
||||
msgstr "Y 轴的机器热床质量负载"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
@@ -15497,7 +15772,7 @@ msgstr "从切割区域到垃圾桶的起始和结束点。"
|
||||
msgid "Reduce infill retraction"
|
||||
msgstr "减小填充回抽"
|
||||
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr "当空驶完全在填充区域内时不触发回抽。这意味着即使漏料也是不可见的。对于复杂模型,该设置能够减少回抽次数以及打印时长,但是会造成G-code生成变慢"
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -15668,7 +15943,7 @@ msgstr "擦拭后的回抽量"
|
||||
# AI Translated
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
"擦拭后快速回抽的长度,相对于回抽长度。\n"
|
||||
@@ -15704,10 +15979,18 @@ msgstr "更换挤出机时长回缩"
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr "更换挤出机时的回缩距离"
|
||||
|
||||
# AI Translated
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr "回抽长度(换工具头)"
|
||||
|
||||
# AI Translated
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr "在换工具头之前触发回抽时,耗材丝会按指定的长度回抽(长度是在耗材丝进入挤出机之前,以原始耗材丝测量的)。"
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr "Z抬升高度"
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr "回抽完成之后,喷嘴轻微抬升,和打印件之间产生一定间隙。这能够避免空驶时喷嘴和打印件剐蹭和碰撞。使用螺旋线抬升z能够减少拉丝。"
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -15797,6 +16080,10 @@ msgstr "额外回填长度"
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr "每当空驶后回抽被补偿时,挤出机将推入额外数量的耗材丝。很少需要此设置。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr "额外回填长度(换工具头)"
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr "当换色后回抽被补偿时,挤出机将推入额外数量的耗材丝。"
|
||||
|
||||
@@ -16211,6 +16498,14 @@ msgstr "在擦拭塔上换头"
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr "在发出换头命令 (Tx) 之前,强制打印头先移动到擦拭塔。仅与使用第 2 类擦拭塔的多挤出机(多打印头)打印机相关。默认情况下,Orca 会在多打印头机器上跳过此移动,因为固件会处理换头,这可能导致 Tx 命令在打印件上方发出。如果您希望换头命令始终在擦拭塔上方发出,请启用此选项。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr "在擦拭塔上等待温度"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr "拾取新工具头后不等待其达到打印温度,直接移动到擦拭塔,并在冲刷前于擦拭塔上等待温度。升温过程中渗出的耗材丝会落在擦拭塔上而不是模型上,且移动时间与加热过程重叠。仅适用于使用 2 型擦拭塔的多挤出机(多工具头)打印机。固件或换工具头宏本身不得等待温度。禁用时,等待温度的指令将在换工具头命令之后立即发出。"
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr "无稀疏层 (实验功能)"
|
||||
|
||||
@@ -16741,6 +17036,14 @@ msgstr ""
|
||||
"\n"
|
||||
"在下方的擦拭前回抽量设置中输入一个数值,将在擦拭动作之前执行任何超出部分的回抽,否则超出部分的回抽将在擦拭之后执行。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr "混色子层"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr "启用混色子层拆分。启用后,含有混色耗材丝的层将被拆分为子层,以实现混色效果。"
|
||||
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr "擦拭塔可以用来清理喷嘴上的残留料和让喷嘴内部的腔压达到稳定状态,以避免打印物体时出现外观瑕疵。"
|
||||
|
||||
@@ -17816,6 +18119,10 @@ msgstr "模型文件的网格划分失败,或缺少有效的形状。"
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr "无法读取提供的文件,因为该文件内容为空。"
|
||||
|
||||
# AI Translated
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr "文件格式不兼容,无法解析。"
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr "未知的文件格式。输入文件的扩展名必须为 .stl、.obj 或 .amf(.xml)。"
|
||||
|
||||
@@ -19280,17 +19587,17 @@ msgstr "仅显示对打印机、耗材和工艺预设有改动的打印机名称
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr "仅显示对耗材预设有改动的耗材名称。"
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr "只显示带有用户打印机预设的打印机名称,并且您选择的每个预设都将导出为一个 ZIP 文件。"
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr "只显示带有用户耗材预设的耗材名称,您选择的每个耗材名称中的所有用户耗材预设都将导出为一个 ZIP 文件。"
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr "只显示带有更改的工艺预设的打印机名称,您选择的每个打印机名称中的所有用户工艺预设都将导出为一个 ZIP 文件。"
|
||||
|
||||
msgid "Please select at least one printer or filament."
|
||||
@@ -19433,9 +19740,6 @@ msgstr "物理打印机"
|
||||
msgid "Print Host upload"
|
||||
msgstr "打印主机上传"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "为打印机通信选择网络代理。可用的代理将在启动时列出。"
|
||||
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr "选择一台 Flashforge 打印机"
|
||||
|
||||
@@ -19532,7 +19836,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f
|
||||
msgstr "我们需要相关信息来诊断问题的根源。请查看 wiki 页面获取详细指南。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr "“打包”按钮会将当前会话的项目文件和日志收集到一个 zip 文件中。"
|
||||
|
||||
# AI Translated
|
||||
@@ -19588,7 +19892,7 @@ msgid "Stored logs"
|
||||
msgstr "已存储的日志"
|
||||
|
||||
# AI Translated
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr "将所有已存储的日志打包到一个 zip 文件中。"
|
||||
|
||||
# AI Translated
|
||||
@@ -19668,7 +19972,7 @@ msgstr "未找到打印机类型,请手动选择。"
|
||||
msgid "Authorizing..."
|
||||
msgstr "正在授权..."
|
||||
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr "错误。无法获取用于授权的 API 令牌"
|
||||
|
||||
msgid "Could not parse server response."
|
||||
@@ -20118,8 +20422,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to
|
||||
msgstr "启用智能耗材分配:将一种耗材分配给多个喷嘴以最大化节省"
|
||||
|
||||
# AI Translated
|
||||
msgid "Fila Saving"
|
||||
msgstr "耗材节省"
|
||||
msgid "File Saving"
|
||||
msgstr "文件保存"
|
||||
|
||||
msgid "Don't remind me again"
|
||||
msgstr "不再提醒"
|
||||
@@ -20325,9 +20629,6 @@ msgstr "在尝试登录时发生了异常,请重试。"
|
||||
msgid "User canceled."
|
||||
msgstr "用户已取消。"
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr "Brim 直径"
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr "最大角度"
|
||||
|
||||
@@ -20408,6 +20709,15 @@ msgstr "此操作无法撤消。继续?"
|
||||
msgid "Skipping objects."
|
||||
msgstr "跳过对象。"
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr "选择耗材"
|
||||
|
||||
@@ -20487,6 +20797,9 @@ msgstr "立即重启"
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr "完全不挤压"
|
||||
|
||||
msgid "s"
|
||||
msgstr "s"
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr "体积流量"
|
||||
|
||||
@@ -21111,6 +21424,57 @@ msgstr ""
|
||||
"避免翘曲\n"
|
||||
"您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "原生 Wayland 实时画面需要 GStreamer GTK 视频接收器。请安装 GStreamer 的 gtksink 插件,然后重启 OrcaSlicer。"
|
||||
|
||||
#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
#~ msgstr "原生 Wayland GStreamer 视频接收器初始化失败。请检查您的 GStreamer GTK 插件安装情况。"
|
||||
|
||||
#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
#~ msgstr "此任务需要 Windows Media Player!您是否要为您的操作系统启用'Windows Media Player'?"
|
||||
|
||||
#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
#~ msgstr "BambuSource 未正确注册用于媒体播放!按是重新注册它。您将被提示两次"
|
||||
|
||||
#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
#~ msgstr "缺少用于媒体播放的已注册 BambuSource 组件!请重新安装 OrcaSlicer 或寻求社区帮助。"
|
||||
|
||||
#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
#~ msgstr "使用来自不同安装的 BambuSource,视频播放可能无法正常工作!按是修复它。"
|
||||
|
||||
#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
#~ msgstr "您的系统缺少 GStreamer 所需的 H.264 编解码器,这是播放视频所必需的。(尝试安装 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 软件包,然后重新启动 Orca Slicer?)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "N"
|
||||
#~ msgstr "N"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "g"
|
||||
#~ msgstr "g"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Fila Saving"
|
||||
#~ msgstr "耗材节省"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Layer height is too small.\n"
|
||||
#~ "It will set to min_layer_height\n"
|
||||
#~ msgstr ""
|
||||
#~ "层高太小。\n"
|
||||
#~ "将设置为min_layer_height\n"
|
||||
#~ "层高太小。\n"
|
||||
#~ "将自动设置为min_layer_height的值\n"
|
||||
|
||||
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
#~ msgstr "层高超出了打印机设置->挤出机->层高限制中的范围,这可能导致打印质量问题。"
|
||||
|
||||
#~ msgid "Adjust to the set range automatically?\n"
|
||||
#~ msgstr "是否自动调整到范围内?\n"
|
||||
|
||||
#~ msgid "Head diameter"
|
||||
#~ msgstr "Brim 直径"
|
||||
|
||||
#~ msgid "Print order within a single layer."
|
||||
#~ msgstr "同一层内的打印顺序"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||
"POT-Creation-Date: 2026-09-03 10:27+0800\n"
|
||||
"PO-Revision-Date: 2025-11-28 13:48-0600\n"
|
||||
"Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -2425,8 +2425,6 @@ msgstr "有可用的更新。請開啟預設組合對話框進行更新。"
|
||||
msgid "%s has been removed."
|
||||
msgstr "%s 已移除。"
|
||||
|
||||
msgid "Switching application language"
|
||||
msgstr "切換應用程式語言"
|
||||
|
||||
msgid "Select the language"
|
||||
msgstr "選擇語言"
|
||||
@@ -2913,6 +2911,10 @@ msgstr "編輯"
|
||||
msgid "Merge with"
|
||||
msgstr "合併到"
|
||||
|
||||
# AI Translated
|
||||
msgid "Decompose Color"
|
||||
msgstr "分解顏色"
|
||||
|
||||
msgid "Delete this filament"
|
||||
msgstr "刪除此線材"
|
||||
|
||||
@@ -3209,6 +3211,10 @@ msgstr "組合體"
|
||||
msgid "Merge parts to an object"
|
||||
msgstr "合併零件為物件"
|
||||
|
||||
# AI Translated
|
||||
msgid "Using variable layer height together with mixed color sublayer may result in poor color mixing quality."
|
||||
msgstr "同時使用可變層高與混色子層可能導致混色品質不佳。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add layers"
|
||||
msgstr "新增層"
|
||||
@@ -4691,6 +4697,23 @@ msgstr "目前列印裝置內部溫度高於線材的安全溫度,可能會導
|
||||
msgid "The minimal chamber temperature (%d℃) is higher than the target chamber temperature (%d℃). The minimal value is the threshold at which printing starts while the chamber keeps heating toward the target, so it should not exceed it. It will be clamped to the target."
|
||||
msgstr "最低倉室溫度(%d℃)高於目標倉室溫度(%d℃)。最低值是列印開始的門檻,此時倉室會持續朝目標溫度加熱,因此不應超過目標值。系統會將其限制在目標值。"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Layer height is too small. It will be set to the minimum (%g mm)."
|
||||
msgstr "層高過小,將設定為最小值(%g mm)。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Layer height is outside the limits set in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "層高超出了印表裝置設定 -> 擠出機 -> 層高限制中設定的範圍,這可能會導致列印品質問題。"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Adjust it to the limit (%g mm) automatically?"
|
||||
msgstr "是否自動調整至限制值(%g mm)?"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "調整"
|
||||
|
||||
msgid ""
|
||||
"Layer height too small\n"
|
||||
"It has been reset to 0.2"
|
||||
@@ -4741,7 +4764,7 @@ msgstr ""
|
||||
"\n"
|
||||
"該值將會重設為 0。"
|
||||
|
||||
msgid "Alternate extra wall does't work well when ensure vertical shell thickness is set to All."
|
||||
msgid "Alternate extra wall doesn't work well when ensure vertical shell thickness is set to All."
|
||||
msgstr "當確保垂直外殼厚度設為『全部』時,交錯額外牆壁效果不佳。"
|
||||
|
||||
msgid ""
|
||||
@@ -4798,7 +4821,7 @@ msgstr ""
|
||||
"否 - 選擇保留獨立支撐層高"
|
||||
|
||||
msgid ""
|
||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||
"seam_slope_start_height needs to be smaller than layer_height.\n"
|
||||
"Reset to 0."
|
||||
msgstr ""
|
||||
"seam_slope_start_height 必須小於 layer_height。\n"
|
||||
@@ -4807,7 +4830,7 @@ msgstr ""
|
||||
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"Lock depth should smaller than skin depth.\n"
|
||||
"Lock depth should be smaller than skin depth.\n"
|
||||
"Reset to 50% of skin depth."
|
||||
msgstr ""
|
||||
"鎖定深度應小於表皮深度。\n"
|
||||
@@ -4825,6 +4848,13 @@ msgstr ""
|
||||
"是 - 啟用 Arachne Wall 產生器\n"
|
||||
"否 - 停用 Arachne Wall 產生器,並將 Fuzzy Skin 設定為 [位移] 模式"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ear radius"
|
||||
msgstr "耳狀 Brim 半徑"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Brim 寬度"
|
||||
|
||||
msgid "Spiral mode only works when wall loops is 1, support is disabled, clumping detection by probing is disabled, top shell layers is 0, sparse infill density is 0 and timelapse type is traditional."
|
||||
msgstr "花瓶模式僅適用於牆體圈數為 1、停用支撐、停用偵測堵塞、頂部外殼層數為 0、稀疏填充密度為 0,且延時攝影類型為傳統模式時。"
|
||||
|
||||
@@ -4840,6 +4870,9 @@ msgstr ""
|
||||
"是 - 自動調整這些設定並啟用花瓶模式\n"
|
||||
"否 - 不使用花瓶模式"
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "不適用"
|
||||
|
||||
msgid "Printing"
|
||||
msgstr "列印中"
|
||||
|
||||
@@ -5079,6 +5112,14 @@ msgstr "產生校正代碼失敗"
|
||||
msgid "Calibration error"
|
||||
msgstr "校正錯誤"
|
||||
|
||||
# AI Translated
|
||||
msgid "This printer is not configured with the hardware this control needs."
|
||||
msgstr "此列印裝置未配置此控制項所需的硬體。"
|
||||
|
||||
# AI Translated
|
||||
msgid "This control is not supported on this printer."
|
||||
msgstr "此列印裝置不支援此控制項。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Network unavailable"
|
||||
msgstr "網路無法使用"
|
||||
@@ -5263,13 +5304,9 @@ msgstr "數值 %s 超出範圍。有效範圍是從 %d 到 %d。"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"Is it %s%% or %s %s?\n"
|
||||
"YES for %s%%, \n"
|
||||
"NO for %s %s."
|
||||
"Is it %s%% or %s %s?"
|
||||
msgstr ""
|
||||
"是 %s%% 還是 %s %s?\n"
|
||||
"選『是』代表 %s%%,\n"
|
||||
"選『否』代表 %s %s。"
|
||||
"是 %s%% 還是 %s %s?"
|
||||
|
||||
#, boost-format
|
||||
msgid "Invalid input format. Expected vector of dimensions in the following format: \"%1%\""
|
||||
@@ -5291,9 +5328,6 @@ msgstr "無效的格式。請使用 N、N#K 或逗號分隔的清單,每個項
|
||||
msgid "Invalid format. Expected vector format: \"%1%\""
|
||||
msgstr "無效格式,應該是「%1%」這種格式"
|
||||
|
||||
msgid "N/A"
|
||||
msgstr "不適用"
|
||||
|
||||
# AI Translated
|
||||
msgid "System agents"
|
||||
msgstr "系統代理程式"
|
||||
@@ -5936,7 +5970,7 @@ msgstr "體積:"
|
||||
msgid "Size:"
|
||||
msgstr "尺寸:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "發現 G-code 路徑在 %d 層,Z = %.2lf mm 處的衝突。請將有衝突的物件分離得更遠(%s <-> %s)。"
|
||||
|
||||
@@ -6118,6 +6152,10 @@ msgstr "多臺裝置"
|
||||
msgid "Project"
|
||||
msgstr "專案"
|
||||
|
||||
# AI Translated
|
||||
msgid "Device (Web)"
|
||||
msgstr "裝置(網頁)"
|
||||
|
||||
msgid "Yes"
|
||||
msgstr "是"
|
||||
|
||||
@@ -6245,16 +6283,22 @@ msgstr "另存專案為"
|
||||
msgid "Save current project as"
|
||||
msgstr "將目前專案另存為"
|
||||
|
||||
msgid "Publish 3MF"
|
||||
msgstr ""
|
||||
|
||||
msgid "Export a 3MF file with the selected settings embedded"
|
||||
msgstr ""
|
||||
|
||||
msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
msgstr "匯入 3MF/STL/STEP/SVG/OBJ/AMF"
|
||||
|
||||
msgid "Load a model"
|
||||
msgstr "載入模型"
|
||||
|
||||
msgid "Import Zip Archive"
|
||||
msgid "Import ZIP Archive"
|
||||
msgstr "匯入壓縮檔"
|
||||
|
||||
msgid "Load models contained within a zip archive"
|
||||
msgid "Load models contained within a ZIP archive"
|
||||
msgstr "載入壓縮檔中的模型"
|
||||
|
||||
msgid "Import Configs"
|
||||
@@ -7763,6 +7807,10 @@ msgstr "自訂列印板參數"
|
||||
msgid "The %s nozzle can not print %s."
|
||||
msgstr "%s 噴嘴無法列印 %s。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Printing mixed-color filament on a single-extruder printer requires frequent filament changes and flushing, which may significantly increase waste and the risk of nozzle / waste-chute clogging."
|
||||
msgstr "在單擠出機列印裝置上列印混色線材需要頻繁換料與清理,可能大幅增加廢料以及噴嘴/廢料槽堵塞的風險。"
|
||||
|
||||
#, boost-format
|
||||
msgid "Mixing %1% with %2% in printing is not recommended.\n"
|
||||
msgstr "不建議在列印時混用 %1% 和 %2%。\n"
|
||||
@@ -7888,12 +7936,44 @@ msgstr "從 AMS 同步線材清單"
|
||||
msgid "Set filaments to use"
|
||||
msgstr "設定可選擇的線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Mixed Filament"
|
||||
msgstr "新增混合線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed Filament"
|
||||
msgstr "混合線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Remove last mixed filament"
|
||||
msgstr "移除最後一個混合線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add mixed filament"
|
||||
msgstr "新增混合線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has invalid or mismatched components. Please re-edit affected entries."
|
||||
msgstr "混合線材的成分無效或不相符。請重新編輯受影響的項目。"
|
||||
|
||||
msgid "Search plate, object and part."
|
||||
msgstr "搜尋列印板、物件和零件。"
|
||||
|
||||
msgid "Pellets"
|
||||
msgstr "顆粒"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament has broken component references"
|
||||
msgstr "混合線材的成分參照已失效"
|
||||
|
||||
# AI Translated
|
||||
msgid "Edit / Delete / Merge"
|
||||
msgstr "編輯 / 刪除 / 合併"
|
||||
|
||||
# AI Translated
|
||||
msgid "The target mixed filament uses this physical filament as a component. Merging will remove this physical filament and may invalidate the mixed filament. Continue?"
|
||||
msgstr "目標混合線材使用此實體線材作為成分。合併將移除此實體線材,並可能使該混合線材失效。是否繼續?"
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "After completing your operation, %s project will be closed and create a new project."
|
||||
msgstr "完成操作後,%s 專案將關閉並建立新專案。"
|
||||
@@ -8030,7 +8110,13 @@ msgstr "請確認這些預設中的 G-code 是安全的,以防止對列印裝
|
||||
msgid "Customized Preset"
|
||||
msgstr "自訂預設"
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF8 format!"
|
||||
msgid "Some published settings could not be applied:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some filament slots were changed:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Component name(s) inside step file not in UTF-8 format!"
|
||||
msgstr "STEP 檔案內部元件的名稱不是 UTF-8 格式!"
|
||||
|
||||
# AI Translated
|
||||
@@ -8074,6 +8160,14 @@ msgstr ""
|
||||
msgid "Multi-part object detected"
|
||||
msgstr "偵測到多部分物件"
|
||||
|
||||
# AI Translated
|
||||
msgid "Matching textures to filaments"
|
||||
msgstr "正在將紋理對應到線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture Import Warning"
|
||||
msgstr "紋理匯入警告"
|
||||
|
||||
msgid "Load these files as a single object with multiple parts?\n"
|
||||
msgstr "將這些檔案載入為一個多零件物件?\n"
|
||||
|
||||
@@ -8193,19 +8287,19 @@ msgstr "未選擇替換的目錄"
|
||||
msgid "Replaced with 3D files from directory:\n"
|
||||
msgstr "已從目錄替換為 3D 檔案:\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: same file.\n"
|
||||
msgstr "✖ 已跳過 %s:相同檔案。\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: file does not exist.\n"
|
||||
msgstr "✖ 已跳過 %s:檔案不存在。\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✖ Skipped %s: failed to replace.\n"
|
||||
msgstr "✖ 已跳過 %s:無法替換。\n"
|
||||
|
||||
#, c-format
|
||||
#, c-format, boost-format
|
||||
msgid "✔ Replaced %s.\n"
|
||||
msgstr "✔ 已替換 %s。\n"
|
||||
|
||||
@@ -8284,6 +8378,22 @@ msgstr ""
|
||||
msgid "Sync now"
|
||||
msgstr "立即同步"
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture import failed. The model appears to contain texture data, but the texture import process could not be completed. The model will be imported as geometry only."
|
||||
msgstr "紋理匯入失敗。模型中似乎包含紋理資料,但紋理匯入程序未能完成。將僅匯入模型的幾何資料。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Applying texture colors..."
|
||||
msgstr "正在套用紋理顏色..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Updating 3D view..."
|
||||
msgstr "正在更新 3D 檢視..."
|
||||
|
||||
# AI Translated
|
||||
msgid "Texture colors applied."
|
||||
msgstr "紋理顏色已套用。"
|
||||
|
||||
msgid "You can keep the modified presets for the new project or discard them"
|
||||
msgstr "您可以將修改後的預設檔保留到新專案中或者忽略這些修改"
|
||||
|
||||
@@ -8416,6 +8526,17 @@ msgstr "切片檔案另存為:"
|
||||
msgid "The file %s has been sent to the printer's storage space and can be viewed on the printer."
|
||||
msgstr "檔案 %s 已經傳送到列印裝置的儲存空間,可以在列印裝置上瀏覽。"
|
||||
|
||||
msgid "Publish 3MF file as:"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Failed to export the published 3MF file.\n"
|
||||
"Please check whether the folder exists online or if other programs have the file open."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "發布"
|
||||
|
||||
msgid "The nozzle type is not set. Please set the nozzle and try again."
|
||||
msgstr "噴嘴類型尚未設定。請設定噴嘴後再試一次。"
|
||||
|
||||
@@ -8626,8 +8747,6 @@ msgstr "是否繼續?"
|
||||
msgid "Language selection"
|
||||
msgstr "語言選擇"
|
||||
|
||||
msgid "Switching application language while some presets are modified."
|
||||
msgstr "在切換應用程式語言之前發現某些參數預設有更改。"
|
||||
|
||||
msgid "Asia-Pacific"
|
||||
msgstr "亞太"
|
||||
@@ -8940,6 +9059,18 @@ msgstr "啟用時可以同時傳送到並管理多個機臺。"
|
||||
msgid "Pop up to select filament grouping mode"
|
||||
msgstr "彈出視窗選擇線材分組模式"
|
||||
|
||||
# AI Translated
|
||||
msgid "Visible plugin pages"
|
||||
msgstr "可見的外掛頁面數"
|
||||
|
||||
# AI Translated
|
||||
msgid "pages"
|
||||
msgstr "頁"
|
||||
|
||||
# AI Translated
|
||||
msgid "Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."
|
||||
msgstr "以固定分頁顯示的外掛頁面數量,其餘頁面會收合至最後一個分頁的下拉選單中。"
|
||||
|
||||
msgid "Behaviour"
|
||||
msgstr "行為"
|
||||
|
||||
@@ -9294,6 +9425,18 @@ msgstr "顯示不支援的預設"
|
||||
msgid "Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."
|
||||
msgstr "在列印裝置和線材下拉選單中顯示不相容/不支援的預設。這些預設無法選取。"
|
||||
|
||||
# AI Translated
|
||||
msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
msgstr "(實驗性)使用列印裝置代理程式取代列印主機"
|
||||
|
||||
# AI Translated
|
||||
msgid ""
|
||||
"Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\n"
|
||||
"When disabled, OrcaSlicer uses the legacy print-host behavior."
|
||||
msgstr ""
|
||||
"將非 Bambu 列印裝置的列印工作透過列印裝置外掛代理程式傳送,而非傳統的列印主機上傳流程。\n"
|
||||
"停用時,OrcaSlicer 會使用舊有的列印主機行為。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Experimental Features"
|
||||
msgstr "實驗性功能"
|
||||
@@ -9503,6 +9646,10 @@ msgstr "螺旋花瓶模式"
|
||||
msgid "First layer filament sequence"
|
||||
msgstr "首層線材列印順序"
|
||||
|
||||
# AI Translated
|
||||
msgid "The filament list contains mixed filaments. Custom filament sequence will not take effect."
|
||||
msgstr "線材清單中包含混合線材。自訂線材順序將不會生效。"
|
||||
|
||||
msgid "By Layer"
|
||||
msgstr "逐層"
|
||||
|
||||
@@ -9530,9 +9677,6 @@ msgstr "發布頁面"
|
||||
msgid "Note: The preparation may take several minutes. Please be patient."
|
||||
msgstr "提示:發布前需要一些準備時間,請耐心等待。"
|
||||
|
||||
msgid "Publish"
|
||||
msgstr "發布"
|
||||
|
||||
msgid "Publish was canceled"
|
||||
msgstr "發布已取消"
|
||||
|
||||
@@ -9548,6 +9692,64 @@ msgstr "正在上傳資料"
|
||||
msgid "Jump to webpage"
|
||||
msgstr "跳至網頁"
|
||||
|
||||
msgid "Material"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some mixed filaments rely on filaments that will not be published:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Filament %d (mixed)"
|
||||
msgstr ""
|
||||
|
||||
msgid "needs"
|
||||
msgstr ""
|
||||
|
||||
msgid "not enabled"
|
||||
msgstr ""
|
||||
|
||||
msgid "material not published"
|
||||
msgstr ""
|
||||
|
||||
msgid "To publish a mixed filament, enable every filament it uses and choose Full Publish or check its Type requirement."
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish anyway"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Select which settings to be published in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Wiki"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish 3MF Video Guide"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed filament - published as a whole when \"Enable\" above is selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this mixed filament and enable + Full Publish its component filaments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Publish this filament slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Full Publish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Embed the entire filament of this slot in the 3MF file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter non-selected"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Save %s as"
|
||||
msgstr "另存 %s 為"
|
||||
@@ -9558,9 +9760,25 @@ msgstr "使用者預設"
|
||||
msgid "Preset Inside Project"
|
||||
msgstr "項目預設"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copies all inherited values from the parent into this preset and removes the parent relationship. Presets compatible only with the parent may become unsupported."
|
||||
msgstr "將父配置繼承的所有數值複製到目前的配置,並解除繼承關係。僅與父配置相容的配置可能會變成不受支援。"
|
||||
|
||||
msgid "Detach from parent"
|
||||
msgstr "從父預設分離"
|
||||
|
||||
# AI Translated
|
||||
msgid "Unique preset"
|
||||
msgstr "獨立配置"
|
||||
|
||||
# AI Translated
|
||||
msgid "Parent preset"
|
||||
msgstr "父配置"
|
||||
|
||||
# AI Translated
|
||||
msgid "This preset does not inherit from another preset."
|
||||
msgstr "此配置未繼承自其他配置。"
|
||||
|
||||
msgid "Name is unavailable."
|
||||
msgstr "名稱不可用。"
|
||||
|
||||
@@ -10299,22 +10517,6 @@ msgstr "您確認要啟用此選項嗎?"
|
||||
msgid "Infill patterns are typically designed to handle rotation automatically to ensure proper printing and achieve their intended effects (e.g., Gyroid, Cubic). Rotating the current sparse infill pattern may lead to insufficient support. Please proceed with caution and thoroughly check for any potential printing issues. Are you sure you want to enable this option?"
|
||||
msgstr "填充模式通常設計為自動處理旋轉,以確保正確列印並實現其預期效果(例如:Gyroid、Cubic)。旋轉目前的稀疏填充模式可能會導致支撐不足。請謹慎操作,並仔細檢查任何潛在的列印問題。您確定要啟用此選項嗎?"
|
||||
|
||||
msgid ""
|
||||
"Layer height is too small.\n"
|
||||
"It will set to min_layer_height\n"
|
||||
msgstr ""
|
||||
"層高過薄\n"
|
||||
"將改為 min_layer_height\n"
|
||||
|
||||
msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
msgstr "層高超過了印表裝置設定 -> 擠出機 -> 層高限制,這可能會導致列印品質問題。"
|
||||
|
||||
msgid "Adjust to the set range automatically?\n"
|
||||
msgstr "是否自動調整至設定範圍?\n"
|
||||
|
||||
msgid "Adjust"
|
||||
msgstr "調整"
|
||||
|
||||
msgid "Experimental feature: Retracting and cutting off the filament at a greater distance during filament changes to minimize flush. Although it can notably reduce flush, it may also elevate the risk of nozzle clogs or other printing complications."
|
||||
msgstr "實驗性功能:在換線過程中以更大的距離收回並切斷線材,以減少沖洗量。儘管這可以顯著減少沖洗,但也可能增加噴嘴堵塞或其他列印問題的風險。"
|
||||
|
||||
@@ -10507,6 +10709,9 @@ msgstr "偵測到保留的關鍵字"
|
||||
msgid "Setting Overrides"
|
||||
msgstr "參數覆蓋"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "切換線材時的回抽量"
|
||||
|
||||
msgid "Basic information"
|
||||
msgstr "基本資訊"
|
||||
|
||||
@@ -10637,6 +10842,12 @@ msgstr "相容的切片設定"
|
||||
msgid "Printable space"
|
||||
msgstr "可列印區域"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "列印裝置代理"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "選擇列印裝置通訊的網路代理實施。可用代理在啟動時註冊。"
|
||||
|
||||
#. TRN: The first argument is the parameter's name; the second argument is its value.
|
||||
#, boost-format
|
||||
msgid "Invalid value provided for parameter %1%: %2%"
|
||||
@@ -10762,9 +10973,6 @@ msgstr "層高限制"
|
||||
msgid "Z-Hop"
|
||||
msgstr "Z 軸抬升"
|
||||
|
||||
msgid "Retraction when switching material"
|
||||
msgstr "切換線材時的回抽量"
|
||||
|
||||
msgid ""
|
||||
"The Retract before wipe option could be only 100% when using the Firmware Retraction mode.\n"
|
||||
"\n"
|
||||
@@ -10878,12 +11086,12 @@ msgid "No modifications need to be copied."
|
||||
msgstr "沒有需要複製的修改。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Copy paramters"
|
||||
msgid "Copy parameters"
|
||||
msgstr "複製參數"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Modify paramters of %s"
|
||||
msgid "Modify parameters of %s"
|
||||
msgstr "修改 %s 的參數"
|
||||
|
||||
# AI Translated
|
||||
@@ -11400,27 +11608,6 @@ msgstr "線材更換時產生的廢料體積"
|
||||
msgid "Please choose the filament colour"
|
||||
msgstr "請選擇線材顏色"
|
||||
|
||||
msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
msgstr "原生 Wayland 即時檢視需要 GStreamer GTK 視訊接收器。請為 GStreamer 安裝 gtksink 外掛程式,然後重新啟動 OrcaSlicer。"
|
||||
|
||||
msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
msgstr "無法初始化原生 Wayland GStreamer 視訊接收器。請檢查您的 GStreamer GTK 外掛程式安裝。"
|
||||
|
||||
msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
msgstr "執行此設定需要 Windows Media Player!您是否要啟用 Windows Media Player?"
|
||||
|
||||
msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
msgstr "「BambuSource 未正確註冊為媒體播放模組!請點選『是』進行重新註冊,過程中會有兩次提示"
|
||||
|
||||
msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
msgstr "缺少用於媒體播放的已註冊 BambuSource 元件!請重新安裝 OrcaSlicer 或尋求社群協助。"
|
||||
|
||||
msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
msgstr "BambuSource 來自其他安裝版本,可能導致影片播放異常!請點選『是』進行修復。"
|
||||
|
||||
msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
msgstr "您的系統缺少 GStreamer 的 H.264 編解碼器,這是播放影片所必需的。(請嘗試安裝 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 套件,然後重新啟動 Orca Slicer。)"
|
||||
|
||||
msgid "Cloud agent is not available. Please restart OrcaSlicer and try again."
|
||||
msgstr "雲端代理無法使用。請重新啟動 OrcaSlicer 後再試一次。"
|
||||
|
||||
@@ -12113,6 +12300,10 @@ msgstr "離淨空區域太近,會發生碰撞。\n"
|
||||
msgid " is too close to clumping detection area, and collisions will be caused.\n"
|
||||
msgstr "離堵塞偵測區域太近,會發生碰撞。\n"
|
||||
|
||||
# AI Translated
|
||||
msgid " is partially outside the printable area, and it cannot be printed.\n"
|
||||
msgstr "有部分超出可列印區域,無法列印。\n"
|
||||
|
||||
msgid "Selected nozzle temperatures are incompatible. Each filament's nozzle temperature must fall within the recommended nozzle temperature range of the other filaments. Otherwise, nozzle clogging or printer damage may occur."
|
||||
msgstr "所選的噴嘴溫度不相容。每種線材的噴嘴溫度都必須落在其他線材的建議噴嘴溫度範圍內。否則可能會發生噴嘴堵塞或列印裝置損壞。"
|
||||
|
||||
@@ -12125,6 +12316,10 @@ msgstr "如果您仍想列印,可以在「偏好設定 / 控制 / 切片 / 移
|
||||
msgid "No extrusions under current settings."
|
||||
msgstr "根據目前設定,不會進行任何列印。"
|
||||
|
||||
# AI Translated
|
||||
msgid "A gradient mixed filament is used, but 'Mixed color sublayer' is disabled. The gradient will not be printed."
|
||||
msgstr "使用了漸層混合線材,但「混色子層」已停用。漸層將不會列印。"
|
||||
|
||||
msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled."
|
||||
msgstr "逐件列印模式下不支援使用平滑模式的縮時錄影。"
|
||||
|
||||
@@ -12161,6 +12356,10 @@ msgstr "您可能想要減小模型的尺寸或更改目前的列印設定並重
|
||||
msgid "Variable layer height is not supported with Organic supports."
|
||||
msgstr "有機樹支撐不支持可變層高。"
|
||||
|
||||
# AI Translated
|
||||
msgid "The wipe tower filament cannot be a mixed filament."
|
||||
msgstr "換料塔線材不能是混合線材。"
|
||||
|
||||
msgid "Different nozzle diameters and different filament diameters may not work well when the prime tower is enabled. It's very experimental, so please proceed with caution."
|
||||
msgstr "當啟用換料時,不同的噴嘴直徑和線材直徑可能無法正常配合。此功能屬於實驗性階段,請小心使用。"
|
||||
|
||||
@@ -12426,9 +12625,6 @@ msgstr "使用 3MF 取代 G-code"
|
||||
msgid "Enable this if the printer accepts a 3MF file as the print job. When enabled, Orca Slicer sends the sliced file as a .gcode.3mf, instead of a plain .gcode file."
|
||||
msgstr "若列印裝置接受 3MF 檔案作為列印作業,請啟用此選項。啟用後,Orca Slicer 會將切片後的檔案以 .gcode.3mf 形式傳送,而非單純的 .gcode 檔案。"
|
||||
|
||||
msgid "Printer Agent"
|
||||
msgstr "列印裝置代理"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication."
|
||||
msgstr "選擇用於列印裝置通訊的網路代理實作。"
|
||||
|
||||
@@ -12511,7 +12707,7 @@ msgstr "mm 或 %"
|
||||
msgid "Other layers"
|
||||
msgstr "其它層"
|
||||
|
||||
msgid "Bed temperature for layers except the initial one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate SuperTack."
|
||||
msgstr "除首層外的其他層的熱床溫度。0值表示該線材不支援在低溫增穩列印板上列印。"
|
||||
|
||||
msgid "This is the bed temperature for layers except for the first one. A value of 0 means the filament does not support printing on the Cool Plate."
|
||||
@@ -13074,9 +13270,6 @@ msgstr ""
|
||||
msgid "Speed of internal bridges. If the value is expressed as a percentage, it will be calculated based on the bridge_speed. Default value is 150%."
|
||||
msgstr "內部橋接速度。如果該值以百分比表示,將基於 bridge_speed 進行計算。預設值為 150%。"
|
||||
|
||||
msgid "Brim width"
|
||||
msgstr "Brim 寬度"
|
||||
|
||||
msgid "This is the distance from the model to the outermost brim line."
|
||||
msgstr "從模型到 Brim 最外圈的距離"
|
||||
|
||||
@@ -13157,6 +13350,14 @@ msgstr ""
|
||||
"在偵測尖銳角度之前,幾何形狀將被簡化。此參數表示簡化的最小偏差長度。\n"
|
||||
"設為 0 以停用"
|
||||
|
||||
# AI Translated
|
||||
msgid "Brim ears outer only"
|
||||
msgstr "僅外輪廓產生耳狀 Brim"
|
||||
|
||||
# AI Translated
|
||||
msgid "Generate mouse ears only on the outer contour of the model, excluding holes and enclosed sections."
|
||||
msgstr "僅在模型的外輪廓上產生耳狀 Brim,不包含孔洞與封閉區域。"
|
||||
|
||||
msgid "upward compatible machine"
|
||||
msgstr "向上相容的裝置"
|
||||
|
||||
@@ -13836,6 +14037,8 @@ msgstr "每一層列印時間"
|
||||
msgid "The part cooling fan will be enabled for layers where the estimated time is shorter than this value. Fan speed is interpolated between the minimum and maximum fan speeds according to layer printing time."
|
||||
msgstr "當層預估列印時間小於該數值時,物件冷卻風扇將會被開啟。風扇轉速將根據層列印時間在最大和最小風扇轉速之間自動調整"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "second"
|
||||
msgid "s"
|
||||
msgstr "秒"
|
||||
|
||||
@@ -14141,6 +14344,62 @@ msgstr "支撐材料"
|
||||
msgid "Support material is commonly used to print supports and support interfaces."
|
||||
msgstr "支撐材料通常用於列印支撐體和支撐接觸面"
|
||||
|
||||
# AI Translated
|
||||
msgid "Is mixed filament"
|
||||
msgstr "是否為混合線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Whether this filament slot is a mixed filament composed of multiple physical filaments"
|
||||
msgstr "此線材槽是否為由多種實體線材組成的混合線材"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament components"
|
||||
msgstr "混合線材成分"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated 1-based indices of component filaments, e.g. \"1,3\""
|
||||
msgstr "以逗號分隔的成分線材序號(從 1 開始),例如 \"1,3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament sublayer ratios"
|
||||
msgstr "混合線材子層比例"
|
||||
|
||||
# AI Translated
|
||||
msgid "Comma-separated ratio values summing to 1.0, e.g. \"0.7,0.3\""
|
||||
msgstr "以逗號分隔、總和為 1.0 的比例值,例如 \"0.7,0.3\""
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient"
|
||||
msgstr "混合線材漸層"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable Z-direction gradient mode for mixed filament sub-layers. When enabled, the sub-layer ratios vary linearly across layers."
|
||||
msgstr "為混合線材的子層啟用 Z 方向漸層模式。啟用後,子層比例會隨層數線性變化。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient range"
|
||||
msgstr "混合線材漸層範圍"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start and end ratios for the first component in gradient mode. Comma-separated pair, e.g. \"0.10,0.90\" means 10% to 90%."
|
||||
msgstr "漸層模式下第一個成分的起始與結束比例。以逗號分隔的一對數值,例如 \"0.10,0.90\" 表示從 10% 到 90%。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament gradient curve"
|
||||
msgstr "混合線材漸層曲線"
|
||||
|
||||
# AI Translated
|
||||
msgid "Optional Photoshop-style custom curve mapping Z progress to the first component ratio. Encoded as pipe-separated control points, either \"x,y\" (legacy) or \"x,y,m_in,m_out\" when a tangent override is needed (empty token or \"nan\" means use PCHIP default). x in [0,1]; y is clamped to the configured ratio range, e.g. \"0,0.15|0.5,0.50|1,0.85\". When empty, the linear gradient_range is used instead."
|
||||
msgstr "選用的 Photoshop 風格自訂曲線,將 Z 方向進度對應到第一個成分的比例。以直立線分隔的控制點進行編碼,格式為 \"x,y\"(舊格式)或在需要覆寫切線時使用 \"x,y,m_in,m_out\"(留空或填入 \"nan\" 表示使用 PCHIP 預設值)。x 的取值範圍為 [0,1];y 會被限制在所設定的比例範圍內,例如 \"0,0.15|0.5,0.50|1,0.85\"。留空時改用線性的 gradient_range。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed filament per-part gradient"
|
||||
msgstr "混合線材逐零件漸層"
|
||||
|
||||
# AI Translated
|
||||
msgid "When gradient mode is enabled, apply the gradient to each part of an assembly independently rather than treating the whole assembly as one Z range."
|
||||
msgstr "啟用漸層模式時,對組合體中的每個零件分別套用漸層,而不是將整個組合體視為單一 Z 範圍。"
|
||||
|
||||
msgid "Filament printable"
|
||||
msgstr "線材可列印"
|
||||
|
||||
@@ -14316,6 +14575,14 @@ msgstr "TPMS-FK結構"
|
||||
msgid "Gyroid"
|
||||
msgstr "螺旋體"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sparse infill smooth factor"
|
||||
msgstr "稀疏填充平滑係數"
|
||||
|
||||
# AI Translated
|
||||
msgid "Controls how strongly sparse infill corners are rounded. 0% keeps the original sharp path, while 100% produces the largest possible curves between adjacent infill lines."
|
||||
msgstr "控制稀疏填充轉角的圓滑程度。0% 保持原有的銳利路徑,100% 則在相鄰填充線之間產生盡可能大的圓弧。"
|
||||
|
||||
msgid "This is the acceleration of top surface infill. Using a lower value may improve top surface quality."
|
||||
msgstr "頂面填充的加速度。使用較低值可能會改善頂面列印品質"
|
||||
|
||||
@@ -14856,6 +15123,14 @@ msgstr "列印裝置相容的 G-code 樣式"
|
||||
msgid "Klipper"
|
||||
msgstr "Klipper"
|
||||
|
||||
# AI Translated
|
||||
msgid "Skip G-code config block"
|
||||
msgstr "略過 G-code 設定區塊"
|
||||
|
||||
# AI Translated
|
||||
msgid "Do not write the CONFIG_BLOCK (slicer configuration key/value pairs) into the G-code file. This can help with printers whose firmware crashes when parsing these comment lines (e.g. Anycubic go-klipper). Note: the G-code file will no longer contain slicer settings, so importing it back into OrcaSlicer will not restore the configuration."
|
||||
msgstr "不將 CONFIG_BLOCK(切片軟體設定的鍵值對)寫入 G-code 檔案。這對於韌體在解析這些註解行時會當機的列印裝置(例如 Anycubic go-klipper)有幫助。注意:G-code 檔案將不再包含切片設定,因此重新匯入 OrcaSlicer 時無法還原設定。"
|
||||
|
||||
msgid "Pellet Modded Printer"
|
||||
msgstr "顆粒改裝列印裝置"
|
||||
|
||||
@@ -15377,6 +15652,7 @@ msgid "The allowed maximum output force of Y axis"
|
||||
msgstr "Y 軸允許的最大輸出力"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Newton"
|
||||
msgid "N"
|
||||
msgstr "N"
|
||||
|
||||
@@ -15389,6 +15665,7 @@ msgid "The machine bed mass load of Y axis"
|
||||
msgstr "Y 軸的機器床台質量負載"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "gram"
|
||||
msgid "g"
|
||||
msgstr "g"
|
||||
|
||||
@@ -15702,7 +15979,7 @@ msgstr "從切割區域到垃圾桶的起始和結束點。"
|
||||
msgid "Reduce infill retraction"
|
||||
msgstr "減小填充回抽"
|
||||
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that z-hop is also not performed in areas where retraction is skipped."
|
||||
msgid "Don't retract when the travel is entirely within an infill area. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. Note that Z-hop is also not performed in areas where retraction is skipped."
|
||||
msgstr "當空駛完全在填充區域內時不觸發回抽。這意味著即使漏料也是不可見的。對於複雜模型,該設定能夠減少回抽次數以及列印時長,但是會造成 G-code 產生變慢"
|
||||
|
||||
msgid "This option will drop the temperature of the inactive extruders to prevent oozing."
|
||||
@@ -15873,7 +16150,7 @@ msgstr "擦拭後的回抽量"
|
||||
# AI Translated
|
||||
#, no-c-format, no-boost-format
|
||||
msgid ""
|
||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"This is the length of fast retraction after wipe, relative to retraction length.\n"
|
||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||
msgstr ""
|
||||
"擦拭後快速回抽的長度,相對於回抽長度。\n"
|
||||
@@ -15909,10 +16186,18 @@ msgstr "更換擠出機時長回抽"
|
||||
msgid "Retraction distance when extruder change"
|
||||
msgstr "更換擠出機時的回抽距離"
|
||||
|
||||
# AI Translated
|
||||
msgid "Retraction Length (Toolchange)"
|
||||
msgstr "回抽長度(換工具)"
|
||||
|
||||
# AI Translated
|
||||
msgid "When retraction is triggered before changing tool, filament is pulled back by the specified amount (the length is measured on raw filament, before it enters the extruder)."
|
||||
msgstr "在換工具之前觸發回抽時,線材會依指定的長度回抽(長度是在線材進入擠出機之前,以原始線材測量)。"
|
||||
|
||||
msgid "Z-hop height"
|
||||
msgstr "Z 抬升高度"
|
||||
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift z can prevent stringing."
|
||||
msgid "Whenever there is a retraction, the nozzle is lifted a little to create clearance between the nozzle and the print. This prevents the nozzle from hitting the print when traveling more. Using spiral lines to lift Z can prevent stringing."
|
||||
msgstr "回抽完成之後,噴嘴輕微抬升,和列印物件之間產生一定間隙。這能夠避免空駛時噴嘴和列印物件剮蹭和碰撞。使用螺旋線抬升z能夠減少拉絲"
|
||||
|
||||
msgid "Z-hop lower boundary"
|
||||
@@ -16002,6 +16287,10 @@ msgstr "額外回填長度"
|
||||
msgid "When the retraction is compensated after the travel move, the extruder will push this additional amount of filament. This setting is rarely needed."
|
||||
msgstr "每當空駛後回抽被補償時,擠出機將推入額外長度的線材。很少需要此設定。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Extra length on restart (Toolchange)"
|
||||
msgstr "額外回填長度(換工具)"
|
||||
|
||||
msgid "When the retraction is compensated after changing tool, the extruder will push this additional amount of filament."
|
||||
msgstr "當換色後回抽被補償時,擠出機將推入額外長度的線材。"
|
||||
|
||||
@@ -16405,6 +16694,14 @@ msgstr "在換料塔上換刀"
|
||||
msgid "Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, which can result in the Tx command being issued above the printed part. Enable this option if you want the tool change to always be issued above the wipe tower instead."
|
||||
msgstr "強制工具頭在發出換刀指令 (Tx) 之前先移動到換料塔。僅適用於使用 Type 2 換料塔的多擠出機(多工具頭)列印裝置。預設情況下,Orca 會在多工具頭機器上略過此空駛,因為韌體會處理工具頭交換,這可能導致 Tx 指令在已列印零件上方發出。若您希望換刀一律改在換料塔上方發出,請啟用此選項。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Wait for temperature on wipe tower"
|
||||
msgstr "在換料塔上等待溫度"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pick up the new tool without waiting for it to reach printing temperature, travel to the wipe tower, and wait for the temperature there, right before purging. Ooze from the heat-up lands on the tower instead of the model, and the travel overlaps with the heating. Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. The firmware or tool change macro must not wait for the temperature itself. When disabled, the temperature wait is issued right after the tool change command."
|
||||
msgstr "取用新工具時不等待其達到列印溫度,先移動到換料塔,並在清理前於換料塔上等待溫度。升溫過程中滲出的線材會落在換料塔上而非模型上,且移動時間與加熱過程重疊。僅適用於使用第 2 型換料塔的多擠出機(多工具頭)列印裝置。韌體或換工具巨集本身不得等待溫度。停用時,等待溫度的指令會在換工具命令之後立即發出。"
|
||||
|
||||
msgid "No sparse layers (beta)"
|
||||
msgstr "取消稀疏層(Beta)"
|
||||
|
||||
@@ -16933,6 +17230,14 @@ msgstr ""
|
||||
"\n"
|
||||
"在以下的『擦拭前的回抽量』設定中設定一個值,將在擦拭之前執行任何額外的回抽操作;否則,將在擦拭之後執行。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mixed color sublayer"
|
||||
msgstr "混色子層"
|
||||
|
||||
# AI Translated
|
||||
msgid "Enable mixed color sublayer splitting. When enabled, layers containing mixed color filaments will be split into sub-layers to achieve color mixing effects."
|
||||
msgstr "啟用混色子層分割。啟用後,含有混色線材的層將被分割為子層,以達成混色效果。"
|
||||
|
||||
msgid "The wiping tower can be used to clean up residue on the nozzle and stabilize the chamber pressure inside the nozzle in order to avoid appearance defects when printing objects."
|
||||
msgstr "換料塔的功能是用於清除噴嘴上的殘留物,同時穩定噴嘴內的壓力,從而避免列印物件時出現外觀瑕疵。"
|
||||
|
||||
@@ -18002,6 +18307,10 @@ msgstr "模型檔案網格化失敗或沒有有效形狀"
|
||||
msgid "The supplied file couldn't be read because it's empty."
|
||||
msgstr "無法讀取提供的檔案,因為該檔案為空"
|
||||
|
||||
# AI Translated
|
||||
msgid "The file format is incompatible and cannot be parsed."
|
||||
msgstr "檔案格式不相容,無法解析。"
|
||||
|
||||
msgid "Unknown file format: input file must have .stl, .obj, or .amf(.xml) extension."
|
||||
msgstr "檔案格式未知。輸入的檔案必須是 .stl、.obj 或 .amf(.xml) 格式。"
|
||||
|
||||
@@ -19465,19 +19774,19 @@ msgstr "僅顯示對列印裝置、線材和處理預設設定有變更的列印
|
||||
msgid "Only display the filament names with changes to filament presets."
|
||||
msgstr "僅顯示對線材預設設定有變更的線材名稱。"
|
||||
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a zip."
|
||||
msgid "Only printer names with user printer presets will be displayed, and each preset you choose will be exported as a ZIP archive."
|
||||
msgstr "只有具有使用者列印裝置預設設定的列印裝置名稱會顯示,您選擇的每個預設設定將以 zip 檔案格式匯出。"
|
||||
|
||||
msgid ""
|
||||
"Only the filament names with user filament presets will be displayed, \n"
|
||||
"and all user filament presets in each filament name you select will be exported as a zip."
|
||||
"and all user filament presets in each filament name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"只有具有使用者線材預設設定的線材名稱會顯示,\n"
|
||||
"您選擇的每個線材名稱中的所有使用者線材預設設定將以 zip 檔案格式匯出。"
|
||||
|
||||
msgid ""
|
||||
"Only printer names with changed process presets will be displayed, \n"
|
||||
"and all user process presets in each printer name you select will be exported as a zip."
|
||||
"and all user process presets in each printer name you select will be exported as a ZIP archive."
|
||||
msgstr ""
|
||||
"只有具有變更過處理預設設定的列印裝置名稱會顯示,\n"
|
||||
"您選擇的每個列印裝置名稱中的所有使用者處理預設設定將以 zip 檔案格式匯出。"
|
||||
@@ -19622,9 +19931,6 @@ msgstr "實體列印裝置"
|
||||
msgid "Print Host upload"
|
||||
msgstr "列印主機上傳"
|
||||
|
||||
msgid "Select the network agent implementation for printer communication. Available agents are registered at startup."
|
||||
msgstr "選擇列印裝置通訊的網路代理實施。可用代理在啟動時註冊。"
|
||||
|
||||
msgid "Select a Flashforge printer"
|
||||
msgstr "選取 Flashforge 列印裝置"
|
||||
|
||||
@@ -19721,7 +20027,7 @@ msgid "We need information for diagnosing source of the issue. Check wiki page f
|
||||
msgstr "我們需要相關資訊以診斷問題來源。請查看 wiki 頁面以取得詳細指南。"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pack button collects project file and logs of current session onto a zip file."
|
||||
msgid "Pack button collects project file and logs of current session onto a ZIP archive."
|
||||
msgstr "「打包」按鈕會將目前工作階段的專案檔案與記錄收集到一個 zip 檔案中。"
|
||||
|
||||
# AI Translated
|
||||
@@ -19777,7 +20083,7 @@ msgid "Stored logs"
|
||||
msgstr "已儲存的記錄"
|
||||
|
||||
# AI Translated
|
||||
msgid "Packs all stored logs onto a zip file."
|
||||
msgid "Packs all stored logs onto a ZIP archive."
|
||||
msgstr "將所有已儲存的記錄打包成一個 zip 檔案。"
|
||||
|
||||
# AI Translated
|
||||
@@ -19857,7 +20163,7 @@ msgstr "找不到列印裝置類型,請手動選取。"
|
||||
msgid "Authorizing..."
|
||||
msgstr "授權中..."
|
||||
|
||||
msgid "Error. Can't get api token for authorization"
|
||||
msgid "Error. Can't get API token for authorization"
|
||||
msgstr "錯誤。無法取得用於授權的 API token。"
|
||||
|
||||
msgid "Could not parse server response."
|
||||
@@ -20309,8 +20615,8 @@ msgid "Enable smart filament assign: Assign one filament to multiple nozzles to
|
||||
msgstr "啟用智慧線材指派:將一種線材指派給多個噴嘴以最大化節省"
|
||||
|
||||
# AI Translated
|
||||
msgid "Fila Saving"
|
||||
msgstr "線材節省"
|
||||
msgid "File Saving"
|
||||
msgstr "檔案儲存"
|
||||
|
||||
msgid "Don't remind me again"
|
||||
msgstr "不要再提醒我"
|
||||
@@ -20516,9 +20822,6 @@ msgstr "嘗試登入時發生了意外錯誤,請再試一次。"
|
||||
msgid "User canceled."
|
||||
msgstr "使用者取消。"
|
||||
|
||||
msgid "Head diameter"
|
||||
msgstr "頭直徑"
|
||||
|
||||
msgid "Max angle"
|
||||
msgstr "最大角度"
|
||||
|
||||
@@ -20599,6 +20902,15 @@ msgstr "此操作無法撤消。繼續?"
|
||||
msgid "Skipping objects."
|
||||
msgstr "跳過物件。"
|
||||
|
||||
msgid "Material Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Model Height"
|
||||
msgstr ""
|
||||
|
||||
msgid "Ratio"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select Filament"
|
||||
msgstr "選擇線材"
|
||||
|
||||
@@ -20678,6 +20990,9 @@ msgstr "立即重新啟動"
|
||||
msgid "NO RAMMING AT ALL"
|
||||
msgstr "完全不擠壓"
|
||||
|
||||
msgid "s"
|
||||
msgstr "秒"
|
||||
|
||||
msgid "Volumetric speed"
|
||||
msgstr "體積速度"
|
||||
|
||||
@@ -21323,6 +21638,55 @@ msgstr ""
|
||||
"避免翹曲\n"
|
||||
"您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。"
|
||||
|
||||
#~ msgid "Native Wayland liveview requires the GStreamer GTK video sink. Please install the gtksink plugin for GStreamer, then restart OrcaSlicer."
|
||||
#~ msgstr "原生 Wayland 即時檢視需要 GStreamer GTK 視訊接收器。請為 GStreamer 安裝 gtksink 外掛程式,然後重新啟動 OrcaSlicer。"
|
||||
|
||||
#~ msgid "Failed to initialize the native Wayland GStreamer video sink. Please check your GStreamer GTK plugin installation."
|
||||
#~ msgstr "無法初始化原生 Wayland GStreamer 視訊接收器。請檢查您的 GStreamer GTK 外掛程式安裝。"
|
||||
|
||||
#~ msgid "Windows Media Player is required for this task! Do you want to enable 'Windows Media Player' for your operation system?"
|
||||
#~ msgstr "執行此設定需要 Windows Media Player!您是否要啟用 Windows Media Player?"
|
||||
|
||||
#~ msgid "BambuSource has not correctly been registered for media playing! Press Yes to re-register it. You will be promoted twice"
|
||||
#~ msgstr "「BambuSource 未正確註冊為媒體播放模組!請點選『是』進行重新註冊,過程中會有兩次提示"
|
||||
|
||||
#~ msgid "Missing BambuSource component registered for media playing! Please re-install OrcaSlicer or seek community help."
|
||||
#~ msgstr "缺少用於媒體播放的已註冊 BambuSource 元件!請重新安裝 OrcaSlicer 或尋求社群協助。"
|
||||
|
||||
#~ msgid "Using a BambuSource from a different install, video play may not work correctly! Press Yes to fix it."
|
||||
#~ msgstr "BambuSource 來自其他安裝版本,可能導致影片播放異常!請點選『是』進行修復。"
|
||||
|
||||
#~ msgid "Your system is missing H.264 codecs for GStreamer, which are required to play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav packages, then restart Orca Slicer?)"
|
||||
#~ msgstr "您的系統缺少 GStreamer 的 H.264 編解碼器,這是播放影片所必需的。(請嘗試安裝 gstreamer1.0-plugins-bad 或 gstreamer1.0-libav 套件,然後重新啟動 Orca Slicer。)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "N"
|
||||
#~ msgstr "N"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "g"
|
||||
#~ msgstr "g"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Fila Saving"
|
||||
#~ msgstr "線材節省"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Layer height is too small.\n"
|
||||
#~ "It will set to min_layer_height\n"
|
||||
#~ msgstr ""
|
||||
#~ "層高過薄\n"
|
||||
#~ "將改為 min_layer_height\n"
|
||||
|
||||
#~ msgid "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height limits, this may cause printing quality issues."
|
||||
#~ msgstr "層高超過了印表裝置設定 -> 擠出機 -> 層高限制,這可能會導致列印品質問題。"
|
||||
|
||||
#~ msgid "Adjust to the set range automatically?\n"
|
||||
#~ msgstr "是否自動調整至設定範圍?\n"
|
||||
|
||||
#~ msgid "Head diameter"
|
||||
#~ msgstr "頭直徑"
|
||||
|
||||
#~ msgid "Print order within a single layer."
|
||||
#~ msgstr "每一層的列印順序"
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 579 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M1.5,8 14.5,1.5 7.5,14.5 6.3,9.7 Z" style="fill:none;stroke:gray;stroke-linecap:round;stroke-linejoin:round"/></svg>
|
||||
|
After Width: | Height: | Size: 209 B |
@@ -1,8 +1,4 @@
|
||||
<svg width="25" height="25" xmlns="http://www.w3.org/2000/svg" fill="none">
|
||||
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<path id="svg_1" stroke-linecap="round" stroke-width="2" stroke="#262E30" d="m1,12.5l23,0"/>
|
||||
<path id="svg_2" stroke-linecap="round" stroke-width="2" stroke="#262E30" d="m12.5,24l0,-23"/>
|
||||
</g>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<line x1="0.5" y1="7.5" x2="14.5" y2="7.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/>
|
||||
<line x1="7.5" y1="0.5" x2="7.5" y2="14.5" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 312 B After Width: | Height: | Size: 332 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12.00,12.00 L12.00,11.96 L12.01,11.92 L12.03,11.89 L12.05,11.85 L12.08,11.82 L12.12,11.80 L12.16,11.78 L12.20,11.76 L12.25,11.75 L12.30,11.75 L12.35,11.75 L12.40,11.77 L12.46,11.79 L12.51,11.81 L12.56,11.85 L12.61,11.89 L12.66,11.94 L12.70,12.00 L12.74,12.06 L12.77,12.14 L12.79,12.21 L12.80,12.29 L12.81,12.38 L12.81,12.47 L12.80,12.56 L12.77,12.65 L12.74,12.74 L12.70,12.83 L12.65,12.92 L12.58,13.01 L12.51,13.09 L12.43,13.17 L12.33,13.24 L12.23,13.30 L12.12,13.36 L12.00,13.40 L11.87,13.43 L11.74,13.46 L11.61,13.46 L11.47,13.46 L11.33,13.45 L11.18,13.41 L11.04,13.37 L10.90,13.31 L10.76,13.24 L10.63,13.15 L10.50,13.05 L10.38,12.93 L10.27,12.81 L10.17,12.67 L10.08,12.51 L10.01,12.35 L9.95,12.18 L9.90,12.00 L9.87,11.81 L9.86,11.62 L9.86,11.43 L9.88,11.23 L9.92,11.03 L9.98,10.83 L10.06,10.64 L10.15,10.45 L10.27,10.27 L10.40,10.09 L10.55,9.93 L10.72,9.78 L10.90,9.64 L11.10,9.52 L11.31,9.41 L11.53,9.32 L11.76,9.25 L12.00,9.20 L12.25,9.17 L12.50,9.17 L12.75,9.18 L13.01,9.22 L13.27,9.29 L13.52,9.37 L13.76,9.48 L14.00,9.62 L14.23,9.77 L14.44,9.95 L14.64,10.15 L14.83,10.37 L15.00,10.60 L15.14,10.86 L15.27,11.12 L15.37,11.41 L15.45,11.70 L15.50,12.00 L15.53,12.31 L15.52,12.62 L15.49,12.94 L15.44,13.25 L15.35,13.56 L15.23,13.87 L15.09,14.16 L14.92,14.45 L14.72,14.72 L14.50,14.98 L14.25,15.22 L13.98,15.44 L13.69,15.63 L13.38,15.80 L13.06,15.94 L12.72,16.06 L12.36,16.15 L12.00,16.20 L11.63,16.22 L11.26,16.21 L10.88,16.17 L10.51,16.09 L10.14,15.98 L9.78,15.84 L9.43,15.66 L9.10,15.46 L8.78,15.22 L8.48,14.95 L8.21,14.65 L7.96,14.33 L7.74,13.99 L7.54,13.62 L7.38,13.24 L7.25,12.84 L7.16,12.42 L7.10,12.00 L7.08,11.57 L7.10,11.14 L7.15,10.70 L7.25,10.27 L7.38,9.85 L7.55,9.43 L7.76,9.03 L8.01,8.65 L8.29,8.29 L8.60,7.95 L8.94,7.64 L9.32,7.35 L9.72,7.10 L10.14,6.88 L10.58,6.70 L11.04,6.56 L11.52,6.46 L12.00,6.40 L12.49,6.38 L12.99,6.41 L13.48,6.48 L13.97,6.59 L14.45,6.75 L14.92,6.95 L15.37,7.19 L15.80,7.47 L16.21,7.79 L16.59,8.15 L16.94,8.54 L17.25,8.97 L17.53,9.42 L17.77,9.90 L17.97,10.40 L18.13,10.92 L18.24,11.45 L18.30,12.00 L18.31,12.55 L18.28,13.11 L18.20,13.66 L18.07,14.21 L17.89,14.74 L17.66,15.27 L17.38,15.77 L17.06,16.25 L16.70,16.70 L16.30,17.12 L15.86,17.51 L15.38,17.86 L14.88,18.17 L14.34,18.43 L13.78,18.65 L13.20,18.82 L12.61,18.93 L12.00,19.00 L11.39,19.01 L10.77,18.97 L10.16,18.87 L9.55,18.72 L8.96,18.52 L8.38,18.26 L7.83,17.96 L7.30,17.60 L6.80,17.20 L6.34,16.75 L5.92,16.26 L5.53,15.73 L5.20,15.17 L4.91,14.58 L4.68,13.96 L4.49,13.32 L4.37,12.67 L4.30,12.00 L4.29,11.33 L4.34,10.65 L4.45,9.98 L4.62,9.31 L4.85,8.66 L5.13,8.03 L5.47,7.43 L5.86,6.85 L6.31,6.31 L6.80,5.80 L7.34,5.34 L7.92,4.93 L8.53,4.56 L9.18,4.25 L9.86,4.00 L10.55,3.80 L11.27,3.67 L12.00,3.60" style="fill:none;stroke:#009688;stroke-linecap:round;stroke-linejoin:round"/><rect x="1.5" y="1.5" width="21" height="21" rx="2" style="fill:none;stroke:#949494;stroke-linecap:round;stroke-linejoin:round"/></svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,607 @@
|
||||
{
|
||||
"bambustudio_commit": "66e405477",
|
||||
"filaments": {
|
||||
"OF0UJcb6": {
|
||||
"bambu_id": "GFG60",
|
||||
"name": "PolyLite PETG",
|
||||
"type": "PETG",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OF0wBGNx": {
|
||||
"bambu_id": "GFB51",
|
||||
"name": "Bambu ASA-CF",
|
||||
"type": "ASA-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OF1UNk9P": {
|
||||
"bambu_id": "GFP97",
|
||||
"name": "Generic PP",
|
||||
"type": "PP",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OF2GCW1l": {
|
||||
"bambu_id": "GFSNL08",
|
||||
"name": "SUNLU PETG",
|
||||
"type": "PETG",
|
||||
"vendor": "SUNLU"
|
||||
},
|
||||
"OF2VFe4J": {
|
||||
"bambu_id": "GFN04",
|
||||
"name": "Bambu PAHT-CF",
|
||||
"type": "PA-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OF342jVN": {
|
||||
"bambu_id": "GFA10",
|
||||
"name": "Bambu PLA Tough+",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OF4RvVuU": {
|
||||
"bambu_id": "GFT02",
|
||||
"name": "Bambu PPS-CF",
|
||||
"type": "PPS-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OF54B0S0": {
|
||||
"bambu_id": "GFN06",
|
||||
"name": "Bambu PPA-CF",
|
||||
"type": "PPA-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OF5CgdDq": {
|
||||
"bambu_id": "GFL00",
|
||||
"name": "PolyLite PLA",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OF6rdQ6M": {
|
||||
"bambu_id": "GFT98",
|
||||
"name": "Generic PPS-CF",
|
||||
"type": "PPS-CF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OF74KeQR": {
|
||||
"bambu_id": "GFR98",
|
||||
"name": "Generic PHA",
|
||||
"type": "PHA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OF7lOgYF": {
|
||||
"bambu_id": "GFG96",
|
||||
"name": "Generic PETG HF",
|
||||
"type": "PETG",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OF8Tlg47": {
|
||||
"bambu_id": "GFN96",
|
||||
"name": "Generic PPA-GF",
|
||||
"type": "PPA-GF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OF8tPByX": {
|
||||
"bambu_id": "GFN97",
|
||||
"name": "Generic PPA-CF",
|
||||
"type": "PPA-CF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OF9OlTWH": {
|
||||
"bambu_id": "GFA07",
|
||||
"name": "Bambu PLA Marble",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFAnyRUI": {
|
||||
"bambu_id": "GFS02",
|
||||
"name": "Bambu Support For PLA",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFBSW57R": {
|
||||
"bambu_id": "GFA11",
|
||||
"name": "Bambu PLA Aero",
|
||||
"type": "PLA-AERO",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFBw6eEG": {
|
||||
"bambu_id": "GFL05",
|
||||
"name": "Overture Matte PLA",
|
||||
"type": "PLA",
|
||||
"vendor": "Overture"
|
||||
},
|
||||
"OFCD8qiU": {
|
||||
"bambu_id": "GFR99",
|
||||
"name": "Generic EVA",
|
||||
"type": "EVA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFDGigEI": {
|
||||
"bambu_id": "GFA13",
|
||||
"name": "Bambu PLA Dynamic",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFDSrzZ8": {
|
||||
"bambu_id": "GFL99",
|
||||
"name": "Generic PLA",
|
||||
"type": "PLA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFDvXujf": {
|
||||
"bambu_id": "GFS99",
|
||||
"name": "Generic PVA",
|
||||
"type": "PVA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFDxfPgH": {
|
||||
"bambu_id": "GFA08",
|
||||
"name": "Bambu PLA Sparkle",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFEGNJD4": {
|
||||
"bambu_id": "GFA05",
|
||||
"name": "Bambu PLA Silk",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFEkPBwx": {
|
||||
"bambu_id": "GFA12",
|
||||
"name": "Bambu PLA Glow",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFEswT5W": {
|
||||
"bambu_id": "GFA50",
|
||||
"name": "Bambu PLA-CF",
|
||||
"type": "PLA-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFFNYwWR": {
|
||||
"bambu_id": "GFN03",
|
||||
"name": "Bambu PA-CF",
|
||||
"type": "PA-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFFbSnCD": {
|
||||
"bambu_id": "GFA17",
|
||||
"name": "Bambu PLA Translucent",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFFvzqcd": {
|
||||
"bambu_id": "GFG00",
|
||||
"name": "Bambu PETG Basic",
|
||||
"type": "PETG",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFHWSM21": {
|
||||
"bambu_id": "GFL54",
|
||||
"name": "Fiberon PET-CF",
|
||||
"type": "PET-CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFHa48An": {
|
||||
"bambu_id": "GFT01",
|
||||
"name": "Bambu PET-CF",
|
||||
"type": "PET-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFHmPYRy": {
|
||||
"bambu_id": "GFSNL04",
|
||||
"name": "SUNLU PLA+ 2.0",
|
||||
"type": "PLA",
|
||||
"vendor": "SUNLU"
|
||||
},
|
||||
"OFIBbYO5": {
|
||||
"bambu_id": "GFU02",
|
||||
"name": "Bambu TPU for AMS",
|
||||
"type": "TPU-AMS",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFIfnzxC": {
|
||||
"bambu_id": "GFS05",
|
||||
"name": "Bambu Support For PLA/PETG",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFKhMPeX": {
|
||||
"bambu_id": "GFC00",
|
||||
"name": "Bambu PC",
|
||||
"type": "PC",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFLJ8S6I": {
|
||||
"bambu_id": "GFSNL07",
|
||||
"name": "SUNLU Wood PLA",
|
||||
"type": "PLA",
|
||||
"vendor": "SUNLU"
|
||||
},
|
||||
"OFLPAxz3": {
|
||||
"bambu_id": "GFB98",
|
||||
"name": "Generic ASA",
|
||||
"type": "ASA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFLakOUI": {
|
||||
"bambu_id": "GFC99",
|
||||
"name": "Generic PC",
|
||||
"type": "PC",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFMTK0UC": {
|
||||
"bambu_id": "GFS03",
|
||||
"name": "Bambu Support For PA/PET",
|
||||
"type": "PA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFMUWNkp": {
|
||||
"bambu_id": "GFSNL03",
|
||||
"name": "SUNLU PLA+",
|
||||
"type": "PLA",
|
||||
"vendor": "SUNLU"
|
||||
},
|
||||
"OFMjtqTC": {
|
||||
"bambu_id": "GFA16",
|
||||
"name": "Bambu PLA Wood",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFNk8bxk": {
|
||||
"bambu_id": "GFN08",
|
||||
"name": "Bambu PA6-GF",
|
||||
"type": "PA-GF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFOvv91M": {
|
||||
"bambu_id": "GFB60",
|
||||
"name": "PolyLite ABS",
|
||||
"type": "ABS",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFPklMI1": {
|
||||
"bambu_id": "GFP99",
|
||||
"name": "Generic PE",
|
||||
"type": "PE",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFQ3e56w": {
|
||||
"bambu_id": "GFA15",
|
||||
"name": "Bambu PLA Galaxy",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFQHiNJs": {
|
||||
"bambu_id": "GFS01",
|
||||
"name": "Bambu Support G",
|
||||
"type": "PA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFQLcbps": {
|
||||
"bambu_id": "GFN98",
|
||||
"name": "Generic PA-CF",
|
||||
"type": "PA-CF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFS2tn6G": {
|
||||
"bambu_id": "GFL53",
|
||||
"name": "Fiberon PA612-CF",
|
||||
"type": "PA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFTHDCqA": {
|
||||
"bambu_id": "GFA19",
|
||||
"name": "Bambu PLA Pure",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFTRZ8Y4": {
|
||||
"bambu_id": "GFG50",
|
||||
"name": "Bambu PETG-CF",
|
||||
"type": "PETG-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFUanySo": {
|
||||
"bambu_id": "GFA06",
|
||||
"name": "Bambu PLA Silk+",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFVCkX5w": {
|
||||
"bambu_id": "GFU01",
|
||||
"name": "Bambu TPU 95A",
|
||||
"type": "TPU",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFW29a9R": {
|
||||
"bambu_id": "GFL01",
|
||||
"name": "PolyTerra PLA",
|
||||
"type": "PLA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFWbdGsC": {
|
||||
"bambu_id": "GFL98",
|
||||
"name": "Generic PLA-CF",
|
||||
"type": "PLA-CF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFX0ycRQ": {
|
||||
"bambu_id": "GFL52",
|
||||
"name": "Fiberon PA12-CF",
|
||||
"type": "PA-CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFXIbw5D": {
|
||||
"bambu_id": "GFA01",
|
||||
"name": "Bambu PLA Matte",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFXkm8q1": {
|
||||
"bambu_id": "GFP96",
|
||||
"name": "Generic PP-CF",
|
||||
"type": "PP-CF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFXzQ4yL": {
|
||||
"bambu_id": "GFB02",
|
||||
"name": "Bambu ASA-Aero",
|
||||
"type": "ASA-AERO",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFY9muEs": {
|
||||
"bambu_id": "GFB99",
|
||||
"name": "Generic ABS",
|
||||
"type": "ABS",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFYPdQJh": {
|
||||
"bambu_id": "GFG99",
|
||||
"name": "Generic PETG",
|
||||
"type": "PETG",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFaQMgRH": {
|
||||
"bambu_id": "GFA09",
|
||||
"name": "Bambu PLA Tough",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFc3xdm9": {
|
||||
"bambu_id": "GFL04",
|
||||
"name": "Overture PLA",
|
||||
"type": "PLA",
|
||||
"vendor": "Overture"
|
||||
},
|
||||
"OFcytyoA": {
|
||||
"bambu_id": "GFL06",
|
||||
"name": "Fiberon PETG-ESD",
|
||||
"type": "PETG",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFd0Fv0k": {
|
||||
"bambu_id": "GFP98",
|
||||
"name": "Generic PE-CF",
|
||||
"type": "PE-CF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFdyfQvU": {
|
||||
"bambu_id": "GFG03",
|
||||
"name": "Bambu PETG Matte",
|
||||
"type": "PETG",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFesA6rF": {
|
||||
"bambu_id": "GFL96",
|
||||
"name": "Generic PLA Silk",
|
||||
"type": "PLA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFf6mfQO": {
|
||||
"bambu_id": "GFS06",
|
||||
"name": "Bambu Support for ABS",
|
||||
"type": "ABS",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFfBpSRI": {
|
||||
"bambu_id": "GFB01",
|
||||
"name": "Bambu ASA",
|
||||
"type": "ASA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFg57Nmc": {
|
||||
"bambu_id": "GFC01",
|
||||
"name": "Bambu PC FR",
|
||||
"type": "PC",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFg8ndtj": {
|
||||
"bambu_id": "GFN99",
|
||||
"name": "Generic PA",
|
||||
"type": "PA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFgbpcy9": {
|
||||
"bambu_id": "GFU99",
|
||||
"name": "Generic TPU",
|
||||
"type": "TPU",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFhuaUQB": {
|
||||
"bambu_id": "GFB00",
|
||||
"name": "Bambu ABS",
|
||||
"type": "ABS",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFk8t9mz": {
|
||||
"bambu_id": "GFL55",
|
||||
"name": "Fiberon PETG-rCF",
|
||||
"type": "PETG-CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFkOviHk": {
|
||||
"bambu_id": "GFL50",
|
||||
"name": "Fiberon PA6-CF",
|
||||
"type": "PA6-CF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFknl9Iz": {
|
||||
"bambu_id": "GFB50",
|
||||
"name": "Bambu ABS-GF",
|
||||
"type": "ABS-GF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFlfuj2k": {
|
||||
"bambu_id": "GFU04",
|
||||
"name": "Bambu TPU 85A",
|
||||
"type": "TPU",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFmN2lvw": {
|
||||
"bambu_id": "GFU98",
|
||||
"name": "Generic TPU for AMS",
|
||||
"type": "TPU-AMS",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFmpMwxS": {
|
||||
"bambu_id": "GFL95",
|
||||
"name": "Generic PLA High Speed",
|
||||
"type": "PLA",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFnfxTvi": {
|
||||
"bambu_id": "GFA18",
|
||||
"name": "Bambu PLA Lite",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFniMuTN": {
|
||||
"bambu_id": "GFN05",
|
||||
"name": "Bambu PA6-CF",
|
||||
"type": "PA6-CF",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFo2UF2C": {
|
||||
"bambu_id": "GFS97",
|
||||
"name": "Generic BVOH",
|
||||
"type": "BVOH",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFoYSJKi": {
|
||||
"bambu_id": "GFG98",
|
||||
"name": "Generic PETG-CF",
|
||||
"type": "PETG-CF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFoiVqVM": {
|
||||
"bambu_id": "GFA00",
|
||||
"name": "Bambu PLA Basic",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFovEIbw": {
|
||||
"bambu_id": "GFG02",
|
||||
"name": "Bambu PETG HF",
|
||||
"type": "PETG",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFpPGSKG": {
|
||||
"bambu_id": "GFSNL05",
|
||||
"name": "SUNLU Silk PLA+",
|
||||
"type": "PLA",
|
||||
"vendor": "SUNLU"
|
||||
},
|
||||
"OFpW4gdi": {
|
||||
"bambu_id": "GFSNL02",
|
||||
"name": "SUNLU PLA Matte",
|
||||
"type": "PLA",
|
||||
"vendor": "SUNLU"
|
||||
},
|
||||
"OFq9svOz": {
|
||||
"bambu_id": "GFT97",
|
||||
"name": "Generic PPS",
|
||||
"type": "PPS",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFqINlYj": {
|
||||
"bambu_id": "GFL03",
|
||||
"name": "eSUN PLA+",
|
||||
"type": "PLA",
|
||||
"vendor": "eSUN"
|
||||
},
|
||||
"OFrKLeE3": {
|
||||
"bambu_id": "GFA02",
|
||||
"name": "Bambu PLA Metal",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFsFon5l": {
|
||||
"bambu_id": "GFS98",
|
||||
"name": "Generic HIPS",
|
||||
"type": "HIPS",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFsHSVZc": {
|
||||
"bambu_id": "GFS00",
|
||||
"name": "Bambu Support W",
|
||||
"type": "PLA",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFsijjtH": {
|
||||
"bambu_id": "GFP95",
|
||||
"name": "Generic PP-GF",
|
||||
"type": "PP-GF",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFtkLO6q": {
|
||||
"bambu_id": "GFU03",
|
||||
"name": "Bambu TPU 90A",
|
||||
"type": "TPU",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFu1evlr": {
|
||||
"bambu_id": "GFG97",
|
||||
"name": "Generic PCTG",
|
||||
"type": "PCTG",
|
||||
"vendor": "Generic"
|
||||
},
|
||||
"OFvKUnLh": {
|
||||
"bambu_id": "GFU00",
|
||||
"name": "Bambu TPU 95A HF",
|
||||
"type": "TPU",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFvrXuV7": {
|
||||
"bambu_id": "GFB61",
|
||||
"name": "PolyLite ASA",
|
||||
"type": "ASA",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFwPrlCM": {
|
||||
"bambu_id": "GFG01",
|
||||
"name": "Bambu PETG Translucent",
|
||||
"type": "PETG",
|
||||
"vendor": "Bambu Lab"
|
||||
},
|
||||
"OFwaYjL6": {
|
||||
"bambu_id": "GFL51",
|
||||
"name": "Fiberon PA6-GF",
|
||||
"type": "PA-GF",
|
||||
"vendor": "Polymaker"
|
||||
},
|
||||
"OFxUwUeW": {
|
||||
"bambu_id": "GFSNL06",
|
||||
"name": "SUNLU PLA Marble",
|
||||
"type": "PLA",
|
||||
"vendor": "SUNLU"
|
||||
},
|
||||
"OFzyIxba": {
|
||||
"bambu_id": "GFS04",
|
||||
"name": "Bambu PVA",
|
||||
"type": "PVA",
|
||||
"vendor": "Bambu Lab"
|
||||
}
|
||||
},
|
||||
"generated": "2026-09-04",
|
||||
"source": "https://github.com/bambulab/BambuStudio"
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Afinia",
|
||||
"version": "02.04.00.02",
|
||||
"version": "02.04.00.03",
|
||||
"force_update": "0",
|
||||
"description": "Afinia configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFB00_01",
|
||||
"filament_id": "OFLfywkp",
|
||||
"setting_id": "wAJTMxtCY7EoavRi",
|
||||
"name": "Afinia ABS+@HS",
|
||||
"from": "system",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFB00_01",
|
||||
"filament_id": "OFV5wEMe",
|
||||
"setting_id": "qCDnb2iBaz4hd4vX",
|
||||
"name": "Afinia ABS@HS",
|
||||
"from": "system",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFA00_01",
|
||||
"filament_id": "OF9HCdyQ",
|
||||
"setting_id": "N3sCgjdjvp6FTtw9",
|
||||
"name": "Afinia PLA@HS",
|
||||
"from": "system",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"inherits": "fdm_filament_tpu",
|
||||
"from": "system",
|
||||
"setting_id": "zUqTgAEbqTN1EdRl",
|
||||
"filament_id": "GFU01_01",
|
||||
"filament_id": "OFDJU6R3",
|
||||
"instantiation": "true",
|
||||
"filament_vendor": [
|
||||
"Afinia"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFB00_01",
|
||||
"filament_id": "OFXi59OX",
|
||||
"setting_id": "OxIiEYjbhEvSykaQ",
|
||||
"name": "Afinia Value ABS@HS",
|
||||
"from": "system",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"filament_id": "GFA00_01",
|
||||
"filament_id": "OFgHh8ly",
|
||||
"setting_id": "BASsUdyvElEVJ9AA",
|
||||
"name": "Afinia Value PLA@HS",
|
||||
"from": "system",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Anker",
|
||||
"version": "02.04.00.01",
|
||||
"version": "02.04.00.02",
|
||||
"force_update": "0",
|
||||
"description": "Anker configurations",
|
||||
"machine_model_list": [
|
||||
@@ -161,172 +161,172 @@
|
||||
"sub_path": "filament/fdm_filament_tpu.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ABS @base",
|
||||
"sub_path": "filament/Anker Generic ABS @base.json"
|
||||
"name": "Generic ABS @Anker base",
|
||||
"sub_path": "filament/Generic ABS @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ASA @base",
|
||||
"sub_path": "filament/Anker Generic ASA @base.json"
|
||||
"name": "Generic ASA @Anker base",
|
||||
"sub_path": "filament/Generic ASA @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PA @base",
|
||||
"sub_path": "filament/Anker Generic PA @base.json"
|
||||
"name": "Generic PA @Anker base",
|
||||
"sub_path": "filament/Generic PA @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PA-CF @base",
|
||||
"sub_path": "filament/Anker Generic PA-CF @base.json"
|
||||
"name": "Generic PA-CF @Anker base",
|
||||
"sub_path": "filament/Generic PA-CF @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PC @base",
|
||||
"sub_path": "filament/Anker Generic PC @base.json"
|
||||
"name": "Generic PC @Anker base",
|
||||
"sub_path": "filament/Generic PC @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PETG @base",
|
||||
"sub_path": "filament/Anker Generic PETG @base.json"
|
||||
"name": "Generic PETG @Anker base",
|
||||
"sub_path": "filament/Generic PETG @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PETG-CF @base",
|
||||
"sub_path": "filament/Anker Generic PETG-CF @base.json"
|
||||
"name": "Generic PETG-CF @Anker base",
|
||||
"sub_path": "filament/Generic PETG-CF @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA @base",
|
||||
"sub_path": "filament/Anker Generic PLA @base.json"
|
||||
"name": "Generic PLA @Anker base",
|
||||
"sub_path": "filament/Generic PLA @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA Silk @base",
|
||||
"sub_path": "filament/Anker Generic PLA Silk @base.json"
|
||||
"name": "Generic PLA Silk @Anker base",
|
||||
"sub_path": "filament/Generic PLA Silk @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA+ @base",
|
||||
"sub_path": "filament/Anker Generic PLA+ @base.json"
|
||||
"name": "Generic PLA+ @Anker base",
|
||||
"sub_path": "filament/Generic PLA+ @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA-CF @base",
|
||||
"sub_path": "filament/Anker Generic PLA-CF @base.json"
|
||||
"name": "Generic PLA-CF @Anker base",
|
||||
"sub_path": "filament/Generic PLA-CF @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PVA @base",
|
||||
"sub_path": "filament/Anker Generic PVA @base.json"
|
||||
"name": "Generic PVA @Anker base",
|
||||
"sub_path": "filament/Generic PVA @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic TPU @base",
|
||||
"sub_path": "filament/Anker Generic TPU @base.json"
|
||||
"name": "Generic TPU @Anker base",
|
||||
"sub_path": "filament/Generic TPU @Anker base.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ABS",
|
||||
"sub_path": "filament/Anker Generic ABS.json"
|
||||
"name": "Generic ABS @Anker",
|
||||
"sub_path": "filament/Generic ABS @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ABS 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic ABS 0.2 nozzle.json"
|
||||
"name": "Generic ABS @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic ABS @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ABS 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic ABS 0.25 nozzle.json"
|
||||
"name": "Generic ABS @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic ABS @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ASA",
|
||||
"sub_path": "filament/Anker Generic ASA.json"
|
||||
"name": "Generic ASA @Anker",
|
||||
"sub_path": "filament/Generic ASA @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ASA 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic ASA 0.2 nozzle.json"
|
||||
"name": "Generic ASA @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic ASA @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic ASA 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic ASA 0.25 nozzle.json"
|
||||
"name": "Generic ASA @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic ASA @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PA",
|
||||
"sub_path": "filament/Anker Generic PA.json"
|
||||
"name": "Generic PA @Anker",
|
||||
"sub_path": "filament/Generic PA @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PA 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic PA 0.2 nozzle.json"
|
||||
"name": "Generic PA @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic PA @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PA 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic PA 0.25 nozzle.json"
|
||||
"name": "Generic PA @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic PA @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PA-CF",
|
||||
"sub_path": "filament/Anker Generic PA-CF.json"
|
||||
"name": "Generic PA-CF @Anker",
|
||||
"sub_path": "filament/Generic PA-CF @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PC",
|
||||
"sub_path": "filament/Anker Generic PC.json"
|
||||
"name": "Generic PC @Anker",
|
||||
"sub_path": "filament/Generic PC @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PC 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic PC 0.2 nozzle.json"
|
||||
"name": "Generic PC @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic PC @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PC 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic PC 0.25 nozzle.json"
|
||||
"name": "Generic PC @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic PC @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PETG",
|
||||
"sub_path": "filament/Anker Generic PETG.json"
|
||||
"name": "Generic PETG @Anker",
|
||||
"sub_path": "filament/Generic PETG @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PETG 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic PETG 0.2 nozzle.json"
|
||||
"name": "Generic PETG @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic PETG @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PETG 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic PETG 0.25 nozzle.json"
|
||||
"name": "Generic PETG @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic PETG @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PETG-CF",
|
||||
"sub_path": "filament/Anker Generic PETG-CF.json"
|
||||
"name": "Generic PETG-CF @Anker",
|
||||
"sub_path": "filament/Generic PETG-CF @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA",
|
||||
"sub_path": "filament/Anker Generic PLA.json"
|
||||
"name": "Generic PLA @Anker",
|
||||
"sub_path": "filament/Generic PLA @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic PLA 0.2 nozzle.json"
|
||||
"name": "Generic PLA @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic PLA @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic PLA 0.25 nozzle.json"
|
||||
"name": "Generic PLA @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic PLA @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA Silk",
|
||||
"sub_path": "filament/Anker Generic PLA Silk.json"
|
||||
"name": "Generic PLA Silk @Anker",
|
||||
"sub_path": "filament/Generic PLA Silk @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA Silk 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic PLA Silk 0.2 nozzle.json"
|
||||
"name": "Generic PLA Silk @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic PLA Silk @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA Silk 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic PLA Silk 0.25 nozzle.json"
|
||||
"name": "Generic PLA Silk @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic PLA Silk @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA+",
|
||||
"sub_path": "filament/Anker Generic PLA+.json"
|
||||
"name": "Generic PLA+ @Anker",
|
||||
"sub_path": "filament/Generic PLA+ @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA+ 0.2 nozzle",
|
||||
"sub_path": "filament/Anker Generic PLA+ 0.2 nozzle.json"
|
||||
"name": "Generic PLA+ @Anker 0.2 nozzle",
|
||||
"sub_path": "filament/Generic PLA+ @Anker 0.2 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA+ 0.25 nozzle",
|
||||
"sub_path": "filament/Anker Generic PLA+ 0.25 nozzle.json"
|
||||
"name": "Generic PLA+ @Anker 0.25 nozzle",
|
||||
"sub_path": "filament/Generic PLA+ @Anker 0.25 nozzle.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PLA-CF",
|
||||
"sub_path": "filament/Anker Generic PLA-CF.json"
|
||||
"name": "Generic PLA-CF @Anker",
|
||||
"sub_path": "filament/Generic PLA-CF @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic PVA",
|
||||
"sub_path": "filament/Anker Generic PVA.json"
|
||||
"name": "Generic PVA @Anker",
|
||||
"sub_path": "filament/Generic PVA @Anker.json"
|
||||
},
|
||||
{
|
||||
"name": "Anker Generic TPU",
|
||||
"sub_path": "filament/Anker Generic TPU.json"
|
||||
"name": "Generic TPU @Anker",
|
||||
"sub_path": "filament/Generic TPU @Anker.json"
|
||||
}
|
||||
],
|
||||
"machine_list": [
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA Silk 0.2 nozzle",
|
||||
"inherits": "Anker Generic PLA Silk @base",
|
||||
"from": "system",
|
||||
"setting_id": "A1l6NiwRrasdV556",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"2"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.2 nozzle",
|
||||
"Anker M5 All-Metal 0.2 nozzle",
|
||||
"Anker M5C 0.2 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA Silk 0.25 nozzle",
|
||||
"inherits": "Anker Generic PLA Silk @base",
|
||||
"from": "system",
|
||||
"setting_id": "yzHmKTOtA9JamlNf",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"3"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.25 nozzle",
|
||||
"Anker M5 All-Metal 0.25 nozzle",
|
||||
"Anker M5C 0.25 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA Silk",
|
||||
"inherits": "Anker Generic PLA Silk @base",
|
||||
"from": "system",
|
||||
"setting_id": "BGttYO9m2rGcnrEG",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.4 nozzle",
|
||||
"Anker M5 0.6 nozzle",
|
||||
"Anker M5 All-Metal 0.4 nozzle",
|
||||
"Anker M5 All-Metal 0.6 nozzle",
|
||||
"Anker M5C 0.4 nozzle",
|
||||
"Anker M5C 0.6 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA+ 0.2 nozzle",
|
||||
"inherits": "Anker Generic PLA+ @base",
|
||||
"from": "system",
|
||||
"setting_id": "6IcMSjyxt0szdUuY",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"2"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.2 nozzle",
|
||||
"Anker M5 All-Metal 0.2 nozzle",
|
||||
"Anker M5C 0.2 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA+ 0.25 nozzle",
|
||||
"inherits": "Anker Generic PLA+ @base",
|
||||
"from": "system",
|
||||
"setting_id": "a2Rf07ZUhpTPONN1",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"3"
|
||||
],
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.25 nozzle",
|
||||
"Anker M5 All-Metal 0.25 nozzle",
|
||||
"Anker M5C 0.25 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA+",
|
||||
"inherits": "Anker Generic PLA+ @base",
|
||||
"from": "system",
|
||||
"setting_id": "0yQN44WNvLVjQu2b",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.4 nozzle",
|
||||
"Anker M5 0.6 nozzle",
|
||||
"Anker M5 All-Metal 0.4 nozzle",
|
||||
"Anker M5 All-Metal 0.6 nozzle",
|
||||
"Anker M5C 0.4 nozzle",
|
||||
"Anker M5C 0.6 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA-CF",
|
||||
"inherits": "Anker Generic PLA-CF @base",
|
||||
"from": "system",
|
||||
"setting_id": "diNUVM7UcHLnOr9J",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.4 nozzle",
|
||||
"Anker M5 0.6 nozzle",
|
||||
"Anker M5 All-Metal 0.4 nozzle",
|
||||
"Anker M5 All-Metal 0.6 nozzle",
|
||||
"Anker M5C 0.4 nozzle",
|
||||
"Anker M5C 0.6 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PLA",
|
||||
"inherits": "Anker Generic PLA @base",
|
||||
"from": "system",
|
||||
"setting_id": "qfKC91VAAFZSExhm",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.4 nozzle",
|
||||
"Anker M5 0.6 nozzle",
|
||||
"Anker M5 All-Metal 0.4 nozzle",
|
||||
"Anker M5 All-Metal 0.6 nozzle",
|
||||
"Anker M5C 0.4 nozzle",
|
||||
"Anker M5C 0.6 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PVA",
|
||||
"inherits": "Anker Generic PVA @base",
|
||||
"from": "system",
|
||||
"setting_id": "GRtdOKUkQfZ5eDH4",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.4 nozzle",
|
||||
"Anker M5 0.6 nozzle",
|
||||
"Anker M5 All-Metal 0.4 nozzle",
|
||||
"Anker M5 All-Metal 0.6 nozzle",
|
||||
"Anker M5C 0.4 nozzle",
|
||||
"Anker M5C 0.6 nozzle"
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic TPU",
|
||||
"inherits": "Anker Generic TPU @base",
|
||||
"from": "system",
|
||||
"setting_id": "YyTaPGGiEyAzmh9A",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.4 nozzle",
|
||||
"Anker M5 0.6 nozzle",
|
||||
"Anker M5 All-Metal 0.4 nozzle",
|
||||
"Anker M5 All-Metal 0.6 nozzle",
|
||||
"Anker M5C 0.4 nozzle",
|
||||
"Anker M5C 0.6 nozzle"
|
||||
]
|
||||
}
|
||||
+4
-3
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic ABS 0.2 nozzle",
|
||||
"inherits": "Anker Generic ABS @base",
|
||||
"name": "Generic ABS @Anker 0.2 nozzle",
|
||||
"inherits": "Generic ABS @Anker base",
|
||||
"renamed_from": "Anker Generic ABS 0.2 nozzle",
|
||||
"from": "system",
|
||||
"setting_id": "BD5ODYVM90Ig44C5",
|
||||
"setting_id": "iOCt7x95XbWYMe5q",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"2"
|
||||
+4
-3
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PETG 0.25 nozzle",
|
||||
"inherits": "Anker Generic PETG @base",
|
||||
"name": "Generic ABS @Anker 0.25 nozzle",
|
||||
"inherits": "Generic ABS @Anker base",
|
||||
"renamed_from": "Anker Generic ABS 0.25 nozzle",
|
||||
"from": "system",
|
||||
"setting_id": "UgKfPuleh1xnoJLT",
|
||||
"setting_id": "7Q2pr70SpSjK7v7Y",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"3"
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic ABS @base",
|
||||
"name": "Generic ABS @Anker base",
|
||||
"inherits": "fdm_filament_abs",
|
||||
"from": "system",
|
||||
"filament_id": "GFB99",
|
||||
"filament_id": "OFY9muEs",
|
||||
"instantiation": "false"
|
||||
}
|
||||
+4
-3
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic ASA",
|
||||
"inherits": "Anker Generic ASA @base",
|
||||
"name": "Generic ABS @Anker",
|
||||
"inherits": "Generic ABS @Anker base",
|
||||
"renamed_from": "Anker Generic ABS",
|
||||
"from": "system",
|
||||
"setting_id": "QiFoBW5WuDUJGmFZ",
|
||||
"setting_id": "x3IBYtgKBx6Mszzk",
|
||||
"instantiation": "true",
|
||||
"compatible_printers": [
|
||||
"Anker M5 0.4 nozzle",
|
||||
+4
-3
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic PETG 0.2 nozzle",
|
||||
"inherits": "Anker Generic PETG @base",
|
||||
"name": "Generic ASA @Anker 0.2 nozzle",
|
||||
"inherits": "Generic ASA @Anker base",
|
||||
"renamed_from": "Anker Generic ASA 0.2 nozzle",
|
||||
"from": "system",
|
||||
"setting_id": "VItvDP6zmenWXwPO",
|
||||
"setting_id": "lTR8QLbuttyVs5UW",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"2"
|
||||
+4
-3
@@ -1,9 +1,10 @@
|
||||
{
|
||||
"type": "filament",
|
||||
"name": "Anker Generic ABS 0.25 nozzle",
|
||||
"inherits": "Anker Generic ABS @base",
|
||||
"name": "Generic ASA @Anker 0.25 nozzle",
|
||||
"inherits": "Generic ASA @Anker base",
|
||||
"renamed_from": "Anker Generic ASA 0.25 nozzle",
|
||||
"from": "system",
|
||||
"setting_id": "WS5wXckNuiQqSVwO",
|
||||
"setting_id": "FU4BiMydEyo7zxq5",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"3"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user