mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-16 21:42:43 +00:00
Compare commits
17
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be1bd083a3 | ||
|
|
f0522065d8 | ||
|
|
e502ffaa5f | ||
|
|
72378557cc | ||
|
|
a18f42efc8 | ||
|
|
b4b9805383 | ||
|
|
e823044b9a | ||
|
|
f2f2ede5d5 | ||
|
|
3a8b799083 | ||
|
|
5676e0e76a | ||
|
|
88298530e4 | ||
|
|
09a8fa3811 | ||
|
|
4dbd866d18 | ||
|
|
c122c76ee8 | ||
|
|
79a7221b60 | ||
|
|
5f89963fc5 | ||
|
|
b5b5e03e4d |
@@ -4,6 +4,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
- release/*
|
||||||
paths:
|
paths:
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
- '**/CMakeLists.txt'
|
- '**/CMakeLists.txt'
|
||||||
@@ -15,6 +16,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
- release/*
|
||||||
paths:
|
paths:
|
||||||
- 'src/**'
|
- 'src/**'
|
||||||
- '**/CMakeLists.txt'
|
- '**/CMakeLists.txt'
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ You can download Orca Slicer here: [github releases page](https://github.com/Sof
|
|||||||
# Main features
|
# Main features
|
||||||
- Auto calibrations for all printers
|
- Auto calibrations for all printers
|
||||||
- Sandwich(inner-outer-inner) mode - an improved version of the `External perimeters first` mode
|
- Sandwich(inner-outer-inner) mode - an improved version of the `External perimeters first` mode
|
||||||
- Precise wall
|
- [Precise wall](https://github.com/SoftFever/OrcaSlicer/wiki/Precise-wall)
|
||||||
- Polyholes conversion support [SuperSlicer Wiki: Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes)
|
- Polyholes conversion support [SuperSlicer Wiki: Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes)
|
||||||
- Klipper support
|
- Klipper support
|
||||||
- More granular controls
|
- More granular controls
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
The 'Precise Wall' is a distinctive feature introduced by OrcaSlicer, aimed at improving the dimensional accuracy of prints and minimizing layer inconsistencies by slightly increasing the spacing between the outer wall and the inner wall.
|
||||||
|
|
||||||
|
Below is a technical explanation of how this feature works.
|
||||||
|
First, it's important to understand some basic concepts like flow, extrusion width, and space. Slic3r has an excellent document that covers these topics in detail. You can refer to this article: [link to article](https://manual.slic3r.org/advanced/flow-math).
|
||||||
|
|
||||||
|
Now, let's dive into the specifics. Slic3r and its forks, such as PrusaSlicer, SuperSlicer, and OrcaSlicer, assume that the extrusion path has an oval shape, which accounts for the overlaps. For example, if we set the wall width to 0.4mm and the layer height to 0.2mm, the combined thickness of two walls laid side by side is 0.714mm instead of 0.8mm due to the overlapping.
|
||||||
|

|
||||||
|
This approach enhances the strength of 3D-printed parts. However, it does have some side effects. For instance, when the inner-outer wall order is used, the outer wall can be pushed outside, leading to potential size inaccuracy and more layer inconsistency.
|
||||||
|
|
||||||
|
It's important to keep in mind that this approach to handling flow is specific to Slic3r and it's forks. Other slicing software, such as Cura, assumes that the extrusion path is rectangular and, therefore, does not include overlapping. Two 0.4 mm walls will result in a 0.8 mm shell thickness in Cura
|
||||||
|
|
||||||
|
OrcaSlicer adheres to Slic3r's approach to handling flow. To address the downsides mentioned earlier, OrcaSlicer introduced the 'Precise Wall' feature. When this feature is enabled in OrcaSlicer, the overlap between the outer wall and its adjacent inner wall is set to zero. This ensures that the overall strength of the printed part is unaffected, while the size accuracy and layer consistency are improved.
|
||||||
|
|
||||||
@@ -4,4 +4,5 @@ Print settings:
|
|||||||
* [Axiliary fan](auxiliary-fan)
|
* [Axiliary fan](auxiliary-fan)
|
||||||
* [Chamber temperature](chamber-temperature)
|
* [Chamber temperature](chamber-temperature)
|
||||||
* [Air filtration/Exhaust fan](air-filtration)
|
* [Air filtration/Exhaust fan](air-filtration)
|
||||||
* [Single Extruder Multimaterial](semm)
|
* [Single Extruder Multimaterial](semm)
|
||||||
|
* [Precise wall](Precise-wall)
|
||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -4324,24 +4324,6 @@ msgstr ""
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, possible-c-format, possible-boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#, possible-c-format, possible-boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7121,6 +7103,15 @@ msgid ""
|
|||||||
"material for bridge, to improve sag"
|
"material for bridge, to improve sag"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7392,6 +7383,15 @@ msgid ""
|
|||||||
"shorter bridged distances."
|
"shorter bridged distances."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: 2023-09-30 15:15+0200\n"
|
"PO-Revision-Date: 2023-09-30 15:15+0200\n"
|
||||||
"Last-Translator: René Mošner <Renemosner@seznam.cz>\n"
|
"Last-Translator: René Mošner <Renemosner@seznam.cz>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -658,7 +658,8 @@ msgid ""
|
|||||||
"Please note, application settings will be lost, but printer profiles will "
|
"Please note, application settings will be lost, but printer profiles will "
|
||||||
"not be affected."
|
"not be affected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Soubor konfigurace programu OrcaSlicer může být poškozen a nelze ho analyzovat.\n"
|
"Soubor konfigurace programu OrcaSlicer může být poškozen a nelze ho "
|
||||||
|
"analyzovat.\n"
|
||||||
"OrcaSlicer se pokusil znovu vytvořit konfigurační soubor.\n"
|
"OrcaSlicer se pokusil znovu vytvořit konfigurační soubor.\n"
|
||||||
"Všimněte si, že nastavení aplikace bude ztraceno, ale profily tiskárny "
|
"Všimněte si, že nastavení aplikace bude ztraceno, ale profily tiskárny "
|
||||||
"nebudou ovlivněny."
|
"nebudou ovlivněny."
|
||||||
@@ -4620,28 +4621,6 @@ msgstr "Nelze načíst konfiguraci."
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr "3mf je generován starým Orca Slicerem, načtěte pouze geometrická data."
|
msgstr "3mf je generován starým Orca Slicerem, načtěte pouze geometrická data."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"Verze 3mf %s je novější než verze %s %s, byly nalezeny následující klíče "
|
|
||||||
"nerozpoznaný:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Měli byste aktualizovat software.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Novější verze 3mf"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"Verze %s zařízení 3mf je novější než verze %s %s, navrhněte upgrade vašeho "
|
|
||||||
"software."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "V 3mf byly nalezeny neplatné hodnoty:"
|
msgstr "V 3mf byly nalezeny neplatné hodnoty:"
|
||||||
|
|
||||||
@@ -7720,6 +7699,15 @@ msgstr ""
|
|||||||
"Snižte tuto hodnotu mírně (například 0,9), abyste snížili množství materiálu "
|
"Snižte tuto hodnotu mírně (například 0,9), abyste snížili množství materiálu "
|
||||||
"pro most a zlepšili prověšení"
|
"pro most a zlepšili prověšení"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "Poměr průtoku horní vrstvy"
|
msgstr "Poměr průtoku horní vrstvy"
|
||||||
|
|
||||||
@@ -8042,6 +8030,15 @@ msgstr ""
|
|||||||
"Pokud je zakázáno, mosty vypadají lépe, ale jsou spolehlivé jen pro kratší "
|
"Pokud je zakázáno, mosty vypadají lépe, ale jsou spolehlivé jen pro kratší "
|
||||||
"přemostění."
|
"přemostění."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Maximální délka mostu"
|
msgstr "Maximální délka mostu"
|
||||||
|
|
||||||
@@ -8327,8 +8324,8 @@ msgid ""
|
|||||||
"Filament diameter is used to calculate extrusion in gcode, so it's important "
|
"Filament diameter is used to calculate extrusion in gcode, so it's important "
|
||||||
"and should be accurate"
|
"and should be accurate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Průměr filamentu se používá k výpočtu extruze v gkódu, takže je důležitý "
|
"Průměr filamentu se používá k výpočtu extruze v gkódu, takže je důležitý a "
|
||||||
"a měl by být přesný"
|
"měl by být přesný"
|
||||||
|
|
||||||
msgid "Shrinkage"
|
msgid "Shrinkage"
|
||||||
msgstr "Smrštění"
|
msgstr "Smrštění"
|
||||||
@@ -9159,8 +9156,8 @@ msgid ""
|
|||||||
"layer height. Too high value results in overextrusion on the surface"
|
"layer height. Too high value results in overextrusion on the surface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Množství materiálu, které se má vytlačit během žehlení. V poměru k průtoku "
|
"Množství materiálu, které se má vytlačit během žehlení. V poměru k průtoku "
|
||||||
"normální výšky vrstvy. Příliš vysoká hodnota vede k nadměrné extruzi "
|
"normální výšky vrstvy. Příliš vysoká hodnota vede k nadměrné extruzi na "
|
||||||
"na povrchu"
|
"povrchu"
|
||||||
|
|
||||||
msgid "Ironing line spacing"
|
msgid "Ironing line spacing"
|
||||||
msgstr "Řádkování žehlení"
|
msgstr "Řádkování žehlení"
|
||||||
@@ -9365,22 +9362,23 @@ msgstr ""
|
|||||||
"tiskárna přechází z extruze s vysokým průtokem (vysoká rychlost/větší šířka) "
|
"tiskárna přechází z extruze s vysokým průtokem (vysoká rychlost/větší šířka) "
|
||||||
"na extruzi s nižším průtokem (nižší rychlost/menší šířka) a naopak.\n"
|
"na extruzi s nižším průtokem (nižší rychlost/menší šířka) a naopak.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Definuje maximální rychlost, kterou může objemový průtok extrudovaného materiálu "
|
"Definuje maximální rychlost, kterou může objemový průtok extrudovaného "
|
||||||
"v mm3/s měnit v čase. Vyšší hodnoty znamenají, že jsou povoleny větší změny "
|
"materiálu v mm3/s měnit v čase. Vyšší hodnoty znamenají, že jsou povoleny "
|
||||||
"extruzní rychlosti, což vede k rychlejším přechodům rychlosti.\n"
|
"větší změny extruzní rychlosti, což vede k rychlejším přechodům rychlosti.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Hodnota 0 funkci zakáže. \n"
|
"Hodnota 0 funkci zakáže. \n"
|
||||||
"\n"
|
"\n"
|
||||||
"Pro tiskárny s přímým pohonem a vysokou rychlostí a průtokem (např. Bambu lab "
|
"Pro tiskárny s přímým pohonem a vysokou rychlostí a průtokem (např. Bambu "
|
||||||
"nebo Voron) tato hodnota obvykle není potřebná. Nicméně v některých případech, "
|
"lab nebo Voron) tato hodnota obvykle není potřebná. Nicméně v některých "
|
||||||
"kde se rychlosti funkcí výrazně liší, může poskytnout marginální přínos. "
|
"případech, kde se rychlosti funkcí výrazně liší, může poskytnout marginální "
|
||||||
"Například při agresivních zpomaleních způsobených přesahy. V těchto případech "
|
"přínos. Například při agresivních zpomaleních způsobených přesahy. V těchto "
|
||||||
"se doporučuje vysoká hodnota kolem 300-350 mm3/s2, protože to umožňuje dostatečné "
|
"případech se doporučuje vysoká hodnota kolem 300-350 mm3/s2, protože to "
|
||||||
"vyhlazení pro pomoc při dosažení plynulejšího přechodu tlaku při extruzi.\n"
|
"umožňuje dostatečné vyhlazení pro pomoc při dosažení plynulejšího přechodu "
|
||||||
|
"tlaku při extruzi.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Pro pomalejší tiskárny bez tlakového předstihu by měla být hodnota nastavena "
|
"Pro pomalejší tiskárny bez tlakového předstihu by měla být hodnota nastavena "
|
||||||
"mnohem nižší. Pro přímé pohony je hodnota 10-15 mm3/s2 dobrým výchozím bodem, "
|
"mnohem nižší. Pro přímé pohony je hodnota 10-15 mm3/s2 dobrým výchozím "
|
||||||
"a pro styl Bowden 5-10 mm3/s2. \n"
|
"bodem, a pro styl Bowden 5-10 mm3/s2. \n"
|
||||||
"\n"
|
"\n"
|
||||||
"Tato funkce je známa jako Pressure Equalizer v programu Prusa Slicer.\n"
|
"Tato funkce je známa jako Pressure Equalizer v programu Prusa Slicer.\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -9870,9 +9868,9 @@ msgid ""
|
|||||||
"if a wipe action is executed immediately following an outer wall extrusion, "
|
"if a wipe action is executed immediately following an outer wall extrusion, "
|
||||||
"the speed of the outer wall extrusion will be utilized for the wipe action."
|
"the speed of the outer wall extrusion will be utilized for the wipe action."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Rychlost čištění je určena rychlostí aktuální role extruze, např. pokud "
|
"Rychlost čištění je určena rychlostí aktuální role extruze, např. pokud je "
|
||||||
"je činnost čištění provedena bezprostředně po extruzi vnější stěny, "
|
"činnost čištění provedena bezprostředně po extruzi vnější stěny, rychlost "
|
||||||
"rychlost extruze vnější stěny bude využita pro činnost čištění."
|
"extruze vnější stěny bude využita pro činnost čištění."
|
||||||
|
|
||||||
msgid "Wipe on loops"
|
msgid "Wipe on loops"
|
||||||
msgstr "Čistit na smyčce"
|
msgstr "Čistit na smyčce"
|
||||||
@@ -9881,8 +9879,8 @@ msgid ""
|
|||||||
"To minimize the visibility of the seam in a closed loop extrusion, a small "
|
"To minimize the visibility of the seam in a closed loop extrusion, a small "
|
||||||
"inward movement is executed before the extruder leaves the loop."
|
"inward movement is executed before the extruder leaves the loop."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Aby byla minimalizována viditelnost švu při extruzi s uzavřenou smyčkou, "
|
"Aby byla minimalizována viditelnost švu při extruzi s uzavřenou smyčkou, je "
|
||||||
"je proveden malý pohyb dovnitř předtím, než vytlačovací stroj opustí smyčku."
|
"proveden malý pohyb dovnitř předtím, než vytlačovací stroj opustí smyčku."
|
||||||
|
|
||||||
msgid "Wipe speed"
|
msgid "Wipe speed"
|
||||||
msgstr "Rychlost čištění"
|
msgstr "Rychlost čištění"
|
||||||
@@ -10560,9 +10558,9 @@ msgid ""
|
|||||||
"Move nozzle along the last extrusion path when retracting to clean leaked "
|
"Move nozzle along the last extrusion path when retracting to clean leaked "
|
||||||
"material on nozzle. This can minimize blob when print new part after travel"
|
"material on nozzle. This can minimize blob when print new part after travel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Při retrakci přesuňte trysku podél poslední dráhy extruze, abyste "
|
"Při retrakci přesuňte trysku podél poslední dráhy extruze, abyste vyčistili "
|
||||||
"vyčistili uniklý materiál na trysce. To může minimalizovat skvrny při tisku "
|
"uniklý materiál na trysce. To může minimalizovat skvrny při tisku nového "
|
||||||
"nového dílu po cestě"
|
"dílu po cestě"
|
||||||
|
|
||||||
msgid "Wipe Distance"
|
msgid "Wipe Distance"
|
||||||
msgstr "Vzdálenost čištění"
|
msgstr "Vzdálenost čištění"
|
||||||
@@ -10777,10 +10775,10 @@ msgid ""
|
|||||||
"Wipe tower is only compatible with relative mode. It is always enabled on "
|
"Wipe tower is only compatible with relative mode. It is always enabled on "
|
||||||
"BambuLab printers. Default is checked"
|
"BambuLab printers. Default is checked"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Při použití volby \"label_objects\" se doporučuje relativní extruzi. "
|
"Při použití volby \"label_objects\" se doporučuje relativní extruzi. Některé "
|
||||||
"Některé extrudery fungují lépe, když je tato možnost odškrtnuta (režim "
|
"extrudery fungují lépe, když je tato možnost odškrtnuta (režim absolutní "
|
||||||
"absolutní extruze). Čistící věž je kompatibilní pouze s relativním "
|
"extruze). Čistící věž je kompatibilní pouze s relativním režimem. Na "
|
||||||
"režimem. Na tiskárnách BambuLab je vždy povolen. Výchozí je zaškrtnuto"
|
"tiskárnách BambuLab je vždy povolen. Výchozí je zaškrtnuto"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Classic wall generator produces walls with constant extrusion width and for "
|
"Classic wall generator produces walls with constant extrusion width and for "
|
||||||
@@ -12373,6 +12371,28 @@ msgstr ""
|
|||||||
"při tisku filamentu s nižší teplotou a vyšší teplotě uzavřeného prostoru. "
|
"při tisku filamentu s nižší teplotou a vyšší teplotě uzavřeného prostoru. "
|
||||||
"Další informace naleznete ve Wiki."
|
"Další informace naleznete ve Wiki."
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Verze 3mf %s je novější než verze %s %s, byly nalezeny následující klíče "
|
||||||
|
#~ "nerozpoznaný:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Měli byste aktualizovat software.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Novější verze 3mf"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Verze %s zařízení 3mf je novější než verze %s %s, navrhněte upgrade "
|
||||||
|
#~ "vašeho software."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Vloženo"
|
#~ msgstr "Vloženo"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 11:25+0100\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
|
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -3223,7 +3223,7 @@ msgstr "Volumen:"
|
|||||||
msgid "Size:"
|
msgid "Size:"
|
||||||
msgstr "Größe:"
|
msgstr "Größe:"
|
||||||
|
|
||||||
#, boost-format
|
#, c-format, boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please "
|
"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please "
|
||||||
"separate the conflicted objects farther (%s <-> %s)."
|
"separate the conflicted objects farther (%s <-> %s)."
|
||||||
@@ -4711,28 +4711,6 @@ msgstr ""
|
|||||||
"Die 3mf wurde mit einer alten Version von OrcaSlicer generiert, lade nur die "
|
"Die 3mf wurde mit einer alten Version von OrcaSlicer generiert, lade nur die "
|
||||||
"Geometriedaten."
|
"Geometriedaten."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"Die Version %s von 3mf ist neuer als die Version %s von %s, folgende "
|
|
||||||
"Schlüssel wurden nicht erkannt:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Sie sollten Ihre Software aktualisieren.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Neuere 3mf-Version"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"Die Version %s der 3mf ist neuer als die Version %s %s. Bitte Ihre Software "
|
|
||||||
"aktualisieren."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Ungültige Werte in der 3MF-Datei gefunden:"
|
msgstr "Ungültige Werte in der 3MF-Datei gefunden:"
|
||||||
|
|
||||||
@@ -6064,13 +6042,13 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen "
|
"Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen "
|
||||||
"\"Timelapse Wischturm\" hinzuzufügen, indem Sie mit der rechten Maustaste "
|
"\"Timelapse Wischturm\" hinzuzufügen, indem Sie mit der rechten Maustaste "
|
||||||
"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"-"
|
"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"->"
|
||||||
">\"Timelapse Wischturm\" wählen."
|
"\"Timelapse Wischturm\" wählen."
|
||||||
|
|
||||||
msgid "Line width"
|
msgid "Line width"
|
||||||
msgstr "Breite der Linie"
|
msgstr "Breite der Linie"
|
||||||
@@ -7913,6 +7891,15 @@ msgstr ""
|
|||||||
"Verringern Sie diesen Wert geringfügig (z. B. 0,9), um die Materialmenge für "
|
"Verringern Sie diesen Wert geringfügig (z. B. 0,9), um die Materialmenge für "
|
||||||
"die Brücke zu verringern und den Durchhang zu minimieren"
|
"die Brücke zu verringern und den Durchhang zu minimieren"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "Durchflussverhältnis obere Fläche"
|
msgstr "Durchflussverhältnis obere Fläche"
|
||||||
|
|
||||||
@@ -8250,6 +8237,15 @@ msgstr ""
|
|||||||
"Wenn deaktiviert, sehen Brücken besser aus, sind aber nur für kürzere "
|
"Wenn deaktiviert, sehen Brücken besser aus, sind aber nur für kürzere "
|
||||||
"Entfernungen zuverlässig."
|
"Entfernungen zuverlässig."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Max Überbrückungslänge"
|
msgstr "Max Überbrückungslänge"
|
||||||
|
|
||||||
@@ -9031,13 +9027,13 @@ msgstr "Volle Lüfterdrehzahl ab Schicht"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Fan speed will be ramped up linearly from zero at layer "
|
"Fan speed will be ramped up linearly from zero at layer "
|
||||||
"\"close_fan_the_first_x_layers\" to maximum at layer "
|
"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower "
|
"\". \"full_fan_speed_layer\" will be ignored if lower than "
|
||||||
"than \"close_fan_the_first_x_layers\", in which case the fan will be running "
|
"\"close_fan_the_first_x_layers\", in which case the fan will be running at "
|
||||||
"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Lüftergeschwindigkeit wird linear von Null bei der "
|
"Die Lüftergeschwindigkeit wird linear von Null bei der Schicht"
|
||||||
"Schicht\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht "
|
"\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht "
|
||||||
"\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, "
|
"\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, "
|
||||||
"wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall "
|
"wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall "
|
||||||
"läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal "
|
"läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal "
|
||||||
@@ -12730,6 +12726,28 @@ msgstr ""
|
|||||||
"höherer Gehäusetemperatur verringern. Weitere Informationen dazu finden Sie "
|
"höherer Gehäusetemperatur verringern. Weitere Informationen dazu finden Sie "
|
||||||
"in der Wiki."
|
"in der Wiki."
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Die Version %s von 3mf ist neuer als die Version %s von %s, folgende "
|
||||||
|
#~ "Schlüssel wurden nicht erkannt:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Sie sollten Ihre Software aktualisieren.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Neuere 3mf-Version"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Die Version %s der 3mf ist neuer als die Version %s %s. Bitte Ihre "
|
||||||
|
#~ "Software aktualisieren."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Eingebettet"
|
#~ msgstr "Eingebettet"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -4519,28 +4519,6 @@ msgstr "The Config cannot be loaded."
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "You should update your software.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Newer 3mf version"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Invalid values found in the 3mf:"
|
msgstr "Invalid values found in the 3mf:"
|
||||||
|
|
||||||
@@ -5809,13 +5787,13 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
|
|
||||||
msgid "Line width"
|
msgid "Line width"
|
||||||
msgstr "Line width"
|
msgstr "Line width"
|
||||||
@@ -7568,6 +7546,15 @@ msgstr ""
|
|||||||
"Decrease this value slightly (for example 0.9) to reduce the amount of "
|
"Decrease this value slightly (for example 0.9) to reduce the amount of "
|
||||||
"material extruded for bridges to avoid sagging."
|
"material extruded for bridges to avoid sagging."
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7863,6 +7850,15 @@ msgstr ""
|
|||||||
"may look worse. If disabled, bridges look better but are reliable only for "
|
"may look worse. If disabled, bridges look better but are reliable only for "
|
||||||
"shorter distances."
|
"shorter distances."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Max bridge length"
|
msgstr "Max bridge length"
|
||||||
|
|
||||||
@@ -8543,10 +8539,10 @@ msgstr "Full fan speed at layer"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Fan speed will be ramped up linearly from zero at layer "
|
"Fan speed will be ramped up linearly from zero at layer "
|
||||||
"\"close_fan_the_first_x_layers\" to maximum at layer "
|
"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower "
|
"\". \"full_fan_speed_layer\" will be ignored if lower than "
|
||||||
"than \"close_fan_the_first_x_layers\", in which case the fan will be running "
|
"\"close_fan_the_first_x_layers\", in which case the fan will be running at "
|
||||||
"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Support interface fan speed"
|
msgid "Support interface fan speed"
|
||||||
@@ -11718,6 +11714,28 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "You should update your software.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Newer 3mf version"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Embedded"
|
#~ msgstr "Embedded"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Carlos Fco. Caruncho Serrano <puzzlero@gmail.com>\n"
|
"Last-Translator: Carlos Fco. Caruncho Serrano <puzzlero@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -4670,28 +4670,6 @@ msgstr ""
|
|||||||
"El 3mf está generado por un Orca Slicer antiguo, cargar solo datos de "
|
"El 3mf está generado por un Orca Slicer antiguo, cargar solo datos de "
|
||||||
"geometría."
|
"geometría."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"La versión de 3mf %s es más nueva que la versión de %s %s, encontradas las "
|
|
||||||
"siguientes llaves no reconocidas:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Será mejor que actualices tu software.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Nueva versión 3mf"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"La versión de 3mf %s es más nueva que la versión de %s %s, se sugiere "
|
|
||||||
"actualizar su sofware."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Valores inválidos encontrados en el 3mf:"
|
msgstr "Valores inválidos encontrados en el 3mf:"
|
||||||
|
|
||||||
@@ -6010,8 +5988,8 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir "
|
"Cuando grabamos timelapse sin cabezal de impresión, es recomendable añadir "
|
||||||
"un \"Torre de Purga de Intervalo\" \n"
|
"un \"Torre de Purga de Intervalo\" \n"
|
||||||
@@ -7849,6 +7827,15 @@ msgstr ""
|
|||||||
"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad "
|
"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad "
|
||||||
"de material para el puente, para mejorar el hundimiento"
|
"de material para el puente, para mejorar el hundimiento"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "Ratio de caudal en superficie superior"
|
msgstr "Ratio de caudal en superficie superior"
|
||||||
|
|
||||||
@@ -8187,6 +8174,15 @@ msgstr ""
|
|||||||
"más largas, pero pueden tener peor aspecto. Si están desactivados, los "
|
"más largas, pero pueden tener peor aspecto. Si están desactivados, los "
|
||||||
"puentes se ven mejor pero son fiables sólo para distancias más cortas."
|
"puentes se ven mejor pero son fiables sólo para distancias más cortas."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Distancia máxima de puentes"
|
msgstr "Distancia máxima de puentes"
|
||||||
|
|
||||||
@@ -8967,10 +8963,10 @@ msgstr "Velocidad máxima del ventilador en la capa"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Fan speed will be ramped up linearly from zero at layer "
|
"Fan speed will be ramped up linearly from zero at layer "
|
||||||
"\"close_fan_the_first_x_layers\" to maximum at layer "
|
"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower "
|
"\". \"full_fan_speed_layer\" will be ignored if lower than "
|
||||||
"than \"close_fan_the_first_x_layers\", in which case the fan will be running "
|
"\"close_fan_the_first_x_layers\", in which case the fan will be running at "
|
||||||
"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La velocidad de ventilador se incrementará linealmente de cero a "
|
"La velocidad de ventilador se incrementará linealmente de cero a "
|
||||||
"\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". "
|
"\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". "
|
||||||
@@ -11707,12 +11703,12 @@ msgstr ""
|
|||||||
"wiki.\n"
|
"wiki.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Normalmente la calibración es innecesaria. Cuando se inicia una impresión de "
|
"Normalmente la calibración es innecesaria. Cuando se inicia una impresión de "
|
||||||
"un solo color/material, con la opción \"Calibración de la dinámica de "
|
"un solo color/material, con la opción \"Calibración de la dinámica de caudal"
|
||||||
"caudal\" marcada en el menú de inicio de impresión, la impresora seguirá el "
|
"\" marcada en el menú de inicio de impresión, la impresora seguirá el método "
|
||||||
"método antiguo, calibrar el filamento antes de la impresión; Cuando se "
|
"antiguo, calibrar el filamento antes de la impresión; Cuando se inicia una "
|
||||||
"inicia una impresión de varios colores/materiales, la impresora utilizará el "
|
"impresión de varios colores/materiales, la impresora utilizará el parámetro "
|
||||||
"parámetro de compensación por defecto para el filamento durante cada cambio "
|
"de compensación por defecto para el filamento durante cada cambio de "
|
||||||
"de filamento que tendrá un buen resultado en la mayoría de los casos.\n"
|
"filamento que tendrá un buen resultado en la mayoría de los casos.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Tenga en cuenta que hay algunos casos en los que el resultado de la "
|
"Tenga en cuenta que hay algunos casos en los que el resultado de la "
|
||||||
"calibración no es fiable: el uso de una placa de textura para hacer la "
|
"calibración no es fiable: el uso de una placa de textura para hacer la "
|
||||||
@@ -12664,6 +12660,28 @@ msgstr ""
|
|||||||
"extrusor/hotend al imprimir filamento de baja temperatura con una "
|
"extrusor/hotend al imprimir filamento de baja temperatura con una "
|
||||||
"temperatura de carcasa más alta. Más información sobre esto en la Wiki."
|
"temperatura de carcasa más alta. Más información sobre esto en la Wiki."
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "La versión de 3mf %s es más nueva que la versión de %s %s, encontradas "
|
||||||
|
#~ "las siguientes llaves no reconocidas:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Será mejor que actualices tu software.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Nueva versión 3mf"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "La versión de 3mf %s es más nueva que la versión de %s %s, se sugiere "
|
||||||
|
#~ "actualizar su sofware."
|
||||||
|
|
||||||
#~ msgid "The minimum printing speed when slow down for cooling"
|
#~ msgid "The minimum printing speed when slow down for cooling"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "La velocidad mínima de impresión cuando se ralentiza para el refrigeración"
|
#~ "La velocidad mínima de impresión cuando se ralentiza para el refrigeración"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Guislain Cyril\n"
|
"Language-Team: Guislain Cyril\n"
|
||||||
@@ -4656,28 +4656,6 @@ msgstr ""
|
|||||||
"Le fichier 3mf a été généré par une ancienne version de Orca Slicer, "
|
"Le fichier 3mf a été généré par une ancienne version de Orca Slicer, "
|
||||||
"chargement des données de géométrie uniquement."
|
"chargement des données de géométrie uniquement."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"La version %s de 3mf est plus récente que la version %s de %s, clés "
|
|
||||||
"suivantes non reconnues :"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Il est préférable de mettre à jour votre logiciel.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Nouvelle version 3mf"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"La version %s de 3mf est plus récente que la version %s de %s, nous vous "
|
|
||||||
"suggérons de mettre à jour votre logiciel."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Valeurs non valides trouvées dans le 3mf :"
|
msgstr "Valeurs non valides trouvées dans le 3mf :"
|
||||||
|
|
||||||
@@ -7853,6 +7831,15 @@ msgstr ""
|
|||||||
"Diminuez légèrement cette valeur (par exemple 0.9) pour réduire la quantité "
|
"Diminuez légèrement cette valeur (par exemple 0.9) pour réduire la quantité "
|
||||||
"de matériaux pour le pont, pour améliorer l'affaissement"
|
"de matériaux pour le pont, pour améliorer l'affaissement"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "Débit des surfaces supérieures"
|
msgstr "Débit des surfaces supérieures"
|
||||||
|
|
||||||
@@ -8166,6 +8153,15 @@ msgstr ""
|
|||||||
"les ponts ont une meilleure apparence mais ne sont fiables que pour des "
|
"les ponts ont une meilleure apparence mais ne sont fiables que pour des "
|
||||||
"distances plus courtes."
|
"distances plus courtes."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Longueur maximale des ponts"
|
msgstr "Longueur maximale des ponts"
|
||||||
|
|
||||||
@@ -12328,6 +12324,28 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "La version %s de 3mf est plus récente que la version %s de %s, clés "
|
||||||
|
#~ "suivantes non reconnues :"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Il est préférable de mettre à jour votre logiciel.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Nouvelle version 3mf"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "La version %s de 3mf est plus récente que la version %s de %s, nous vous "
|
||||||
|
#~ "suggérons de mettre à jour votre logiciel."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Intégré"
|
#~ msgstr "Intégré"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -4546,28 +4546,6 @@ msgstr "A konfiguráció nem tölthető be."
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"A 3mf fájl %s verziója újabb, mint a(z) %s verziója %s, a következő "
|
|
||||||
"ismeretlen kulcsokat találtuk:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Jobb lenne, ha frissítenéd a szoftvert.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Újabb 3mf verzió"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"A 3mf fájl %s verziója újabb, mint a(z) %s verziója %s, javasolt a szoftver "
|
|
||||||
"frissítése."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Invalid values found in the 3mf:"
|
msgstr "Invalid values found in the 3mf:"
|
||||||
|
|
||||||
@@ -7639,6 +7617,15 @@ msgstr ""
|
|||||||
"Csökkentsd kicsit ezt az értéket (például 0,9-re), hogy ezzel csökkentsd az "
|
"Csökkentsd kicsit ezt az értéket (például 0,9-re), hogy ezzel csökkentsd az "
|
||||||
"áthidaláshoz használt anyag mennyiségét, és a megereszkedést"
|
"áthidaláshoz használt anyag mennyiségét, és a megereszkedést"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7933,6 +7920,15 @@ msgstr ""
|
|||||||
"Ha ki van kapcsolva, az áthidalások jobban néznek ki, de csak a rövidebb "
|
"Ha ki van kapcsolva, az áthidalások jobban néznek ki, de csak a rövidebb "
|
||||||
"áthidalt távolságokon megbízhatóak."
|
"áthidalt távolságokon megbízhatóak."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Maximum áthidalás hossza"
|
msgstr "Maximum áthidalás hossza"
|
||||||
|
|
||||||
@@ -11884,6 +11880,28 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "A 3mf fájl %s verziója újabb, mint a(z) %s verziója %s, a következő "
|
||||||
|
#~ "ismeretlen kulcsokat találtuk:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Jobb lenne, ha frissítenéd a szoftvert.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Újabb 3mf verzió"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "A 3mf fájl %s verziója újabb, mint a(z) %s verziója %s, javasolt a "
|
||||||
|
#~ "szoftver frissítése."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Embedded"
|
#~ msgstr "Embedded"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-12 15:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -612,7 +612,8 @@ msgid ""
|
|||||||
"Click Yes to install it now."
|
"Click Yes to install it now."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Orca Slicer richiede il runtime di Microsoft WebView2 per utilizzare "
|
"Orca Slicer richiede il runtime di Microsoft WebView2 per utilizzare "
|
||||||
"determinate funzionalità.\vFai clic su Sì per installarlo ora.\v"
|
"determinate funzionalità.\n"
|
||||||
|
"Fai clic su Sì per installarlo ora."
|
||||||
|
|
||||||
msgid "WebView2 Runtime"
|
msgid "WebView2 Runtime"
|
||||||
msgstr "WebView2 Runtime"
|
msgstr "WebView2 Runtime"
|
||||||
@@ -4654,28 +4655,6 @@ msgstr ""
|
|||||||
"Il 3mf è stato generato da una vecchia versione di Orca Slicer, caricando \n"
|
"Il 3mf è stato generato da una vecchia versione di Orca Slicer, caricando \n"
|
||||||
"solo i dati geometrici."
|
"solo i dati geometrici."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"Versione del 3mf %s è più recente %s della versione %s, trovate le seguenti "
|
|
||||||
"chiavi non riconosciute:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Devi aggiornare il software.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Versione 3mf più recente"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"Versione del 3mf %s è più recente della versione %s di %s, si consiglia di "
|
|
||||||
"aggiornare il software."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Valori non validi trovati in 3mf:"
|
msgstr "Valori non validi trovati in 3mf:"
|
||||||
|
|
||||||
@@ -5217,7 +5196,6 @@ msgstr ""
|
|||||||
"\"\n"
|
"\"\n"
|
||||||
"\"i file .step."
|
"\"i file .step."
|
||||||
|
|
||||||
|
|
||||||
msgid "Maximum recent projects"
|
msgid "Maximum recent projects"
|
||||||
msgstr "Numero massimo di progetti recenti"
|
msgstr "Numero massimo di progetti recenti"
|
||||||
|
|
||||||
@@ -5989,8 +5967,8 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Quando si registra un timelapse senza testa di satmpa, si consiglia di "
|
"Quando si registra un timelapse senza testa di satmpa, si consiglia di "
|
||||||
"aggiungere un \"Timelapse Torre di pulizia\"\n"
|
"aggiungere un \"Timelapse Torre di pulizia\"\n"
|
||||||
@@ -7002,8 +6980,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"È stato rilevato un aggiornamento importante che deve essere eseguito prima "
|
"È stato rilevato un aggiornamento importante che deve essere eseguito prima "
|
||||||
"che la stampa possa continuare. Si desidera aggiornare ora? È possibile "
|
"che la stampa possa continuare. Si desidera aggiornare ora? È possibile "
|
||||||
"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna "
|
"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware"
|
||||||
"firmware\"."
|
"\"."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The firmware version is abnormal. Repairing and updating are required before "
|
"The firmware version is abnormal. Repairing and updating are required before "
|
||||||
@@ -7837,6 +7815,15 @@ msgstr ""
|
|||||||
"Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità "
|
"Diminuire leggermente questo valore (ad esempio 0.9) per ridurre la quantità "
|
||||||
"di materiale per il ponte e migliorare l'abbassamento dello stesso"
|
"di materiale per il ponte e migliorare l'abbassamento dello stesso"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "Rapporto di portata superficiale superiore"
|
msgstr "Rapporto di portata superficiale superiore"
|
||||||
|
|
||||||
@@ -8177,6 +8164,15 @@ msgstr ""
|
|||||||
"maggiori, ma potrebbero avere un aspetto peggiore. Se disattivato, i ponti "
|
"maggiori, ma potrebbero avere un aspetto peggiore. Se disattivato, i ponti "
|
||||||
"hanno un aspetto migliore ma sono affidabili solo per distanze più brevi."
|
"hanno un aspetto migliore ma sono affidabili solo per distanze più brevi."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Lunghezza massima Bridge"
|
msgstr "Lunghezza massima Bridge"
|
||||||
|
|
||||||
@@ -8963,17 +8959,16 @@ msgstr "Massima velocità della ventola al layer"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Fan speed will be ramped up linearly from zero at layer "
|
"Fan speed will be ramped up linearly from zero at layer "
|
||||||
"\"close_fan_the_first_x_layers\" to maximum at layer "
|
"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower "
|
"\". \"full_fan_speed_layer\" will be ignored if lower than "
|
||||||
"than \"close_fan_the_first_x_layers\", in which case the fan will be running "
|
"\"close_fan_the_first_x_layers\", in which case the fan will be running at "
|
||||||
"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La velocità della ventola aumenterà linearmente da zero al livello "
|
"La velocità della ventola aumenterà linearmente da zero al livello "
|
||||||
"\"close_fan_the_first_x_layers\" al massimo al livello "
|
"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" verrà ignorato se "
|
"\". \"full_fan_speed_layer\" verrà ignorato se inferiore a "
|
||||||
"inferiore a \"close_fan_the_first_x_layers\", nel qual caso la ventola "
|
"\"close_fan_the_first_x_layers\", nel qual caso la ventola funzionerà alla "
|
||||||
"funzionerà alla massima velocità consentita al livello "
|
"massima velocità consentita al livello \"close_fan_the_first_x_layers\" + 1."
|
||||||
"\"close_fan_the_first_x_layers\" + 1."
|
|
||||||
|
|
||||||
msgid "Support interface fan speed"
|
msgid "Support interface fan speed"
|
||||||
msgstr "Supporta la velocità della ventola dell'interfaccia"
|
msgstr "Supporta la velocità della ventola dell'interfaccia"
|
||||||
@@ -11159,7 +11154,6 @@ msgstr ""
|
|||||||
msgid "Detect narrow internal solid infill"
|
msgid "Detect narrow internal solid infill"
|
||||||
msgstr "Rileva riempimento solido interno stretto"
|
msgstr "Rileva riempimento solido interno stretto"
|
||||||
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"This option will auto detect narrow internal solid infill area. If enabled, "
|
"This option will auto detect narrow internal solid infill area. If enabled, "
|
||||||
"concentric pattern will be used for the area to speed printing up. "
|
"concentric pattern will be used for the area to speed printing up. "
|
||||||
@@ -11170,7 +11164,6 @@ msgstr ""
|
|||||||
"velocizzare la stampa. Altrimenti, la trama rettilinea verrà utilizzata per "
|
"velocizzare la stampa. Altrimenti, la trama rettilinea verrà utilizzata per "
|
||||||
"impostazione predefinita."
|
"impostazione predefinita."
|
||||||
|
|
||||||
|
|
||||||
msgid "invalid value "
|
msgid "invalid value "
|
||||||
msgstr "Valore non valido"
|
msgstr "Valore non valido"
|
||||||
|
|
||||||
@@ -12670,6 +12663,28 @@ msgstr ""
|
|||||||
"temperatura inferiore con una temperatura dell'involucro più elevata. "
|
"temperatura inferiore con una temperatura dell'involucro più elevata. "
|
||||||
"Maggiori informazioni su questo nel Wiki."
|
"Maggiori informazioni su questo nel Wiki."
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Versione del 3mf %s è più recente %s della versione %s, trovate le "
|
||||||
|
#~ "seguenti chiavi non riconosciute:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Devi aggiornare il software.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Versione 3mf più recente"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Versione del 3mf %s è più recente della versione %s di %s, si consiglia "
|
||||||
|
#~ "di aggiornare il software."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Integrato"
|
#~ msgstr "Integrato"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -4443,27 +4443,6 @@ msgstr ""
|
|||||||
"3mfは古いバージョンのOrca Slicerで作成されています、ジオメトリーデータのみ読"
|
"3mfは古いバージョンのOrca Slicerで作成されています、ジオメトリーデータのみ読"
|
||||||
"込みます。"
|
"込みます。"
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"3mfのバージョン %s は %sのバージョン %sより新しい為、下記のキーを認識できませ"
|
|
||||||
"ん"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "ソフトウェアをアップデートする必要があります。\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "新3mfバージョン"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"3mfのバージョン%sは%sの%sより新しい為、ソフトウェアを更新してください。"
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Invalid values found in the 3mf:"
|
msgstr "Invalid values found in the 3mf:"
|
||||||
|
|
||||||
@@ -7399,6 +7378,15 @@ msgstr ""
|
|||||||
"この値を少し (例えば 0.9) 小さくし、ブリッジ用に押出し量を減らし、たるみを防"
|
"この値を少し (例えば 0.9) 小さくし、ブリッジ用に押出し量を減らし、たるみを防"
|
||||||
"ぎます。"
|
"ぎます。"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7683,6 +7671,15 @@ msgstr ""
|
|||||||
"有効になる場合、より長いブリッジを造形できますが、仕上がりが劣る可能性があり"
|
"有効になる場合、より長いブリッジを造形できますが、仕上がりが劣る可能性があり"
|
||||||
"ます。"
|
"ます。"
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "最大ブリッジ長さ"
|
msgstr "最大ブリッジ長さ"
|
||||||
|
|
||||||
@@ -11486,6 +11483,27 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mfのバージョン %s は %sのバージョン %sより新しい為、下記のキーを認識でき"
|
||||||
|
#~ "ません"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "ソフトウェアをアップデートする必要があります。\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "新3mfバージョン"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mfのバージョン%sは%sの%sより新しい為、ソフトウェアを更新してください。"
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Embedded"
|
#~ msgstr "Embedded"
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: 2023-11-14 11:26+0900\n"
|
"PO-Revision-Date: 2023-11-14 11:26+0900\n"
|
||||||
"Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply."
|
"Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply."
|
||||||
"github.com>, crwusiz <crwusiz@naver.com>\n"
|
"github.com>, crwusiz <crwusiz@naver.com>\n"
|
||||||
@@ -4545,28 +4545,6 @@ msgstr "구성을 로드할 수 없습니다."
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr "이 3mf는 이전 Orca Slicer에서 생성되었으며, 형상 데이터만 로드합니다."
|
msgstr "이 3mf는 이전 Orca Slicer에서 생성되었으며, 형상 데이터만 로드합니다."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"3mf의 버전 %s이(가) %s의 버전 %s보다 최신입니다. 인식할 수 없는 다음 키를 찾"
|
|
||||||
"았습니다:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "소프트웨어를 업그레이드하는 것이 좋습니다.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "최신 3mf 버전"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"3mf의 %s 버전이 %s의 %s 버전보다 최신입니다. 소프트웨어를 업그레이드 하십시"
|
|
||||||
"오."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "3mf에서 잘못된 값이 발견됨:"
|
msgstr "3mf에서 잘못된 값이 발견됨:"
|
||||||
|
|
||||||
@@ -5823,8 +5801,8 @@ msgstr ""
|
|||||||
msgid ""
|
msgid ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋"
|
"툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋"
|
||||||
"습니다\n"
|
"습니다\n"
|
||||||
@@ -7583,6 +7561,15 @@ msgid ""
|
|||||||
"material for bridge, to improve sag"
|
"material for bridge, to improve sag"
|
||||||
msgstr "이 값을 약간(예: 0.9) 줄여 다리의 압출량을 줄여 처짐을 개선합니다"
|
msgstr "이 값을 약간(예: 0.9) 줄여 다리의 압출량을 줄여 처짐을 개선합니다"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "상단 표면 유량 비율"
|
msgstr "상단 표면 유량 비율"
|
||||||
|
|
||||||
@@ -7900,6 +7887,15 @@ msgstr ""
|
|||||||
"습니다. 비활성화하면 다리가 더 좋아 보이지만 짧은 브리지 거리에 대해서만 안정"
|
"습니다. 비활성화하면 다리가 더 좋아 보이지만 짧은 브리지 거리에 대해서만 안정"
|
||||||
"적입니다."
|
"적입니다."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "최대 다리 거리"
|
msgstr "최대 다리 거리"
|
||||||
|
|
||||||
@@ -8619,10 +8615,10 @@ msgstr "팬 최대 속도 레이어"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Fan speed will be ramped up linearly from zero at layer "
|
"Fan speed will be ramped up linearly from zero at layer "
|
||||||
"\"close_fan_the_first_x_layers\" to maximum at layer "
|
"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower "
|
"\". \"full_fan_speed_layer\" will be ignored if lower than "
|
||||||
"than \"close_fan_the_first_x_layers\", in which case the fan will be running "
|
"\"close_fan_the_first_x_layers\", in which case the fan will be running at "
|
||||||
"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" "
|
"팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" "
|
||||||
"의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 "
|
"의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 "
|
||||||
@@ -12119,6 +12115,28 @@ msgstr ""
|
|||||||
"기/핫엔드가 막힐 가능성을 줄일 수 있습니다. 이에 대한 자세한 내용은 Wiki에서 "
|
"기/핫엔드가 막힐 가능성을 줄일 수 있습니다. 이에 대한 자세한 내용은 Wiki에서 "
|
||||||
"확인하세요."
|
"확인하세요."
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mf의 버전 %s이(가) %s의 버전 %s보다 최신입니다. 인식할 수 없는 다음 키를 "
|
||||||
|
#~ "찾았습니다:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "소프트웨어를 업그레이드하는 것이 좋습니다.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "최신 3mf 버전"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mf의 %s 버전이 %s의 %s 버전보다 최신입니다. 소프트웨어를 업그레이드 하십"
|
||||||
|
#~ "시오."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "매입"
|
#~ msgstr "매입"
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -4588,28 +4588,6 @@ msgstr "De configuratie kan niet worden geladen."
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"Versie %s van de 3mf is nieuwer dan versie %s van %s. De volgende sleutels "
|
|
||||||
"worden niet herkend:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "U dient de software te upgraden.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Nieuwere versie 3mf"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"Versie %s van de 3mf is nieuwer dan versie %s van %s. Wij stellen voor om uw "
|
|
||||||
"software te upgraden."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Invalid values found in the 3mf:"
|
msgstr "Invalid values found in the 3mf:"
|
||||||
|
|
||||||
@@ -7724,6 +7702,15 @@ msgstr ""
|
|||||||
"Verlaag deze waarde iets (bijvoorbeeld 0,9) om de hoeveelheid materiaal voor "
|
"Verlaag deze waarde iets (bijvoorbeeld 0,9) om de hoeveelheid materiaal voor "
|
||||||
"bruggen te verminderen, dit om doorzakken te voorkomen."
|
"bruggen te verminderen, dit om doorzakken te voorkomen."
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -8022,6 +8009,15 @@ msgstr ""
|
|||||||
"uitgeschakeld, zien bruggen er beter uit, maar zijn ze alleen betrouwbaar "
|
"uitgeschakeld, zien bruggen er beter uit, maar zijn ze alleen betrouwbaar "
|
||||||
"voor kortere afstanden."
|
"voor kortere afstanden."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Maximale bruglengte"
|
msgstr "Maximale bruglengte"
|
||||||
|
|
||||||
@@ -12002,6 +11998,28 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Versie %s van de 3mf is nieuwer dan versie %s van %s. De volgende "
|
||||||
|
#~ "sleutels worden niet herkend:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "U dient de software te upgraden.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Nieuwere versie 3mf"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Versie %s van de 3mf is nieuwer dan versie %s van %s. Wij stellen voor om "
|
||||||
|
#~ "uw software te upgraden."
|
||||||
|
|
||||||
# Source and destination string both English but don't match!
|
# Source and destination string both English but don't match!
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Embedded"
|
#~ msgstr "Embedded"
|
||||||
|
|||||||
+4736
-2362
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -4531,28 +4531,6 @@ msgstr "Konfigurationen kan inte laddas."
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"3mf:s version %s är nyare än %s version %s, Följande nycklar har hittats som "
|
|
||||||
"inte känns igen:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Uppdatera mjukvaran.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Nyare 3mf version"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"3mf:s version %s är nyare än %s version %s, Föreslår att du uppdaterar din "
|
|
||||||
"programvara."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "Ogiltiga värden hittades i 3mf:"
|
msgstr "Ogiltiga värden hittades i 3mf:"
|
||||||
|
|
||||||
@@ -7584,6 +7562,15 @@ msgstr ""
|
|||||||
"Minska detta värde något (tex 0.9) för att minska material åtgång för "
|
"Minska detta värde något (tex 0.9) för att minska material åtgång för "
|
||||||
"bridges/bryggor, detta för att förbättra kvaliteten"
|
"bridges/bryggor, detta för att förbättra kvaliteten"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7876,6 +7863,15 @@ msgstr ""
|
|||||||
"sträckor men kan se sämre ut. Om de är inaktiverade ser bridges bättre ut "
|
"sträckor men kan se sämre ut. Om de är inaktiverade ser bridges bättre ut "
|
||||||
"men är tillförlitliga endast för kortare avstånd."
|
"men är tillförlitliga endast för kortare avstånd."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Max bridge/brygg längd"
|
msgstr "Max bridge/brygg längd"
|
||||||
|
|
||||||
@@ -11809,6 +11805,28 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mf:s version %s är nyare än %s version %s, Följande nycklar har hittats "
|
||||||
|
#~ "som inte känns igen:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Uppdatera mjukvaran.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Nyare 3mf version"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mf:s version %s är nyare än %s version %s, Föreslår att du uppdaterar "
|
||||||
|
#~ "din programvara."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Inbäddad"
|
#~ msgstr "Inbäddad"
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: OrcaSlicer\n"
|
"Project-Id-Version: OrcaSlicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: 2023-11-15 00:35+0300\n"
|
"PO-Revision-Date: 2023-11-15 00:35+0300\n"
|
||||||
"Last-Translator: Olcay ÖREN\n"
|
"Last-Translator: Olcay ÖREN\n"
|
||||||
"Language-Team: Türkçe\n"
|
"Language-Team: Türkçe\n"
|
||||||
@@ -2170,7 +2170,9 @@ msgstr "Yazıcı şu anda otomatik yeniden doldurmayı desteklemiyor."
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"AMS filament backup is not enabled, please enable it in the AMS settings."
|
"AMS filament backup is not enabled, please enable it in the AMS settings."
|
||||||
msgstr "AMS filament yedekleme özelliği etkin değil, lütfen AMS ayarlarından etkinleştirin."
|
msgstr ""
|
||||||
|
"AMS filament yedekleme özelliği etkin değil, lütfen AMS ayarlarından "
|
||||||
|
"etkinleştirin."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"If there are two identical filaments in AMS, AMS filament backup will be "
|
"If there are two identical filaments in AMS, AMS filament backup will be "
|
||||||
@@ -2180,8 +2182,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Eğer AMS'de iki aynı filament bulunursa, AMS filament yedekleme özelliği "
|
"Eğer AMS'de iki aynı filament bulunursa, AMS filament yedekleme özelliği "
|
||||||
"etkinleştirilecektir. \n"
|
"etkinleştirilecektir. \n"
|
||||||
"(Şu anda aynı markaya ait sarf malzemelerinin otomatik temini desteklenmektedir, "
|
"(Şu anda aynı markaya ait sarf malzemelerinin otomatik temini "
|
||||||
"malzeme türü ve rengi)"
|
"desteklenmektedir, malzeme türü ve rengi)"
|
||||||
|
|
||||||
msgid "AMS Settings"
|
msgid "AMS Settings"
|
||||||
msgstr "AMS Ayarları"
|
msgstr "AMS Ayarları"
|
||||||
@@ -2748,8 +2750,7 @@ msgstr "Yazdırma işi başlatılamadı"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"This calibration does not support the currently selected nozzle diameter"
|
"This calibration does not support the currently selected nozzle diameter"
|
||||||
msgstr ""
|
msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir"
|
||||||
"Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir"
|
|
||||||
|
|
||||||
msgid "Current flowrate cali param is invalid"
|
msgid "Current flowrate cali param is invalid"
|
||||||
msgstr "Geçerli akış hızı cali parametresi geçersiz"
|
msgstr "Geçerli akış hızı cali parametresi geçersiz"
|
||||||
@@ -4577,9 +4578,9 @@ msgid ""
|
|||||||
"clogged when printing this filament in a closed enclosure. Please open the "
|
"clogged when printing this filament in a closed enclosure. Please open the "
|
||||||
"front door and/or remove the upper glass."
|
"front door and/or remove the upper glass."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti "
|
"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir "
|
||||||
"kapalı bir muhafaza içinde bastırırken nozzle tıkanabilir. "
|
"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/"
|
||||||
"Lütfen ön kapağı açın ve/veya üst camı çıkarın."
|
"veya üst camı çıkarın."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The nozzle hardness required by the filament is higher than the default "
|
"The nozzle hardness required by the filament is higher than the default "
|
||||||
@@ -4602,7 +4603,9 @@ msgid "Loading file: %s"
|
|||||||
msgstr "Dosya yükleniyor: %s"
|
msgstr "Dosya yükleniyor: %s"
|
||||||
|
|
||||||
msgid "The 3mf is not supported by OrcaSlicer, load geometry data only."
|
msgid "The 3mf is not supported by OrcaSlicer, load geometry data only."
|
||||||
msgstr "OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini yükle."
|
msgstr ""
|
||||||
|
"OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini "
|
||||||
|
"yükle."
|
||||||
|
|
||||||
msgid "Load 3mf"
|
msgid "Load 3mf"
|
||||||
msgstr "3mf yükle"
|
msgstr "3mf yükle"
|
||||||
@@ -4615,28 +4618,6 @@ msgstr ""
|
|||||||
"3mf, eski Orca Slicer tarafından oluşturulmuştur, yalnızca geometri "
|
"3mf, eski Orca Slicer tarafından oluşturulmuştur, yalnızca geometri "
|
||||||
"verilerini yükleyin."
|
"verilerini yükleyin."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr ""
|
|
||||||
"3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Aşağıdaki anahtarlar "
|
|
||||||
"tanınmadan bulundu:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Yazılımınızı yükseltseniz iyi olur.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Daha yeni 3mf sürümü"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Yazılımınızı yükseltmenizi "
|
|
||||||
"öneririz."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "3mf'de geçersiz değerler bulundu:"
|
msgstr "3mf'de geçersiz değerler bulundu:"
|
||||||
|
|
||||||
@@ -5099,7 +5080,9 @@ msgid "Use free camera"
|
|||||||
msgstr "Serbest kamera kullan"
|
msgstr "Serbest kamera kullan"
|
||||||
|
|
||||||
msgid "If enabled, use free camera. If not enabled, use constrained camera."
|
msgid "If enabled, use free camera. If not enabled, use constrained camera."
|
||||||
msgstr "Etkinleştirilirse serbest kamerayı kullanın. Etkin değilse kısıtlı kamerayı kullanın."
|
msgstr ""
|
||||||
|
"Etkinleştirilirse serbest kamerayı kullanın. Etkin değilse kısıtlı kamerayı "
|
||||||
|
"kullanın."
|
||||||
|
|
||||||
msgid "Show splash screen"
|
msgid "Show splash screen"
|
||||||
msgstr "Açılış ekranını göster"
|
msgstr "Açılış ekranını göster"
|
||||||
@@ -5592,8 +5575,8 @@ msgid ""
|
|||||||
"Filaments to AMS slots mappings have been established. You can click a "
|
"Filaments to AMS slots mappings have been established. You can click a "
|
||||||
"filament above to change its mapping AMS slot"
|
"filament above to change its mapping AMS slot"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"AMS slot eşlemelerine yönelik filament oluşturulmuştur. Eşleme AMS "
|
"AMS slot eşlemelerine yönelik filament oluşturulmuştur. Eşleme AMS yuvasını "
|
||||||
"yuvasını değiştirmek için yukarıdaki filamentlerden birine tıklayabilirsiniz"
|
"değiştirmek için yukarıdaki filamentlerden birine tıklayabilirsiniz"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please click each filament above to specify its mapping AMS slot before "
|
"Please click each filament above to specify its mapping AMS slot before "
|
||||||
@@ -6085,9 +6068,9 @@ msgid ""
|
|||||||
"Value 0 means the filament does not support to print on the Smooth PEI Plate/"
|
"Value 0 means the filament does not support to print on the Smooth PEI Plate/"
|
||||||
"High Temp Plate"
|
"High Temp Plate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Düz PEI Plakası/Yüksek Sıcaklık Plakası takılığın da yatak sıcaklığı. "
|
"Düz PEI Plakası/Yüksek Sıcaklık Plakası takılığın da yatak sıcaklığı. 0 "
|
||||||
"0 Değeri, filamentin Düz PEI Plakası/Yüksek Sıcaklık Plakası üzerin de baskı yapmayı "
|
"Değeri, filamentin Düz PEI Plakası/Yüksek Sıcaklık Plakası üzerin de baskı "
|
||||||
"desteklemediği anlamına gelir."
|
"yapmayı desteklemediği anlamına gelir."
|
||||||
|
|
||||||
msgid "Textured PEI Plate"
|
msgid "Textured PEI Plate"
|
||||||
msgstr "Dokulu PEI Plaka"
|
msgstr "Dokulu PEI Plaka"
|
||||||
@@ -7420,10 +7403,9 @@ msgid ""
|
|||||||
"the next layers will be linearly shrunk less, up to the layer indicated by "
|
"the next layers will be linearly shrunk less, up to the layer indicated by "
|
||||||
"this value."
|
"this value."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Fil ayağı telafisinin etkin olacağı katman sayısı. "
|
"Fil ayağı telafisinin etkin olacağı katman sayısı. İlk katman, fil ayak "
|
||||||
"İlk katman, fil ayak telafisi değeri tarafından küçültülecek, ardından "
|
"telafisi değeri tarafından küçültülecek, ardından sonraki katmanlar daha az "
|
||||||
"sonraki katmanlar daha az lineer olarak küçültülecek, bu değer tarafından "
|
"lineer olarak küçültülecek, bu değer tarafından belirtilen katmana kadar."
|
||||||
"belirtilen katmana kadar."
|
|
||||||
|
|
||||||
msgid "layers"
|
msgid "layers"
|
||||||
msgstr "katmanlar"
|
msgstr "katmanlar"
|
||||||
@@ -7727,6 +7709,15 @@ msgstr ""
|
|||||||
"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu "
|
"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu "
|
||||||
"değeri biraz azaltın (örneğin 0,9)"
|
"değeri biraz azaltın (örneğin 0,9)"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "Üst katı dolgu akış oranı"
|
msgstr "Üst katı dolgu akış oranı"
|
||||||
|
|
||||||
@@ -7766,6 +7757,7 @@ msgstr ""
|
|||||||
msgid "One wall threshold"
|
msgid "One wall threshold"
|
||||||
msgstr "Tek duvar eşiği"
|
msgstr "Tek duvar eşiği"
|
||||||
|
|
||||||
|
#, fuzzy, c-format, boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"If a top surface has to be printed and it's partially covered by another "
|
"If a top surface has to be printed and it's partially covered by another "
|
||||||
"layer, it won't be considered at a top layer where its width is below this "
|
"layer, it won't be considered at a top layer where its width is below this "
|
||||||
@@ -7776,14 +7768,14 @@ msgid ""
|
|||||||
"on the next layer, like letters. Set this setting to 0 to remove these "
|
"on the next layer, like letters. Set this setting to 0 to remove these "
|
||||||
"artifacts."
|
"artifacts."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa "
|
"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından "
|
||||||
"layer genişliği bu değerin altında olan bir üst katman olarak "
|
"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak "
|
||||||
"değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir çevre üstte' "
|
"değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir "
|
||||||
"tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya "
|
"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya "
|
||||||
"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n"
|
"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n"
|
||||||
"Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince özelliklerin "
|
"Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince "
|
||||||
"olması durumunda yapay yapılar oluşturulabilir. Bu yapıları kaldırmak için bu ayarı 0 "
|
"özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları "
|
||||||
"olarak ayarlayın."
|
"kaldırmak için bu ayarı 0 olarak ayarlayın."
|
||||||
|
|
||||||
msgid "Only one wall on first layer"
|
msgid "Only one wall on first layer"
|
||||||
msgstr "İlk katmanda yalnızca bir duvar"
|
msgstr "İlk katmanda yalnızca bir duvar"
|
||||||
@@ -7817,8 +7809,8 @@ msgid ""
|
|||||||
"steep overhang."
|
"steep overhang."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tek katmanlarda ters yönde bir çıkıntının üzerinde bir kısmı bulunan "
|
"Tek katmanlarda ters yönde bir çıkıntının üzerinde bir kısmı bulunan "
|
||||||
"çevreleri ekstrüzyonla çıkarın. Bu değişen desen, dik eğimli çıkıntıları önemli "
|
"çevreleri ekstrüzyonla çıkarın. Bu değişen desen, dik eğimli çıkıntıları "
|
||||||
"ölçüde iyileştirebilir."
|
"önemli ölçüde iyileştirebilir."
|
||||||
|
|
||||||
msgid "Reverse threshold"
|
msgid "Reverse threshold"
|
||||||
msgstr "Ters eşik"
|
msgstr "Ters eşik"
|
||||||
@@ -7826,13 +7818,14 @@ msgstr "Ters eşik"
|
|||||||
msgid "Overhang reversal threshold"
|
msgid "Overhang reversal threshold"
|
||||||
msgstr "Çıkıntıyı tersine çevirme eşiği"
|
msgstr "Çıkıntıyı tersine çevirme eşiği"
|
||||||
|
|
||||||
|
#, fuzzy, c-format, boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Number of mm the overhang need to be for the reversal to be considered "
|
"Number of mm the overhang need to be for the reversal to be considered "
|
||||||
"useful. Can be a % of the perimeter width.\n"
|
"useful. Can be a % of the perimeter width.\n"
|
||||||
"Value 0 enables reversal on every odd layers regardless."
|
"Value 0 enables reversal on every odd layers regardless."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı "
|
"Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. "
|
||||||
"olması gerekir. Çevre genişliğinin %'si olabilir.\n"
|
"Çevre genişliğinin %'si olabilir.\n"
|
||||||
"Değer 0 her tek katmanda terslemeyi etkinleştirir."
|
"Değer 0 her tek katmanda terslemeyi etkinleştirir."
|
||||||
|
|
||||||
msgid "Classic mode"
|
msgid "Classic mode"
|
||||||
@@ -8005,7 +7998,8 @@ msgid "Activate air filtration"
|
|||||||
msgstr "Hava filtrelemesini etkinleştirin"
|
msgstr "Hava filtrelemesini etkinleştirin"
|
||||||
|
|
||||||
msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)"
|
msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)"
|
||||||
msgstr "Daha iyi hava filtrasyonu için etkinleştirin. G-kodu komutu: M106 P3 S(0-255)"
|
msgstr ""
|
||||||
|
"Daha iyi hava filtrasyonu için etkinleştirin. G-kodu komutu: M106 P3 S(0-255)"
|
||||||
|
|
||||||
msgid "Fan speed"
|
msgid "Fan speed"
|
||||||
msgstr "Fan hızı"
|
msgstr "Fan hızı"
|
||||||
@@ -8053,6 +8047,15 @@ msgstr ""
|
|||||||
"köprüler daha iyi görünür ancak yalnızca daha kısa köprü mesafeleri için "
|
"köprüler daha iyi görünür ancak yalnızca daha kısa köprü mesafeleri için "
|
||||||
"güvenilirdir."
|
"güvenilirdir."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Maksimum köprü uzunluğu"
|
msgstr "Maksimum köprü uzunluğu"
|
||||||
|
|
||||||
@@ -8533,9 +8536,9 @@ msgid ""
|
|||||||
"equal to or greater than it, it's highly recommended to open the front door "
|
"equal to or greater than it, it's highly recommended to open the front door "
|
||||||
"and/or remove the upper glass to avoid cloggings."
|
"and/or remove the upper glass to avoid cloggings."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Filament bu sıcaklıkta yumuşar, bu nedenle yatak sıcaklığı bununla "
|
"Filament bu sıcaklıkta yumuşar, bu nedenle yatak sıcaklığı bununla eşit veya "
|
||||||
"eşit veya daha yüksekse, tıkanmaları önlemek için ön kapağı açmanız "
|
"daha yüksekse, tıkanmaları önlemek için ön kapağı açmanız ve/veya üst camı "
|
||||||
"ve/veya üst camı çıkarmanız şiddetle önerilir."
|
"çıkarmanız şiddetle önerilir."
|
||||||
|
|
||||||
msgid "Price"
|
msgid "Price"
|
||||||
msgstr "Fiyat"
|
msgstr "Fiyat"
|
||||||
@@ -9037,7 +9040,8 @@ msgid ""
|
|||||||
"This option is enabled if machine support controlling chamber temperature\n"
|
"This option is enabled if machine support controlling chamber temperature\n"
|
||||||
"G-code command: M141 S(0-255)"
|
"G-code command: M141 S(0-255)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bu seçenek, hazne sıcaklığını kontrol eden makine desteği varsa etkinleştirilir\n"
|
"Bu seçenek, hazne sıcaklığını kontrol eden makine desteği varsa "
|
||||||
|
"etkinleştirilir\n"
|
||||||
"G-code komut: M141 S(0-255)"
|
"G-code komut: M141 S(0-255)"
|
||||||
|
|
||||||
msgid "Support air filtration"
|
msgid "Support air filtration"
|
||||||
@@ -9193,8 +9197,8 @@ msgid "Ironing angle"
|
|||||||
msgstr "Ütüleme açısı"
|
msgstr "Ütüleme açısı"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Ütüleme işleminin gerçekleştiği açı. Negatif bir sayı, bu işlevi devre dışı bırakır ve "
|
"The angle ironing is done at. A negative number disables this function and "
|
||||||
"varsayılan yöntemi kullanır."
|
"uses the default method."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "This gcode part is inserted at every layer change after lift z"
|
msgid "This gcode part is inserted at every layer change after lift z"
|
||||||
@@ -9441,8 +9445,8 @@ msgstr ""
|
|||||||
"Yardımcı parça soğutma fanının hızı. Yardımcı fan, soğutma katmanlarının "
|
"Yardımcı parça soğutma fanının hızı. Yardımcı fan, soğutma katmanlarının "
|
||||||
"bulunmadığı ilk birkaç katman dışında, yazdırma sırasında bu hızda "
|
"bulunmadığı ilk birkaç katman dışında, yazdırma sırasında bu hızda "
|
||||||
"çalışacaktır.\n"
|
"çalışacaktır.\n"
|
||||||
"Lütfen bu özelliği kullanmak için yazıcı ayarlarında yardımcı_fan'ı etkinleştirin. G-code "
|
"Lütfen bu özelliği kullanmak için yazıcı ayarlarında yardımcı_fan'ı "
|
||||||
"komut: M106 P2 S(0-255)"
|
"etkinleştirin. G-code komut: M106 P2 S(0-255)"
|
||||||
|
|
||||||
msgid "Min"
|
msgid "Min"
|
||||||
msgstr "Min"
|
msgstr "Min"
|
||||||
@@ -9464,8 +9468,8 @@ msgid ""
|
|||||||
"specified explicitly."
|
"specified explicitly."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma "
|
"Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma "
|
||||||
"çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde "
|
"çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament "
|
||||||
"filament için minimum yazdırma hızı."
|
"için minimum yazdırma hızı."
|
||||||
|
|
||||||
msgid "Nozzle diameter"
|
msgid "Nozzle diameter"
|
||||||
msgstr "Nozul çapı"
|
msgstr "Nozul çapı"
|
||||||
@@ -10042,11 +10046,11 @@ msgid ""
|
|||||||
"printing, where we use M600/PAUSE to trigger the manual filament change "
|
"printing, where we use M600/PAUSE to trigger the manual filament change "
|
||||||
"action."
|
"action."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sadece baskının başında özel Filament Değiştirme G-kodu'nu atlamak için "
|
"Sadece baskının başında özel Filament Değiştirme G-kodu'nu atlamak için bu "
|
||||||
"bu seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının "
|
"seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının "
|
||||||
"tamamı boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için "
|
"tamamı boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için "
|
||||||
"kullanışlıdır, burada manuel filament değişim eylemini tetiklemek için M600/PAUSE "
|
"kullanışlıdır, burada manuel filament değişim eylemini tetiklemek için M600/"
|
||||||
"kullanırız."
|
"PAUSE kullanırız."
|
||||||
|
|
||||||
msgid "Purge in prime tower"
|
msgid "Purge in prime tower"
|
||||||
msgstr "Prime Tower'da temizlik"
|
msgstr "Prime Tower'da temizlik"
|
||||||
@@ -10121,10 +10125,11 @@ msgid ""
|
|||||||
"example, if your endstop zero actually leaves the nozzle 0.3mm far from the "
|
"example, if your endstop zero actually leaves the nozzle 0.3mm far from the "
|
||||||
"print bed, set this to -0.3 (or fix your endstop)."
|
"print bed, set this to -0.3 (or fix your endstop)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya çıkarılır)."
|
"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya "
|
||||||
"Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, endstop "
|
"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: "
|
||||||
"sıfır noktanız aslında nozulu baskı tablasından 0.3mm uzakta bırakıyorsa, "
|
"örneğin, endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm "
|
||||||
"bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)."
|
"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu "
|
||||||
|
"düzeltin)."
|
||||||
|
|
||||||
msgid "Enable support"
|
msgid "Enable support"
|
||||||
msgstr "Desteği etkinleştir"
|
msgstr "Desteği etkinleştir"
|
||||||
@@ -10312,12 +10317,14 @@ msgid ""
|
|||||||
"overhangs."
|
"overhangs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara "
|
"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara "
|
||||||
"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), "
|
"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı "
|
||||||
"aynı zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki izleri azaltır.\n"
|
"zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki "
|
||||||
"Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde birleştirir ve "
|
"izleri azaltır.\n"
|
||||||
"büyük düz çıkıntılarda normal destekle benzer bir yapı oluştururken birçok malzeme "
|
"Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde "
|
||||||
"tasarrufu sağlar (varsayılan organik tarz). Hybrid stil, büyük düz çıkıntıların altında normal "
|
"birleştirir ve büyük düz çıkıntılarda normal destekle benzer bir yapı "
|
||||||
"destekle benzer bir yapı oluşturacaktır."
|
"oluştururken birçok malzeme tasarrufu sağlar (varsayılan organik tarz). "
|
||||||
|
"Hybrid stil, büyük düz çıkıntıların altında normal destekle benzer bir yapı "
|
||||||
|
"oluşturacaktır."
|
||||||
|
|
||||||
msgid "Snug"
|
msgid "Snug"
|
||||||
msgstr "Snug"
|
msgstr "Snug"
|
||||||
@@ -10495,8 +10502,8 @@ msgid ""
|
|||||||
"added before \"machine_start_gcode\"\n"
|
"added before \"machine_start_gcode\"\n"
|
||||||
"G-code commands: M141/M191 S(0-255)"
|
"G-code commands: M141/M191 S(0-255)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 komutu "
|
"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 "
|
||||||
"eklenecek \"machine_start_gcode\"\n"
|
"komutu eklenecek \"machine_start_gcode\"\n"
|
||||||
"G-code komut: M141/M191 S(0-255)"
|
"G-code komut: M141/M191 S(0-255)"
|
||||||
|
|
||||||
msgid "Chamber temperature"
|
msgid "Chamber temperature"
|
||||||
@@ -12409,6 +12416,28 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Aşağıdaki anahtarlar "
|
||||||
|
#~ "tanınmadan bulundu:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Yazılımınızı yükseltseniz iyi olur.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Daha yeni 3mf sürümü"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "3mf'nin %s sürümü, %s'in %s sürümünden daha yeni, Yazılımınızı "
|
||||||
|
#~ "yükseltmenizi öneririz."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Gömülü"
|
#~ msgstr "Gömülü"
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: 2023-08-10 20:25-0400\n"
|
"PO-Revision-Date: 2023-08-10 20:25-0400\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -4586,26 +4586,6 @@ msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"3mf генерується старим слайсером Orca, завантажувати лише дані геометрії."
|
"3mf генерується старим слайсером Orca, завантажувати лише дані геометрії."
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr "Версія 3mf %s новіша, ніж версія %s %s, знайдено наступні ключі:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "Вам краще оновити програмне забезпечення.\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "Нова версія 3mf"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr ""
|
|
||||||
"Версія 3mf %s новіша, ніж версія %s %s, запропонуйте оновити програмне "
|
|
||||||
"забезпечення."
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "У 3mf знайдено неприпустимі значення:"
|
msgstr "У 3mf знайдено неприпустимі значення:"
|
||||||
|
|
||||||
@@ -7642,6 +7622,15 @@ msgstr ""
|
|||||||
"Трохи зменшіть це значення (наприклад, 0.9), щоб зменшити кількість "
|
"Трохи зменшіть це значення (наприклад, 0.9), щоб зменшити кількість "
|
||||||
"матеріалу для мосту, щоб покращити провисання"
|
"матеріалу для мосту, щоб покращити провисання"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "Коефіцієнт потоку верхньої поверхні"
|
msgstr "Коефіцієнт потоку верхньої поверхні"
|
||||||
|
|
||||||
@@ -7943,6 +7932,15 @@ msgstr ""
|
|||||||
"великівідстань, але можуть виглядати гірше. Якщо відключити, мости "
|
"великівідстань, але можуть виглядати гірше. Якщо відключити, мости "
|
||||||
"виглядають краще,Але надійні лише для більш коротких мостових відстаней."
|
"виглядають краще,Але надійні лише для більш коротких мостових відстаней."
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "Максимальна довжина мосту"
|
msgstr "Максимальна довжина мосту"
|
||||||
|
|
||||||
@@ -11996,6 +11994,26 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr "Версія 3mf %s новіша, ніж версія %s %s, знайдено наступні ключі:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "Вам краще оновити програмне забезпечення.\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "Нова версія 3mf"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Версія 3mf %s новіша, ніж версія %s %s, запропонуйте оновити програмне "
|
||||||
|
#~ "забезпечення."
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "Вбудовано"
|
#~ msgstr "Вбудовано"
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Slic3rPE\n"
|
"Project-Id-Version: Slic3rPE\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: 2023-04-01 13:21+0800\n"
|
"PO-Revision-Date: 2023-04-01 13:21+0800\n"
|
||||||
"Last-Translator: SoftFever <softfeverever@gmail.com>\n"
|
"Last-Translator: SoftFever <softfeverever@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -4425,24 +4425,6 @@ msgstr "配置无法加载。"
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr "该3mf文件来自旧版本的逆戟鲸切片,将只加载几何数据。"
|
msgstr "该3mf文件来自旧版本的逆戟鲸切片,将只加载几何数据。"
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr "该3mf的版本%s比%s的版本%s新,发现以下参数键值无法识别:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "建议升级您的软件版本。\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "较新的3mf版本"
|
|
||||||
|
|
||||||
#, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr "该3mf的版本%s比%s的版本%s要新,建议升级你的软件。"
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "在3mf文件中发现无效值:"
|
msgstr "在3mf文件中发现无效值:"
|
||||||
|
|
||||||
@@ -7323,6 +7305,15 @@ msgid ""
|
|||||||
"material for bridge, to improve sag"
|
"material for bridge, to improve sag"
|
||||||
msgstr "稍微减小这个数值(比如0.9)可以减小桥接的材料量,来改善下垂。"
|
msgstr "稍微减小这个数值(比如0.9)可以减小桥接的材料量,来改善下垂。"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr "内部桥接流量"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "顶部表面流量比例"
|
msgstr "顶部表面流量比例"
|
||||||
|
|
||||||
@@ -7617,6 +7608,15 @@ msgstr ""
|
|||||||
"如果启用,桥接会更可靠,可以桥接更长的距离,但可能看起来更糟。如果关闭,桥梁"
|
"如果启用,桥接会更可靠,可以桥接更长的距离,但可能看起来更糟。如果关闭,桥梁"
|
||||||
"看起来更好,但只适用于较短的桥接距离。"
|
"看起来更好,但只适用于较短的桥接距离。"
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr "厚内部桥"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "最大桥接长度"
|
msgstr "最大桥接长度"
|
||||||
|
|
||||||
@@ -11545,6 +11545,24 @@ msgid ""
|
|||||||
"temperature. More info about this in the Wiki."
|
"temperature. More info about this in the Wiki."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr "该3mf的版本%s比%s的版本%s新,发现以下参数键值无法识别:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "建议升级您的软件版本。\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "较新的3mf版本"
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr "该3mf的版本%s比%s的版本%s要新,建议升级你的软件。"
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "嵌入的"
|
#~ msgstr "嵌入的"
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-11-10 14:54+0800\n"
|
"POT-Creation-Date: 2023-12-02 01:44+0800\n"
|
||||||
"PO-Revision-Date: 2023-11-06 14:37+0800\n"
|
"PO-Revision-Date: 2023-11-06 14:37+0800\n"
|
||||||
"Last-Translator: ablegods <ablegods@gmail.com>\n"
|
"Last-Translator: ablegods <ablegods@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -4680,24 +4680,6 @@ msgstr "設定檔無法載入。"
|
|||||||
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
msgid "The 3mf is generated by old Orca Slicer, load geometry data only."
|
||||||
msgstr "該 3mf 檔案來自舊版本的 Orca Slicer"
|
msgstr "該 3mf 檔案來自舊版本的 Orca Slicer"
|
||||||
|
|
||||||
#, fuzzy, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Found following keys "
|
|
||||||
"unrecognized:"
|
|
||||||
msgstr "該 3mf 的版本 %s 比 %s 的版本 %s 新,發現以下參數值無法識別:"
|
|
||||||
|
|
||||||
msgid "You'd better upgrade your software.\n"
|
|
||||||
msgstr "建議升級您的軟體版本。\n"
|
|
||||||
|
|
||||||
msgid "Newer 3mf version"
|
|
||||||
msgstr "較新的 3mf 版本"
|
|
||||||
|
|
||||||
#, fuzzy, c-format, boost-format
|
|
||||||
msgid ""
|
|
||||||
"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your "
|
|
||||||
"software."
|
|
||||||
msgstr "該 3mf 的版本 %s 比 %s 的版本 %s 要新,建議升級你的軟體。"
|
|
||||||
|
|
||||||
msgid "Invalid values found in the 3mf:"
|
msgid "Invalid values found in the 3mf:"
|
||||||
msgstr "在 3mf 檔案中發現無效值:"
|
msgstr "在 3mf 檔案中發現無效值:"
|
||||||
|
|
||||||
@@ -7808,6 +7790,15 @@ msgid ""
|
|||||||
"material for bridge, to improve sag"
|
"material for bridge, to improve sag"
|
||||||
msgstr "稍微減小這個數值(比如 0.9)可以減小橋接的線材量,來改善下垂。"
|
msgstr "稍微減小這個數值(比如 0.9)可以減小橋接的線材量,來改善下垂。"
|
||||||
|
|
||||||
|
msgid "Internal bridge flow"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This value governs the thickness of the internal bridge layer. This is the "
|
||||||
|
"first layer over sparse infill. Decrease this value slightly (for example "
|
||||||
|
"0.9) to improve surface quality over sparse infill."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Top surface flow ratio"
|
msgid "Top surface flow ratio"
|
||||||
msgstr "頂部表面流量比例"
|
msgstr "頂部表面流量比例"
|
||||||
|
|
||||||
@@ -8138,6 +8129,15 @@ msgstr ""
|
|||||||
"如果啟用,橋接會更可靠,可以橋接更長的距離,但可能看起來更糟。如果關閉,橋梁"
|
"如果啟用,橋接會更可靠,可以橋接更長的距離,但可能看起來更糟。如果關閉,橋梁"
|
||||||
"看起來更好,但只適用於較短的橋接距離。"
|
"看起來更好,但只適用於較短的橋接距離。"
|
||||||
|
|
||||||
|
msgid "Thick internal bridges"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"If enabled, thick internal bridges will be used. It's usually recommended to "
|
||||||
|
"have this feature turned on. However, consider turning it off if you are "
|
||||||
|
"using large nozzles."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Max bridge length"
|
msgid "Max bridge length"
|
||||||
msgstr "最大橋接長度"
|
msgstr "最大橋接長度"
|
||||||
|
|
||||||
@@ -12282,6 +12282,24 @@ msgstr ""
|
|||||||
"當列印較低溫度的耗材時,打開印表機門可以減少擠出機或熱端堵塞的可能性。 有關此"
|
"當列印較低溫度的耗材時,打開印表機門可以減少擠出機或熱端堵塞的可能性。 有關此"
|
||||||
"內容的更多信息,請參見 Wiki。"
|
"內容的更多信息,請參見 Wiki。"
|
||||||
|
|
||||||
|
#, fuzzy, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Found following keys "
|
||||||
|
#~ "unrecognized:"
|
||||||
|
#~ msgstr "該 3mf 的版本 %s 比 %s 的版本 %s 新,發現以下參數值無法識別:"
|
||||||
|
|
||||||
|
#~ msgid "You'd better upgrade your software.\n"
|
||||||
|
#~ msgstr "建議升級您的軟體版本。\n"
|
||||||
|
|
||||||
|
#~ msgid "Newer 3mf version"
|
||||||
|
#~ msgstr "較新的 3mf 版本"
|
||||||
|
|
||||||
|
#, fuzzy, c-format, boost-format
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade "
|
||||||
|
#~ "your software."
|
||||||
|
#~ msgstr "該 3mf 的版本 %s 比 %s 的版本 %s 要新,建議升級你的軟體。"
|
||||||
|
|
||||||
#~ msgid "Embeded"
|
#~ msgid "Embeded"
|
||||||
#~ msgstr "嵌入的"
|
#~ msgstr "嵌入的"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 B After Width: | Height: | Size: 2.5 KiB |
@@ -11,12 +11,13 @@
|
|||||||
"fan_cooling_layer_time": ["30"],
|
"fan_cooling_layer_time": ["30"],
|
||||||
"overhang_fan_speed": ["90"],
|
"overhang_fan_speed": ["90"],
|
||||||
"overhang_fan_threshold": ["25%"],
|
"overhang_fan_threshold": ["25%"],
|
||||||
"fan_max_speed": ["90"],
|
"fan_max_speed": ["25"],
|
||||||
"fan_min_speed": ["40"],
|
"fan_min_speed": ["10"],
|
||||||
"slow_down_min_speed": ["10"],
|
"slow_down_min_speed": ["10"],
|
||||||
"slow_down_layer_time": ["8"],
|
"slow_down_layer_time": ["8"],
|
||||||
"filament_flow_ratio": ["0.95"],
|
"filament_flow_ratio": ["0.98"],
|
||||||
"filament_max_volumetric_speed": ["30"],
|
"filament_max_volumetric_speed": ["8"],
|
||||||
|
"nozzle_temperature_initial_layer": ["260"],
|
||||||
"filament_retraction_length": ["0.5"],
|
"filament_retraction_length": ["0.5"],
|
||||||
"filament_start_gcode": ["; filament start gcode\n"],
|
"filament_start_gcode": ["; filament start gcode\n"],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
|
|||||||
@@ -18,16 +18,16 @@
|
|||||||
"5000"
|
"5000"
|
||||||
],
|
],
|
||||||
"machine_max_acceleration_travel": [
|
"machine_max_acceleration_travel": [
|
||||||
"20000",
|
"3000",
|
||||||
"20000"
|
"3000"
|
||||||
],
|
],
|
||||||
"machine_max_acceleration_x": [
|
"machine_max_acceleration_x": [
|
||||||
"8000",
|
"3000",
|
||||||
"8000"
|
"3000"
|
||||||
],
|
],
|
||||||
"machine_max_acceleration_y": [
|
"machine_max_acceleration_y": [
|
||||||
"8000",
|
"3000",
|
||||||
"8000"
|
"3000"
|
||||||
],
|
],
|
||||||
"machine_max_acceleration_z": [
|
"machine_max_acceleration_z": [
|
||||||
"500",
|
"500",
|
||||||
@@ -38,12 +38,12 @@
|
|||||||
"25"
|
"25"
|
||||||
],
|
],
|
||||||
"machine_max_speed_x": [
|
"machine_max_speed_x": [
|
||||||
"500",
|
"300",
|
||||||
"200"
|
"300"
|
||||||
],
|
],
|
||||||
"machine_max_speed_y": [
|
"machine_max_speed_y": [
|
||||||
"500",
|
"300",
|
||||||
"200"
|
"300"
|
||||||
],
|
],
|
||||||
"machine_max_speed_z": [
|
"machine_max_speed_z": [
|
||||||
"12",
|
"12",
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
"min_layer_height": [
|
"min_layer_height": [
|
||||||
"0.08"
|
"0.08"
|
||||||
],
|
],
|
||||||
"printable_height": "250",
|
"printable_height": "500",
|
||||||
"extruder_clearance_radius": "65",
|
"extruder_clearance_radius": "65",
|
||||||
"extruder_clearance_height_to_rod": "36",
|
"extruder_clearance_height_to_rod": "36",
|
||||||
"extruder_clearance_height_to_lid": "140",
|
"extruder_clearance_height_to_lid": "140",
|
||||||
@@ -124,6 +124,12 @@
|
|||||||
"wipe": [
|
"wipe": [
|
||||||
"1"
|
"1"
|
||||||
],
|
],
|
||||||
|
"thumbnails": [
|
||||||
|
"32x32",
|
||||||
|
"300x300"
|
||||||
|
],
|
||||||
|
"thumbnails_format": "PNG",
|
||||||
|
"nozzle_type": "hardened_steel",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Comgrow Generic PETG"
|
"Comgrow Generic PETG"
|
||||||
],
|
],
|
||||||
@@ -136,6 +142,5 @@
|
|||||||
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
||||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
||||||
"scan_first_layer": "0",
|
"scan_first_layer": "0",
|
||||||
"nozzle_type": "undefine",
|
|
||||||
"auxiliary_fan": "0"
|
"auxiliary_fan": "0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.6",
|
"initial_layer_line_width": "0.6",
|
||||||
"initial_layer_print_height": "0.2",
|
"initial_layer_print_height": "0.2",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "8000",
|
|
||||||
"outer_wall_acceleration": "8000",
|
|
||||||
"top_surface_acceleration": "8000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "8000",
|
|
||||||
"inner_wall_acceleration": "8000",
|
|
||||||
"initial_layer_line_width": "0.4",
|
"initial_layer_line_width": "0.4",
|
||||||
"initial_layer_print_height": "0.2",
|
"initial_layer_print_height": "0.2",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "0",
|
|
||||||
"outer_wall_acceleration": "0",
|
|
||||||
"top_surface_acceleration": "0",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "0",
|
|
||||||
"travel_acceleration": "0",
|
|
||||||
"inner_wall_acceleration": "0",
|
|
||||||
"initial_layer_line_width": "0.42",
|
"initial_layer_line_width": "0.42",
|
||||||
"initial_layer_print_height": "0.24",
|
"initial_layer_print_height": "0.24",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "8000",
|
|
||||||
"outer_wall_acceleration": "8000",
|
|
||||||
"top_surface_acceleration": "8000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "8000",
|
|
||||||
"inner_wall_acceleration": "8000",
|
|
||||||
"initial_layer_line_width": "0.4",
|
"initial_layer_line_width": "0.4",
|
||||||
"initial_layer_print_height": "0.24",
|
"initial_layer_print_height": "0.24",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.6",
|
"initial_layer_line_width": "0.6",
|
||||||
"initial_layer_print_height": "0.24",
|
"initial_layer_print_height": "0.24",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "1.0",
|
"initial_layer_line_width": "1.0",
|
||||||
"initial_layer_print_height": "0.28",
|
"initial_layer_print_height": "0.28",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "0",
|
|
||||||
"outer_wall_acceleration": "0",
|
|
||||||
"top_surface_acceleration": "0",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "0",
|
|
||||||
"travel_acceleration": "0",
|
|
||||||
"inner_wall_acceleration": "0",
|
|
||||||
"initial_layer_line_width": "0.42",
|
"initial_layer_line_width": "0.42",
|
||||||
"initial_layer_print_height": "0.24",
|
"initial_layer_print_height": "0.24",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "8000",
|
|
||||||
"outer_wall_acceleration": "8000",
|
|
||||||
"top_surface_acceleration": "8000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "8000",
|
|
||||||
"inner_wall_acceleration": "8000",
|
|
||||||
"initial_layer_line_width": "0.4",
|
"initial_layer_line_width": "0.4",
|
||||||
"initial_layer_print_height": "0.28",
|
"initial_layer_print_height": "0.28",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.6",
|
"initial_layer_line_width": "0.6",
|
||||||
"initial_layer_print_height": "0.28",
|
"initial_layer_print_height": "0.28",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.8",
|
"initial_layer_line_width": "0.8",
|
||||||
"initial_layer_print_height": "0.28",
|
"initial_layer_print_height": "0.28",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "8000",
|
|
||||||
"outer_wall_acceleration": "8000",
|
|
||||||
"top_surface_acceleration": "8000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "8000",
|
|
||||||
"inner_wall_acceleration": "8000",
|
|
||||||
"initial_layer_line_width": "0.4",
|
"initial_layer_line_width": "0.4",
|
||||||
"initial_layer_print_height": "0.32",
|
"initial_layer_print_height": "0.32",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.6",
|
"initial_layer_line_width": "0.6",
|
||||||
"initial_layer_print_height": "0.32",
|
"initial_layer_print_height": "0.32",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.8",
|
"initial_layer_line_width": "0.8",
|
||||||
"initial_layer_print_height": "0.36",
|
"initial_layer_print_height": "0.36",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.8",
|
"initial_layer_line_width": "0.8",
|
||||||
"initial_layer_print_height": "0.44",
|
"initial_layer_print_height": "0.44",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.8",
|
"initial_layer_line_width": "0.8",
|
||||||
"initial_layer_print_height": "0.52",
|
"initial_layer_print_height": "0.52",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -18,9 +18,6 @@
|
|||||||
"brim_object_gap": "0",
|
"brim_object_gap": "0",
|
||||||
"compatible_printers_condition": "",
|
"compatible_printers_condition": "",
|
||||||
"print_sequence": "by layer",
|
"print_sequence": "by layer",
|
||||||
"default_acceleration": "3000",
|
|
||||||
"outer_wall_acceleration": "3000",
|
|
||||||
"top_surface_acceleration": "3000",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.1",
|
"elefant_foot_compensation": "0.1",
|
||||||
@@ -31,9 +28,6 @@
|
|||||||
"infill_direction": "45",
|
"infill_direction": "45",
|
||||||
"sparse_infill_density": "15%",
|
"sparse_infill_density": "15%",
|
||||||
"sparse_infill_pattern": "grid",
|
"sparse_infill_pattern": "grid",
|
||||||
"initial_layer_acceleration": "1000",
|
|
||||||
"travel_acceleration": "3000",
|
|
||||||
"inner_wall_acceleration": "3000",
|
|
||||||
"initial_layer_line_width": "0.8",
|
"initial_layer_line_width": "0.8",
|
||||||
"initial_layer_print_height": "0.60",
|
"initial_layer_print_height": "0.60",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
|
|||||||
@@ -1,104 +1,229 @@
|
|||||||
{
|
{
|
||||||
"type": "process",
|
"accel_to_decel_enable": "1",
|
||||||
"name": "fdm_process_comgrow_common",
|
"accel_to_decel_factor": "50%",
|
||||||
"from": "system",
|
"bottom_shell_layers": "2",
|
||||||
"instantiation": "false",
|
|
||||||
"inherits": "fdm_process_common",
|
|
||||||
"adaptive_layer_height": "0",
|
|
||||||
"reduce_crossing_wall": "0",
|
|
||||||
"max_travel_detour_distance": "0",
|
|
||||||
"bottom_surface_pattern": "monotonic",
|
|
||||||
"bottom_shell_layers": "3",
|
|
||||||
"bottom_shell_thickness": "0",
|
"bottom_shell_thickness": "0",
|
||||||
"bridge_flow": "0.95",
|
"bottom_solid_infill_flow_ratio": "1",
|
||||||
"bridge_speed": "25",
|
"bottom_surface_pattern": "monotonic",
|
||||||
"brim_width": "5",
|
"bridge_acceleration": "50%",
|
||||||
"brim_object_gap": "0.1",
|
"bridge_angle": "0",
|
||||||
"compatible_printers_condition": "",
|
"bridge_density": "100%",
|
||||||
"print_sequence": "by layer",
|
"bridge_flow": "0.85",
|
||||||
"default_acceleration": "500",
|
|
||||||
"top_surface_acceleration": "500",
|
|
||||||
"bridge_no_support": "0",
|
"bridge_no_support": "0",
|
||||||
|
"bridge_speed": "25",
|
||||||
|
"brim_ears_detection_length": "1",
|
||||||
|
"brim_ears_max_angle": "125",
|
||||||
|
"brim_object_gap": "0",
|
||||||
|
"brim_type": "auto_brim",
|
||||||
|
"brim_width": "0",
|
||||||
|
"compatible_printers_condition": "",
|
||||||
|
"default_acceleration": "3000",
|
||||||
|
"default_jerk": "0",
|
||||||
|
"detect_overhang_wall": "1",
|
||||||
|
"detect_thin_wall": "1",
|
||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0",
|
"elefant_foot_compensation": "0.1",
|
||||||
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "0",
|
"enable_arc_fitting": "0",
|
||||||
"outer_wall_line_width": "0.4",
|
"enable_overhang_speed": "1",
|
||||||
"wall_infill_order": "inner wall/outer wall/infill",
|
"enable_prime_tower": "0",
|
||||||
"line_width": "0.4",
|
"enable_support": "0",
|
||||||
"infill_direction": "45",
|
"enforce_support_layers": "0",
|
||||||
"sparse_infill_density": "15%",
|
"exclude_object": "0",
|
||||||
"sparse_infill_pattern": "grid",
|
"extra_perimeters_on_overhangs": "0",
|
||||||
"initial_layer_acceleration": "500",
|
"filename_format": "{printer_model}_{input_filename_base}_{filament_type[0]}_{layer_height}_{print_time}.gcode",
|
||||||
"travel_acceleration": "700",
|
"filter_out_gap_fill": "0",
|
||||||
"inner_wall_acceleration": "500",
|
"flush_into_infill": "0",
|
||||||
"initial_layer_line_width": "0.5",
|
"flush_into_objects": "0",
|
||||||
"initial_layer_print_height": "0.2",
|
"flush_into_support": "1",
|
||||||
|
"from": "",
|
||||||
|
"fuzzy_skin": "none",
|
||||||
|
"fuzzy_skin_point_distance": "0.8",
|
||||||
|
"fuzzy_skin_thickness": "0.3",
|
||||||
|
"gap_infill_speed": "70",
|
||||||
|
"gcode_add_line_number": "0",
|
||||||
|
"gcode_comments": "0",
|
||||||
|
"gcode_label_objects": "0",
|
||||||
|
"hole_to_polyhole": "0",
|
||||||
|
"hole_to_polyhole_threshold": "0.01",
|
||||||
|
"hole_to_polyhole_twisted": "1",
|
||||||
|
"independent_support_layer_height": "1",
|
||||||
|
"infill_anchor": "400%",
|
||||||
|
"infill_anchor_max": "20",
|
||||||
"infill_combination": "0",
|
"infill_combination": "0",
|
||||||
"sparse_infill_line_width": "0.45",
|
"infill_direction": "45",
|
||||||
|
"infill_jerk": "9",
|
||||||
"infill_wall_overlap": "23%",
|
"infill_wall_overlap": "23%",
|
||||||
|
"inherits": "fdm_process_common",
|
||||||
|
"initial_layer_acceleration": "1000",
|
||||||
|
"initial_layer_infill_speed": "60",
|
||||||
|
"initial_layer_jerk": "9",
|
||||||
|
"initial_layer_line_width": "0.4",
|
||||||
|
"initial_layer_min_bead_width": "85%",
|
||||||
|
"initial_layer_print_height": "0.24",
|
||||||
|
"initial_layer_speed": "40",
|
||||||
|
"initial_layer_travel_speed": "100%",
|
||||||
|
"inner_wall_acceleration": "3000",
|
||||||
|
"inner_wall_jerk": "9",
|
||||||
|
"inner_wall_line_width": "0.4",
|
||||||
|
"inner_wall_speed": "160",
|
||||||
"interface_shells": "0",
|
"interface_shells": "0",
|
||||||
|
"internal_bridge_speed": "150%",
|
||||||
|
"internal_solid_infill_acceleration": "100%",
|
||||||
|
"internal_solid_infill_line_width": "0",
|
||||||
|
"internal_solid_infill_pattern": "monotonic",
|
||||||
|
"internal_solid_infill_speed": "200",
|
||||||
|
"ironing_angle": "-1",
|
||||||
"ironing_flow": "15%",
|
"ironing_flow": "15%",
|
||||||
"ironing_spacing": "0.1",
|
"ironing_pattern": "zig-zag",
|
||||||
|
"ironing_spacing": "0.25",
|
||||||
"ironing_speed": "15",
|
"ironing_speed": "15",
|
||||||
"ironing_type": "no ironing",
|
"ironing_type": "no ironing",
|
||||||
"layer_height": "0.2",
|
"layer_height": "0.2",
|
||||||
"reduce_infill_retraction": "1",
|
"line_width": "0.4",
|
||||||
"filename_format": "{printer_model}_{input_filename_base}_{filament_type[0]}_{layer_height}_{print_time}.gcode",
|
"make_overhang_printable": "0",
|
||||||
"detect_overhang_wall": "1",
|
"make_overhang_printable_angle": "55",
|
||||||
|
"make_overhang_printable_hole_size": "0",
|
||||||
|
"max_bridge_length": "10",
|
||||||
|
"max_travel_detour_distance": "0",
|
||||||
|
"max_volumetric_extrusion_rate_slope": "0",
|
||||||
|
"max_volumetric_extrusion_rate_slope_segment_length": "3",
|
||||||
|
"min_bead_width": "85%",
|
||||||
|
"min_feature_size": "25%",
|
||||||
|
"min_width_top_surface": "300%",
|
||||||
|
"minimum_sparse_infill_area": "10",
|
||||||
|
"only_one_wall_first_layer": "0",
|
||||||
|
"only_one_wall_top": "0",
|
||||||
|
"ooze_prevention": "0",
|
||||||
|
"outer_wall_acceleration": "1000",
|
||||||
|
"outer_wall_jerk": "9",
|
||||||
|
"outer_wall_speed": "140",
|
||||||
"overhang_1_4_speed": "0",
|
"overhang_1_4_speed": "0",
|
||||||
"overhang_2_4_speed": "20",
|
"overhang_2_4_speed": "20",
|
||||||
"overhang_3_4_speed": "15",
|
"overhang_3_4_speed": "15",
|
||||||
"overhang_4_4_speed": "10",
|
"overhang_4_4_speed": "10",
|
||||||
"inner_wall_line_width": "0.45",
|
"overhang_reverse": "0",
|
||||||
"wall_loops": "3",
|
"overhang_reverse_threshold": "50%",
|
||||||
"print_settings_id": "",
|
"overhang_speed_classic": "0",
|
||||||
"raft_layers": "0",
|
"post_process": [],
|
||||||
"seam_position": "aligned",
|
"precise_outer_wall": "0",
|
||||||
"skirt_distance": "2",
|
"prime_tower_brim_width": "3",
|
||||||
"skirt_height": "1",
|
|
||||||
"skirt_loops": "1",
|
|
||||||
"minimum_sparse_infill_area": "15",
|
|
||||||
"internal_solid_infill_line_width": "0.4",
|
|
||||||
"spiral_mode": "0",
|
|
||||||
"standby_temperature_delta": "-5",
|
|
||||||
"enable_support": "0",
|
|
||||||
"resolution": "0.012",
|
|
||||||
"support_type": "normal(auto)",
|
|
||||||
"support_style": "default",
|
|
||||||
"support_on_build_plate_only": "0",
|
|
||||||
"support_top_z_distance": "0.2",
|
|
||||||
"support_filament": "0",
|
|
||||||
"support_line_width": "0.4",
|
|
||||||
"support_interface_loop_pattern": "0",
|
|
||||||
"support_interface_filament": "0",
|
|
||||||
"support_interface_top_layers": "2",
|
|
||||||
"support_interface_bottom_layers": "2",
|
|
||||||
"support_interface_spacing": "0.5",
|
|
||||||
"support_interface_speed": "80",
|
|
||||||
"support_base_pattern": "rectilinear",
|
|
||||||
"support_base_pattern_spacing": "2.5",
|
|
||||||
"support_speed": "150",
|
|
||||||
"support_threshold_angle": "30",
|
|
||||||
"support_object_xy_distance": "0.35",
|
|
||||||
"tree_support_branch_angle": "45",
|
|
||||||
"tree_support_wall_count": "0",
|
|
||||||
"detect_thin_wall": "0",
|
|
||||||
"top_surface_pattern": "monotonic",
|
|
||||||
"top_surface_line_width": "0.4",
|
|
||||||
"top_shell_layers": "3",
|
|
||||||
"top_shell_thickness": "0.8",
|
|
||||||
"initial_layer_speed": "15",
|
|
||||||
"initial_layer_infill_speed": "20",
|
|
||||||
"outer_wall_speed": "25",
|
|
||||||
"inner_wall_speed": "40",
|
|
||||||
"internal_solid_infill_speed": "40",
|
|
||||||
"top_surface_speed": "30",
|
|
||||||
"gap_infill_speed": "30",
|
|
||||||
"sparse_infill_speed": "50",
|
|
||||||
"travel_speed": "150",
|
|
||||||
"enable_prime_tower": "0",
|
|
||||||
"wipe_tower_no_sparse_layers": "0",
|
|
||||||
"prime_tower_width": "60",
|
"prime_tower_width": "60",
|
||||||
"xy_hole_compensation": "0",
|
"prime_volume": "45",
|
||||||
"xy_contour_compensation": "0"
|
"print_flow_ratio": "1",
|
||||||
|
"print_sequence": "by layer",
|
||||||
|
"raft_contact_distance": "0.1",
|
||||||
|
"raft_expansion": "1.5",
|
||||||
|
"raft_first_layer_density": "90%",
|
||||||
|
"raft_first_layer_expansion": "2",
|
||||||
|
"raft_layers": "0",
|
||||||
|
"reduce_crossing_wall": "0",
|
||||||
|
"reduce_infill_retraction": "1",
|
||||||
|
"resolution": "0.012",
|
||||||
|
"role_based_wipe_speed": "1",
|
||||||
|
"seam_gap": "5%",
|
||||||
|
"seam_position": "aligned",
|
||||||
|
"single_extruder_multi_material_priming": "1",
|
||||||
|
"skirt_distance": "3",
|
||||||
|
"skirt_height": "2",
|
||||||
|
"skirt_loops": "0",
|
||||||
|
"skirt_speed": "50",
|
||||||
|
"slice_closing_radius": "0.049",
|
||||||
|
"slicing_mode": "regular",
|
||||||
|
"slow_down_layers": "0",
|
||||||
|
"slowdown_for_curled_perimeters": "0",
|
||||||
|
"small_perimeter_speed": "50%",
|
||||||
|
"small_perimeter_threshold": "0",
|
||||||
|
"solid_infill_filament": "1",
|
||||||
|
"sparse_infill_acceleration": "100%",
|
||||||
|
"sparse_infill_density": "10%",
|
||||||
|
"sparse_infill_filament": "1",
|
||||||
|
"sparse_infill_line_width": "0.4",
|
||||||
|
"sparse_infill_pattern": "adaptivecubic",
|
||||||
|
"sparse_infill_speed": "200",
|
||||||
|
"spiral_mode": "0",
|
||||||
|
"staggered_inner_seams": "0",
|
||||||
|
"standby_temperature_delta": "-5",
|
||||||
|
"support_angle": "0",
|
||||||
|
"support_base_pattern": "rectilinear",
|
||||||
|
"support_base_pattern_spacing": "0.2",
|
||||||
|
"support_bottom_interface_spacing": "0.5",
|
||||||
|
"support_bottom_z_distance": "0.2",
|
||||||
|
"support_critical_regions_only": "0",
|
||||||
|
"support_expansion": "0",
|
||||||
|
"support_filament": "0",
|
||||||
|
"support_interface_bottom_layers": "-1",
|
||||||
|
"support_interface_filament": "0",
|
||||||
|
"support_interface_loop_pattern": "0",
|
||||||
|
"support_interface_pattern": "rectilinear",
|
||||||
|
"support_interface_spacing": "0.2",
|
||||||
|
"support_interface_speed": "80",
|
||||||
|
"support_interface_top_layers": "3",
|
||||||
|
"support_object_xy_distance": "0.35",
|
||||||
|
"support_on_build_plate_only": "0",
|
||||||
|
"support_remove_small_overhang": "1",
|
||||||
|
"support_speed": "140",
|
||||||
|
"support_style": "grid",
|
||||||
|
"support_threshold_angle": "40",
|
||||||
|
"support_top_z_distance": "0.15",
|
||||||
|
"support_type": "normal(auto)",
|
||||||
|
"thick_bridges": "0",
|
||||||
|
"timelapse_type": "0",
|
||||||
|
"top_shell_layers": "2",
|
||||||
|
"top_solid_infill_flow_ratio": "1",
|
||||||
|
"top_surface_acceleration": "2000",
|
||||||
|
"top_surface_jerk": "9",
|
||||||
|
"top_surface_line_width": "0.4",
|
||||||
|
"top_surface_pattern": "monotonic",
|
||||||
|
"top_surface_speed": "40",
|
||||||
|
"travel_acceleration": "3000",
|
||||||
|
"travel_jerk": "12",
|
||||||
|
"travel_speed": "200",
|
||||||
|
"travel_speed_z": "0",
|
||||||
|
"tree_support_adaptive_layer_height": "1",
|
||||||
|
"tree_support_angle_slow": "25",
|
||||||
|
"tree_support_auto_brim": "1",
|
||||||
|
"tree_support_branch_angle": "40",
|
||||||
|
"tree_support_branch_angle_organic": "40",
|
||||||
|
"tree_support_branch_diameter": "5",
|
||||||
|
"tree_support_branch_diameter_angle": "5",
|
||||||
|
"tree_support_branch_diameter_double_wall": "3",
|
||||||
|
"tree_support_branch_diameter_organic": "2",
|
||||||
|
"tree_support_branch_distance": "5",
|
||||||
|
"tree_support_branch_distance_organic": "1",
|
||||||
|
"tree_support_brim_width": "3",
|
||||||
|
"tree_support_tip_diameter": "0.8",
|
||||||
|
"tree_support_top_rate": "30%",
|
||||||
|
"tree_support_wall_count": "0",
|
||||||
|
"version": "1.7.0.0",
|
||||||
|
"wall_distribution_count": "1",
|
||||||
|
"wall_filament": "1",
|
||||||
|
"wall_generator": "arachne",
|
||||||
|
"wall_infill_order": "inner wall/outer wall/infill",
|
||||||
|
"wall_loops": "3",
|
||||||
|
"wall_transition_angle": "10",
|
||||||
|
"wall_transition_filter_deviation": "25%",
|
||||||
|
"wall_transition_length": "100%",
|
||||||
|
"wipe_on_loops": "0",
|
||||||
|
"wipe_speed": "80%",
|
||||||
|
"wipe_tower_bridging": "10",
|
||||||
|
"wipe_tower_cone_angle": "0",
|
||||||
|
"wipe_tower_extra_spacing": "100%",
|
||||||
|
"wipe_tower_extruder": "0",
|
||||||
|
"wipe_tower_no_sparse_layers": "0",
|
||||||
|
"wipe_tower_rotation_angle": "0",
|
||||||
|
"wiping_volumes_extruders": [
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70",
|
||||||
|
"70"
|
||||||
|
],
|
||||||
|
"xy_contour_compensation": "0",
|
||||||
|
"xy_hole_compensation": "0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "",
|
||||||
"machine_pause_gcode": "M25",
|
"machine_pause_gcode": "M25",
|
||||||
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
||||||
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.25 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0",
|
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-1.5 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0",
|
||||||
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
||||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
||||||
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "",
|
||||||
"machine_pause_gcode": "M25",
|
"machine_pause_gcode": "M25",
|
||||||
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
||||||
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.25 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0",
|
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-1.5 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0",
|
||||||
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
||||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
||||||
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "",
|
||||||
"machine_pause_gcode": "M25",
|
"machine_pause_gcode": "M25",
|
||||||
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
||||||
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.25 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0",
|
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-1.5 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0",
|
||||||
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
||||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
||||||
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "",
|
||||||
"machine_pause_gcode": "M25",
|
"machine_pause_gcode": "M25",
|
||||||
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
"default_filament_profile": [ "Flashforge Generic PLA" ],
|
||||||
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.25 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0",
|
"machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-1.5 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0",
|
||||||
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
"machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nG28\nM104 S0 ; turn off temperature\nM84 ; disable motors",
|
||||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]",
|
||||||
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
||||||
|
|||||||
@@ -39,7 +39,9 @@ BeadingStrategyPtr BeadingStrategyFactory::makeStrategy(
|
|||||||
BOOST_LOG_TRIVIAL(debug) << "Applying the Widening Beading meta-strategy with minimum input width " << min_feature_size << " and minimum output width " << min_bead_width << ".";
|
BOOST_LOG_TRIVIAL(debug) << "Applying the Widening Beading meta-strategy with minimum input width " << min_feature_size << " and minimum output width " << min_bead_width << ".";
|
||||||
ret = std::make_unique<WideningBeadingStrategy>(std::move(ret), min_feature_size, min_bead_width);
|
ret = std::make_unique<WideningBeadingStrategy>(std::move(ret), min_feature_size, min_bead_width);
|
||||||
}
|
}
|
||||||
if (outer_wall_offset > 0) {
|
// Orca: we allow negative outer_wall_offset here
|
||||||
|
if (outer_wall_offset != 0)
|
||||||
|
{
|
||||||
BOOST_LOG_TRIVIAL(debug) << "Applying the OuterWallOffset meta-strategy with offset = " << outer_wall_offset << ".";
|
BOOST_LOG_TRIVIAL(debug) << "Applying the OuterWallOffset meta-strategy with offset = " << outer_wall_offset << ".";
|
||||||
ret = std::make_unique<OuterWallInsetBeadingStrategy>(outer_wall_offset, std::move(ret));
|
ret = std::make_unique<OuterWallInsetBeadingStrategy>(outer_wall_offset, std::move(ret));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,9 +485,10 @@ std::vector<SurfaceFill> group_fills(const Layer &layer)
|
|||||||
|
|
||||||
// Calculate the actual flow we'll be using for this infill.
|
// Calculate the actual flow we'll be using for this infill.
|
||||||
params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern);
|
params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern);
|
||||||
|
const bool is_thick_bridge = surface.is_bridge() && (surface.is_internal_bridge() ? object_config.thick_internal_bridges : object_config.thick_bridges);
|
||||||
params.flow = params.bridge ?
|
params.flow = params.bridge ?
|
||||||
//BBS: always enable thick bridge for internal bridge
|
//Orca: enable thick bridge based on config
|
||||||
layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges) :
|
layerm.bridging_flow(extrusion_role, is_thick_bridge) :
|
||||||
layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness);
|
layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness);
|
||||||
|
|
||||||
// Calculate flow spacing for infill pattern generation.
|
// Calculate flow spacing for infill pattern generation.
|
||||||
|
|||||||
+38
-36
@@ -4588,6 +4588,8 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
|
|||||||
_mm3_per_mm *= m_config.top_solid_infill_flow_ratio;
|
_mm3_per_mm *= m_config.top_solid_infill_flow_ratio;
|
||||||
else if (path.role() == erBottomSurface)
|
else if (path.role() == erBottomSurface)
|
||||||
_mm3_per_mm *= m_config.bottom_solid_infill_flow_ratio;
|
_mm3_per_mm *= m_config.bottom_solid_infill_flow_ratio;
|
||||||
|
else if (path.role() == erInternalBridgeInfill)
|
||||||
|
_mm3_per_mm *= m_config.internal_bridge_flow;
|
||||||
|
|
||||||
|
|
||||||
double e_per_mm = m_writer.extruder()->e_per_mm3() * _mm3_per_mm;
|
double e_per_mm = m_writer.extruder()->e_per_mm3() * _mm3_per_mm;
|
||||||
@@ -4691,68 +4693,68 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
|
|||||||
|
|
||||||
if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic && !this->on_first_layer() &&
|
if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic && !this->on_first_layer() &&
|
||||||
(is_bridge(path.role()) || is_perimeter(path.role()))) {
|
(is_bridge(path.role()) || is_perimeter(path.role()))) {
|
||||||
|
bool is_external = is_external_perimeter(path.role());
|
||||||
double out_wall_ref_speed = m_config.get_abs_value("outer_wall_speed");
|
double ref_speed = is_external ? m_config.get_abs_value("outer_wall_speed") : m_config.get_abs_value("inner_wall_speed");
|
||||||
ConfigOptionPercents overhang_overlap_levels({75, 50, 25, 13, 12.99, 0});
|
ConfigOptionPercents overhang_overlap_levels({75, 50, 25, 13, 12.99, 0});
|
||||||
|
|
||||||
if (m_config.slowdown_for_curled_perimeters){
|
if (m_config.slowdown_for_curled_perimeters){
|
||||||
ConfigOptionFloatsOrPercents dynamic_overhang_speeds(
|
ConfigOptionFloatsOrPercents dynamic_overhang_speeds(
|
||||||
{(m_config.get_abs_value("overhang_1_4_speed") < 0.5) ?
|
{(m_config.get_abs_value("overhang_1_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_2_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_2_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_3_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_3_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_4_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_4_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_4_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true}});
|
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true}});
|
||||||
if (out_wall_ref_speed == 0)
|
if (ref_speed == 0)
|
||||||
out_wall_ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm;
|
ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm;
|
||||||
|
|
||||||
if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) {
|
if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) {
|
||||||
out_wall_ref_speed = std::min(out_wall_ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm);
|
ref_speed = std::min(ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm);
|
||||||
}
|
}
|
||||||
|
|
||||||
new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, overhang_overlap_levels, dynamic_overhang_speeds,
|
new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, overhang_overlap_levels, dynamic_overhang_speeds,
|
||||||
out_wall_ref_speed, speed, m_config.slowdown_for_curled_perimeters);
|
ref_speed, speed, m_config.slowdown_for_curled_perimeters);
|
||||||
}else{
|
}else{
|
||||||
ConfigOptionFloatsOrPercents dynamic_overhang_speeds(
|
ConfigOptionFloatsOrPercents dynamic_overhang_speeds(
|
||||||
{(m_config.get_abs_value("overhang_1_4_speed") < 0.5) ?
|
{(m_config.get_abs_value("overhang_1_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_1_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_2_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_2_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_2_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_3_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_3_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_3_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
(m_config.get_abs_value("overhang_4_4_speed") < 0.5) ?
|
(m_config.get_abs_value("overhang_4_4_speed", ref_speed) < 0.5) ?
|
||||||
FloatOrPercent{100, true} :
|
FloatOrPercent{100, true} :
|
||||||
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("overhang_4_4_speed", ref_speed) * 100 / ref_speed, true},
|
||||||
FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / out_wall_ref_speed, true},
|
FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / ref_speed, true},
|
||||||
FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / out_wall_ref_speed, true}});
|
FloatOrPercent{m_config.get_abs_value("bridge_speed") * 100 / ref_speed, true}});
|
||||||
|
|
||||||
if (out_wall_ref_speed == 0)
|
if (ref_speed == 0)
|
||||||
out_wall_ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm;
|
ref_speed = EXTRUDER_CONFIG(filament_max_volumetric_speed) / _mm3_per_mm;
|
||||||
|
|
||||||
if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) {
|
if (EXTRUDER_CONFIG(filament_max_volumetric_speed) > 0) {
|
||||||
out_wall_ref_speed = std::min(out_wall_ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm);
|
ref_speed = std::min(ref_speed, EXTRUDER_CONFIG(filament_max_volumetric_speed) / path.mm3_per_mm);
|
||||||
}
|
}
|
||||||
|
|
||||||
new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, overhang_overlap_levels, dynamic_overhang_speeds,
|
new_points = m_extrusion_quality_estimator.estimate_extrusion_quality(path, overhang_overlap_levels, dynamic_overhang_speeds,
|
||||||
out_wall_ref_speed, speed, m_config.slowdown_for_curled_perimeters);
|
ref_speed, speed, m_config.slowdown_for_curled_perimeters);
|
||||||
}
|
}
|
||||||
variable_speed = std::any_of(new_points.begin(), new_points.end(), [speed](const ProcessedPoint &p) { return p.speed != speed; });
|
variable_speed = std::any_of(new_points.begin(), new_points.end(),
|
||||||
|
[speed](const ProcessedPoint &p) { return fabs(double(p.speed) - speed) > EPSILON; });
|
||||||
}
|
}
|
||||||
|
|
||||||
double F = speed * 60; // convert mm/sec to mm/min
|
double F = speed * 60; // convert mm/sec to mm/min
|
||||||
@@ -5449,7 +5451,7 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z)
|
|||||||
old_retract_length = m_config.retraction_length.get_at(previous_extruder_id);
|
old_retract_length = m_config.retraction_length.get_at(previous_extruder_id);
|
||||||
old_retract_length_toolchange = m_config.retract_length_toolchange.get_at(previous_extruder_id);
|
old_retract_length_toolchange = m_config.retract_length_toolchange.get_at(previous_extruder_id);
|
||||||
old_filament_temp = this->on_first_layer()? m_config.nozzle_temperature_initial_layer.get_at(previous_extruder_id) : m_config.nozzle_temperature.get_at(previous_extruder_id);
|
old_filament_temp = this->on_first_layer()? m_config.nozzle_temperature_initial_layer.get_at(previous_extruder_id) : m_config.nozzle_temperature.get_at(previous_extruder_id);
|
||||||
if (m_config.purge_in_prime_tower) {
|
if (m_config.purge_in_prime_tower || is_BBL_Printer()) {
|
||||||
wipe_volume = flush_matrix[previous_extruder_id * number_of_extruders + extruder_id];
|
wipe_volume = flush_matrix[previous_extruder_id * number_of_extruders + extruder_id];
|
||||||
wipe_volume *= m_config.flush_multiplier;
|
wipe_volume *= m_config.flush_multiplier;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1890,24 +1890,22 @@ void PerimeterGenerator::process_arachne()
|
|||||||
// extra perimeters for each one
|
// extra perimeters for each one
|
||||||
for (const Surface& surface : this->slices->surfaces) {
|
for (const Surface& surface : this->slices->surfaces) {
|
||||||
coord_t bead_width_0 = ext_perimeter_spacing;
|
coord_t bead_width_0 = ext_perimeter_spacing;
|
||||||
if (config->precise_outer_wall)
|
|
||||||
bead_width_0 = ext_perimeter_width + this->perimeter_flow.scaled_width() - perimeter_spacing;
|
|
||||||
// detect how many perimeters must be generated for this island
|
// detect how many perimeters must be generated for this island
|
||||||
int loop_number = this->config->wall_loops + surface.extra_perimeters - 1; // 0-indexed loops
|
int loop_number = this->config->wall_loops + surface.extra_perimeters - 1; // 0-indexed loops
|
||||||
if (this->layer_id == 0 && this->config->only_one_wall_first_layer)
|
if (this->layer_id == 0 && this->config->only_one_wall_first_layer)
|
||||||
loop_number = 0;
|
loop_number = 0;
|
||||||
// BBS: set the topmost layer to be one wall
|
// Orca: set the topmost layer to be one wall according to the config
|
||||||
if (loop_number > 0 && config->only_one_wall_top && this->upper_slices == nullptr)
|
if (loop_number > 0 && config->only_one_wall_top && this->upper_slices == nullptr)
|
||||||
loop_number = 0;
|
loop_number = 0;
|
||||||
|
// Orca: properly adjust offset for the outer wall if precise_outer_wall is enabled.
|
||||||
ExPolygons last = offset_ex(surface.expolygon.simplify_p(surface_simplify_resolution),
|
ExPolygons last = offset_ex(surface.expolygon.simplify_p(surface_simplify_resolution),
|
||||||
config->precise_outer_wall ? -float(ext_perimeter_width / 2. - bead_width_0 / 2.)
|
config->precise_outer_wall ? -float(ext_perimeter_width - ext_perimeter_spacing )
|
||||||
: -float(ext_perimeter_width / 2. - ext_perimeter_spacing / 2.));
|
: -float(ext_perimeter_width / 2. - ext_perimeter_spacing / 2.));
|
||||||
|
|
||||||
Arachne::WallToolPathsParams input_params = Arachne::make_paths_params(this->layer_id, *object_config, *print_config);
|
Arachne::WallToolPathsParams input_params = Arachne::make_paths_params(this->layer_id, *object_config, *print_config);
|
||||||
coord_t wall_0_inset = 0;
|
coord_t wall_0_inset = 0;
|
||||||
//if (config->precise_outer_wall)
|
if (config->precise_outer_wall)
|
||||||
// wall_0_inset = 0.5 * (ext_perimeter_width + this->perimeter_flow.scaled_width() - ext_perimeter_spacing -
|
wall_0_inset = -coord_t(ext_perimeter_width / 2 - ext_perimeter_spacing / 2);
|
||||||
// perimeter_spacing);
|
|
||||||
|
|
||||||
std::vector<Arachne::VariableWidthLines> out_shell;
|
std::vector<Arachne::VariableWidthLines> out_shell;
|
||||||
ExPolygons top_fills;
|
ExPolygons top_fills;
|
||||||
|
|||||||
@@ -744,12 +744,12 @@ static std::vector<std::string> s_Preset_print_options {
|
|||||||
"independent_support_layer_height",
|
"independent_support_layer_height",
|
||||||
"support_angle", "support_interface_top_layers", "support_interface_bottom_layers",
|
"support_angle", "support_interface_top_layers", "support_interface_bottom_layers",
|
||||||
"support_interface_pattern", "support_interface_spacing", "support_interface_loop_pattern",
|
"support_interface_pattern", "support_interface_spacing", "support_interface_loop_pattern",
|
||||||
"support_top_z_distance", "support_on_build_plate_only","support_critical_regions_only", "bridge_no_support", "thick_bridges", "max_bridge_length", "print_sequence", "support_remove_small_overhang",
|
"support_top_z_distance", "support_on_build_plate_only","support_critical_regions_only", "bridge_no_support", "thick_bridges", "thick_internal_bridges", "max_bridge_length", "print_sequence", "support_remove_small_overhang",
|
||||||
"filename_format", "wall_filament", "support_bottom_z_distance",
|
"filename_format", "wall_filament", "support_bottom_z_distance",
|
||||||
"sparse_infill_filament", "solid_infill_filament", "support_filament", "support_interface_filament",
|
"sparse_infill_filament", "solid_infill_filament", "support_filament", "support_interface_filament",
|
||||||
"ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width",
|
"ooze_prevention", "standby_temperature_delta", "interface_shells", "line_width", "initial_layer_line_width",
|
||||||
"inner_wall_line_width", "outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width",
|
"inner_wall_line_width", "outer_wall_line_width", "sparse_infill_line_width", "internal_solid_infill_line_width",
|
||||||
"top_surface_line_width", "support_line_width", "infill_wall_overlap", "bridge_flow",
|
"top_surface_line_width", "support_line_width", "infill_wall_overlap", "bridge_flow", "internal_bridge_flow",
|
||||||
"elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower",
|
"elefant_foot_compensation", "elefant_foot_compensation_layers", "xy_contour_compensation", "xy_hole_compensation", "resolution", "enable_prime_tower",
|
||||||
"prime_tower_width", "prime_tower_brim_width", "prime_volume",
|
"prime_tower_width", "prime_tower_brim_width", "prime_volume",
|
||||||
"wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits",
|
"wipe_tower_no_sparse_layers", "compatible_printers", "compatible_printers_condition", "inherits",
|
||||||
|
|||||||
@@ -776,6 +776,15 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionFloat(1));
|
def->set_default_value(new ConfigOptionFloat(1));
|
||||||
|
|
||||||
|
def = this->add("internal_bridge_flow", coFloat);
|
||||||
|
def->label = L("Internal bridge flow");
|
||||||
|
def->category = L("Quality");
|
||||||
|
def->tooltip = L("This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill.");
|
||||||
|
def->min = 0;
|
||||||
|
def->max = 2.0;
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->set_default_value(new ConfigOptionFloat(1));
|
||||||
|
|
||||||
def = this->add("top_solid_infill_flow_ratio", coFloat);
|
def = this->add("top_solid_infill_flow_ratio", coFloat);
|
||||||
def->label = L("Top surface flow ratio");
|
def->label = L("Top surface flow ratio");
|
||||||
def->category = L("Advanced");
|
def->category = L("Advanced");
|
||||||
@@ -1156,6 +1165,15 @@ void PrintConfigDef::init_fff_params()
|
|||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->set_default_value(new ConfigOptionBool(false));
|
def->set_default_value(new ConfigOptionBool(false));
|
||||||
|
|
||||||
|
def = this->add("thick_internal_bridges", coBool);
|
||||||
|
def->label = L("Thick internal bridges");
|
||||||
|
def->category = L("Quality");
|
||||||
|
def->tooltip = L("If enabled, thick internal bridges will be used. It's usually recommended to have this feature turned on. However, "
|
||||||
|
"consider turning it off if you are using large nozzles.");
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->set_default_value(new ConfigOptionBool(true));
|
||||||
|
|
||||||
|
|
||||||
def = this->add("max_bridge_length", coFloat);
|
def = this->add("max_bridge_length", coFloat);
|
||||||
def->label = L("Max bridge length");
|
def->label = L("Max bridge length");
|
||||||
def->category = L("Support");
|
def->category = L("Support");
|
||||||
@@ -5702,6 +5720,11 @@ std::map<std::string, std::string> validate(const FullPrintConfig &cfg, bool und
|
|||||||
if (cfg.bridge_flow <= 0) {
|
if (cfg.bridge_flow <= 0) {
|
||||||
error_message.emplace("bridge_flow", L("invalid value ") + std::to_string(cfg.bridge_flow));
|
error_message.emplace("bridge_flow", L("invalid value ") + std::to_string(cfg.bridge_flow));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --bridge-flow-ratio
|
||||||
|
if (cfg.bridge_flow <= 0) {
|
||||||
|
error_message.emplace("internal_bridge_flow", L("invalid value ") + std::to_string(cfg.internal_bridge_flow));
|
||||||
|
}
|
||||||
|
|
||||||
// extruder clearance
|
// extruder clearance
|
||||||
if (cfg.extruder_clearance_radius <= 0) {
|
if (cfg.extruder_clearance_radius <= 0) {
|
||||||
|
|||||||
@@ -725,7 +725,9 @@ PRINT_CONFIG_CLASS_DEFINE(
|
|||||||
((ConfigOptionEnum<SupportMaterialStyle>, support_style))
|
((ConfigOptionEnum<SupportMaterialStyle>, support_style))
|
||||||
// BBS
|
// BBS
|
||||||
//((ConfigOptionBool, independent_support_layer_height))
|
//((ConfigOptionBool, independent_support_layer_height))
|
||||||
|
// Orca internal thick bridge
|
||||||
((ConfigOptionBool, thick_bridges))
|
((ConfigOptionBool, thick_bridges))
|
||||||
|
((ConfigOptionBool, thick_internal_bridges))
|
||||||
// Overhang angle threshold.
|
// Overhang angle threshold.
|
||||||
((ConfigOptionInt, support_threshold_angle))
|
((ConfigOptionInt, support_threshold_angle))
|
||||||
((ConfigOptionFloat, support_object_xy_distance))
|
((ConfigOptionFloat, support_object_xy_distance))
|
||||||
@@ -796,6 +798,7 @@ PRINT_CONFIG_CLASS_DEFINE(
|
|||||||
((ConfigOptionFloat, bottom_shell_thickness))
|
((ConfigOptionFloat, bottom_shell_thickness))
|
||||||
((ConfigOptionFloat, bridge_angle))
|
((ConfigOptionFloat, bridge_angle))
|
||||||
((ConfigOptionFloat, bridge_flow))
|
((ConfigOptionFloat, bridge_flow))
|
||||||
|
((ConfigOptionFloat, internal_bridge_flow))
|
||||||
((ConfigOptionFloat, bridge_speed))
|
((ConfigOptionFloat, bridge_speed))
|
||||||
((ConfigOptionFloatOrPercent, internal_bridge_speed))
|
((ConfigOptionFloatOrPercent, internal_bridge_speed))
|
||||||
((ConfigOptionBool, ensure_vertical_shell_thickness))
|
((ConfigOptionBool, ensure_vertical_shell_thickness))
|
||||||
|
|||||||
@@ -1105,7 +1105,7 @@ bool PrintObject::invalidate_state_by_config_options(
|
|||||||
|| opt_key == "overhang_speed_classic") {
|
|| opt_key == "overhang_speed_classic") {
|
||||||
steps.emplace_back(posPerimeters);
|
steps.emplace_back(posPerimeters);
|
||||||
steps.emplace_back(posSupportMaterial);
|
steps.emplace_back(posSupportMaterial);
|
||||||
} else if (opt_key == "bridge_flow") {
|
} else if (opt_key == "bridge_flow" || opt_key == "internal_bridge_flow") {
|
||||||
if (m_config.support_top_z_distance > 0.) {
|
if (m_config.support_top_z_distance > 0.) {
|
||||||
// Only invalidate due to bridging if bridging is enabled.
|
// Only invalidate due to bridging if bridging is enabled.
|
||||||
// If later "support_top_z_distance" is modified, the complete PrintObject is invalidated anyway.
|
// If later "support_top_z_distance" is modified, the complete PrintObject is invalidated anyway.
|
||||||
|
|||||||
@@ -439,11 +439,8 @@ std::string CalibPressureAdvanceLine::generate_test(double start_pa /*= 0*/, dou
|
|||||||
|
|
||||||
m_length_long = 40 + std::min(w - 120.0, 0.0);
|
m_length_long = 40 + std::min(w - 120.0, 0.0);
|
||||||
|
|
||||||
auto startx = (w - m_length_short * 2 - m_length_long - 20) / 2;
|
auto startx = bed_ext.min.x() + (w - m_length_short * 2 - m_length_long - 20) / 2;
|
||||||
auto starty = (h - count * m_space_y) / 2;
|
auto starty = bed_ext.min.y() + (h - count * m_space_y) / 2;
|
||||||
if (is_delta()) {
|
|
||||||
CalibPressureAdvanceLine::delta_modify_start(startx, starty, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
return print_pa_lines(startx, starty, start_pa, step_pa, count);
|
return print_pa_lines(startx, starty, start_pa, step_pa, count);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Upstream source: https://github.com/memononen/nanosvg/tree/c1f6e209c16b18b46aa9f45d7e619acf42c29726
|
Upstream source: https://github.com/fltk/nanosvg/archive/abcd277ea45e9098bed752cf9c6875b533c0892f.zip
|
||||||
+215
-88
@@ -72,6 +72,7 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
enum NSVGpaintType {
|
enum NSVGpaintType {
|
||||||
|
NSVG_PAINT_UNDEF = -1,
|
||||||
NSVG_PAINT_NONE = 0,
|
NSVG_PAINT_NONE = 0,
|
||||||
NSVG_PAINT_COLOR = 1,
|
NSVG_PAINT_COLOR = 1,
|
||||||
NSVG_PAINT_LINEAR_GRADIENT = 2,
|
NSVG_PAINT_LINEAR_GRADIENT = 2,
|
||||||
@@ -119,7 +120,7 @@ typedef struct NSVGgradient {
|
|||||||
} NSVGgradient;
|
} NSVGgradient;
|
||||||
|
|
||||||
typedef struct NSVGpaint {
|
typedef struct NSVGpaint {
|
||||||
char type;
|
signed char type;
|
||||||
union {
|
union {
|
||||||
unsigned int color;
|
unsigned int color;
|
||||||
NSVGgradient* gradient;
|
NSVGgradient* gradient;
|
||||||
@@ -143,14 +144,17 @@ typedef struct NSVGshape
|
|||||||
float opacity; // Opacity of the shape.
|
float opacity; // Opacity of the shape.
|
||||||
float strokeWidth; // Stroke width (scaled).
|
float strokeWidth; // Stroke width (scaled).
|
||||||
float strokeDashOffset; // Stroke dash offset (scaled).
|
float strokeDashOffset; // Stroke dash offset (scaled).
|
||||||
float strokeDashArray[8]; // Stroke dash array (scaled).
|
float strokeDashArray[8]; // Stroke dash array (scaled).
|
||||||
char strokeDashCount; // Number of dash values in dash array.
|
char strokeDashCount; // Number of dash values in dash array.
|
||||||
char strokeLineJoin; // Stroke join type.
|
char strokeLineJoin; // Stroke join type.
|
||||||
char strokeLineCap; // Stroke cap type.
|
char strokeLineCap; // Stroke cap type.
|
||||||
float miterLimit; // Miter limit
|
float miterLimit; // Miter limit
|
||||||
char fillRule; // Fill rule, see NSVGfillRule.
|
char fillRule; // Fill rule, see NSVGfillRule.
|
||||||
unsigned char flags; // Logical or of NSVG_FLAGS_* flags
|
unsigned char flags; // Logical or of NSVG_FLAGS_* flags
|
||||||
float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy].
|
float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy].
|
||||||
|
char fillGradient[64]; // Optional 'id' of fill gradient
|
||||||
|
char strokeGradient[64]; // Optional 'id' of stroke gradient
|
||||||
|
float xform[6]; // Root transformation for fill/stroke gradient
|
||||||
NSVGpath* paths; // Linked list of paths in the image.
|
NSVGpath* paths; // Linked list of paths in the image.
|
||||||
struct NSVGshape* next; // Pointer to next shape, or NULL if last element.
|
struct NSVGshape* next; // Pointer to next shape, or NULL if last element.
|
||||||
} NSVGshape;
|
} NSVGshape;
|
||||||
@@ -181,16 +185,13 @@ void nsvgDelete(NSVGimage* image);
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // NANOSVG_H
|
|
||||||
|
|
||||||
#ifdef NANOSVG_IMPLEMENTATION
|
#ifdef NANOSVG_IMPLEMENTATION
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include <boost/algorithm/string/replace.hpp>
|
|
||||||
|
|
||||||
#define NSVG_PI (3.14159265358979323846264338327f)
|
#define NSVG_PI (3.14159265358979323846264338327f)
|
||||||
#define NSVG_KAPPA90 (0.5522847493f) // Length proportional to radius of a cubic bezier handle for 90deg arcs.
|
#define NSVG_KAPPA90 (0.5522847493f) // Length proportional to radius of a cubic bezier handle for 90deg arcs.
|
||||||
|
|
||||||
@@ -227,11 +228,6 @@ static int nsvg__isdigit(char c)
|
|||||||
return c >= '0' && c <= '9';
|
return c >= '0' && c <= '9';
|
||||||
}
|
}
|
||||||
|
|
||||||
static int nsvg__isnum(char c)
|
|
||||||
{
|
|
||||||
return strchr("0123456789+-.eE", c) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; }
|
static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; }
|
||||||
static NSVG_INLINE float nsvg__maxf(float a, float b) { return a > b ? a : b; }
|
static NSVG_INLINE float nsvg__maxf(float a, float b) { return a > b ? a : b; }
|
||||||
|
|
||||||
@@ -402,7 +398,7 @@ typedef struct NSVGgradientData
|
|||||||
{
|
{
|
||||||
char id[64];
|
char id[64];
|
||||||
char ref[64];
|
char ref[64];
|
||||||
char type;
|
signed char type;
|
||||||
union {
|
union {
|
||||||
NSVGlinearData linear;
|
NSVGlinearData linear;
|
||||||
NSVGradialData radial;
|
NSVGradialData radial;
|
||||||
@@ -618,7 +614,7 @@ static void nsvg__curveBounds(float* bounds, float* curve)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSVGparser* nsvg__createParser()
|
static NSVGparser* nsvg__createParser(void)
|
||||||
{
|
{
|
||||||
NSVGparser* p;
|
NSVGparser* p;
|
||||||
p = (NSVGparser*)malloc(sizeof(NSVGparser));
|
p = (NSVGparser*)malloc(sizeof(NSVGparser));
|
||||||
@@ -738,9 +734,11 @@ static void nsvg__lineTo(NSVGparser* p, float x, float y)
|
|||||||
|
|
||||||
static void nsvg__cubicBezTo(NSVGparser* p, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y)
|
static void nsvg__cubicBezTo(NSVGparser* p, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y)
|
||||||
{
|
{
|
||||||
nsvg__addPoint(p, cpx1, cpy1);
|
if (p->npts > 0) {
|
||||||
nsvg__addPoint(p, cpx2, cpy2);
|
nsvg__addPoint(p, cpx1, cpy1);
|
||||||
nsvg__addPoint(p, x, y);
|
nsvg__addPoint(p, cpx2, cpy2);
|
||||||
|
nsvg__addPoint(p, x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSVGattrib* nsvg__getAttr(NSVGparser* p)
|
static NSVGattrib* nsvg__getAttr(NSVGparser* p)
|
||||||
@@ -810,7 +808,9 @@ static float nsvg__convertToPixels(NSVGparser* p, NSVGcoordinate c, float orig,
|
|||||||
static NSVGgradientData* nsvg__findGradientData(NSVGparser* p, const char* id)
|
static NSVGgradientData* nsvg__findGradientData(NSVGparser* p, const char* id)
|
||||||
{
|
{
|
||||||
NSVGgradientData* grad = p->gradients;
|
NSVGgradientData* grad = p->gradients;
|
||||||
while (grad) {
|
if (id == NULL || *id == '\0')
|
||||||
|
return NULL;
|
||||||
|
while (grad != NULL) {
|
||||||
if (strcmp(grad->id, id) == 0)
|
if (strcmp(grad->id, id) == 0)
|
||||||
return grad;
|
return grad;
|
||||||
grad = grad->next;
|
grad = grad->next;
|
||||||
@@ -818,28 +818,34 @@ static NSVGgradientData* nsvg__findGradientData(NSVGparser* p, const char* id)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NSVGgradient* nsvg__createGradient(NSVGparser* p, const char* id, const float* localBounds, char* paintType)
|
static NSVGgradient* nsvg__createGradient(NSVGparser* p, const char* id, const float* localBounds, float *xform, signed char* paintType)
|
||||||
{
|
{
|
||||||
NSVGattrib* attr = nsvg__getAttr(p);
|
|
||||||
NSVGgradientData* data = NULL;
|
NSVGgradientData* data = NULL;
|
||||||
NSVGgradientData* ref = NULL;
|
NSVGgradientData* ref = NULL;
|
||||||
NSVGgradientStop* stops = NULL;
|
NSVGgradientStop* stops = NULL;
|
||||||
NSVGgradient* grad;
|
NSVGgradient* grad;
|
||||||
float ox, oy, sw, sh, sl;
|
float ox, oy, sw, sh, sl;
|
||||||
int nstops = 0;
|
int nstops = 0;
|
||||||
|
int refIter;
|
||||||
|
|
||||||
data = nsvg__findGradientData(p, id);
|
data = nsvg__findGradientData(p, id);
|
||||||
if (data == NULL) return NULL;
|
if (data == NULL) return NULL;
|
||||||
|
|
||||||
// TODO: use ref to fill in all unset values too.
|
// TODO: use ref to fill in all unset values too.
|
||||||
ref = data;
|
ref = data;
|
||||||
|
refIter = 0;
|
||||||
while (ref != NULL) {
|
while (ref != NULL) {
|
||||||
|
NSVGgradientData* nextRef = NULL;
|
||||||
if (stops == NULL && ref->stops != NULL) {
|
if (stops == NULL && ref->stops != NULL) {
|
||||||
stops = ref->stops;
|
stops = ref->stops;
|
||||||
nstops = ref->nstops;
|
nstops = ref->nstops;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ref = nsvg__findGradientData(p, ref->ref);
|
nextRef = nsvg__findGradientData(p, ref->ref);
|
||||||
|
if (nextRef == ref) break; // prevent infite loops on malformed data
|
||||||
|
ref = nextRef;
|
||||||
|
refIter++;
|
||||||
|
if (refIter > 32) break; // prevent infite loops on malformed data
|
||||||
}
|
}
|
||||||
if (stops == NULL) return NULL;
|
if (stops == NULL) return NULL;
|
||||||
|
|
||||||
@@ -888,7 +894,7 @@ static NSVGgradient* nsvg__createGradient(NSVGparser* p, const char* id, const f
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsvg__xformMultiply(grad->xform, data->xform);
|
nsvg__xformMultiply(grad->xform, data->xform);
|
||||||
nsvg__xformMultiply(grad->xform, attr->xform);
|
nsvg__xformMultiply(grad->xform, xform);
|
||||||
|
|
||||||
grad->spread = data->spread;
|
grad->spread = data->spread;
|
||||||
memcpy(grad->stops, stops, nstops*sizeof(NSVGgradientStop));
|
memcpy(grad->stops, stops, nstops*sizeof(NSVGgradientStop));
|
||||||
@@ -952,6 +958,9 @@ static void nsvg__addShape(NSVGparser* p)
|
|||||||
memset(shape, 0, sizeof(NSVGshape));
|
memset(shape, 0, sizeof(NSVGshape));
|
||||||
|
|
||||||
memcpy(shape->id, attr->id, sizeof shape->id);
|
memcpy(shape->id, attr->id, sizeof shape->id);
|
||||||
|
memcpy(shape->fillGradient, attr->fillGradient, sizeof shape->fillGradient);
|
||||||
|
memcpy(shape->strokeGradient, attr->strokeGradient, sizeof shape->strokeGradient);
|
||||||
|
memcpy(shape->xform, attr->xform, sizeof shape->xform);
|
||||||
scale = nsvg__getAverageScale(attr->xform);
|
scale = nsvg__getAverageScale(attr->xform);
|
||||||
shape->strokeWidth = attr->strokeWidth * scale;
|
shape->strokeWidth = attr->strokeWidth * scale;
|
||||||
shape->strokeDashOffset = attr->strokeDashOffset * scale;
|
shape->strokeDashOffset = attr->strokeDashOffset * scale;
|
||||||
@@ -987,13 +996,7 @@ static void nsvg__addShape(NSVGparser* p)
|
|||||||
shape->fill.color = attr->fillColor;
|
shape->fill.color = attr->fillColor;
|
||||||
shape->fill.color |= (unsigned int)(attr->fillOpacity*255) << 24;
|
shape->fill.color |= (unsigned int)(attr->fillOpacity*255) << 24;
|
||||||
} else if (attr->hasFill == 2) {
|
} else if (attr->hasFill == 2) {
|
||||||
float inv[6], localBounds[4];
|
shape->fill.type = NSVG_PAINT_UNDEF;
|
||||||
nsvg__xformInverse(inv, attr->xform);
|
|
||||||
nsvg__getLocalBounds(localBounds, shape, inv);
|
|
||||||
shape->fill.gradient = nsvg__createGradient(p, attr->fillGradient, localBounds, &shape->fill.type);
|
|
||||||
if (shape->fill.gradient == NULL) {
|
|
||||||
shape->fill.type = NSVG_PAINT_NONE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set stroke
|
// Set stroke
|
||||||
@@ -1004,12 +1007,7 @@ static void nsvg__addShape(NSVGparser* p)
|
|||||||
shape->stroke.color = attr->strokeColor;
|
shape->stroke.color = attr->strokeColor;
|
||||||
shape->stroke.color |= (unsigned int)(attr->strokeOpacity*255) << 24;
|
shape->stroke.color |= (unsigned int)(attr->strokeOpacity*255) << 24;
|
||||||
} else if (attr->hasStroke == 2) {
|
} else if (attr->hasStroke == 2) {
|
||||||
float inv[6], localBounds[4];
|
shape->stroke.type = NSVG_PAINT_UNDEF;
|
||||||
nsvg__xformInverse(inv, attr->xform);
|
|
||||||
nsvg__getLocalBounds(localBounds, shape, inv);
|
|
||||||
shape->stroke.gradient = nsvg__createGradient(p, attr->strokeGradient, localBounds, &shape->stroke.type);
|
|
||||||
if (shape->stroke.gradient == NULL)
|
|
||||||
shape->stroke.type = NSVG_PAINT_NONE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set flags
|
// Set flags
|
||||||
@@ -1042,6 +1040,10 @@ static void nsvg__addPath(NSVGparser* p, char closed)
|
|||||||
if (closed)
|
if (closed)
|
||||||
nsvg__lineTo(p, p->pts[0], p->pts[1]);
|
nsvg__lineTo(p, p->pts[0], p->pts[1]);
|
||||||
|
|
||||||
|
// Expect 1 + N*3 points (N = number of cubic bezier segments).
|
||||||
|
if ((p->npts % 3) != 1)
|
||||||
|
return;
|
||||||
|
|
||||||
path = (NSVGpath*)malloc(sizeof(NSVGpath));
|
path = (NSVGpath*)malloc(sizeof(NSVGpath));
|
||||||
if (path == NULL) goto error;
|
if (path == NULL) goto error;
|
||||||
memset(path, 0, sizeof(NSVGpath));
|
memset(path, 0, sizeof(NSVGpath));
|
||||||
@@ -1090,7 +1092,7 @@ static double nsvg__atof(const char* s)
|
|||||||
char* cur = (char*)s;
|
char* cur = (char*)s;
|
||||||
char* end = NULL;
|
char* end = NULL;
|
||||||
double res = 0.0, sign = 1.0;
|
double res = 0.0, sign = 1.0;
|
||||||
long long intPart = 0, fracPart = 0;
|
double intPart = 0.0, fracPart = 0.0;
|
||||||
char hasIntPart = 0, hasFracPart = 0;
|
char hasIntPart = 0, hasFracPart = 0;
|
||||||
|
|
||||||
// Parse optional sign
|
// Parse optional sign
|
||||||
@@ -1104,9 +1106,13 @@ static double nsvg__atof(const char* s)
|
|||||||
// Parse integer part
|
// Parse integer part
|
||||||
if (nsvg__isdigit(*cur)) {
|
if (nsvg__isdigit(*cur)) {
|
||||||
// Parse digit sequence
|
// Parse digit sequence
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
intPart = (double)_strtoi64(cur, &end, 10);
|
||||||
|
#else
|
||||||
intPart = (double)strtoll(cur, &end, 10);
|
intPart = (double)strtoll(cur, &end, 10);
|
||||||
|
#endif
|
||||||
if (cur != end) {
|
if (cur != end) {
|
||||||
res = (double)intPart;
|
res = intPart;
|
||||||
hasIntPart = 1;
|
hasIntPart = 1;
|
||||||
cur = end;
|
cur = end;
|
||||||
}
|
}
|
||||||
@@ -1117,9 +1123,13 @@ static double nsvg__atof(const char* s)
|
|||||||
cur++; // Skip '.'
|
cur++; // Skip '.'
|
||||||
if (nsvg__isdigit(*cur)) {
|
if (nsvg__isdigit(*cur)) {
|
||||||
// Parse digit sequence
|
// Parse digit sequence
|
||||||
fracPart = strtoll(cur, &end, 10);
|
#ifdef _MSC_VER
|
||||||
|
fracPart = (double)_strtoi64(cur, &end, 10);
|
||||||
|
#else
|
||||||
|
fracPart = (double)strtoll(cur, &end, 10);
|
||||||
|
#endif
|
||||||
if (cur != end) {
|
if (cur != end) {
|
||||||
res += (double)fracPart / pow(10.0, (double)(end - cur));
|
res += fracPart / pow(10.0, (double)(end - cur));
|
||||||
hasFracPart = 1;
|
hasFracPart = 1;
|
||||||
cur = end;
|
cur = end;
|
||||||
}
|
}
|
||||||
@@ -1132,11 +1142,11 @@ static double nsvg__atof(const char* s)
|
|||||||
|
|
||||||
// Parse optional exponent
|
// Parse optional exponent
|
||||||
if (*cur == 'e' || *cur == 'E') {
|
if (*cur == 'e' || *cur == 'E') {
|
||||||
int expPart = 0;
|
double expPart = 0.0;
|
||||||
cur++; // skip 'E'
|
cur++; // skip 'E'
|
||||||
expPart = strtol(cur, &end, 10); // Parse digit sequence with sign
|
expPart = (double)strtol(cur, &end, 10); // Parse digit sequence with sign
|
||||||
if (cur != end) {
|
if (cur != end) {
|
||||||
res *= pow(10.0, (double)expPart);
|
res *= pow(10.0, expPart);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1170,7 +1180,7 @@ static const char* nsvg__parseNumber(const char* s, char* it, const int size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// exponent
|
// exponent
|
||||||
if (*s == 'e' || *s == 'E') {
|
if ((*s == 'e' || *s == 'E') && (s[1] != 'm' && s[1] != 'x')) {
|
||||||
if (i < last) it[i++] = *s;
|
if (i < last) it[i++] = *s;
|
||||||
s++;
|
s++;
|
||||||
if (*s == '-' || *s == '+') {
|
if (*s == '-' || *s == '+') {
|
||||||
@@ -1187,6 +1197,19 @@ static const char* nsvg__parseNumber(const char* s, char* it, const int size)
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* nsvg__getNextPathItemWhenArcFlag(const char* s, char* it)
|
||||||
|
{
|
||||||
|
it[0] = '\0';
|
||||||
|
while (*s && (nsvg__isspace(*s) || *s == ',')) s++;
|
||||||
|
if (!*s) return s;
|
||||||
|
if (*s == '0' || *s == '1') {
|
||||||
|
it[0] = *s++;
|
||||||
|
it[1] = '\0';
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* nsvg__getNextPathItem(const char* s, char* it)
|
static const char* nsvg__getNextPathItem(const char* s, char* it)
|
||||||
{
|
{
|
||||||
it[0] = '\0';
|
it[0] = '\0';
|
||||||
@@ -1207,35 +1230,66 @@ static const char* nsvg__getNextPathItem(const char* s, char* it)
|
|||||||
|
|
||||||
static unsigned int nsvg__parseColorHex(const char* str)
|
static unsigned int nsvg__parseColorHex(const char* str)
|
||||||
{
|
{
|
||||||
unsigned int c = 0, r = 0, g = 0, b = 0;
|
unsigned int r=0, g=0, b=0;
|
||||||
int n = 0;
|
if (sscanf(str, "#%2x%2x%2x", &r, &g, &b) == 3 ) // 2 digit hex
|
||||||
str++; // skip #
|
return NSVG_RGB(r, g, b);
|
||||||
// Calculate number of characters.
|
if (sscanf(str, "#%1x%1x%1x", &r, &g, &b) == 3 ) // 1 digit hex, e.g. #abc -> 0xccbbaa
|
||||||
while(str[n] && !nsvg__isspace(str[n]))
|
return NSVG_RGB(r*17, g*17, b*17); // same effect as (r<<4|r), (g<<4|g), ..
|
||||||
n++;
|
return NSVG_RGB(128, 128, 128);
|
||||||
if (n == 6) {
|
|
||||||
sscanf(str, "%x", &c);
|
|
||||||
} else if (n == 3) {
|
|
||||||
sscanf(str, "%x", &c);
|
|
||||||
c = (c&0xf) | ((c&0xf0) << 4) | ((c&0xf00) << 8);
|
|
||||||
c |= c<<4;
|
|
||||||
}
|
|
||||||
r = (c >> 16) & 0xff;
|
|
||||||
g = (c >> 8) & 0xff;
|
|
||||||
b = c & 0xff;
|
|
||||||
return NSVG_RGB(r,g,b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parse rgb color. The pointer 'str' must point at "rgb(" (4+ characters).
|
||||||
|
// This function returns gray (rgb(128, 128, 128) == '#808080') on parse errors
|
||||||
|
// for backwards compatibility. Note: other image viewers return black instead.
|
||||||
|
|
||||||
static unsigned int nsvg__parseColorRGB(const char* str)
|
static unsigned int nsvg__parseColorRGB(const char* str)
|
||||||
{
|
{
|
||||||
int r = -1, g = -1, b = -1;
|
int i;
|
||||||
char s1[32]="", s2[32]="";
|
unsigned int rgbi[3];
|
||||||
sscanf(str + 4, "%d%[%%, \t]%d%[%%, \t]%d", &r, s1, &g, s2, &b);
|
float rgbf[3];
|
||||||
if (strchr(s1, '%')) {
|
// try decimal integers first
|
||||||
return NSVG_RGB((r*255)/100,(g*255)/100,(b*255)/100);
|
if (sscanf(str, "rgb(%u, %u, %u)", &rgbi[0], &rgbi[1], &rgbi[2]) != 3) {
|
||||||
} else {
|
// integers failed, try percent values (float, locale independent)
|
||||||
return NSVG_RGB(r,g,b);
|
const char delimiter[3] = {',', ',', ')'};
|
||||||
|
str += 4; // skip "rgb("
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
while (*str && (nsvg__isspace(*str))) str++; // skip leading spaces
|
||||||
|
if (*str == '+') str++; // skip '+' (don't allow '-')
|
||||||
|
if (!*str) break;
|
||||||
|
rgbf[i] = nsvg__atof(str);
|
||||||
|
|
||||||
|
// Note 1: it would be great if nsvg__atof() returned how many
|
||||||
|
// bytes it consumed but it doesn't. We need to skip the number,
|
||||||
|
// the '%' character, spaces, and the delimiter ',' or ')'.
|
||||||
|
|
||||||
|
// Note 2: The following code does not allow values like "33.%",
|
||||||
|
// i.e. a decimal point w/o fractional part, but this is consistent
|
||||||
|
// with other image viewers, e.g. firefox, chrome, eog, gimp.
|
||||||
|
|
||||||
|
while (*str && nsvg__isdigit(*str)) str++; // skip integer part
|
||||||
|
if (*str == '.') {
|
||||||
|
str++;
|
||||||
|
if (!nsvg__isdigit(*str)) break; // error: no digit after '.'
|
||||||
|
while (*str && nsvg__isdigit(*str)) str++; // skip fractional part
|
||||||
|
}
|
||||||
|
if (*str == '%') str++; else break;
|
||||||
|
while (nsvg__isspace(*str)) str++;
|
||||||
|
if (*str == delimiter[i]) str++;
|
||||||
|
else break;
|
||||||
|
}
|
||||||
|
if (i == 3) {
|
||||||
|
rgbi[0] = roundf(rgbf[0] * 2.55f);
|
||||||
|
rgbi[1] = roundf(rgbf[1] * 2.55f);
|
||||||
|
rgbi[2] = roundf(rgbf[2] * 2.55f);
|
||||||
|
} else {
|
||||||
|
rgbi[0] = rgbi[1] = rgbi[2] = 128;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// clip values as the CSS spec requires
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
if (rgbi[i] > 255) rgbi[i] = 255;
|
||||||
|
}
|
||||||
|
return NSVG_RGB(rgbi[0], rgbi[1], rgbi[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct NSVGNamedColor {
|
typedef struct NSVGNamedColor {
|
||||||
@@ -1460,6 +1514,15 @@ static int nsvg__parseUnits(const char* units)
|
|||||||
return NSVG_UNITS_USER;
|
return NSVG_UNITS_USER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int nsvg__isCoordinate(const char* s)
|
||||||
|
{
|
||||||
|
// optional sign
|
||||||
|
if (*s == '-' || *s == '+')
|
||||||
|
s++;
|
||||||
|
// must have at least one digit, or start by a dot
|
||||||
|
return (nsvg__isdigit(*s) || *s == '.');
|
||||||
|
}
|
||||||
|
|
||||||
static NSVGcoordinate nsvg__parseCoordinateRaw(const char* str)
|
static NSVGcoordinate nsvg__parseCoordinateRaw(const char* str)
|
||||||
{
|
{
|
||||||
NSVGcoordinate coord = {0, NSVG_UNITS_USER};
|
NSVGcoordinate coord = {0, NSVG_UNITS_USER};
|
||||||
@@ -1599,25 +1662,32 @@ static int nsvg__parseRotate(float* xform, const char* str)
|
|||||||
static void nsvg__parseTransform(float* xform, const char* str)
|
static void nsvg__parseTransform(float* xform, const char* str)
|
||||||
{
|
{
|
||||||
float t[6];
|
float t[6];
|
||||||
|
int len;
|
||||||
nsvg__xformIdentity(xform);
|
nsvg__xformIdentity(xform);
|
||||||
while (*str)
|
while (*str)
|
||||||
{
|
{
|
||||||
if (strncmp(str, "matrix", 6) == 0)
|
if (strncmp(str, "matrix", 6) == 0)
|
||||||
str += nsvg__parseMatrix(t, str);
|
len = nsvg__parseMatrix(t, str);
|
||||||
else if (strncmp(str, "translate", 9) == 0)
|
else if (strncmp(str, "translate", 9) == 0)
|
||||||
str += nsvg__parseTranslate(t, str);
|
len = nsvg__parseTranslate(t, str);
|
||||||
else if (strncmp(str, "scale", 5) == 0)
|
else if (strncmp(str, "scale", 5) == 0)
|
||||||
str += nsvg__parseScale(t, str);
|
len = nsvg__parseScale(t, str);
|
||||||
else if (strncmp(str, "rotate", 6) == 0)
|
else if (strncmp(str, "rotate", 6) == 0)
|
||||||
str += nsvg__parseRotate(t, str);
|
len = nsvg__parseRotate(t, str);
|
||||||
else if (strncmp(str, "skewX", 5) == 0)
|
else if (strncmp(str, "skewX", 5) == 0)
|
||||||
str += nsvg__parseSkewX(t, str);
|
len = nsvg__parseSkewX(t, str);
|
||||||
else if (strncmp(str, "skewY", 5) == 0)
|
else if (strncmp(str, "skewY", 5) == 0)
|
||||||
str += nsvg__parseSkewY(t, str);
|
len = nsvg__parseSkewY(t, str);
|
||||||
else{
|
else{
|
||||||
++str;
|
++str;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (len != 0) {
|
||||||
|
str += len;
|
||||||
|
} else {
|
||||||
|
++str;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
nsvg__xformPremultiply(xform, t);
|
nsvg__xformPremultiply(xform, t);
|
||||||
}
|
}
|
||||||
@@ -1627,9 +1697,9 @@ static void nsvg__parseUrl(char* id, const char* str)
|
|||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
str += 4; // "url(";
|
str += 4; // "url(";
|
||||||
if (*str == '#')
|
if (*str && *str == '#')
|
||||||
str++;
|
str++;
|
||||||
while (i < 63 && *str != ')') {
|
while (i < 63 && *str && *str != ')') {
|
||||||
id[i] = *str++;
|
id[i] = *str++;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@@ -1878,8 +1948,11 @@ static int nsvg__getArgsPerElement(char cmd)
|
|||||||
case 'a':
|
case 'a':
|
||||||
case 'A':
|
case 'A':
|
||||||
return 7;
|
return 7;
|
||||||
|
case 'z':
|
||||||
|
case 'Z':
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nsvg__pathMoveTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel)
|
static void nsvg__pathMoveTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel)
|
||||||
@@ -2160,7 +2233,12 @@ static void nsvg__pathArcTo(NSVGparser* p, float* cpx, float* cpy, float* args,
|
|||||||
// The loop assumes an iteration per end point (including start and end), this +1.
|
// The loop assumes an iteration per end point (including start and end), this +1.
|
||||||
ndivs = (int)(fabsf(da) / (NSVG_PI*0.5f) + 1.0f);
|
ndivs = (int)(fabsf(da) / (NSVG_PI*0.5f) + 1.0f);
|
||||||
hda = (da / (float)ndivs) / 2.0f;
|
hda = (da / (float)ndivs) / 2.0f;
|
||||||
kappa = fabsf(4.0f / 3.0f * (1.0f - cosf(hda)) / sinf(hda));
|
// Fix for ticket #179: division by 0: avoid cotangens around 0 (infinite)
|
||||||
|
if ((hda < 1e-3f) && (hda > -1e-3f))
|
||||||
|
hda *= 0.5f;
|
||||||
|
else
|
||||||
|
hda = (1.0f - cosf(hda)) / sinf(hda);
|
||||||
|
kappa = fabsf(4.0f / 3.0f * hda);
|
||||||
if (da < 0.0f)
|
if (da < 0.0f)
|
||||||
kappa = -kappa;
|
kappa = -kappa;
|
||||||
|
|
||||||
@@ -2189,6 +2267,7 @@ static void nsvg__parsePath(NSVGparser* p, const char** attr)
|
|||||||
float args[10];
|
float args[10];
|
||||||
int nargs;
|
int nargs;
|
||||||
int rargs = 0;
|
int rargs = 0;
|
||||||
|
char initPoint;
|
||||||
float cpx, cpy, cpx2, cpy2;
|
float cpx, cpy, cpx2, cpy2;
|
||||||
const char* tmp[4];
|
const char* tmp[4];
|
||||||
char closedFlag;
|
char closedFlag;
|
||||||
@@ -2211,13 +2290,18 @@ static void nsvg__parsePath(NSVGparser* p, const char** attr)
|
|||||||
nsvg__resetPath(p);
|
nsvg__resetPath(p);
|
||||||
cpx = 0; cpy = 0;
|
cpx = 0; cpy = 0;
|
||||||
cpx2 = 0; cpy2 = 0;
|
cpx2 = 0; cpy2 = 0;
|
||||||
|
initPoint = 0;
|
||||||
closedFlag = 0;
|
closedFlag = 0;
|
||||||
nargs = 0;
|
nargs = 0;
|
||||||
|
|
||||||
while (*s) {
|
while (*s) {
|
||||||
s = nsvg__getNextPathItem(s, item);
|
item[0] = '\0';
|
||||||
|
if ((cmd == 'A' || cmd == 'a') && (nargs == 3 || nargs == 4))
|
||||||
|
s = nsvg__getNextPathItemWhenArcFlag(s, item);
|
||||||
|
if (!*item)
|
||||||
|
s = nsvg__getNextPathItem(s, item);
|
||||||
if (!*item) break;
|
if (!*item) break;
|
||||||
if (nsvg__isnum(item[0])) {
|
if (cmd != '\0' && nsvg__isCoordinate(item)) {
|
||||||
if (nargs < 10)
|
if (nargs < 10)
|
||||||
args[nargs++] = (float)nsvg__atof(item);
|
args[nargs++] = (float)nsvg__atof(item);
|
||||||
if (nargs >= rargs) {
|
if (nargs >= rargs) {
|
||||||
@@ -2230,6 +2314,7 @@ static void nsvg__parsePath(NSVGparser* p, const char** attr)
|
|||||||
cmd = (cmd == 'm') ? 'l' : 'L';
|
cmd = (cmd == 'm') ? 'l' : 'L';
|
||||||
rargs = nsvg__getArgsPerElement(cmd);
|
rargs = nsvg__getArgsPerElement(cmd);
|
||||||
cpx2 = cpx; cpy2 = cpy;
|
cpx2 = cpx; cpy2 = cpy;
|
||||||
|
initPoint = 1;
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
case 'L':
|
case 'L':
|
||||||
@@ -2279,7 +2364,6 @@ static void nsvg__parsePath(NSVGparser* p, const char** attr)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cmd = item[0];
|
cmd = item[0];
|
||||||
rargs = nsvg__getArgsPerElement(cmd);
|
|
||||||
if (cmd == 'M' || cmd == 'm') {
|
if (cmd == 'M' || cmd == 'm') {
|
||||||
// Commit path.
|
// Commit path.
|
||||||
if (p->npts > 0)
|
if (p->npts > 0)
|
||||||
@@ -2288,7 +2372,11 @@ static void nsvg__parsePath(NSVGparser* p, const char** attr)
|
|||||||
nsvg__resetPath(p);
|
nsvg__resetPath(p);
|
||||||
closedFlag = 0;
|
closedFlag = 0;
|
||||||
nargs = 0;
|
nargs = 0;
|
||||||
} else if (cmd == 'Z' || cmd == 'z') {
|
} else if (initPoint == 0) {
|
||||||
|
// Do not allow other commands until initial point has been set (moveTo called once).
|
||||||
|
cmd = '\0';
|
||||||
|
}
|
||||||
|
if (cmd == 'Z' || cmd == 'z') {
|
||||||
closedFlag = 1;
|
closedFlag = 1;
|
||||||
// Commit path.
|
// Commit path.
|
||||||
if (p->npts > 0) {
|
if (p->npts > 0) {
|
||||||
@@ -2304,6 +2392,12 @@ static void nsvg__parsePath(NSVGparser* p, const char** attr)
|
|||||||
closedFlag = 0;
|
closedFlag = 0;
|
||||||
nargs = 0;
|
nargs = 0;
|
||||||
}
|
}
|
||||||
|
rargs = nsvg__getArgsPerElement(cmd);
|
||||||
|
if (rargs == -1) {
|
||||||
|
// Command not recognized
|
||||||
|
cmd = '\0';
|
||||||
|
rargs = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Commit path.
|
// Commit path.
|
||||||
@@ -2550,7 +2644,7 @@ static void nsvg__parseSVG(NSVGparser* p, const char** attr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nsvg__parseGradient(NSVGparser* p, const char** attr, char type)
|
static void nsvg__parseGradient(NSVGparser* p, const char** attr, signed char type)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
NSVGgradientData* grad = (NSVGgradientData*)malloc(sizeof(NSVGgradientData));
|
NSVGgradientData* grad = (NSVGgradientData*)malloc(sizeof(NSVGgradientData));
|
||||||
@@ -2875,6 +2969,36 @@ static void nsvg__scaleToViewbox(NSVGparser* p, const char* units)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nsvg__createGradients(NSVGparser* p)
|
||||||
|
{
|
||||||
|
NSVGshape* shape;
|
||||||
|
|
||||||
|
for (shape = p->image->shapes; shape != NULL; shape = shape->next) {
|
||||||
|
if (shape->fill.type == NSVG_PAINT_UNDEF) {
|
||||||
|
if (shape->fillGradient[0] != '\0') {
|
||||||
|
float inv[6], localBounds[4];
|
||||||
|
nsvg__xformInverse(inv, shape->xform);
|
||||||
|
nsvg__getLocalBounds(localBounds, shape, inv);
|
||||||
|
shape->fill.gradient = nsvg__createGradient(p, shape->fillGradient, localBounds, shape->xform, &shape->fill.type);
|
||||||
|
}
|
||||||
|
if (shape->fill.type == NSVG_PAINT_UNDEF) {
|
||||||
|
shape->fill.type = NSVG_PAINT_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (shape->stroke.type == NSVG_PAINT_UNDEF) {
|
||||||
|
if (shape->strokeGradient[0] != '\0') {
|
||||||
|
float inv[6], localBounds[4];
|
||||||
|
nsvg__xformInverse(inv, shape->xform);
|
||||||
|
nsvg__getLocalBounds(localBounds, shape, inv);
|
||||||
|
shape->stroke.gradient = nsvg__createGradient(p, shape->strokeGradient, localBounds, shape->xform, &shape->stroke.type);
|
||||||
|
}
|
||||||
|
if (shape->stroke.type == NSVG_PAINT_UNDEF) {
|
||||||
|
shape->stroke.type = NSVG_PAINT_NONE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NSVGimage* nsvgParse(char* input, const char* units, float dpi)
|
NSVGimage* nsvgParse(char* input, const char* units, float dpi)
|
||||||
{
|
{
|
||||||
NSVGparser* p;
|
NSVGparser* p;
|
||||||
@@ -2888,6 +3012,9 @@ NSVGimage* nsvgParse(char* input, const char* units, float dpi)
|
|||||||
|
|
||||||
nsvg__parseXML(input, nsvg__startElement, nsvg__endElement, nsvg__content, p);
|
nsvg__parseXML(input, nsvg__startElement, nsvg__endElement, nsvg__content, p);
|
||||||
|
|
||||||
|
// Create gradients after all definitions have been parsed
|
||||||
|
nsvg__createGradients(p);
|
||||||
|
|
||||||
// Scale to viewBox
|
// Scale to viewBox
|
||||||
nsvg__scaleToViewbox(p, units);
|
nsvg__scaleToViewbox(p, units);
|
||||||
|
|
||||||
@@ -2899,8 +3026,6 @@ NSVGimage* nsvgParse(char* input, const char* units, float dpi)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <boost/nowide/cstdio.hpp>
|
|
||||||
|
|
||||||
NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi)
|
NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi)
|
||||||
{
|
{
|
||||||
FILE* fp = NULL;
|
FILE* fp = NULL;
|
||||||
@@ -2908,8 +3033,8 @@ NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi)
|
|||||||
char* data = NULL;
|
char* data = NULL;
|
||||||
NSVGimage* image = NULL;
|
NSVGimage* image = NULL;
|
||||||
|
|
||||||
fp = boost::nowide::fopen(filename, "rb");
|
fp = fopen(filename, "rb");
|
||||||
if (!fp) goto error;
|
if (!fp) goto error;
|
||||||
fseek(fp, 0, SEEK_END);
|
fseek(fp, 0, SEEK_END);
|
||||||
size = ftell(fp);
|
size = ftell(fp);
|
||||||
fseek(fp, 0, SEEK_SET);
|
fseek(fp, 0, SEEK_SET);
|
||||||
@@ -2918,9 +3043,9 @@ NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi)
|
|||||||
if (fread(data, 1, size, fp) != size) goto error;
|
if (fread(data, 1, size, fp) != size) goto error;
|
||||||
data[size] = '\0'; // Must be null terminated.
|
data[size] = '\0'; // Must be null terminated.
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
image = nsvgParse(data, units, dpi);
|
image = nsvgParse(data, units, dpi);
|
||||||
free(data);
|
free(data);
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
@@ -2976,4 +3101,6 @@ void nsvgDelete(NSVGimage* image)
|
|||||||
free(image);
|
free(image);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // NANOSVG_IMPLEMENTATION
|
||||||
|
|
||||||
|
#endif // NANOSVG_H
|
||||||
|
|||||||
+66
-36
@@ -22,9 +22,17 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Modified by FLTK to support non-square X,Y axes scaling.
|
||||||
|
*
|
||||||
|
* Added: nsvgRasterizeXY()
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef NANOSVGRAST_H
|
#ifndef NANOSVGRAST_H
|
||||||
#define NANOSVGRAST_H
|
#define NANOSVGRAST_H
|
||||||
|
|
||||||
|
#include "nanosvg.h"
|
||||||
|
|
||||||
#ifndef NANOSVGRAST_CPLUSPLUS
|
#ifndef NANOSVGRAST_CPLUSPLUS
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -44,16 +52,19 @@ typedef struct NSVGrasterizer NSVGrasterizer;
|
|||||||
unsigned char* img = malloc(w*h*4);
|
unsigned char* img = malloc(w*h*4);
|
||||||
// Rasterize
|
// Rasterize
|
||||||
nsvgRasterize(rast, image, 0,0,1, img, w, h, w*4);
|
nsvgRasterize(rast, image, 0,0,1, img, w, h, w*4);
|
||||||
|
|
||||||
|
// For non-square X,Y scaling, use
|
||||||
|
nsvgRasterizeXY(rast, image, 0,0,1,1, img, w, h, w*4);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Allocated rasterizer context.
|
// Allocated rasterizer context.
|
||||||
NSVGrasterizer* nsvgCreateRasterizer();
|
NSVGrasterizer* nsvgCreateRasterizer(void);
|
||||||
|
|
||||||
// Rasterizes SVG image, returns RGBA image (non-premultiplied alpha)
|
// Rasterizes SVG image, returns RGBA image (non-premultiplied alpha)
|
||||||
// r - pointer to rasterizer context
|
// r - pointer to rasterizer context
|
||||||
// image - pointer to image to rasterize
|
// image - pointer to image to rasterize
|
||||||
// tx,ty - image offset (applied after scaling)
|
// tx,ty - image offset (applied after scaling)
|
||||||
// scale - image scale
|
// scale - image scale (assumes square aspect ratio)
|
||||||
// dst - pointer to destination image data, 4 bytes per pixel (RGBA)
|
// dst - pointer to destination image data, 4 bytes per pixel (RGBA)
|
||||||
// w - width of the image to render
|
// w - width of the image to render
|
||||||
// h - height of the image to render
|
// h - height of the image to render
|
||||||
@@ -62,6 +73,12 @@ void nsvgRasterize(NSVGrasterizer* r,
|
|||||||
NSVGimage* image, float tx, float ty, float scale,
|
NSVGimage* image, float tx, float ty, float scale,
|
||||||
unsigned char* dst, int w, int h, int stride);
|
unsigned char* dst, int w, int h, int stride);
|
||||||
|
|
||||||
|
// As above, but allow X and Y axes to scale independently for non-square aspects
|
||||||
|
void nsvgRasterizeXY(NSVGrasterizer* r,
|
||||||
|
NSVGimage* image, float tx, float ty,
|
||||||
|
float sx, float sy,
|
||||||
|
unsigned char* dst, int w, int h, int stride);
|
||||||
|
|
||||||
// Deletes rasterizer context.
|
// Deletes rasterizer context.
|
||||||
void nsvgDeleteRasterizer(NSVGrasterizer*);
|
void nsvgDeleteRasterizer(NSVGrasterizer*);
|
||||||
|
|
||||||
@@ -72,11 +89,11 @@ void nsvgDeleteRasterizer(NSVGrasterizer*);
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // NANOSVGRAST_H
|
|
||||||
|
|
||||||
#ifdef NANOSVGRAST_IMPLEMENTATION
|
#ifdef NANOSVGRAST_IMPLEMENTATION
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#define NSVG__SUBSAMPLES 5
|
#define NSVG__SUBSAMPLES 5
|
||||||
#define NSVG__FIXSHIFT 10
|
#define NSVG__FIXSHIFT 10
|
||||||
@@ -112,7 +129,7 @@ typedef struct NSVGmemPage {
|
|||||||
} NSVGmemPage;
|
} NSVGmemPage;
|
||||||
|
|
||||||
typedef struct NSVGcachedPaint {
|
typedef struct NSVGcachedPaint {
|
||||||
char type;
|
signed char type;
|
||||||
char spread;
|
char spread;
|
||||||
float xform[6];
|
float xform[6];
|
||||||
unsigned int colors[256];
|
unsigned int colors[256];
|
||||||
@@ -148,7 +165,7 @@ struct NSVGrasterizer
|
|||||||
int width, height, stride;
|
int width, height, stride;
|
||||||
};
|
};
|
||||||
|
|
||||||
NSVGrasterizer* nsvgCreateRasterizer()
|
NSVGrasterizer* nsvgCreateRasterizer(void)
|
||||||
{
|
{
|
||||||
NSVGrasterizer* r = (NSVGrasterizer*)malloc(sizeof(NSVGrasterizer));
|
NSVGrasterizer* r = (NSVGrasterizer*)malloc(sizeof(NSVGrasterizer));
|
||||||
if (r == NULL) goto error;
|
if (r == NULL) goto error;
|
||||||
@@ -368,7 +385,7 @@ static void nsvg__flattenCubicBez(NSVGrasterizer* r,
|
|||||||
nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type);
|
nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float scale)
|
static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float sx, float sy)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
NSVGpath* path;
|
NSVGpath* path;
|
||||||
@@ -376,13 +393,13 @@ static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float scale)
|
|||||||
for (path = shape->paths; path != NULL; path = path->next) {
|
for (path = shape->paths; path != NULL; path = path->next) {
|
||||||
r->npoints = 0;
|
r->npoints = 0;
|
||||||
// Flatten path
|
// Flatten path
|
||||||
nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0);
|
nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, 0);
|
||||||
for (i = 0; i < path->npts-1; i += 3) {
|
for (i = 0; i < path->npts-1; i += 3) {
|
||||||
float* p = &path->pts[i*2];
|
float* p = &path->pts[i*2];
|
||||||
nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, 0);
|
nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 0, 0);
|
||||||
}
|
}
|
||||||
// Close path
|
// Close path
|
||||||
nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0);
|
nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, 0);
|
||||||
// Build edges
|
// Build edges
|
||||||
for (i = 0, j = r->npoints-1; i < r->npoints; j = i++)
|
for (i = 0, j = r->npoints-1; i < r->npoints; j = i++)
|
||||||
nsvg__addEdge(r, r->points[j].x, r->points[j].y, r->points[i].x, r->points[i].y);
|
nsvg__addEdge(r, r->points[j].x, r->points[j].y, r->points[i].x, r->points[i].y);
|
||||||
@@ -732,7 +749,7 @@ static void nsvg__prepareStroke(NSVGrasterizer* r, float miterLimit, int lineJoi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float scale)
|
static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float sx, float sy)
|
||||||
{
|
{
|
||||||
int i, j, closed;
|
int i, j, closed;
|
||||||
NSVGpath* path;
|
NSVGpath* path;
|
||||||
@@ -740,15 +757,16 @@ static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float
|
|||||||
float miterLimit = shape->miterLimit;
|
float miterLimit = shape->miterLimit;
|
||||||
int lineJoin = shape->strokeLineJoin;
|
int lineJoin = shape->strokeLineJoin;
|
||||||
int lineCap = shape->strokeLineCap;
|
int lineCap = shape->strokeLineCap;
|
||||||
float lineWidth = shape->strokeWidth * scale;
|
const float sw = (sx + sy) / 2; // average scaling factor
|
||||||
|
const float lineWidth = shape->strokeWidth * sw; // FIXME (?)
|
||||||
|
|
||||||
for (path = shape->paths; path != NULL; path = path->next) {
|
for (path = shape->paths; path != NULL; path = path->next) {
|
||||||
// Flatten path
|
// Flatten path
|
||||||
r->npoints = 0;
|
r->npoints = 0;
|
||||||
nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, NSVG_PT_CORNER);
|
nsvg__addPathPoint(r, path->pts[0]*sx, path->pts[1]*sy, NSVG_PT_CORNER);
|
||||||
for (i = 0; i < path->npts-1; i += 3) {
|
for (i = 0; i < path->npts-1; i += 3) {
|
||||||
float* p = &path->pts[i*2];
|
float* p = &path->pts[i*2];
|
||||||
nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, NSVG_PT_CORNER);
|
nsvg__flattenCubicBez(r, p[0]*sx,p[1]*sy, p[2]*sx,p[3]*sy, p[4]*sx,p[5]*sy, p[6]*sx,p[7]*sy, 0, NSVG_PT_CORNER);
|
||||||
}
|
}
|
||||||
if (r->npoints < 2)
|
if (r->npoints < 2)
|
||||||
continue;
|
continue;
|
||||||
@@ -794,7 +812,7 @@ static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float
|
|||||||
dashOffset -= shape->strokeDashArray[idash];
|
dashOffset -= shape->strokeDashArray[idash];
|
||||||
idash = (idash + 1) % shape->strokeDashCount;
|
idash = (idash + 1) % shape->strokeDashCount;
|
||||||
}
|
}
|
||||||
dashLen = (shape->strokeDashArray[idash] - dashOffset) * scale;
|
dashLen = (shape->strokeDashArray[idash] - dashOffset) * sw;
|
||||||
|
|
||||||
for (j = 1; j < r->npoints2; ) {
|
for (j = 1; j < r->npoints2; ) {
|
||||||
float dx = r->points2[j].x - cur.x;
|
float dx = r->points2[j].x - cur.x;
|
||||||
@@ -816,7 +834,7 @@ static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float
|
|||||||
// Advance dash pattern
|
// Advance dash pattern
|
||||||
dashState = !dashState;
|
dashState = !dashState;
|
||||||
idash = (idash+1) % shape->strokeDashCount;
|
idash = (idash+1) % shape->strokeDashCount;
|
||||||
dashLen = shape->strokeDashArray[idash] * scale;
|
dashLen = shape->strokeDashArray[idash] * sw;
|
||||||
// Restart
|
// Restart
|
||||||
cur.x = x;
|
cur.x = x;
|
||||||
cur.y = y;
|
cur.y = y;
|
||||||
@@ -956,7 +974,7 @@ static float nsvg__clampf(float a, float mn, float mx) { return a < mn ? mn : (a
|
|||||||
|
|
||||||
static unsigned int nsvg__RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
|
static unsigned int nsvg__RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
|
||||||
{
|
{
|
||||||
return (r) | (g << 8) | (b << 16) | (a << 24);
|
return ((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16) | ((unsigned int)a << 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int nsvg__lerpRGBA(unsigned int c0, unsigned int c1, float u)
|
static unsigned int nsvg__lerpRGBA(unsigned int c0, unsigned int c1, float u)
|
||||||
@@ -985,7 +1003,7 @@ static inline int nsvg__div255(int x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* cover, int x, int y,
|
static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* cover, int x, int y,
|
||||||
float tx, float ty, float scale, NSVGcachedPaint* cache)
|
float tx, float ty, float sx, float sy, NSVGcachedPaint* cache)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (cache->type == NSVG_PAINT_COLOR) {
|
if (cache->type == NSVG_PAINT_COLOR) {
|
||||||
@@ -1026,9 +1044,9 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co
|
|||||||
int i, cr, cg, cb, ca;
|
int i, cr, cg, cb, ca;
|
||||||
unsigned int c;
|
unsigned int c;
|
||||||
|
|
||||||
fx = ((float)x - tx) / scale;
|
fx = ((float)x - tx) / sx;
|
||||||
fy = ((float)y - ty) / scale;
|
fy = ((float)y - ty) / sy;
|
||||||
dx = 1.0f / scale;
|
dx = 1.0f / sx;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
int r,g,b,a,ia;
|
int r,g,b,a,ia;
|
||||||
@@ -1071,9 +1089,9 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co
|
|||||||
int i, cr, cg, cb, ca;
|
int i, cr, cg, cb, ca;
|
||||||
unsigned int c;
|
unsigned int c;
|
||||||
|
|
||||||
fx = ((float)x - tx) / scale;
|
fx = ((float)x - tx) / sx;
|
||||||
fy = ((float)y - ty) / scale;
|
fy = ((float)y - ty) / sy;
|
||||||
dx = 1.0f / scale;
|
dx = 1.0f / sx;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
int r,g,b,a,ia;
|
int r,g,b,a,ia;
|
||||||
@@ -1112,7 +1130,7 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float scale, NSVGcachedPaint* cache, char fillRule)
|
static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float sx, float sy, NSVGcachedPaint* cache, char fillRule)
|
||||||
{
|
{
|
||||||
NSVGactiveEdge *active = NULL;
|
NSVGactiveEdge *active = NULL;
|
||||||
int y, s;
|
int y, s;
|
||||||
@@ -1194,7 +1212,7 @@ static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, fl
|
|||||||
if (xmin < 0) xmin = 0;
|
if (xmin < 0) xmin = 0;
|
||||||
if (xmax > r->width-1) xmax = r->width-1;
|
if (xmax > r->width-1) xmax = r->width-1;
|
||||||
if (xmin <= xmax) {
|
if (xmin <= xmax) {
|
||||||
nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, scale, cache);
|
nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, sx, sy, cache);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1362,8 +1380,9 @@ static void dumpEdges(NSVGrasterizer* r, const char* name)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void nsvgRasterize(NSVGrasterizer* r,
|
void nsvgRasterizeXY(NSVGrasterizer* r,
|
||||||
NSVGimage* image, float tx, float ty, float scale,
|
NSVGimage* image, float tx, float ty,
|
||||||
|
float sx, float sy,
|
||||||
unsigned char* dst, int w, int h, int stride)
|
unsigned char* dst, int w, int h, int stride)
|
||||||
{
|
{
|
||||||
NSVGshape *shape = NULL;
|
NSVGshape *shape = NULL;
|
||||||
@@ -1394,7 +1413,7 @@ void nsvgRasterize(NSVGrasterizer* r,
|
|||||||
r->freelist = NULL;
|
r->freelist = NULL;
|
||||||
r->nedges = 0;
|
r->nedges = 0;
|
||||||
|
|
||||||
nsvg__flattenShape(r, shape, scale);
|
nsvg__flattenShape(r, shape, sx, sy);
|
||||||
|
|
||||||
// Scale and translate edges
|
// Scale and translate edges
|
||||||
for (i = 0; i < r->nedges; i++) {
|
for (i = 0; i < r->nedges; i++) {
|
||||||
@@ -1406,19 +1425,20 @@ void nsvgRasterize(NSVGrasterizer* r,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Rasterize edges
|
// Rasterize edges
|
||||||
qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge);
|
if (r->nedges != 0)
|
||||||
|
qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge);
|
||||||
|
|
||||||
// now, traverse the scanlines and find the intersections on each scanline, use non-zero rule
|
// now, traverse the scanlines and find the intersections on each scanline, use non-zero rule
|
||||||
nsvg__initPaint(&cache, &shape->fill, shape->opacity);
|
nsvg__initPaint(&cache, &shape->fill, shape->opacity);
|
||||||
|
|
||||||
nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, shape->fillRule);
|
nsvg__rasterizeSortedEdges(r, tx,ty, sx, sy, &cache, shape->fillRule);
|
||||||
}
|
}
|
||||||
if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * scale) > 0.01f) {
|
if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * sx) > 0.01f) {
|
||||||
nsvg__resetPool(r);
|
nsvg__resetPool(r);
|
||||||
r->freelist = NULL;
|
r->freelist = NULL;
|
||||||
r->nedges = 0;
|
r->nedges = 0;
|
||||||
|
|
||||||
nsvg__flattenShapeStroke(r, shape, scale);
|
nsvg__flattenShapeStroke(r, shape, sx, sy);
|
||||||
|
|
||||||
// dumpEdges(r, "edge.svg");
|
// dumpEdges(r, "edge.svg");
|
||||||
|
|
||||||
@@ -1432,12 +1452,13 @@ void nsvgRasterize(NSVGrasterizer* r,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Rasterize edges
|
// Rasterize edges
|
||||||
qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge);
|
if (r->nedges != 0)
|
||||||
|
qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge);
|
||||||
|
|
||||||
// now, traverse the scanlines and find the intersections on each scanline, use non-zero rule
|
// now, traverse the scanlines and find the intersections on each scanline, use non-zero rule
|
||||||
nsvg__initPaint(&cache, &shape->stroke, shape->opacity);
|
nsvg__initPaint(&cache, &shape->stroke, shape->opacity);
|
||||||
|
|
||||||
nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, NSVG_FILLRULE_NONZERO);
|
nsvg__rasterizeSortedEdges(r, tx,ty,sx, sy, &cache, NSVG_FILLRULE_NONZERO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1449,4 +1470,13 @@ void nsvgRasterize(NSVGrasterizer* r,
|
|||||||
r->stride = 0;
|
r->stride = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
void nsvgRasterize(NSVGrasterizer* r,
|
||||||
|
NSVGimage* image, float tx, float ty, float scale,
|
||||||
|
unsigned char* dst, int w, int h, int stride)
|
||||||
|
{
|
||||||
|
nsvgRasterizeXY(r,image, tx, ty, scale, scale, dst, w, h, stride);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // NANOSVGRAST_IMPLEMENTATION
|
||||||
|
|
||||||
|
#endif // NANOSVGRAST_H
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
///|/ Copyright (c) Prusa Research 2018 - 2023 Enrico Turri @enricoturri1966, Lukáš Hejl @hejllukas, Tomáš Mészáros @tamasmeszaros, Filip Sykala @Jony01, Vojtěch Bubník @bubnikv, Vojtěch Král @vojtechkral
|
||||||
|
///|/
|
||||||
|
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
||||||
|
///|/
|
||||||
//BBS:add i18n
|
//BBS:add i18n
|
||||||
#include "I18N.hpp"
|
#include "I18N.hpp"
|
||||||
//BBS: add fstream for debug output
|
//BBS: add fstream for debug output
|
||||||
@@ -418,7 +422,7 @@ bool GLTexture::load_from_svg_files_as_sprites_array(const std::vector<std::stri
|
|||||||
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
||||||
glsafe(::glGenTextures(1, &m_id));
|
glsafe(::glGenTextures(1, &m_id));
|
||||||
glsafe(::glBindTexture(GL_TEXTURE_2D, m_id));
|
glsafe(::glBindTexture(GL_TEXTURE_2D, m_id));
|
||||||
if (compress && GLEW_EXT_texture_compression_s3tc)
|
if (compress && OpenGLManager::are_compressed_textures_supported())
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
else
|
else
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
@@ -536,7 +540,7 @@ bool GLTexture::generate_from_text(const std::string &text_str, wxFont &font, wx
|
|||||||
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
||||||
glsafe(::glGenTextures(1, &m_id));
|
glsafe(::glGenTextures(1, &m_id));
|
||||||
glsafe(::glBindTexture(GL_TEXTURE_2D, (GLuint)m_id));
|
glsafe(::glBindTexture(GL_TEXTURE_2D, (GLuint)m_id));
|
||||||
if (GLEW_EXT_texture_compression_s3tc)
|
if (OpenGLManager::are_compressed_textures_supported())
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
else
|
else
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
@@ -637,7 +641,7 @@ bool GLTexture::generate_texture_from_text(const std::string& text_str, wxFont&
|
|||||||
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
||||||
glsafe(::glGenTextures(1, &m_id));
|
glsafe(::glGenTextures(1, &m_id));
|
||||||
glsafe(::glBindTexture(GL_TEXTURE_2D, (GLuint)m_id));
|
glsafe(::glBindTexture(GL_TEXTURE_2D, (GLuint)m_id));
|
||||||
if (GLEW_EXT_texture_compression_s3tc)
|
if (OpenGLManager::are_compressed_textures_supported())
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
else
|
else
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
@@ -677,9 +681,29 @@ void GLTexture::render_sub_texture(unsigned int tex_id, float left, float right,
|
|||||||
glsafe(::glDisable(GL_BLEND));
|
glsafe(::glDisable(GL_BLEND));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool to_squared_power_of_two(const std::string& filename, int max_size_px, int& w, int& h)
|
||||||
|
{
|
||||||
|
auto is_power_of_two = [](int v) { return v != 0 && (v & (v - 1)) == 0; };
|
||||||
|
auto upper_power_of_two = [](int v) { v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++; return v; };
|
||||||
|
|
||||||
|
int new_w = std::max(w, h);
|
||||||
|
if (!is_power_of_two(new_w))
|
||||||
|
new_w = upper_power_of_two(new_w);
|
||||||
|
|
||||||
|
while (new_w > max_size_px) {
|
||||||
|
new_w /= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
const int new_h = new_w;
|
||||||
|
const bool ret = (new_w != w || new_h != h);
|
||||||
|
w = new_w;
|
||||||
|
h = new_h;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECompressionType compression_type, bool apply_anisotropy)
|
bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECompressionType compression_type, bool apply_anisotropy)
|
||||||
{
|
{
|
||||||
bool compression_enabled = (compression_type != None) && GLEW_EXT_texture_compression_s3tc;
|
const bool compression_enabled = (compression_type != None) && OpenGLManager::are_compressed_textures_supported();
|
||||||
|
|
||||||
// Load a PNG with an alpha channel.
|
// Load a PNG with an alpha channel.
|
||||||
wxImage image;
|
wxImage image;
|
||||||
@@ -693,6 +717,11 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo
|
|||||||
|
|
||||||
bool requires_rescale = false;
|
bool requires_rescale = false;
|
||||||
|
|
||||||
|
if (use_mipmaps && compression_enabled && OpenGLManager::force_power_of_two_textures()) {
|
||||||
|
if (to_squared_power_of_two(boost::filesystem::path(filename).filename().string(), OpenGLManager::get_gl_info().get_max_tex_size(), m_width, m_height))
|
||||||
|
requires_rescale = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (compression_enabled && compression_type == MultiThreaded) {
|
if (compression_enabled && compression_type == MultiThreaded) {
|
||||||
// the stb_dxt compression library seems to like only texture sizes which are a multiple of 4
|
// the stb_dxt compression library seems to like only texture sizes which are a multiple of 4
|
||||||
int width_rem = m_width % 4;
|
int width_rem = m_width % 4;
|
||||||
@@ -819,7 +848,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo
|
|||||||
|
|
||||||
m_source = filename;
|
m_source = filename;
|
||||||
|
|
||||||
if (compression_enabled && compression_type == MultiThreaded)
|
if (compression_type == MultiThreaded)
|
||||||
// start asynchronous compression
|
// start asynchronous compression
|
||||||
m_compressor.start_compressing();
|
m_compressor.start_compressing();
|
||||||
|
|
||||||
@@ -828,7 +857,7 @@ bool GLTexture::load_from_png(const std::string& filename, bool use_mipmaps, ECo
|
|||||||
|
|
||||||
bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, bool compress, bool apply_anisotropy, unsigned int max_size_px)
|
bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, bool compress, bool apply_anisotropy, unsigned int max_size_px)
|
||||||
{
|
{
|
||||||
bool compression_enabled = compress && GLEW_EXT_texture_compression_s3tc;
|
const bool compression_enabled = compress && OpenGLManager::are_compressed_textures_supported();
|
||||||
|
|
||||||
NSVGimage* image = nsvgParseFromFile(filename.c_str(), "px", 96.0f);
|
NSVGimage* image = nsvgParseFromFile(filename.c_str(), "px", 96.0f);
|
||||||
if (image == nullptr) {
|
if (image == nullptr) {
|
||||||
@@ -836,11 +865,17 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
float scale = (float)max_size_px / std::max(image->width, image->height);
|
const float scale = (float)max_size_px / std::max(image->width, image->height);
|
||||||
|
|
||||||
m_width = (int)(scale * image->width);
|
m_width = (int)(scale * image->width);
|
||||||
m_height = (int)(scale * image->height);
|
m_height = (int)(scale * image->height);
|
||||||
|
|
||||||
|
if (use_mipmaps && compression_enabled && OpenGLManager::force_power_of_two_textures())
|
||||||
|
to_squared_power_of_two(boost::filesystem::path(filename).filename().string(), max_size_px, m_width, m_height);
|
||||||
|
|
||||||
|
float scale_w = (float)m_width / image->width;
|
||||||
|
float scale_h = (float)m_height / image->height;
|
||||||
|
|
||||||
if (compression_enabled) {
|
if (compression_enabled) {
|
||||||
// the stb_dxt compression library seems to like only texture sizes which are a multiple of 4
|
// the stb_dxt compression library seems to like only texture sizes which are a multiple of 4
|
||||||
int width_rem = m_width % 4;
|
int width_rem = m_width % 4;
|
||||||
@@ -853,7 +888,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||||||
m_height += (4 - height_rem);
|
m_height += (4 - height_rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
int n_pixels = m_width * m_height;
|
const int n_pixels = m_width * m_height;
|
||||||
|
|
||||||
if (n_pixels <= 0) {
|
if (n_pixels <= 0) {
|
||||||
reset();
|
reset();
|
||||||
@@ -870,7 +905,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||||||
|
|
||||||
// creates the temporary buffer only once, with max size, and reuse it for all the levels, if generating mipmaps
|
// creates the temporary buffer only once, with max size, and reuse it for all the levels, if generating mipmaps
|
||||||
std::vector<unsigned char> data(n_pixels * 4, 0);
|
std::vector<unsigned char> data(n_pixels * 4, 0);
|
||||||
nsvgRasterize(rast, image, 0, 0, scale, data.data(), m_width, m_height, m_width * 4);
|
nsvgRasterizeXY(rast, image, 0, 0, scale_w, scale_h, data.data(), m_width, m_height, m_width * 4);
|
||||||
|
|
||||||
// sends data to gpu
|
// sends data to gpu
|
||||||
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
glsafe(::glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
|
||||||
@@ -892,7 +927,7 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||||||
else
|
else
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data()));
|
||||||
|
|
||||||
if (use_mipmaps && OpenGLManager::use_manually_generated_mipmaps()) {
|
if (use_mipmaps) {
|
||||||
// we manually generate mipmaps because glGenerateMipmap() function is not reliable on all graphics cards
|
// we manually generate mipmaps because glGenerateMipmap() function is not reliable on all graphics cards
|
||||||
int lod_w = m_width;
|
int lod_w = m_width;
|
||||||
int lod_h = m_height;
|
int lod_h = m_height;
|
||||||
@@ -902,11 +937,12 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||||||
|
|
||||||
lod_w = std::max(lod_w / 2, 1);
|
lod_w = std::max(lod_w / 2, 1);
|
||||||
lod_h = std::max(lod_h / 2, 1);
|
lod_h = std::max(lod_h / 2, 1);
|
||||||
scale /= 2.0f;
|
scale_w /= 2.0f;
|
||||||
|
scale_h /= 2.0f;
|
||||||
|
|
||||||
data.resize(lod_w * lod_h * 4);
|
data.resize(lod_w * lod_h * 4);
|
||||||
|
|
||||||
nsvgRasterize(rast, image, 0, 0, scale, data.data(), lod_w, lod_h, lod_w * 4);
|
nsvgRasterizeXY(rast, image, 0, 0, scale_w, scale_h, data.data(), lod_w, lod_h, lod_w * 4);
|
||||||
if (compression_enabled) {
|
if (compression_enabled) {
|
||||||
// initializes the texture on GPU
|
// initializes the texture on GPU
|
||||||
glsafe(::glTexImage2D(GL_TEXTURE_2D, level, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)lod_w, (GLsizei)lod_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0));
|
glsafe(::glTexImage2D(GL_TEXTURE_2D, level, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, (GLsizei)lod_w, (GLsizei)lod_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0));
|
||||||
@@ -921,9 +957,8 @@ bool GLTexture::load_from_svg(const std::string& filename, bool use_mipmaps, boo
|
|||||||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, level));
|
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, level));
|
||||||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR));
|
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR));
|
||||||
}
|
}
|
||||||
} else if (use_mipmaps && !OpenGLManager::use_manually_generated_mipmaps()) {
|
}
|
||||||
glGenerateMipmap(GL_TEXTURE_2D);
|
else {
|
||||||
} else {
|
|
||||||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
|
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
|
||||||
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0));
|
glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -304,6 +304,8 @@ ObjectList::ObjectList(wxWindow* parent) :
|
|||||||
|
|
||||||
ObjectList::~ObjectList()
|
ObjectList::~ObjectList()
|
||||||
{
|
{
|
||||||
|
if (m_objects_model)
|
||||||
|
m_objects_model->DecRef();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectList::set_min_height()
|
void ObjectList::set_min_height()
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
///|/ Copyright (c) Prusa Research 2018 - 2023 Enrico Turri @enricoturri1966, Oleksandra Iushchenko @YuSanka, Lukáš Matěna @lukasmatena, Lukáš Hejl @hejllukas, Vojtěch Bubník @bubnikv, Vojtěch Král @vojtechkral
|
||||||
|
///|/
|
||||||
|
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
||||||
|
///|/
|
||||||
#include "libslic3r/libslic3r.h"
|
#include "libslic3r/libslic3r.h"
|
||||||
#include "OpenGLManager.hpp"
|
#include "OpenGLManager.hpp"
|
||||||
|
|
||||||
@@ -207,7 +211,7 @@ std::string OpenGLManager::GLInfo::to_string(bool for_github) const
|
|||||||
|
|
||||||
OpenGLManager::GLInfo OpenGLManager::s_gl_info;
|
OpenGLManager::GLInfo OpenGLManager::s_gl_info;
|
||||||
bool OpenGLManager::s_compressed_textures_supported = false;
|
bool OpenGLManager::s_compressed_textures_supported = false;
|
||||||
bool OpenGLManager::m_use_manually_generated_mipmaps = true;
|
bool OpenGLManager::s_force_power_of_two_textures = false;
|
||||||
OpenGLManager::EMultisampleState OpenGLManager::s_multisample = OpenGLManager::EMultisampleState::Unknown;
|
OpenGLManager::EMultisampleState OpenGLManager::s_multisample = OpenGLManager::EMultisampleState::Unknown;
|
||||||
OpenGLManager::EFramebufferType OpenGLManager::s_framebuffers_type = OpenGLManager::EFramebufferType::Unknown;
|
OpenGLManager::EFramebufferType OpenGLManager::s_framebuffers_type = OpenGLManager::EFramebufferType::Unknown;
|
||||||
|
|
||||||
@@ -290,31 +294,22 @@ bool OpenGLManager::init_gl(bool popup_error)
|
|||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Since AMD driver version 22.7.1, there is probably some bug in the driver that causes the issue with the missing
|
// Since AMD driver version 22.7.1, there is probably some bug in the driver that causes the issue with the missing
|
||||||
// texture of the bed. It seems that this issue only triggers when mipmaps are generated manually
|
// texture of the bed (see: https://github.com/prusa3d/PrusaSlicer/issues/8417).
|
||||||
// (combined with a texture compression) and when mipmaps are generated through OpenGL glGenerateMipmap is working.
|
// It seems that this issue only triggers when mipmaps are generated manually
|
||||||
// So, for newer drivers than 22.6.1, the last working driver version, we use mipmaps generated through OpenGL.
|
// (combined with a texture compression) with texture size not being power of two.
|
||||||
if (const auto gl_info = OpenGLManager::get_gl_info(); boost::contains(gl_info.get_vendor(), "ATI Technologies Inc.")) {
|
// When mipmaps are generated through OpenGL function glGenerateMipmap() the driver works fine,
|
||||||
// WHQL drivers seem to have one more version number at the end besides non-WHQL drivers.
|
// but the mipmap generation is quite slow on some machines.
|
||||||
// WHQL: 4.6.14800 Compatibility Profile Context 22.6.1 30.0.21023.1015
|
// There is no an easy way to detect the driver version without using Win32 API because the strings returned by OpenGL
|
||||||
// Non-WHQL: 4.6.0 Compatibility Profile Context 22.8.1.220810
|
// have no standardized format, only some of them contain the driver version.
|
||||||
std::regex version_rgx(R"(Compatibility\sProfile\sContext\s(\d+)\.(\d+)\.(\d+))");
|
// Until we do not know that driver will be fixed (if ever) we force the use of power of two textures on all cards
|
||||||
if (std::smatch matches; std::regex_search(gl_info.get_version(), matches, version_rgx) && matches.size() == 4) {
|
// 1) containing the string 'Radeon' in the string returned by glGetString(GL_RENDERER)
|
||||||
int version_major = std::stoi(matches[1].str());
|
// 2) containing the string 'Custom' in the string returned by glGetString(GL_RENDERER)
|
||||||
int version_minor = std::stoi(matches[2].str());
|
const auto& gl_info = OpenGLManager::get_gl_info();
|
||||||
int version_patch = std::stoi(matches[3].str());
|
if (boost::contains(gl_info.get_vendor(), "ATI Technologies Inc.") &&
|
||||||
BOOST_LOG_TRIVIAL(debug) << "Found AMD driver version: " << version_major << "." << version_minor << "." << version_patch;
|
(boost::contains(gl_info.get_renderer(), "Radeon") ||
|
||||||
|
boost::contains(gl_info.get_renderer(), "Custom")))
|
||||||
if (version_major > 22 || (version_major == 22 && version_minor > 6) || (version_major == 22 && version_minor == 6 && version_patch > 1)) {
|
s_force_power_of_two_textures = true;
|
||||||
m_use_manually_generated_mipmaps = false;
|
#endif // _WIN32
|
||||||
BOOST_LOG_TRIVIAL(debug) << "Mipmapping through OpenGL was enabled.";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "Not recognized format of version.";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "not AMD driver.";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
///|/ Copyright (c) Prusa Research 2018 - 2023 Enrico Turri @enricoturri1966, Lukáš Matěna @lukasmatena, Lukáš Hejl @hejllukas, Vojtěch Bubník @bubnikv, Vojtěch Král @vojtechkral
|
||||||
|
///|/
|
||||||
|
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
||||||
|
///|/
|
||||||
#ifndef slic3r_OpenGLManager_hpp_
|
#ifndef slic3r_OpenGLManager_hpp_
|
||||||
#define slic3r_OpenGLManager_hpp_
|
#define slic3r_OpenGLManager_hpp_
|
||||||
|
|
||||||
@@ -81,10 +85,11 @@ private:
|
|||||||
static OSInfo s_os_info;
|
static OSInfo s_os_info;
|
||||||
#endif //__APPLE__
|
#endif //__APPLE__
|
||||||
static bool s_compressed_textures_supported;
|
static bool s_compressed_textures_supported;
|
||||||
|
static bool s_force_power_of_two_textures;
|
||||||
|
|
||||||
static EMultisampleState s_multisample;
|
static EMultisampleState s_multisample;
|
||||||
static EFramebufferType s_framebuffers_type;
|
static EFramebufferType s_framebuffers_type;
|
||||||
|
|
||||||
static bool m_use_manually_generated_mipmaps;
|
|
||||||
public:
|
public:
|
||||||
OpenGLManager() = default;
|
OpenGLManager() = default;
|
||||||
~OpenGLManager();
|
~OpenGLManager();
|
||||||
@@ -101,7 +106,7 @@ public:
|
|||||||
static EFramebufferType get_framebuffers_type() { return s_framebuffers_type; }
|
static EFramebufferType get_framebuffers_type() { return s_framebuffers_type; }
|
||||||
static wxGLCanvas* create_wxglcanvas(wxWindow& parent);
|
static wxGLCanvas* create_wxglcanvas(wxWindow& parent);
|
||||||
static const GLInfo& get_gl_info() { return s_gl_info; }
|
static const GLInfo& get_gl_info() { return s_gl_info; }
|
||||||
static bool use_manually_generated_mipmaps() { return m_use_manually_generated_mipmaps; }
|
static bool force_power_of_two_textures() { return s_force_power_of_two_textures; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void detect_multisample(int* attribList);
|
static void detect_multisample(int* attribList);
|
||||||
|
|||||||
+32
-30
@@ -3174,36 +3174,38 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
|||||||
// Is there any modifier or advanced config data?
|
// Is there any modifier or advanced config data?
|
||||||
for (ModelVolume *model_volume : model_object->volumes) model_volume->config.reset();
|
for (ModelVolume *model_volume : model_object->volumes) model_volume->config.reset();
|
||||||
}
|
}
|
||||||
} else if (load_config && (file_version > app_version)) {
|
}
|
||||||
if (config_substitutions.unrecogized_keys.size() > 0) {
|
// else if (load_config && (file_version > app_version)) {
|
||||||
wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:"),
|
// if (config_substitutions.unrecogized_keys.size() > 0) {
|
||||||
file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
|
// wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:"),
|
||||||
text += "\n";
|
// file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
|
||||||
bool first = true;
|
// text += "\n";
|
||||||
// std::string context = into_u8(text);
|
// bool first = true;
|
||||||
wxString context = text;
|
// // std::string context = into_u8(text);
|
||||||
for (auto &key : config_substitutions.unrecogized_keys) {
|
// wxString context = text;
|
||||||
context += " -";
|
// for (auto &key : config_substitutions.unrecogized_keys) {
|
||||||
context += key;
|
// context += " -";
|
||||||
context += ";\n";
|
// context += key;
|
||||||
first = false;
|
// context += ";\n";
|
||||||
}
|
// first = false;
|
||||||
wxString append = _L("You'd better upgrade your software.\n");
|
// }
|
||||||
context += "\n\n";
|
// wxString append = _L("You'd better upgrade your software.\n");
|
||||||
// context += into_u8(append);
|
// context += "\n\n";
|
||||||
context += append;
|
// // context += into_u8(append);
|
||||||
show_info(q, context, _L("Newer 3mf version"));
|
// context += append;
|
||||||
}
|
// show_info(q, context, _L("Newer 3mf version"));
|
||||||
else {
|
// }
|
||||||
//if the minor version is not matched
|
// else {
|
||||||
if (file_version.min() != app_version.min()) {
|
// //if the minor version is not matched
|
||||||
wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software."),
|
// if (file_version.min() != app_version.min()) {
|
||||||
file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
|
// wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software."),
|
||||||
text += "\n";
|
// file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string());
|
||||||
show_info(q, text, _L("Newer 3mf version"));
|
// text += "\n";
|
||||||
}
|
// show_info(q, text, _L("Newer 3mf version"));
|
||||||
}
|
// }
|
||||||
} else if (!load_config) {
|
// }
|
||||||
|
// }
|
||||||
|
else if (!load_config) {
|
||||||
// reset config except color
|
// reset config except color
|
||||||
for (ModelObject *model_object : model.objects) {
|
for (ModelObject *model_object : model.objects) {
|
||||||
bool has_extruder = model_object->config.has("extruder");
|
bool has_extruder = model_object->config.has("extruder");
|
||||||
|
|||||||
@@ -1869,7 +1869,7 @@ void TabPrint::build()
|
|||||||
optgroup->append_single_option_line("xy_contour_compensation");
|
optgroup->append_single_option_line("xy_contour_compensation");
|
||||||
optgroup->append_single_option_line("elefant_foot_compensation");
|
optgroup->append_single_option_line("elefant_foot_compensation");
|
||||||
optgroup->append_single_option_line("elefant_foot_compensation_layers");
|
optgroup->append_single_option_line("elefant_foot_compensation_layers");
|
||||||
optgroup->append_single_option_line("precise_outer_wall");
|
optgroup->append_single_option_line("precise_outer_wall", "Precise-wall");
|
||||||
optgroup->append_single_option_line("hole_to_polyhole");
|
optgroup->append_single_option_line("hole_to_polyhole");
|
||||||
optgroup->append_single_option_line("hole_to_polyhole_threshold");
|
optgroup->append_single_option_line("hole_to_polyhole_threshold");
|
||||||
optgroup->append_single_option_line("hole_to_polyhole_twisted");
|
optgroup->append_single_option_line("hole_to_polyhole_twisted");
|
||||||
@@ -1896,8 +1896,10 @@ void TabPrint::build()
|
|||||||
optgroup->append_single_option_line("wall_infill_order");
|
optgroup->append_single_option_line("wall_infill_order");
|
||||||
optgroup->append_single_option_line("print_flow_ratio");
|
optgroup->append_single_option_line("print_flow_ratio");
|
||||||
optgroup->append_single_option_line("bridge_flow");
|
optgroup->append_single_option_line("bridge_flow");
|
||||||
|
optgroup->append_single_option_line("internal_bridge_flow");
|
||||||
optgroup->append_single_option_line("bridge_density");
|
optgroup->append_single_option_line("bridge_density");
|
||||||
optgroup->append_single_option_line("thick_bridges");
|
optgroup->append_single_option_line("thick_bridges");
|
||||||
|
optgroup->append_single_option_line("thick_internal_bridges");
|
||||||
optgroup->append_single_option_line("top_solid_infill_flow_ratio");
|
optgroup->append_single_option_line("top_solid_infill_flow_ratio");
|
||||||
optgroup->append_single_option_line("bottom_solid_infill_flow_ratio");
|
optgroup->append_single_option_line("bottom_solid_infill_flow_ratio");
|
||||||
optgroup->append_single_option_line("only_one_wall_top");
|
optgroup->append_single_option_line("only_one_wall_top");
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ endif()
|
|||||||
if(NOT DEFINED BBL_INTERNAL_TESTING)
|
if(NOT DEFINED BBL_INTERNAL_TESTING)
|
||||||
set(BBL_INTERNAL_TESTING "1")
|
set(BBL_INTERNAL_TESTING "1")
|
||||||
endif()
|
endif()
|
||||||
set(SoftFever_VERSION "1.8.0")
|
set(SoftFever_VERSION "1.8.1")
|
||||||
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)"
|
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)"
|
||||||
SoftFever_VERSION_MATCH ${SoftFever_VERSION})
|
SoftFever_VERSION_MATCH ${SoftFever_VERSION})
|
||||||
set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1})
|
set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1})
|
||||||
|
|||||||
Reference in New Issue
Block a user