mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-09 08:41:14 +00:00
Compare commits
22
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b717ffa7d | ||
|
|
f42173a19f | ||
|
|
b99a9a06f3 | ||
|
|
faa64ab089 | ||
|
|
987b1b2b63 | ||
|
|
9bd4c71a19 | ||
|
|
3c646f305c | ||
|
|
432d6be518 | ||
|
|
3e7f0c027a | ||
|
|
504a143b98 | ||
|
|
a87639ac41 | ||
|
|
ecbd03fed7 | ||
|
|
ccbb73baaf | ||
|
|
029bc7928f | ||
|
|
0a8fce0913 | ||
|
|
3942ba7005 | ||
|
|
0110572a77 | ||
|
|
2c2869ab07 | ||
|
|
bf63eb1226 | ||
|
|
38e57888a5 | ||
|
|
fc079b2e5b | ||
|
|
a88843c6f8 |
@@ -61,10 +61,8 @@ available; GTK2/WebKit1 is an opt-out configuration the GUI does not support.
|
||||
11. A web host that re-themes in place handles `EVT_WEBVIEW_RECREATED` without `Skip()`; one that
|
||||
needs a reload lets it through. §[Orca wrapper](#orca-webview-wrapper-widgetswebview)
|
||||
12. Keep `WebViewWebKit`'s destructor removing the `"wx"` handler. §[Orca wrapper](#orca-webview-wrapper-widgetswebview)
|
||||
13. Do not widen `WEBKIT_DISABLE_COMPOSITING_MODE` beyond Orca's default-path XWayland case. Disable the
|
||||
WebKit DMA-BUF renderer only for the NVIDIA proprietary driver on native Wayland (GNOME/gtk#8056), and
|
||||
never make a page's progress depend only on a C++→JS callback.
|
||||
§[WebKitGTK on Linux](#webkitgtk-on-linux-sessions)
|
||||
13. Do not widen `WEBKIT_DISABLE_COMPOSITING_MODE` beyond Orca's default-path XWayland case, and never
|
||||
make a page's progress depend only on a C++→JS callback. §[WebKitGTK on Linux](#webkitgtk-on-linux-sessions)
|
||||
14. GL attribute lists: legacy `int[]` lists end with `0` and spell out `WX_GL_RGBA` and
|
||||
`WX_GL_DOUBLEBUFFER`; `wxGLAttributes`/`wxGLContextAttrs` end with `EndList()`; MSAA is requested
|
||||
explicitly. §[wxGLCanvas](#wxglcanvas-and-wxglcontext)
|
||||
@@ -601,25 +599,6 @@ Runtime backend detection elsewhere uses Orca's `is_running_on_wayland()` / `is_
|
||||
Cite: c12912e0df (`src/OrcaSlicer.cpp`; `resources/web/guide/0/load.js` `OnInit`
|
||||
`setTimeout("JumpToTarget()", …)`), 9446030079 (the `GDK_BACKEND=x11` opt-in branch).
|
||||
|
||||
**DMA-BUF renderer / explicit sync (NVIDIA + Wayland).**
|
||||
- **Rule:** On the Wayland default path, set `WEBKIT_DISABLE_DMABUF_RENDERER=1` non-replacing, gated to
|
||||
`__linux__` + native Wayland (not the forced-X11 fallback) + `/proc/driver/nvidia/version` +
|
||||
`WebView::WebKitAtLeast(2, 46)`. The version gate uses the runtime `webkit_get_major_version()` /
|
||||
`webkit_get_minor_version()` getters (no GTK init needed), not a compile-time macro, and 2.46 is the
|
||||
oldest release with a confirmed crash report — narrower gates (e.g. 2.54) would miss 2.46–2.52 victims.
|
||||
**Why:** WebKitGTK's DMA-BUF renderer arms `linux-drm-syncobj-v1` on the toplevel surface; GTK3 then
|
||||
commits its first shared-memory frame without an acquire point, and KWin/Mutter reject the commit with
|
||||
`Error 71 (Protocol error)` — GDK turns that into `_exit(1)` before Orca logs anything. The defect is
|
||||
GTK3's `gdk_wayland_window_attach_image()` (GNOME/gtk#8056); WebKit only triggers it, the NVIDIA
|
||||
proprietary driver has no implicit-sync fallback (Mesa tolerates it), and no upstream fix or PR exists.
|
||||
This is a different variable from `WEBKIT_DISABLE_COMPOSITING_MODE` and does not replace it.
|
||||
```cpp
|
||||
// Wayland default path, before GTK init
|
||||
if (!x11_backend && wayland && ::access("/proc/driver/nvidia/version", F_OK) == 0 &&
|
||||
WebView::WebKitAtLeast(2, 46))
|
||||
::setenv("WEBKIT_DISABLE_DMABUF_RENDERER", "1", /* replace */ false);
|
||||
```
|
||||
|
||||
## wxGLCanvas and wxGLContext
|
||||
|
||||
**Attributes.**
|
||||
|
||||
+3
-36
@@ -8,10 +8,9 @@ SCRIPT_PATH=$(dirname "$(readlink -f "${0}")")
|
||||
pushd "${SCRIPT_PATH}" > /dev/null
|
||||
|
||||
function usage() {
|
||||
echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-D][-e][-F][-g][-h][-i][-j N][-J N][-p][-r][-s][-t][-u][-l][-L]"
|
||||
echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-D][-e][-F][-g][-h][-i][-j N][-p][-r][-s][-t][-u][-l][-L]"
|
||||
echo " -1: limit builds to one core (where possible)"
|
||||
echo " -j N: limit builds to N cores (where possible)"
|
||||
echo " -J N: build up to N dependencies at a time, each still using -j jobs (default: 1)"
|
||||
echo " -b: build in Debug mode"
|
||||
echo " -c: force a clean build"
|
||||
echo " -C: enable ANSI-colored compile output (GNU/Clang only)"
|
||||
@@ -37,13 +36,12 @@ function usage() {
|
||||
}
|
||||
|
||||
SLIC3R_PRECOMPILED_HEADERS="ON"
|
||||
DEPS_PARALLEL=""
|
||||
|
||||
unset name
|
||||
BUILD_DIR=build
|
||||
BUILD_CONFIG=Release
|
||||
FORWARDED_ARGS=()
|
||||
while getopts ":1j:J:bcCdDeFghiprstulL" opt ; do
|
||||
while getopts ":1j:bcCdDeFghiprstulL" opt ; do
|
||||
case ${opt} in
|
||||
1 )
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=1
|
||||
@@ -53,10 +51,6 @@ while getopts ":1j:J:bcCdDeFghiprstulL" opt ; do
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=$OPTARG
|
||||
FORWARDED_ARGS+=("-j" "$OPTARG")
|
||||
;;
|
||||
J )
|
||||
DEPS_PARALLEL=$OPTARG
|
||||
FORWARDED_ARGS+=("-J" "$OPTARG")
|
||||
;;
|
||||
b )
|
||||
BUILD_DIR=build-dbg
|
||||
BUILD_CONFIG=Debug
|
||||
@@ -141,11 +135,6 @@ if [[ -n "${CLEAN_DOCKER_IMAGE}" ]] && [[ -z "${USE_DOCKER}" ]] ; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "${DEPS_PARALLEL}" ]] && ! [[ "${DEPS_PARALLEL}" =~ ^[1-9][0-9]*$ ]] ; then
|
||||
echo "Error: -J expects a positive integer."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function check_available_memory_and_disk() {
|
||||
FREE_MEM_GB=$(free --gibi --total | grep 'Mem' | rev | cut --delimiter=" " --fields=1 | rev)
|
||||
MIN_MEM_GB=10
|
||||
@@ -548,29 +537,7 @@ if [[ -n "${BUILD_DEPS}" ]] ; then
|
||||
fi
|
||||
|
||||
print_and_run cmake -S deps -B deps/$BUILD_DIR "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" "${CMAKE_CCACHE_ARGS[@]}" -G Ninja "${COLORED_OUTPUT}" "${BUILD_ARGS[@]}"
|
||||
# The top-level build runs one dependency at a time by default, which keeps the console
|
||||
# output readable and lets that dependency's own build use all of CMAKE_BUILD_PARALLEL_LEVEL.
|
||||
# -J raises the top level instead, and -j still applies in full to every dependency, so the
|
||||
# worst case is -J times -j compile jobs at once. Ninja has no job server to share a pool
|
||||
# across the nested builds, so that ceiling is not enforced anywhere: pick -J to suit the RAM.
|
||||
DEPS_JOBS=1
|
||||
if [[ -n "${DEPS_PARALLEL}" ]] ; then
|
||||
DEPS_JOBS=${DEPS_PARALLEL}
|
||||
SAVED_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL-}
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-$(nproc)}
|
||||
echo "Building up to ${DEPS_JOBS} dependencies at a time, ${CMAKE_BUILD_PARALLEL_LEVEL} jobs each: up to $(( DEPS_JOBS * CMAKE_BUILD_PARALLEL_LEVEL )) compile jobs at once."
|
||||
fi
|
||||
|
||||
print_and_run cmake --build deps/$BUILD_DIR -j"${DEPS_JOBS}"
|
||||
|
||||
if [[ -n "${DEPS_PARALLEL}" ]] ; then
|
||||
# Give the whole -j back to the OrcaSlicer build below.
|
||||
if [[ -n "${SAVED_PARALLEL_LEVEL}" ]] ; then
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL=${SAVED_PARALLEL_LEVEL}
|
||||
else
|
||||
unset CMAKE_BUILD_PARALLEL_LEVEL
|
||||
fi
|
||||
fi
|
||||
print_and_run cmake --build deps/$BUILD_DIR -j1
|
||||
fi
|
||||
|
||||
if [[ -n "${BUILD_ORCA}" ]] || [[ -n "${BUILD_TESTS}" ]] ; then
|
||||
|
||||
@@ -131,6 +131,13 @@
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
|
||||
<key>NSLocalNetworkUsageDescription</key>
|
||||
<string>OrcaSlicer uses your local network to discover and connect to printers.</string>
|
||||
<key>NSBonjourServices</key>
|
||||
<array>
|
||||
<string>_octoprint._tcp</string>
|
||||
<string>_http._tcp</string>
|
||||
</array>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<!-- Disable App Transport Security. Resolves https://github.com/OrcaSlicer/OrcaSlicer/issues/791 -->
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
# Separated infills — High Level Design
|
||||
|
||||
## Purpose and scope
|
||||
|
||||
An object's infill patterns are laid out from one reference point, the center
|
||||
of the object. When an object groups several parts that do not touch, every
|
||||
part cuts the same object-wide pattern at a different place, so equal parts get
|
||||
different infill. `separated_infills` lays the infill of every connected body
|
||||
out from the center of that body instead, as if the body were sliced on its own.
|
||||
|
||||
The option covers sparse infill, internal solid infill and bridges. Top and
|
||||
bottom surfaces are left to `center_of_surface_pattern`, which centers the
|
||||
Archimedean Chords and Octagram Spiral surface patterns. The option is off by
|
||||
default; with it off, or for an object made of a single body, no fill changes.
|
||||
Adaptive Cubic and Support Cubic do not depend on the option: they always fill
|
||||
each body on its own (see Octree infill).
|
||||
|
||||
## Bodies
|
||||
|
||||
`PrintObject::prepare_infill()` groups the islands of every layer (`lslices`)
|
||||
into 3D connected bodies before bridges are detected, so bridge anchors and
|
||||
printed infill share one origin. Islands on adjacent layers belong to one body
|
||||
when their slices overlap. Parts that touch or overlap form one body. Separate
|
||||
parts, disconnected islands of one mesh, and interleaved parts that never touch,
|
||||
such as chain links, each form their own. Every island stores the index of its
|
||||
body in `Layer::lslices_separated_component_ids`, and
|
||||
`PrintObject::separated_body_bboxes()` holds the bounding box of each body over
|
||||
all its layers.
|
||||
|
||||
The pass runs when a region uses separated infills, per-model surface centering
|
||||
or an octree infill pattern. It is skipped when the object has one model part
|
||||
that cannot be split, since a single body already shares the object center.
|
||||
|
||||
## Centering a fill
|
||||
|
||||
`infill_body()` matches each fill region to the island it overlaps most, among
|
||||
the islands whose bounding boxes overlap it, and the filler takes the bounding
|
||||
box of that island's body instead of the object's. The box covers every layer
|
||||
of the body, which is the box the body gets when sliced alone, so patterns that
|
||||
depend on its extent as well as its center come out the same too. Bridge
|
||||
anchoring (`Layer::generate_sparse_infill_polylines_for_anchoring()`) makes the
|
||||
same choice, so the anchors match the printed infill.
|
||||
|
||||
The patterns follow the body's box in one of two ways:
|
||||
|
||||
- Rectilinear and its variants, Line, Grid, Triangles, Tri-hexagon, Cubic,
|
||||
Quarter Cubic, Lateral Lattice, Lateral Honeycomb and the plane-path patterns
|
||||
(Hilbert Curve, Archimedean Chords, Octagram Spiral) are laid out from the
|
||||
box: they phase their lines through its center, and Hilbert Curve and the Zig
|
||||
Zag links start from its corner. `Fill::extended_object_bounding_box()`
|
||||
extends the box about its center, so it also serves a box that is not
|
||||
centered on the origin.
|
||||
- Honeycomb, 3D Honeycomb, Cross Hatch, Gyroid, TPMS-D and TPMS-FK are laid out
|
||||
from the coordinate origin, which is the object center. They return true from
|
||||
`Fill::aligned_to_origin()`, and `Fill::fill_surface()` moves each region so
|
||||
that the box center lands on the origin, fills it, and moves the paths back.
|
||||
With the default box the center is the origin, so nothing moves.
|
||||
|
||||
`is_separable_infill_pattern()` lists these patterns. The settings show the
|
||||
option only when the sparse infill pattern is one of them.
|
||||
|
||||
## Octree infill
|
||||
|
||||
Adaptive Cubic and Support Cubic take their lines from an octree, laid out from
|
||||
the center of the mesh it is built from and refined near its surfaces. An
|
||||
octree of the whole object would lay every part out from the object's center
|
||||
and refine it near the other parts, so these patterns
|
||||
(`is_octree_infill_pattern()`) always fill each body on its own, and the
|
||||
settings hide the option for them.
|
||||
|
||||
For an object of several bodies, `PrintObject::prepare_adaptive_infill_data()`
|
||||
builds one octree per body (`FillAdaptive::Octrees`) from the triangles of that
|
||||
body only, which is the octree the body gets when sliced alone. Each connected
|
||||
component of the mesh goes to the body that most of a few sampled triangles lie
|
||||
on. A sample is taken a layer height inside the solid, behind the triangle, and
|
||||
looked up in the islands of the nearest layer. Each internal bridge surface goes
|
||||
to the body of its island. The fill takes the octree of the region's body, from
|
||||
the same `infill_body()`. The octree of the whole object is built only for an
|
||||
object of a single body, or when some body received no triangles, which then
|
||||
uses it.
|
||||
|
||||
## Patterns left out
|
||||
|
||||
Lightning grows its trees over the whole object, so moving a reference point
|
||||
cannot center it on one body. Concentric and Spiral Inset follow the outline of
|
||||
each region and need no centering.
|
||||
|
||||
Solid infill at full density spaces its lines over the extent of each region,
|
||||
so it is already independent of the other bodies. Only bridges, which keep
|
||||
their line spacing, and the plane-path solid patterns depend on the center.
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -4046,6 +4046,9 @@ msgstr ""
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr ""
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr ""
|
||||
@@ -5779,7 +5782,7 @@ msgstr ""
|
||||
msgid "Size:"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
#, possible-boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr ""
|
||||
|
||||
@@ -6618,6 +6621,22 @@ msgstr ""
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr ""
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format, possible-boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -10188,6 +10207,12 @@ msgstr ""
|
||||
msgid "Clean Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr ""
|
||||
|
||||
@@ -23594,165 +23619,6 @@ msgstr ""
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr ""
|
||||
|
||||
msgid "Primitive"
|
||||
msgstr ""
|
||||
|
||||
msgid "Empty mesh generated"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Width (X)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Depth (Y)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Height (Z)"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr ""
|
||||
|
||||
msgid "Top R"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minor R"
|
||||
msgstr ""
|
||||
|
||||
msgid "All edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Top edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lateral edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mesh resolution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Shape"
|
||||
msgstr ""
|
||||
|
||||
msgid "No outer profile"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to make outer face"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revolve failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Profile"
|
||||
msgstr ""
|
||||
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Segments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr ""
|
||||
|
||||
msgid "Snap to grid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Grid step"
|
||||
msgstr ""
|
||||
|
||||
msgid "Outer"
|
||||
msgstr ""
|
||||
|
||||
msgid "closed"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, possible-boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr ""
|
||||
|
||||
msgid "XY (Top)"
|
||||
msgstr ""
|
||||
|
||||
msgid "XZ (Front)"
|
||||
msgstr ""
|
||||
|
||||
msgid "YZ (Side)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revolve deg"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pocket (cut)"
|
||||
msgstr ""
|
||||
|
||||
#, possible-c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr ""
|
||||
|
||||
msgid "Clear all"
|
||||
msgstr ""
|
||||
|
||||
msgid "Empty result"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr ""
|
||||
|
||||
msgid "No object selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Face failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Face with holes failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tool mesh empty"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
msgstr ""
|
||||
@@ -26340,6 +26206,9 @@ msgstr ""
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "/"
|
||||
msgstr ""
|
||||
|
||||
#, possible-boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2025-03-15 10:55+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -4426,6 +4426,9 @@ msgstr "Estàs segur que vols esborrar la informació del filament?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Primer heu de seleccionar el tipus de material i el color."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Introduïu un valor vàlid (K a %.1f~%.1f)"
|
||||
@@ -6297,7 +6300,7 @@ msgid "Size:"
|
||||
msgstr "Mida:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "S'han trobat conflictes de rutes de G-code a la capa %d, Z = %.2lfmm. Si us plau, separeu els objectes conflictius més lluny ( %s <-> %s )."
|
||||
|
||||
@@ -7177,6 +7180,22 @@ msgstr "El fitxer .gcode.3mf no conté dades de G-code. Lamineu-lo amb Orca Slic
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "L'arxiu '%s' s'ha perdut! Si us plau, descarregueu-lo de nou."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11265,6 +11284,12 @@ msgstr "Cancel·lar el timelapse i imprimir"
|
||||
msgid "Clean Up"
|
||||
msgstr "Netejar"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Preparant el treball d'impressió"
|
||||
|
||||
@@ -27127,214 +27152,6 @@ msgstr "Aquest tipus de lletra no té contorn per a aquest text"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Mida: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitiva"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "S'ha generat una malla buida"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Caixa"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Ràpid:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Amplada (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Profunditat (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Alçada (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R inferior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R superior"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R major"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R menor"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Totes les arestes"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Arestes superiors"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Arestes inferiors"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Arestes laterals"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Resolució de la malla"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Afegir forma"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "No hi ha cap perfil exterior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "No s'ha pogut crear la cara exterior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "No s'ha pogut construir la cara amb forats"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "La revolució ha fallat"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Perfil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Començar un perfil nou (per a forats)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segments"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Costats"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Feu clic al llenç per dibuixar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Ajustar a la graella"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Pas de la graella"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Exterior"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "tancat"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% punts %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Superior)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Frontal)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Lateral)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Graus de revolució"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Establiu 0 per a extrusió, >0 per a revolució"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Cavitat (tall)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu perfil tancat"
|
||||
msgstr[1] "%zu perfils tancats"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Dibuixeu un perfil tancat per activar-ho"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Esborrar-ho tot"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Resultat buit"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extrusió: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Revolució: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "No hi ha cap objecte seleccionat"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "No s'ha pogut crear la cara"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "No s'ha pogut crear la cara amb forats"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "La malla de l'eina és buida"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Cavitat afegida (volum negatiu)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Cavitat: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30727,6 +30544,9 @@ msgstr "Activar les eines de desenvolupament"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "S'ha produït un error en carregar %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31407,6 +31227,209 @@ msgstr ""
|
||||
"Evitar la deformació( warping )\n"
|
||||
"Sabíeu que quan imprimiu materials propensos a deformar-se, com ara l'ABS, augmentar adequadament la temperatura del llit pot reduir la probabilitat de deformació?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitiva"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "S'ha generat una malla buida"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Caixa"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Ràpid:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Amplada (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Profunditat (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Alçada (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R inferior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R superior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R major"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R menor"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Totes les arestes"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Arestes superiors"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Arestes inferiors"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Arestes laterals"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Resolució de la malla"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Afegir forma"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "No hi ha cap perfil exterior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "No s'ha pogut crear la cara exterior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "No s'ha pogut construir la cara amb forats"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "La revolució ha fallat"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Perfil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Començar un perfil nou (per a forats)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segments"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Costats"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Feu clic al llenç per dibuixar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Ajustar a la graella"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Pas de la graella"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Exterior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "tancat"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% punts %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Superior)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Frontal)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Lateral)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Graus de revolució"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Establiu 0 per a extrusió, >0 per a revolució"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Cavitat (tall)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu perfil tancat"
|
||||
#~ msgstr[1] "%zu perfils tancats"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Dibuixeu un perfil tancat per activar-ho"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Esborrar-ho tot"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Resultat buit"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extrusió: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Revolució: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "No hi ha cap objecte seleccionat"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "No s'ha pogut crear la cara"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "No s'ha pogut crear la cara amb forats"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "La malla de l'eina és buida"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Cavitat afegida (volum negatiu)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Cavitat: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Experimental) Utilitza agents d'impressora en lloc d'amfitrions d'impressió"
|
||||
@@ -32463,9 +32486,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "S'ha produït un error en carregar "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Jakub Hencl\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4384,6 +4384,9 @@ msgstr "Opravdu chcete vymazat informace o filamentu?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Nejprve musíte vybrat typ materiálu a barvu."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Zadejte platnou hodnotu (K v rozsahu %.1f~%.1f)"
|
||||
@@ -6266,7 +6269,7 @@ msgid "Size:"
|
||||
msgstr "Velikost:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Byly nalezeny konflikty drah G-code ve vrstvě %d, Z = %.2lf mm. Oddělte prosím konfliktní objekty více od sebe (%s <-> %s)."
|
||||
|
||||
@@ -7156,6 +7159,22 @@ msgstr "Soubor .gcode.3mf neobsahuje žádná G-code data. Prosím, rozřežte m
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Soubor '%s' byl ztracen! Stáhněte jej prosím znovu."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11229,6 +11248,12 @@ msgstr "Zrušit časosběr a tisknout"
|
||||
msgid "Clean Up"
|
||||
msgstr "Vyčistit"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Příprava tiskové úlohy"
|
||||
|
||||
@@ -27135,215 +27160,6 @@ msgstr "Toto písmo nemá pro tento text žádný obrys"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Velikost: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitiv"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Byla vygenerována prázdná síť"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Kvádr"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Rychle:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Šířka (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Hloubka (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Výška (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Spodní R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Horní R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Hlavní R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Vedlejší R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Všechny hrany"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Horní hrany"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Spodní hrany"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Boční hrany"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Rozlišení sítě"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Přidat tvar"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Chybí vnější profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Nepodařilo se vytvořit vnější plochu"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Nepodařilo se vytvořit plochu s otvory"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Rotace selhala"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Začít nový profil (pro otvory)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmenty"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Strany"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Kreslete kliknutím na plátno"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Přichytit k mřížce"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Krok mřížky"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Vnější"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "uzavřený"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% b. %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (horní)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (přední)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (boční)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Rotace (°)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0 = vysunutí, >0 = rotace"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Kapsa (řez)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu uzavřený profil"
|
||||
msgstr[1] "%zu uzavřené profily"
|
||||
msgstr[2] "%zu uzavřených profilů"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Pro aktivaci nakreslete uzavřený profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Vymazat vše"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Prázdný výsledek"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Vysunutí: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Rotace: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Není vybrán žádný objekt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Vytvoření plochy selhalo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Vytvoření plochy s otvory selhalo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Síť nástroje je prázdná"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Kapsa přidána (záporný objem)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Kapsa: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30737,6 +30553,10 @@ msgstr "Povolit vývojářské nástroje"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Při načítání %s došlo k chybě"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31418,6 +31238,210 @@ msgstr ""
|
||||
"Zamezte kroucení\n"
|
||||
"Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitiv"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Byla vygenerována prázdná síť"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Kvádr"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Rychle:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Šířka (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Hloubka (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Výška (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Spodní R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Horní R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Hlavní R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Vedlejší R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Všechny hrany"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Horní hrany"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Spodní hrany"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Boční hrany"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Rozlišení sítě"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Přidat tvar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Chybí vnější profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Nepodařilo se vytvořit vnější plochu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Nepodařilo se vytvořit plochu s otvory"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Rotace selhala"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Začít nový profil (pro otvory)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmenty"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Strany"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Kreslete kliknutím na plátno"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Přichytit k mřížce"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Krok mřížky"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Vnější"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "uzavřený"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% b. %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (horní)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (přední)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (boční)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Rotace (°)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0 = vysunutí, >0 = rotace"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Kapsa (řez)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu uzavřený profil"
|
||||
#~ msgstr[1] "%zu uzavřené profily"
|
||||
#~ msgstr[2] "%zu uzavřených profilů"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Pro aktivaci nakreslete uzavřený profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Vymazat vše"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Prázdný výsledek"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Vysunutí: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Rotace: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Není vybrán žádný objekt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Vytvoření plochy selhalo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Vytvoření plochy s otvory selhalo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Síť nástroje je prázdná"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Kapsa přidána (záporný objem)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Kapsa: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Experimentální) Používat agenty tiskárny místo tiskových hostů"
|
||||
@@ -32479,10 +32503,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Při načítání došlo k chybě: "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4297,6 +4297,9 @@ msgstr "Sind Sie sicher, dass Sie die Filamentinformationen löschen möchten?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Sie müssen zuerst den Materialtyp und die Farbe auswählen."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Bitte geben Sie einen gültigen Wert ein (K in %.1f~%.1f)"
|
||||
@@ -6156,7 +6159,7 @@ msgstr "Volumen:"
|
||||
msgid "Size:"
|
||||
msgstr "Größe:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Konflikte von G-Code-Pfaden wurden bei Layer %d, Z = %.2lf mm gefunden.Bitte trennen Sie die konfliktbehafteten Objekte weiter voneinander (%s <-> %s)."
|
||||
|
||||
@@ -7024,6 +7027,22 @@ msgstr "Die .gcode.3mf-Datei enthält keine G-Code-Daten. Bitte slicen Sie sie m
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Die Datei '%s' ist verloren gegangen! Bitte laden Sie diese erneut herunter."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11048,6 +11067,12 @@ msgstr "Zeitraffer abbrechen & Drucken"
|
||||
msgid "Clean Up"
|
||||
msgstr "Bereinigen"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Druckauftrag vorbereiten"
|
||||
|
||||
@@ -26532,214 +26557,6 @@ msgstr "Diese Schriftart hat keinen Umriss für diesen Text"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Größe: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitiv"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Leeres Netz erzeugt"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Quader"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Schnell:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Breite (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Tiefe (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Höhe (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R unten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R oben"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R groß"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R klein"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Alle Kanten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Obere Kanten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Untere Kanten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Seitliche Kanten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Netzauflösung"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Form hinzufügen"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Kein Außenprofil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Außenfläche konnte nicht erstellt werden"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Fläche mit Löchern konnte nicht erstellt werden"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Rotieren fehlgeschlagen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Neues Profil beginnen (für Löcher)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmente"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Seiten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Zum Zeichnen in die Ansicht klicken"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Am Raster einrasten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Rasterabstand"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Außen"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "geschlossen"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% Punkte %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Oben)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Vorne)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Seite)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Rotieren (Grad)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0 zum Extrudieren, >0 zum Rotieren"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Tasche (Ausschnitt)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu geschlossenes Profil"
|
||||
msgstr[1] "%zu geschlossene Profile"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Zum Aktivieren ein geschlossenes Profil zeichnen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Alle löschen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Leeres Ergebnis"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extrudieren: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Rotieren: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Kein Objekt ausgewählt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Fläche fehlgeschlagen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Fläche mit Löchern fehlgeschlagen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Werkzeugnetz ist leer"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Tasche hinzugefügt (negatives Volumen)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Tasche: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30123,6 +29940,9 @@ msgstr "Entwicklertools aktivieren"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Fehler beim Laden von %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30802,6 +30622,209 @@ msgstr ""
|
||||
"Verwerfungen vermeiden\n"
|
||||
"Wussten Sie, dass beim Drucken von Materialien, die zu Verwerfungen neigen, wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die Wahrscheinlichkeit von Verwerfungen verringert werden kann?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitiv"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Leeres Netz erzeugt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Quader"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Schnell:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Breite (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Tiefe (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Höhe (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R unten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R oben"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R groß"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R klein"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Alle Kanten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Obere Kanten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Untere Kanten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Seitliche Kanten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Netzauflösung"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Form hinzufügen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Kein Außenprofil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Außenfläche konnte nicht erstellt werden"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Fläche mit Löchern konnte nicht erstellt werden"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Rotieren fehlgeschlagen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Neues Profil beginnen (für Löcher)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmente"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Seiten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Zum Zeichnen in die Ansicht klicken"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Am Raster einrasten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Rasterabstand"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Außen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "geschlossen"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% Punkte %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Oben)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Vorne)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Seite)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Rotieren (Grad)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0 zum Extrudieren, >0 zum Rotieren"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Tasche (Ausschnitt)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu geschlossenes Profil"
|
||||
#~ msgstr[1] "%zu geschlossene Profile"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Zum Aktivieren ein geschlossenes Profil zeichnen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Alle löschen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Leeres Ergebnis"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extrudieren: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Rotieren: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Kein Objekt ausgewählt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Fläche fehlgeschlagen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Fläche mit Löchern fehlgeschlagen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Werkzeugnetz ist leer"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Tasche hinzugefügt (negatives Volumen)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Tasche: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Experimentell) Drucker-Agenten anstelle von Druck-Hosts verwenden"
|
||||
@@ -31857,9 +31880,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Fehler beim Laden von "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-06-17 15:44-0300\n"
|
||||
"Last-Translator: Alexandre Folle de Menezes\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4042,6 +4042,9 @@ msgstr ""
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr ""
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr ""
|
||||
@@ -5775,7 +5778,7 @@ msgstr ""
|
||||
msgid "Size:"
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr ""
|
||||
|
||||
@@ -6614,6 +6617,22 @@ msgstr ""
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr ""
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -10184,6 +10203,12 @@ msgstr ""
|
||||
msgid "Clean Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr ""
|
||||
|
||||
@@ -23590,165 +23615,6 @@ msgstr ""
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr ""
|
||||
|
||||
msgid "Primitive"
|
||||
msgstr ""
|
||||
|
||||
msgid "Empty mesh generated"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Width (X)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Depth (Y)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Height (Z)"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr ""
|
||||
|
||||
msgid "Top R"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minor R"
|
||||
msgstr ""
|
||||
|
||||
msgid "All edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Top edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lateral edges"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mesh resolution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add Shape"
|
||||
msgstr ""
|
||||
|
||||
msgid "No outer profile"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to make outer face"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revolve failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Profile"
|
||||
msgstr ""
|
||||
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Segments"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr ""
|
||||
|
||||
msgid "Snap to grid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Grid step"
|
||||
msgstr ""
|
||||
|
||||
msgid "Outer"
|
||||
msgstr ""
|
||||
|
||||
msgid "closed"
|
||||
msgstr ""
|
||||
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr ""
|
||||
|
||||
msgid "XY (Top)"
|
||||
msgstr ""
|
||||
|
||||
msgid "XZ (Front)"
|
||||
msgstr ""
|
||||
|
||||
msgid "YZ (Side)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Revolve deg"
|
||||
msgstr ""
|
||||
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pocket (cut)"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr ""
|
||||
|
||||
msgid "Clear all"
|
||||
msgstr ""
|
||||
|
||||
msgid "Empty result"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr ""
|
||||
|
||||
msgid "No object selected"
|
||||
msgstr ""
|
||||
|
||||
msgid "Face failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Face with holes failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tool mesh empty"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
msgstr ""
|
||||
@@ -26336,6 +26202,9 @@ msgstr ""
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "/"
|
||||
msgstr ""
|
||||
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
msgstr ""
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Ian A. Bassi <>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4175,6 +4175,9 @@ msgstr "¿Estás seguro que quieres limpiar la información de filamento?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Necesitas seleccionar el tipo y el color del material primero."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Por favor, introduzca un valor válido (K in %.1f~%.1f)"
|
||||
@@ -6009,7 +6012,7 @@ msgstr "Volumen:"
|
||||
msgid "Size:"
|
||||
msgstr "Tamaño:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Se han encontrado conflictos de rutas G-Code en la capa %d, Z = %.2lfmm. Por favor, separe más los objetos en conflicto (%s <-> %s)."
|
||||
|
||||
@@ -6876,6 +6879,22 @@ msgstr "El archivo .gcode .3mf no contiene datos de G-Code. Por favor, lamine co
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "¡El archivo '%s' se perdió!\" Por favor, vuelva a descargárlo."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -10780,6 +10799,12 @@ msgstr "Cancelar timelapse e imprimir"
|
||||
msgid "Clean Up"
|
||||
msgstr "Limpiar"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Preparando el trabajo de impresión"
|
||||
|
||||
@@ -26095,213 +26120,6 @@ msgstr "Esta fuente no tiene contorno para este texto"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Tamaño: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitivo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Se generó una malla vacía"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Caja"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Rápido:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Ancho (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Profundidad (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Altura (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R inferior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R superior"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R mayor"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R menor"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Todas las aristas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Aristas superiores"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Aristas inferiores"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Aristas laterales"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Resolución de la malla"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Añadir forma"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "No hay perfil exterior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "No se pudo crear la cara exterior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "No se pudo crear la cara con agujeros"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Falló la revolución"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Perfil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Iniciar un nuevo perfil (para agujeros)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmentos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Lados"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Haga clic en el lienzo para dibujar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Ajustar a la cuadrícula"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Paso de cuadrícula"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Exterior"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "cerrado"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% puntos %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (superior)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (frontal)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (lateral)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Grados de revolución"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Establezca 0 para extruir y >0 para revolución"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Cajera (corte)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu perfil cerrado"
|
||||
msgstr[1] "%zu perfiles cerrados"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Dibuje un perfil cerrado para activarlo"
|
||||
|
||||
msgid "Clear all"
|
||||
msgstr "Borrar todo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Resultado vacío"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extruir: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Revolución: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "No hay ningún objeto seleccionado"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Falló la cara"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Falló la cara con agujeros"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Malla de la herramienta vacía"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Cajera añadida (volumen negativo)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Cajera: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -29678,6 +29496,9 @@ msgstr "Activar herramientas de desarrollo"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Se produjo un error al cargar %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30357,6 +30178,208 @@ msgstr ""
|
||||
"Evita la deformación\n"
|
||||
"¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitivo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Se generó una malla vacía"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Caja"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Rápido:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Ancho (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Profundidad (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Altura (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R inferior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R superior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R mayor"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R menor"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Todas las aristas"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Aristas superiores"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Aristas inferiores"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Aristas laterales"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Resolución de la malla"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Añadir forma"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "No hay perfil exterior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "No se pudo crear la cara exterior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "No se pudo crear la cara con agujeros"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Falló la revolución"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Perfil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Iniciar un nuevo perfil (para agujeros)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmentos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Lados"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Haga clic en el lienzo para dibujar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Ajustar a la cuadrícula"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Paso de cuadrícula"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Exterior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "cerrado"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% puntos %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (superior)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (frontal)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (lateral)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Grados de revolución"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Establezca 0 para extruir y >0 para revolución"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Cajera (corte)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu perfil cerrado"
|
||||
#~ msgstr[1] "%zu perfiles cerrados"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Dibuje un perfil cerrado para activarlo"
|
||||
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Borrar todo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Resultado vacío"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extruir: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Revolución: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "No hay ningún objeto seleccionado"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Falló la cara"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Falló la cara con agujeros"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Malla de la herramienta vacía"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Cajera añadida (volumen negativo)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Cajera: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Experimental) Usar agentes de impresora en lugar de hosts de impresión"
|
||||
@@ -31412,9 +31435,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Se produjo un error al cargar "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-07-20 13:33+0200\n"
|
||||
"Last-Translator: Manu Goiogana <mgoiogana@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4218,6 +4218,9 @@ msgstr "Ziur zaude filamentuaren informazioa garbitu nahi duzula?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Lehenik eta behin, material-mota eta kolorea hautatu behar dituzu."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Mesedez, sartu baliozko balio bat (K in %.1f~%.1f)"
|
||||
@@ -6063,7 +6066,7 @@ msgstr "Bolumena:"
|
||||
msgid "Size:"
|
||||
msgstr "Tamaina:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "G-code ibilbideen gatazkak aurkitu dira %d geruzan, Z = %.2lf mm. Urrundu gehiago gatazkan dauden objektuak (%s <-> %s)."
|
||||
|
||||
@@ -6927,6 +6930,22 @@ msgstr ".gcode.3mf fitxategiak ez du G-code daturik. Mesedez, xerratu OrcaSlicer
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "'%s' fitxategia galdu da! Deskargatu berriro."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -10886,6 +10905,12 @@ msgstr "Utzi timelapsea eta inprimatu"
|
||||
msgid "Clean Up"
|
||||
msgstr "Garbitu"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Inprimatze-lana prestatzen"
|
||||
|
||||
@@ -26269,214 +26294,6 @@ msgstr "Letra-tipo honek ez du ingeradarik testu honetarako"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Tamaina: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Oinarrizko geometria"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Sare hutsa sortu da"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Kutxa"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Azkar:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Zabalera (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Sakonera (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Altuera (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Beheko R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Goiko R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R nagusia"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R txikia"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Ertz guztiak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Goiko ertzak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Beheko ertzak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Alboko ertzak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Sarearen bereizmena"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Gehitu forma"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Ez dago kanpoko profilik"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Ezin izan da kanpoko aurpegia sortu"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Ezin izan da zuloak dituen aurpegia eraiki"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Erreboluzioak huts egin du"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profila"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Hasi profil berri bat (zuloetarako)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmentuak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Aldeak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Egin klik mihisean marrazteko"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Atxiki saretara"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Sareta-urratsa"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Kanpokoa"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "itxita"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% puntu %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Goikoa)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Aurrekoa)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Albokoa)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Erreboluzio-graduak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Ezarri 0 estruitzeko, >0 erreboluzionatzeko"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Poltsa (ebaki)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu profil itxi"
|
||||
msgstr[1] "%zu profil itxi"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Marraztu profil itxi bat gaitzeko"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Garbitu dena"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Emaitza hutsa"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Estrusioa: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Erreboluzioa: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Ez dago objekturik hautatuta"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Aurpegiak huts egin du"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Zuloak dituen aurpegiak huts egin du"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Tresnaren sarea hutsik dago"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Poltsa gehitu da (bolumen negatiboa)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Poltsa: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -29870,6 +29687,9 @@ msgstr "Gaitu garapen-tresnak"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Errore bat gertatu da %s kargatzean"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30549,6 +30369,209 @@ msgstr ""
|
||||
"Saihestu okertzea\n"
|
||||
"Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Oinarrizko geometria"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Sare hutsa sortu da"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Kutxa"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Azkar:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Zabalera (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Sakonera (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Altuera (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Beheko R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Goiko R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R nagusia"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R txikia"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Ertz guztiak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Goiko ertzak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Beheko ertzak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Alboko ertzak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Sarearen bereizmena"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Gehitu forma"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Ez dago kanpoko profilik"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Ezin izan da kanpoko aurpegia sortu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Ezin izan da zuloak dituen aurpegia eraiki"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Erreboluzioak huts egin du"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profila"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Hasi profil berri bat (zuloetarako)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmentuak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Aldeak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Egin klik mihisean marrazteko"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Atxiki saretara"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Sareta-urratsa"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Kanpokoa"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "itxita"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% puntu %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Goikoa)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Aurrekoa)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Albokoa)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Erreboluzio-graduak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Ezarri 0 estruitzeko, >0 erreboluzionatzeko"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Poltsa (ebaki)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu profil itxi"
|
||||
#~ msgstr[1] "%zu profil itxi"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Marraztu profil itxi bat gaitzeko"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Garbitu dena"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Emaitza hutsa"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Estrusioa: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Erreboluzioa: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Ez dago objekturik hautatuta"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Aurpegiak huts egin du"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Zuloak dituen aurpegiak huts egin du"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Tresnaren sarea hutsik dago"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Poltsa gehitu da (bolumen negatiboa)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Poltsa: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Esperimentala) Erabili inprimagailu-agenteak inprimatze-hostenen ordez"
|
||||
@@ -31608,9 +31631,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Errore bat gertatu da hau kargatzean: "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Guislain Cyril, Thomas Lété\n"
|
||||
@@ -4247,6 +4247,9 @@ msgstr "Voulez-vous vraiment effacer les informations du filament ?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Vous devez d'abord sélectionner le type de matériau et sa couleur."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Veuillez saisir une valeur valide (K entre %.1f~%.1f)"
|
||||
@@ -6098,7 +6101,7 @@ msgstr "Volume :"
|
||||
msgid "Size:"
|
||||
msgstr "Taille :"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Des conflits de chemins G-code ont été trouvés au niveau de la couche %d, z = %.2lfmm. Veuillez séparer davantage les objets en conflit (%s <-> %s)."
|
||||
|
||||
@@ -6966,6 +6969,22 @@ msgstr "Le fichier G-code .3mf ne contient pas de données G-code. Veuillez le d
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Le fichier « %s » a été perdu ! Veuillez le télécharger à nouveau."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -10902,6 +10921,12 @@ msgstr "Annuler le timelapse et imprimer"
|
||||
msgid "Clean Up"
|
||||
msgstr "Nettoyer"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Préparation du travail d'impression"
|
||||
|
||||
@@ -26035,214 +26060,6 @@ msgstr "Cette police n’a pas de contour pour ce texte"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Taille : %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitive"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Maillage vide généré"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Boîte"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Rapide :"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Largeur (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Profondeur (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Hauteur (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R inférieur"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R supérieur"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Grand R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Petit R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Toutes les arêtes"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Arêtes supérieures"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Arêtes inférieures"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Arêtes latérales"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Résolution du maillage"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Ajouter la forme"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Aucun profil extérieur"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Échec de la création de la face extérieure"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Échec de la création de la face avec trous"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Échec de la révolution"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Commencer un nouveau profil (pour les trous)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segments"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Côtés"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Cliquez dans la vue pour dessiner"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Aimanter à la grille"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Pas de la grille"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Extérieur"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "fermé"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2% : %3% points %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Haut)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Avant)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Côté)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Révolution (°)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0 pour une extrusion, >0 pour une révolution"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Poche (enlèvement)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu profil fermé"
|
||||
msgstr[1] "%zu profils fermés"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Dessinez un profil fermé pour activer"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Tout effacer"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Résultat vide"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extrusion : %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Révolution : %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Aucun objet sélectionné"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Échec de la face"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Échec de la face avec trous"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Maillage de l’outil vide"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Poche ajoutée (volume négatif)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Poche : %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -29616,6 +29433,9 @@ msgstr "Activer les outils de développement"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Une erreur s’est produite lors du chargement de %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30295,6 +30115,209 @@ msgstr ""
|
||||
"Éviter la déformation\n"
|
||||
"Saviez-vous que lors de l’impression de matériaux susceptibles de se déformer, tels que l’ABS, une augmentation appropriée de la température du plateau chauffant peut réduire la probabilité de déformation?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitive"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Maillage vide généré"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Boîte"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Rapide :"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Largeur (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Profondeur (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Hauteur (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R inférieur"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R supérieur"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Grand R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Petit R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Toutes les arêtes"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Arêtes supérieures"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Arêtes inférieures"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Arêtes latérales"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Résolution du maillage"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Ajouter la forme"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Aucun profil extérieur"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Échec de la création de la face extérieure"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Échec de la création de la face avec trous"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Échec de la révolution"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Commencer un nouveau profil (pour les trous)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segments"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Côtés"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Cliquez dans la vue pour dessiner"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Aimanter à la grille"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Pas de la grille"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Extérieur"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "fermé"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2% : %3% points %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Haut)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Avant)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Côté)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Révolution (°)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0 pour une extrusion, >0 pour une révolution"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Poche (enlèvement)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu profil fermé"
|
||||
#~ msgstr[1] "%zu profils fermés"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Dessinez un profil fermé pour activer"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Tout effacer"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Résultat vide"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extrusion : %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Révolution : %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Aucun objet sélectionné"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Échec de la face"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Échec de la face avec trous"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Maillage de l’outil vide"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Poche ajoutée (volume négatif)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Poche : %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Expérimental) Utiliser les agents d’imprimante au lieu des hôtes d’impression"
|
||||
@@ -31343,9 +31366,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Une erreur s’est produite lors du chargement de "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -4357,6 +4357,9 @@ msgstr "Biztosan törölni szeretnéd a filament adatait?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Először ki kell választanod az anyagtípust és a színt."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Adj meg érvényes értéket (K tartomány: %.1f~%.1f)"
|
||||
@@ -6233,7 +6236,7 @@ msgid "Size:"
|
||||
msgstr "Méret:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "G-code útvonalütközés található a(z) %d. rétegen, Z = %.2lfmm. Helyezd távolabb egymástól az ütköző objektumokat (%s <-> %s)."
|
||||
|
||||
@@ -7119,6 +7122,22 @@ msgstr "A .gcode.3mf fájl nem tartalmaz G-code adatot. Szeleteld újra Orca Sli
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "A(z) '%s' fájl elveszett! Kérlek, töltsd le újra."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11179,6 +11198,12 @@ msgstr "Timelapse megszakítása és nyomtatás"
|
||||
msgid "Clean Up"
|
||||
msgstr "Tisztítás"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Nyomtatási feladat előkészítése"
|
||||
|
||||
@@ -27000,214 +27025,6 @@ msgstr "Ennek a betűtípusnak nincs körvonala ehhez a szöveghez"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Méret: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitív"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Üres háló jött létre"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Téglatest"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Gyors:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Szélesség (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Mélység (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Magasság (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Alsó R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Felső R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Fő R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Cső R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Minden él"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Felső élek"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Alsó élek"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Oldalélek"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Hálófelbontás"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Alakzat hozzáadása"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Nincs külső profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Nem sikerült létrehozni a külső lapot"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Nem sikerült létrehozni a lyukas lapot"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "A körbeforgatás sikertelen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Új profil kezdése (lyukakhoz)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Szakaszok"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Oldalak"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Kattints a vászonra a rajzoláshoz"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Rácshoz illesztés"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Rács lépésköze"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Külső"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "zárt"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% pont %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (felülnézet)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (elölnézet)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (oldalnézet)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Körbeforgatás (°)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0: extrudálás, >0: körbeforgatás"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Zseb (vágás)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu zárt profil"
|
||||
msgstr[1] "%zu zárt profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Az engedélyezéshez rajzolj egy zárt profilt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Összes törlése"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Üres eredmény"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extrudálás: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Körbeforgatás: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Nincs kijelölt objektum"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "A lap létrehozása sikertelen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "A lyukas lap létrehozása sikertelen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "A szerszámháló üres"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Zseb hozzáadva (negatív térfogat)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Zseb: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30600,6 +30417,10 @@ msgstr "Fejlesztői eszközök engedélyezése"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Hiba történt a(z) %s betöltésekor"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31281,6 +31102,209 @@ msgstr ""
|
||||
"Kunkorodás elkerülése\n"
|
||||
"Tudtad, hogy a kunkorodásra hajlamos anyagok (például ABS) nyomtatásakor az asztal hőmérsékletének növelése csökkentheti a kunkorodás valószínűségét?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitív"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Üres háló jött létre"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Téglatest"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Gyors:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Szélesség (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Mélység (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Magasság (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Alsó R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Felső R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Fő R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Cső R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Minden él"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Felső élek"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Alsó élek"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Oldalélek"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Hálófelbontás"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Alakzat hozzáadása"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Nincs külső profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Nem sikerült létrehozni a külső lapot"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Nem sikerült létrehozni a lyukas lapot"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "A körbeforgatás sikertelen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Új profil kezdése (lyukakhoz)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Szakaszok"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Oldalak"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Kattints a vászonra a rajzoláshoz"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Rácshoz illesztés"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Rács lépésköze"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Külső"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "zárt"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% pont %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (felülnézet)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (elölnézet)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (oldalnézet)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Körbeforgatás (°)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0: extrudálás, >0: körbeforgatás"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Zseb (vágás)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu zárt profil"
|
||||
#~ msgstr[1] "%zu zárt profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Az engedélyezéshez rajzolj egy zárt profilt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Összes törlése"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Üres eredmény"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extrudálás: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Körbeforgatás: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Nincs kijelölt objektum"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "A lap létrehozása sikertelen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "A lyukas lap létrehozása sikertelen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "A szerszámháló üres"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Zseb hozzáadva (negatív térfogat)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Zseb: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Kísérleti) Nyomtatóügynökök használata nyomtatókiszolgálók helyett"
|
||||
@@ -32336,10 +32360,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Hiba történt a betöltés során: "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -4350,6 +4350,9 @@ msgstr "Sei sicuro di voler cancellare le informazioni del filamento?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Devi prima selezionare il tipo e il colore del materiale."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Si prega di immettere un valore valido (K in %.1f~%.1f)"
|
||||
@@ -6206,7 +6209,7 @@ msgstr "Volume:"
|
||||
msgid "Size:"
|
||||
msgstr "Dimensione:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Sono stati trovati conflitti di percorsi nel G-code sullo strato %d, Z = %.2lfmm. Si prega di separare gli oggetti in conflitto (%s <-> %s)."
|
||||
|
||||
@@ -7083,6 +7086,22 @@ msgstr "Il file .gcode.3mf non contiene dati G-code. Elaboralo con OrcaSlicer ed
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Il file '%s' è stato perso! Si prega di scaricarlo di nuovo."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11138,6 +11157,12 @@ msgstr "Annulla timelapse e stampa"
|
||||
msgid "Clean Up"
|
||||
msgstr "Pulisci"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Preparazione della stampa"
|
||||
|
||||
@@ -26874,214 +26899,6 @@ msgstr "Questo carattere non ha un contorno per questo testo"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Dimensioni: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitiva"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Generata una mesh vuota"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Parallelepipedo"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Rapido:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Larghezza (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Profondità (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Altezza (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R inferiore"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R superiore"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R maggiore"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R minore"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Tutti gli spigoli"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Spigoli superiori"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Spigoli inferiori"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Spigoli laterali"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Risoluzione mesh"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Aggiungi forma"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Nessun profilo esterno"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Impossibile creare la faccia esterna"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Impossibile creare la faccia con i fori"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Rivoluzione non riuscita"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profilo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Inizia un nuovo profilo (per i fori)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmenti"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Lati"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Clicca nell'area di disegno per disegnare"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Aggancia alla griglia"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Passo griglia"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Esterno"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "chiuso"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% punti %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Superiore)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Frontale)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Laterale)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Gradi rivoluzione"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Imposta 0 per estrudere, >0 per rivoluzionare"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Tasca (taglio)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu profilo chiuso"
|
||||
msgstr[1] "%zu profili chiusi"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Disegna un profilo chiuso per abilitare"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Cancella tutto"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Risultato vuoto"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Estrusione: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Rivoluzione: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Nessun oggetto selezionato"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Creazione della faccia non riuscita"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Creazione della faccia con fori non riuscita"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Mesh dell'utensile vuota"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Tasca aggiunta (volume negativo)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Tasca: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30464,6 +30281,9 @@ msgstr "Abilita strumenti per sviluppatori"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Si è verificato un errore durante il caricamento di %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31144,6 +30964,209 @@ msgstr ""
|
||||
"Evita le deformazioni\n"
|
||||
"Sapevi che quando si stampano materiali soggetti a deformazioni come l'ABS, aumentare in modo appropriato la temperatura del piano riscaldato può ridurre la probabilità di deformazione?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitiva"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Generata una mesh vuota"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Parallelepipedo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Rapido:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Larghezza (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Profondità (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Altezza (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R inferiore"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R superiore"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R maggiore"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R minore"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Tutti gli spigoli"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Spigoli superiori"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Spigoli inferiori"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Spigoli laterali"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Risoluzione mesh"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Aggiungi forma"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Nessun profilo esterno"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Impossibile creare la faccia esterna"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Impossibile creare la faccia con i fori"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Rivoluzione non riuscita"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profilo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Inizia un nuovo profilo (per i fori)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmenti"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Lati"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Clicca nell'area di disegno per disegnare"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Aggancia alla griglia"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Passo griglia"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Esterno"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "chiuso"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% punti %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Superiore)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Frontale)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Laterale)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Gradi rivoluzione"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Imposta 0 per estrudere, >0 per rivoluzionare"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Tasca (taglio)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu profilo chiuso"
|
||||
#~ msgstr[1] "%zu profili chiusi"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Disegna un profilo chiuso per abilitare"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Cancella tutto"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Risultato vuoto"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Estrusione: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Rivoluzione: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Nessun oggetto selezionato"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Creazione della faccia non riuscita"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Creazione della faccia con fori non riuscita"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Mesh dell'utensile vuota"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Tasca aggiunta (volume negativo)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Tasca: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Sperimentale) Usa gli agenti stampante invece degli host di stampa"
|
||||
@@ -32200,9 +32223,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Si è verificato un errore durante il caricamento di "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -4352,6 +4352,9 @@ msgstr "フィラメント情報をクリアしてもよろしいですか?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "まず材料タイプと色を選択してください。"
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "有効な値を入力してください(Kは%.1f~%.1f)"
|
||||
@@ -6230,7 +6233,7 @@ msgstr "ボリューム"
|
||||
msgid "Size:"
|
||||
msgstr "サイズ:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "レイヤー%d、Z = %.2lfmmでG-codeパスの衝突が検出されました。衝突するオブジェクトをもっと離してください(%s <-> %s)。"
|
||||
|
||||
@@ -7099,6 +7102,22 @@ msgstr ".gcode.3mfファイルにG-codeデータが含まれていません。Or
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "ファイル %s が見つかりませんでした、もう一度ダウンロードしてください。"
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11171,6 +11190,12 @@ msgstr "タイムラプスを中止して印刷"
|
||||
msgid "Clean Up"
|
||||
msgstr "整理する"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "造形タスクを準備"
|
||||
|
||||
@@ -27395,213 +27420,6 @@ msgstr "このフォントにはこのテキストのアウトラインがあり
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "サイズ: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "プリミティブ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "空のメッシュが生成されました"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "ボックス"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "クイック:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "幅 (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "奥行き (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "高さ (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "底面半径"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "上面半径"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "大半径"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "小半径"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "すべてのエッジ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "上面のエッジ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "底面のエッジ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "側面のエッジ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "メッシュ分解能"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "形状を追加"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "外側のプロファイルがありません"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "外側の面を作成できませんでした"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "穴のある面を作成できませんでした"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "回転押し出しに失敗しました"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "プロファイル"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "新しいプロファイルを開始 (穴用)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "セグメント数"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "辺数"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "キャンバスをクリックして描画"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "グリッドにスナップ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "グリッド間隔"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "外側"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "閉じています"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% 点 %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (上面)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (正面)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (側面)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "回転押し出し角度"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0で押し出し、0より大きい値で回転押し出し"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "ポケット (カット)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu個の閉じたプロファイル"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "有効にするには閉じたプロファイルを描画してください"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "すべてクリア"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "結果が空です"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "押し出し: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "回転押し出し: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "オブジェクトが選択されていません"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "面の作成に失敗しました"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "穴のある面の作成に失敗しました"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "ツールメッシュが空です"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "ポケットを追加しました (マイナスボリューム)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "ポケット: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30986,6 +30804,9 @@ msgstr "開発者ツールを有効化"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "%s の読み込み中にエラーが発生しました"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31677,6 +31498,208 @@ msgstr ""
|
||||
"反りを避ける\n"
|
||||
"ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "プリミティブ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "空のメッシュが生成されました"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "ボックス"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "クイック:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "幅 (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "奥行き (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "高さ (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "底面半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "上面半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "大半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "小半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "すべてのエッジ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "上面のエッジ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "底面のエッジ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "側面のエッジ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "メッシュ分解能"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "形状を追加"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "外側のプロファイルがありません"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "外側の面を作成できませんでした"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "穴のある面を作成できませんでした"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "回転押し出しに失敗しました"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "プロファイル"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "新しいプロファイルを開始 (穴用)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "セグメント数"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "辺数"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "キャンバスをクリックして描画"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "グリッドにスナップ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "グリッド間隔"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "外側"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "閉じています"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% 点 %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (上面)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (正面)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (側面)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "回転押し出し角度"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0で押し出し、0より大きい値で回転押し出し"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "ポケット (カット)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu個の閉じたプロファイル"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "有効にするには閉じたプロファイルを描画してください"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "すべてクリア"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "結果が空です"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "押し出し: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "回転押し出し: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "オブジェクトが選択されていません"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "面の作成に失敗しました"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "穴のある面の作成に失敗しました"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "ツールメッシュが空です"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "ポケットを追加しました (マイナスボリューム)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "ポケット: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(実験的) プリントホストの代わりにプリンターエージェントを使用"
|
||||
@@ -32759,9 +32782,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "読み込み中にエラーが発生しました: "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2025-06-02 17:12+0900\n"
|
||||
"Last-Translator: crwusiz <crwusiz@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4377,6 +4377,9 @@ msgstr "정말 필라멘트 정보를 삭제하시겠습니까?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "재료 유형과 색상을 먼저 선택해야 합니다."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "유효한 값을 입력하세요 (%.1f~%.1f 사이의 K)"
|
||||
@@ -6264,7 +6267,7 @@ msgid "Size:"
|
||||
msgstr "크기:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "레이어 %d, Z = %.2lf mm에서 G-code 경로 충돌이 발견되었습니다. 충돌하는 객체를 더 멀리 분리하세요 (%s <-> %s)."
|
||||
|
||||
@@ -7144,6 +7147,22 @@ msgstr ".gcode.3mf 파일에는 G-code 데이터가 없습니다. OrcaSlicer에
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "'%s' 파일이 손실되었습니다! 다시 다운로드하세요."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11313,6 +11332,12 @@ msgstr "타임랩스 취소 후 출력"
|
||||
msgid "Clean Up"
|
||||
msgstr "정리"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "출력 작업 준비 중"
|
||||
|
||||
@@ -27412,213 +27437,6 @@ msgstr "이 글꼴에는 이 텍스트의 외곽선이 없습니다"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "크기: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "기본 모델"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "빈 메시가 생성되었습니다"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "상자"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "빠른 선택:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "너비 (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "깊이 (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "높이 (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "하단 R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "상단 R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "주 R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "부 R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "모든 모서리"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "상단 모서리"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "하단 모서리"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "측면 모서리"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "메시 해상도"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "형상 추가"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "외곽 프로파일 없음"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "외곽 면을 만들지 못했습니다"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "구멍이 있는 면을 만들지 못했습니다"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "회전 실패"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "프로파일"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "새 프로파일 시작(구멍용)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "세그먼트 수"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "변 수"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "캔버스를 클릭하여 그리기"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "격자에 스냅"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "격자 간격"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "외곽"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "닫힘"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: 점 %3%개 %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (위)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (앞)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (측면)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "회전 각도"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "돌출은 0, 회전은 0보다 큰 값으로 설정"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "포켓(잘라내기)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu개의 닫힌 프로파일"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "활성화하려면 닫힌 프로파일을 그리십시오"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "모두 지우기"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "결과가 비어 있음"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "돌출: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "회전: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "선택한 객체 없음"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "면 생성 실패"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "구멍이 있는 면 생성 실패"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "도구 메시가 비어 있음"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "포켓 추가됨(비우기 부품)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "포켓: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -31004,6 +30822,9 @@ msgstr "개발자 도구 사용"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "%s 로드 중 오류가 발생했습니다"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31686,6 +31507,208 @@ msgstr ""
|
||||
"뒤틀림 방지\n"
|
||||
"ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "기본 모델"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "빈 메시가 생성되었습니다"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "상자"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "빠른 선택:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "너비 (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "깊이 (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "높이 (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "하단 R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "상단 R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "주 R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "부 R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "모든 모서리"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "상단 모서리"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "하단 모서리"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "측면 모서리"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "메시 해상도"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "형상 추가"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "외곽 프로파일 없음"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "외곽 면을 만들지 못했습니다"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "구멍이 있는 면을 만들지 못했습니다"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "회전 실패"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "프로파일"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "새 프로파일 시작(구멍용)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "세그먼트 수"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "변 수"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "캔버스를 클릭하여 그리기"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "격자에 스냅"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "격자 간격"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "외곽"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "닫힘"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: 점 %3%개 %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (위)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (앞)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (측면)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "회전 각도"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "돌출은 0, 회전은 0보다 큰 값으로 설정"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "포켓(잘라내기)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu개의 닫힌 프로파일"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "활성화하려면 닫힌 프로파일을 그리십시오"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "모두 지우기"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "결과가 비어 있음"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "돌출: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "회전: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "선택한 객체 없음"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "면 생성 실패"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "구멍이 있는 면 생성 실패"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "도구 메시가 비어 있음"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "포켓 추가됨(비우기 부품)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "포켓: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(실험적) 출력 호스트 대신 프린터 에이전트 사용"
|
||||
@@ -32749,9 +32772,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "로드 중 오류가 발생했습니다: "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -147,6 +147,7 @@ src/slic3r/GUI/HMSPanel.cpp
|
||||
src/slic3r/GUI/MainFrame.cpp
|
||||
src/slic3r/GUI/MediaPlayCtrl.cpp
|
||||
src/slic3r/GUI/MediaFilePanel.cpp
|
||||
src/slic3r/GUI/OrcaFilesPanel.cpp
|
||||
src/slic3r/GUI/ImageGrid.cpp
|
||||
src/slic3r/GUI/Widgets/ImageSwitchButton.cpp
|
||||
src/slic3r/GUI/Printer/PrinterFileSystem.cpp
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-07-02 14:13+0300\n"
|
||||
"Last-Translator: Gintaras Kučinskas <sharanchius@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4343,6 +4343,9 @@ msgstr "Ar jūs tikrai norite išvalyti gijos informaciją?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Pradžioje jums reikia pasirinkti medžiagos tipą ir spalvą."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Įveskite tinkamą reikšmę (K %.1f~%.1f)"
|
||||
@@ -6219,7 +6222,7 @@ msgid "Size:"
|
||||
msgstr "Dydis:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Rasta G-code trajektorijų konfliktų %d sluoksnyje, Z = %.2lfmm. Prašome labiau atskirti konfliktuojančius objektus (%s <-> %s)."
|
||||
|
||||
@@ -7104,6 +7107,22 @@ msgstr "Failas „.gcode.3mf“ neturi G-code duomenų. Supjaustykite jį su „
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Failas „%s“ nerastas! Atsisiųskite jį iš naujo."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11134,6 +11153,12 @@ msgstr "Atšaukti intervalinį fotografavimą ir spausdinti"
|
||||
msgid "Clean Up"
|
||||
msgstr "Išvalyti"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Spausdinimo užduoties rengimas"
|
||||
|
||||
@@ -26733,215 +26758,6 @@ msgstr "Šis šriftas neturi šio teksto kontūro"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Dydis: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primityvas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Sugeneruotas tuščias poligoninis tinklas"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Dėžė"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Greitai:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Plotis (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Gylis (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Aukštis (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Apat. R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Viršut. R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Didysis R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Mažasis R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Visos briaunos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Viršutinės briaunos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Apatinės briaunos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Šoninės briaunos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Tinklelio raiška"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Pridėti formą"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Nėra išorinio profilio"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Nepavyko sukurti išorinio paviršiaus"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Nepavyko sukurti paviršiaus su skylėmis"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Apsukimas nepavyko"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profilis"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Pradėti naują profilį (skylėms)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmentai"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Kraštinės"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Spustelėkite drobėje, kad pieštumėte"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Pritraukti prie tinklelio"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Tinklelio žingsnis"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Išorinis"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "uždaras"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% tšk. %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (viršus)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (priekis)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (šonas)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Apsukimo kampas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0 – išspaudimas, >0 – apsukimas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Įduba (pjūvis)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu uždaras profilis"
|
||||
msgstr[1] "%zu uždari profiliai"
|
||||
msgstr[2] "%zu uždarų profilių"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Nubrėžkite uždarą profilį, kad įjungtumėte"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Išvalyti viską"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Tuščias rezultatas"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Išspaudimas: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Apsukimas: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Nepasirinktas joks objektas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Nepavyko sukurti paviršiaus"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Nepavyko sukurti paviršiaus su skylėmis"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Įrankio tinklelis tuščias"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Įduba pridėta (neigiamas tūris)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Įduba: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30336,6 +30152,10 @@ msgstr "Įjungti kūrėjo įrankius"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Įvyko klaida įkeliant %s"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31016,6 +30836,210 @@ msgstr ""
|
||||
"Venkite deformacijų (warping)\n"
|
||||
"Ar žinojote, kad spausdinant medžiagas, kurios yra linkusios trauktis ir riestis (pvz., ABS), tinkamas kaitinamojo pagrindo temperatūros padidinimas gali sumažinti deformacijų (warping) tikimybę?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primityvas"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Sugeneruotas tuščias poligoninis tinklas"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Dėžė"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Greitai:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Plotis (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Gylis (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Aukštis (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Apat. R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Viršut. R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Didysis R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Mažasis R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Visos briaunos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Viršutinės briaunos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Apatinės briaunos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Šoninės briaunos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Tinklelio raiška"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Pridėti formą"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Nėra išorinio profilio"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Nepavyko sukurti išorinio paviršiaus"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Nepavyko sukurti paviršiaus su skylėmis"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Apsukimas nepavyko"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profilis"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Pradėti naują profilį (skylėms)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmentai"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Kraštinės"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Spustelėkite drobėje, kad pieštumėte"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Pritraukti prie tinklelio"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Tinklelio žingsnis"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Išorinis"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "uždaras"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% tšk. %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (viršus)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (priekis)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (šonas)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Apsukimo kampas"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0 – išspaudimas, >0 – apsukimas"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Įduba (pjūvis)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu uždaras profilis"
|
||||
#~ msgstr[1] "%zu uždari profiliai"
|
||||
#~ msgstr[2] "%zu uždarų profilių"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Nubrėžkite uždarą profilį, kad įjungtumėte"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Išvalyti viską"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Tuščias rezultatas"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Išspaudimas: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Apsukimas: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Nepasirinktas joks objektas"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Nepavyko sukurti paviršiaus"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Nepavyko sukurti paviršiaus su skylėmis"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Įrankio tinklelis tuščias"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Įduba pridėta (neigiamas tūris)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Įduba: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Eksperimentinė) Naudoti spausdintuvo agentus vietoj spausdinimo serverių"
|
||||
@@ -32077,10 +32101,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Įvyko klaida įkeliant "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@@ -4719,6 +4719,9 @@ msgstr "Weet u zeker dat u de filamentinformatie wilt wissen?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "U moet eerst het materiaaltype en de kleur selecteren."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
@@ -6743,7 +6746,7 @@ msgid "Size:"
|
||||
msgstr "Maat:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Er zijn conflicten tussen G-code-paden gevonden op laag %d, Z = %.2lfmm. Plaats de conflicterende objecten verder uit elkaar (%s <-> %s)."
|
||||
|
||||
@@ -7683,6 +7686,22 @@ msgstr "Het .gcode.3mf-bestand bevat geen G-code-gegevens. Slice het met Orca Sl
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Bestand '%s' is verloren gegaan! Download het opnieuw."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -12028,6 +12047,12 @@ msgstr "Timelapse annuleren en printen"
|
||||
msgid "Clean Up"
|
||||
msgstr "Opruimen"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Print opdracht voorbereiden"
|
||||
|
||||
@@ -28928,214 +28953,6 @@ msgstr "Dit lettertype heeft geen omtrek voor deze tekst"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Grootte: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitief"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Lege mesh gegenereerd"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Blok"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Snel:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Breedte (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Diepte (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Hoogte (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R onder"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R boven"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Grote R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Kleine R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Alle randen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Bovenranden"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Onderranden"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Zijranden"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Meshresolutie"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Vorm toevoegen"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Geen buitenprofiel"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Kan het buitenvlak niet maken"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Kan het vlak met gaten niet opbouwen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Wentelen mislukt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profiel"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Nieuw profiel beginnen (voor gaten)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmenten"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Zijden"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Klik op het canvas om te tekenen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Uitlijnen op raster"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Rasterstap"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Buiten"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "gesloten"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% punten %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (boven)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (voor)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (zijkant)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Wentelhoek (°)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Zet op 0 om te extruderen, >0 om te wentelen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Uitsparing (snijden)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu gesloten profiel"
|
||||
msgstr[1] "%zu gesloten profielen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Teken een gesloten profiel om dit in te schakelen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Alles wissen"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Leeg resultaat"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extruderen: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Wentelen: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Geen object geselecteerd"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Vlak mislukt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Vlak met gaten mislukt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Gereedschapsmesh leeg"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Uitsparing toegevoegd (negatief volume)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Uitsparing: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -32534,6 +32351,9 @@ msgstr "Ontwikkelaarstools inschakelen"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Er is een fout opgetreden bij het laden van %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -33214,6 +33034,209 @@ msgstr ""
|
||||
"Kromtrekken voorkomen\n"
|
||||
"Wist je dat bij het printen van materialen die gevoelig zijn voor kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het warmtebed de kans op kromtrekken kan verkleinen?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitief"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Lege mesh gegenereerd"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Blok"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Snel:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Breedte (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Diepte (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Hoogte (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R onder"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R boven"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Grote R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Kleine R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Alle randen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Bovenranden"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Onderranden"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Zijranden"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Meshresolutie"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Vorm toevoegen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Geen buitenprofiel"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Kan het buitenvlak niet maken"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Kan het vlak met gaten niet opbouwen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Wentelen mislukt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profiel"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Nieuw profiel beginnen (voor gaten)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmenten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Zijden"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Klik op het canvas om te tekenen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Uitlijnen op raster"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Rasterstap"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Buiten"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "gesloten"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% punten %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (boven)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (voor)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (zijkant)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Wentelhoek (°)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Zet op 0 om te extruderen, >0 om te wentelen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Uitsparing (snijden)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu gesloten profiel"
|
||||
#~ msgstr[1] "%zu gesloten profielen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Teken een gesloten profiel om dit in te schakelen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Alles wissen"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Leeg resultaat"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extruderen: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Wentelen: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Geen object geselecteerd"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Vlak mislukt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Vlak met gaten mislukt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Gereedschapsmesh leeg"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Uitsparing toegevoegd (negatief volume)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Uitsparing: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Experimenteel) Printeragents gebruiken in plaats van printhosts"
|
||||
@@ -34333,9 +34356,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Er is een fout opgetreden bij het laden van "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OrcaSlicer 2.3.0-rc\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Krzysztof Morga <<tlumaczeniebs@gmail.com>>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4438,6 +4438,9 @@ msgstr "Czy na pewno usunąć informacje o filamentach?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Najpierw należy wybrać rodzaj i kolor filamentu."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Proszę podać prawidłową wartość (K w zakresie %.1f~%.1f)"
|
||||
@@ -6338,7 +6341,7 @@ msgstr "Objętość:"
|
||||
msgid "Size:"
|
||||
msgstr "Rozmiar:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Wykryto konflikty ścieżek G-code na warstwie %d, Z = %.2lfmm. Proszę oddalić od siebie obiekty będące w konflikcie (%s <-> %s)."
|
||||
|
||||
@@ -7235,6 +7238,22 @@ msgstr "Plik .gcode.3mf nie zawiera danych G-code. Proszę poddać go obróbce w
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Plik „%s” został utracony! Proszę pobrać go ponownie."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11413,6 +11432,12 @@ msgstr "Anuluj timelapse i drukuj"
|
||||
msgid "Clean Up"
|
||||
msgstr "Wyczyść"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Przygotowywanie zadania do druku"
|
||||
|
||||
@@ -27480,215 +27505,6 @@ msgstr "Ta czcionka nie ma konturu dla tego tekstu"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Rozmiar: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Prymityw"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Wygenerowano pustą siatkę"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Prostopadłościan"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Szybki wybór:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Szerokość (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Głębokość (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Wysokość (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R dolny"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R górny"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R większy"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R mniejszy"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Wszystkie krawędzie"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Górne krawędzie"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Dolne krawędzie"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Boczne krawędzie"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Rozdzielczość siatki"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Dodaj kształt"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Brak profilu zewnętrznego"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Nie udało się utworzyć powierzchni zewnętrznej"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Nie udało się zbudować powierzchni z otworami"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Obrót nie powiódł się"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Rozpocznij nowy profil (dla otworów)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmenty"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Boki"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Kliknij w widoku, aby rysować"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Przyciągaj do siatki"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Krok siatki"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Zewnętrzny"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "zamknięty"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% pkt %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (góra)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (przód)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (bok)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Obrót (°)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Ustaw 0 dla wyciągnięcia, >0 dla obrotu"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Kieszeń (wycięcie)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu zamknięty profil"
|
||||
msgstr[1] "%zu zamknięte profile"
|
||||
msgstr[2] "%zu zamkniętych profili"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Narysuj zamknięty profil, aby włączyć"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Wyczyść wszystko"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Pusty wynik"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Wyciągnięcie: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Obrót: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Nie wybrano obiektu"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Nie udało się utworzyć powierzchni"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Nie udało się utworzyć powierzchni z otworami"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Siatka narzędzia jest pusta"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Dodano kieszeń (objętość ujemna)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Kieszeń: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30988,6 +30804,9 @@ msgstr "Włącz narzędzia deweloperskie"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Wystąpił błąd podczas ładowania %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31667,6 +31486,210 @@ msgstr ""
|
||||
"Unikaj odkształceń\n"
|
||||
"Czy wiesz, że podczas drukowania filamentami podatnymi na odkształcenia, takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może zmniejszyć prawdopodobieństwo odkształceń?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Prymityw"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Wygenerowano pustą siatkę"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Prostopadłościan"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Szybki wybór:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Szerokość (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Głębokość (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Wysokość (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R dolny"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R górny"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R większy"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R mniejszy"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Wszystkie krawędzie"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Górne krawędzie"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Dolne krawędzie"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Boczne krawędzie"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Rozdzielczość siatki"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Dodaj kształt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Brak profilu zewnętrznego"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Nie udało się utworzyć powierzchni zewnętrznej"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Nie udało się zbudować powierzchni z otworami"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Obrót nie powiódł się"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Rozpocznij nowy profil (dla otworów)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmenty"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Boki"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Kliknij w widoku, aby rysować"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Przyciągaj do siatki"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Krok siatki"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Zewnętrzny"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "zamknięty"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% pkt %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (góra)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (przód)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (bok)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Obrót (°)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Ustaw 0 dla wyciągnięcia, >0 dla obrotu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Kieszeń (wycięcie)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu zamknięty profil"
|
||||
#~ msgstr[1] "%zu zamknięte profile"
|
||||
#~ msgstr[2] "%zu zamkniętych profili"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Narysuj zamknięty profil, aby włączyć"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Wyczyść wszystko"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Pusty wynik"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Wyciągnięcie: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Obrót: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Nie wybrano obiektu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Nie udało się utworzyć powierzchni"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Nie udało się utworzyć powierzchni z otworami"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Siatka narzędzia jest pusta"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Dodano kieszeń (objętość ujemna)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Kieszeń: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Eksperymentalne) Używaj agentów drukarki zamiast serwerów druku"
|
||||
@@ -32698,9 +32721,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Wystąpił błąd podczas ładowania"
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-07-26 11:14-0300\n"
|
||||
"Last-Translator: Alexandre Folle de Menezes\n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
@@ -4184,6 +4184,9 @@ msgstr "Tem certeza de que deseja limpar as informações do filamento?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Você precisa selecionar o tipo e a cor do material primeiro."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Por favor insira um valor válido (K entre %.1f~%.1f)"
|
||||
@@ -6012,7 +6015,7 @@ msgstr "Volume:"
|
||||
msgid "Size:"
|
||||
msgstr "Tamanho:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Foram encontrados conflitos de caminhos de G-code na camada %d, Z = %.2lfmm. Por favor, separe mais os objetos em conflito (%s <-> %s)."
|
||||
|
||||
@@ -6875,6 +6878,22 @@ msgstr "O arquivo .gcode.3mf não contém dados de G-code. Por favor, fatie com
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "O arquivo '%s' foi perdido! Por favor, baixe-o novamente."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -10722,6 +10741,12 @@ msgstr "Cancelar Timelapse e Imprimir"
|
||||
msgid "Clean Up"
|
||||
msgstr "Limpar"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Preparando trabalho de impressão"
|
||||
|
||||
@@ -25968,214 +25993,6 @@ msgstr "Esta fonte não tem contorno para este texto"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Tamanho: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitivo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Malha vazia gerada"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Caixa"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Rápido:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Largura (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Profundidade (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Altura (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R inferior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R superior"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R maior"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R menor"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Todas as arestas"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Arestas superiores"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Arestas inferiores"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Arestas laterais"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Resolução da malha"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Adicionar forma"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Nenhum perfil externo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Falha ao criar a face externa"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Falha ao construir a face com furos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Falha na revolução"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Perfil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Iniciar novo perfil (para furos)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmentos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Lados"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Clique na tela para desenhar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Ajustar à grade"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Passo da grade"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Externo"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "fechado"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% pontos %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Topo)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Frente)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Lateral)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Revolução (graus)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Defina como 0 para extrusão, >0 para revolução"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Cavidade (corte)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu perfil fechado"
|
||||
msgstr[1] "%zu perfis fechados"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Desenhe um perfil fechado para ativar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Limpar tudo"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Resultado vazio"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extrusão: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Revolução: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Nenhum objeto selecionado"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Falha na face"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Falha na face com furos"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Malha da ferramenta vazia"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Cavidade adicionada (volume negativo)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Cavidade: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -29560,6 +29377,10 @@ msgstr "Ativar Ferramentas de Desenvolvedor"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Ocorreu um erro ao carregar %s"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30239,6 +30060,209 @@ msgstr ""
|
||||
"Evitar empenamento\n"
|
||||
"Você sabia que ao imprimir materiais propensos ao empenamento como ABS, aumentar adequadamente a temperatura da mesa aquecida pode reduzir a probabilidade de empenamento?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitivo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Malha vazia gerada"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Caixa"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Rápido:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Largura (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Profundidade (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Altura (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R inferior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R superior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R maior"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R menor"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Todas as arestas"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Arestas superiores"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Arestas inferiores"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Arestas laterais"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Resolução da malha"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Adicionar forma"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Nenhum perfil externo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Falha ao criar a face externa"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Falha ao construir a face com furos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Falha na revolução"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Perfil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Iniciar novo perfil (para furos)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmentos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Lados"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Clique na tela para desenhar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Ajustar à grade"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Passo da grade"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Externo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "fechado"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% pontos %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Topo)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Frente)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Lateral)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Revolução (graus)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Defina como 0 para extrusão, >0 para revolução"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Cavidade (corte)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu perfil fechado"
|
||||
#~ msgstr[1] "%zu perfis fechados"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Desenhe um perfil fechado para ativar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Limpar tudo"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Resultado vazio"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extrusão: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Revolução: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Nenhum objeto selecionado"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Falha na face"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Falha na face com furos"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Malha da ferramenta vazia"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Cavidade adicionada (volume negativo)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Cavidade: %1%"
|
||||
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Experimental) Usar agentes de impressora em vez de hosts de impressão"
|
||||
|
||||
@@ -31292,10 +31316,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Ocorreu um erro ao carregar "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OrcaSlicer V2.5.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-02-25 13:38+0300\n"
|
||||
"Last-Translator: Felix14_v2\n"
|
||||
"Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), Andylg <andylg@yandex.ru>\n"
|
||||
@@ -4319,6 +4319,9 @@ msgstr "Вы действительно хотите удалить информ
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Сначала нужно выбрать тип материала и цвет."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Пожалуйста, введите допустимое значение (K в диапазоне %.1f~%.1f)"
|
||||
@@ -6230,7 +6233,7 @@ msgstr "Объём:"
|
||||
msgid "Size:"
|
||||
msgstr "Размер:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "В G-code на %d слое (z = %.2lf мм) обнаружен конфликт путей. Пожалуйста, разместите конфликтующие модели дальше друг от друга (%s <-> %s)."
|
||||
|
||||
@@ -7141,6 +7144,22 @@ msgstr "Файл .gcode.3mf не содержит данных G-code. Испо
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Файл '%s' потерян! Пожалуйста, загрузите его снова."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11147,6 +11166,12 @@ msgstr "Отключить таймлапс и продолжить"
|
||||
msgid "Clean Up"
|
||||
msgstr "Очистить"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Подготовка задания на печать"
|
||||
|
||||
@@ -27231,215 +27256,6 @@ msgstr "В этом шрифте нет контуров символов это
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Размер: %.1f × %.1f мм"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Фигура"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Создана пустая сетка"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Параллелепипед"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Быстрый выбор:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Ширина (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Глубина (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Высота (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Нижний R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Верхний R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Большой R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Малый R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Все рёбра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Верхние рёбра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Нижние рёбра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Боковые рёбра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Разрешение сетки"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Добавить фигуру"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Нет внешнего профиля"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Не удалось создать внешнюю грань"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Не удалось построить грань с отверстиями"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Ошибка вращения"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Профиль"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Начать новый профиль (для отверстий)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Сегменты"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Стороны"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Щёлкайте в рабочем пространстве, чтобы рисовать"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Привязка к сетке"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Шаг сетки"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Внешний"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "замкнутый"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2% (точек: %3%) %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (сверху)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (спереди)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (сбоку)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Угол вращения, °"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0 — выдавливание, >0 — вращение"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Карман (вырез)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu замкнутый профиль"
|
||||
msgstr[1] "%zu замкнутых профиля"
|
||||
msgstr[2] "%zu замкнутых профилей"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Нарисуйте замкнутый профиль, чтобы включить"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Очистить всё"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Пустой результат"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Выдавливание: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Вращение: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Модель не выбрана"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Ошибка построения грани"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Ошибка построения грани с отверстиями"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Сетка инструмента пуста"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Карман добавлен (вырез)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Карман: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30827,6 +30643,9 @@ msgstr "Включить инструменты разработчика"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Ошибка при загрузке %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31504,6 +31323,210 @@ msgstr ""
|
||||
"Предотвращение коробления материала\n"
|
||||
"Знаете ли вы, что при печати материалами, склонными к короблению, таких как ABS, повышение температуры подогреваемого стола может снизить эту вероятность?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Фигура"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Создана пустая сетка"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Параллелепипед"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Быстрый выбор:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Ширина (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Глубина (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Высота (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Нижний R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Верхний R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Большой R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Малый R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Все рёбра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Верхние рёбра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Нижние рёбра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Боковые рёбра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Разрешение сетки"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Добавить фигуру"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Нет внешнего профиля"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Не удалось создать внешнюю грань"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Не удалось построить грань с отверстиями"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Ошибка вращения"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Профиль"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Начать новый профиль (для отверстий)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Сегменты"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Стороны"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Щёлкайте в рабочем пространстве, чтобы рисовать"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Привязка к сетке"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Шаг сетки"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Внешний"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "замкнутый"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2% (точек: %3%) %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (сверху)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (спереди)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (сбоку)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Угол вращения, °"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0 — выдавливание, >0 — вращение"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Карман (вырез)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu замкнутый профиль"
|
||||
#~ msgstr[1] "%zu замкнутых профиля"
|
||||
#~ msgstr[2] "%zu замкнутых профилей"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Нарисуйте замкнутый профиль, чтобы включить"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Очистить всё"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Пустой результат"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Выдавливание: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Вращение: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Модель не выбрана"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Ошибка построения грани"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Ошибка построения грани с отверстиями"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Сетка инструмента пуста"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Карман добавлен (вырез)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Карман: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Экспериментально) Использовать агентов принтера вместо хостов печати"
|
||||
@@ -32571,9 +32594,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Ошибка при загрузке "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -4784,6 +4784,9 @@ msgstr "Är du säker på att du vill rensa filament informationen?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Du måste först välja materialtyp och färg."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
@@ -6837,7 +6840,7 @@ msgid "Size:"
|
||||
msgstr "Storlek:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Konflikter mellan G-code-banor hittades på lager %d, Z = %.2lfmm. Placera de objekt som krockar längre ifrån varandra (%s <-> %s)."
|
||||
|
||||
@@ -7778,6 +7781,22 @@ msgstr "Filen .gcode.3mf innehåller inga G-code-data. Bered den med Orca Slicer
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Filen '%s' förlorades! Ladda ner den igen."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
@@ -12177,6 +12196,12 @@ msgstr "Avbryt timelapse och skriv ut"
|
||||
msgid "Clean Up"
|
||||
msgstr "Rensa"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Förbereder utskriftsjobb"
|
||||
|
||||
@@ -29271,214 +29296,6 @@ msgstr "Det här teckensnittet har ingen kontur för den här texten"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Storlek: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Primitiv"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Tom mesh genererades"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Låda"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Förval:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Bredd (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Djup (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Höjd (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Nedre R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Övre R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Stor R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Liten R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Alla kanter"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Övre kanter"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Nedre kanter"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Sidokanter"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Meshupplösning"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Lägg till form"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Ingen yttre profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Det gick inte att skapa den yttre ytan"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Det gick inte att skapa en yta med hål"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Rotationen misslyckades"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Starta ny profil (för hål)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segment"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Sidor"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Klicka i vyn för att rita"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Fäst mot rutnät"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Rutnätssteg"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Yttre"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "sluten"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% punkter %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Topp)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Front)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Sida)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Rotationsvinkel"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Ange 0 för extrudering, >0 för rotation"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Ficka (skär)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu sluten profil"
|
||||
msgstr[1] "%zu slutna profiler"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Rita en sluten profil för att aktivera"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Rensa alla"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Tomt resultat"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Extrudera: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Rotera: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Inget objekt valt"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Det gick inte att skapa ytan"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Det gick inte att skapa ytan med hål"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Verktygets mesh är tom"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Ficka tillagd (negativ volym)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Ficka: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -32868,6 +32685,9 @@ msgstr "Aktivera utvecklarverktyg"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Ett fel uppstod vid inläsning av %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -33562,6 +33382,209 @@ msgstr ""
|
||||
"Undvik vridning\n"
|
||||
"Visste du att när du skriver ut material som är benägna att vrida, såsom ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten för vridning?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Primitiv"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Tom mesh genererades"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Låda"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Förval:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Bredd (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Djup (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Höjd (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Nedre R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Övre R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Stor R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Liten R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Alla kanter"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Övre kanter"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Nedre kanter"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Sidokanter"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Meshupplösning"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Lägg till form"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Ingen yttre profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Det gick inte att skapa den yttre ytan"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Det gick inte att skapa en yta med hål"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Rotationen misslyckades"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Starta ny profil (för hål)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segment"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Sidor"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Klicka i vyn för att rita"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Fäst mot rutnät"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Rutnätssteg"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Yttre"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "sluten"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% punkter %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Topp)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Front)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Sida)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Rotationsvinkel"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Ange 0 för extrudering, >0 för rotation"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Ficka (skär)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu sluten profil"
|
||||
#~ msgstr[1] "%zu slutna profiler"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Rita en sluten profil för att aktivera"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Rensa alla"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Tomt resultat"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Extrudera: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Rotera: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Inget objekt valt"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Det gick inte att skapa ytan"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Det gick inte att skapa ytan med hål"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Verktygets mesh är tom"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Ficka tillagd (negativ volym)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Ficka: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Experimentellt) Använd skrivaragenter i stället för utskriftsvärdar"
|
||||
@@ -34687,9 +34710,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Ett fel uppstod vid inläsning av "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-06-19 13:40+0700\n"
|
||||
"Last-Translator: Icezaza\n"
|
||||
"Language-Team: Thai\n"
|
||||
@@ -4332,6 +4332,9 @@ msgstr "คุณแน่ใจหรือไม่ว่าต้องกา
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "คุณต้องเลือกประเภทวัสดุและสีก่อน"
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "โปรดป้อนค่าที่ถูกต้อง (K อยู่ในช่วง %.1f~%.1f)"
|
||||
@@ -6189,7 +6192,7 @@ msgid "Size:"
|
||||
msgstr "ขนาด:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "พบความขัดแย้งของเส้นทาง G-code ที่เลเยอร์ %d, Z = %.2lfmm โปรดแยกวัตถุที่ขัดแย้งกันให้ไกลออกไป (%s <-> %s)"
|
||||
|
||||
@@ -7058,6 +7061,22 @@ msgstr "ไฟล์ .gcode.3mf ไม่มีข้อมูล G-code โป
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "ไฟล์ '%s' สูญหาย! กรุณาดาวน์โหลดอีกครั้ง."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11065,6 +11084,12 @@ msgstr "ยกเลิกไทม์แลปส์และพิมพ์"
|
||||
msgid "Clean Up"
|
||||
msgstr "ล้าง"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "กำลังเตรียมงานพิมพ์"
|
||||
|
||||
@@ -26617,213 +26642,6 @@ msgstr "แบบอักษรนี้ไม่มีเส้นขอบส
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "ขนาด: %.1f × %.1f มม."
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "รูปทรงพื้นฐาน"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "สร้างเมชว่างเปล่า"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "กล่อง"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "ขนาดด่วน:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "ความกว้าง (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "ความลึก (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "ความสูง (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R ล่าง"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R บน"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R หลัก"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R รอง"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "ขอบทั้งหมด"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "ขอบบน"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "ขอบล่าง"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "ขอบด้านข้าง"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "ความละเอียดเมช"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "เพิ่มรูปทรง"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "ไม่มีโปรไฟล์ด้านนอก"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "ไม่สามารถสร้างผิวหน้าด้านนอกได้"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "ไม่สามารถสร้างผิวหน้าที่มีรูได้"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "หมุนขึ้นรูปล้มเหลว"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "โปรไฟล์"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "เริ่มโปรไฟล์ใหม่ (สำหรับรู)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "เซกเมนต์"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "ด้าน"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "คลิกบนพื้นที่วาดเพื่อวาด"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "สแน็ปกับกริด"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "ระยะกริด"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "ด้านนอก"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "แบบปิด"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% จุด %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (บน)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (ด้านหน้า)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (ด้านข้าง)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "องศาหมุนขึ้นรูป"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "ตั้งเป็น 0 เพื่อยืดขึ้นรูป, >0 เพื่อหมุนขึ้นรูป"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "ช่องเว้า (ตัด)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "โปรไฟล์ปิด %zu รายการ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "วาดโปรไฟล์ปิดเพื่อเปิดใช้งาน"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "ล้างทั้งหมด"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "ผลลัพธ์ว่างเปล่า"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "ยืดขึ้นรูป: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "หมุนขึ้นรูป: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "ไม่ได้เลือกวัตถุ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "สร้างผิวหน้าล้มเหลว"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "สร้างผิวหน้าที่มีรูล้มเหลว"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "เมชเครื่องมือว่างเปล่า"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "เพิ่มช่องเว้าแล้ว (วอลลุ่มเชิงลบ)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "ช่องเว้า: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30216,6 +30034,10 @@ msgstr "เปิดใช้งานเครื่องมือนักพ
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "เกิดข้อผิดพลาดในการโหลด %s"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30895,6 +30717,208 @@ msgstr ""
|
||||
"หลีกเลี่ยงการบิดเบี้ยว\n"
|
||||
"คุณรู้หรือไม่ว่าเมื่อพิมพ์วัสดุที่มีแนวโน้มที่จะเกิดการบิดเบี้ยว เช่น ABS การเพิ่มอุณหภูมิฐานพิมพ์อย่างเหมาะสมสามารถลดความน่าจะเป็นของการบิดเบี้ยวได้"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "รูปทรงพื้นฐาน"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "สร้างเมชว่างเปล่า"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "กล่อง"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "ขนาดด่วน:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "ความกว้าง (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "ความลึก (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "ความสูง (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R ล่าง"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R บน"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R หลัก"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R รอง"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "ขอบทั้งหมด"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "ขอบบน"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "ขอบล่าง"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "ขอบด้านข้าง"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "ความละเอียดเมช"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "เพิ่มรูปทรง"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "ไม่มีโปรไฟล์ด้านนอก"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "ไม่สามารถสร้างผิวหน้าด้านนอกได้"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "ไม่สามารถสร้างผิวหน้าที่มีรูได้"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "หมุนขึ้นรูปล้มเหลว"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "โปรไฟล์"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "เริ่มโปรไฟล์ใหม่ (สำหรับรู)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "เซกเมนต์"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "ด้าน"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "คลิกบนพื้นที่วาดเพื่อวาด"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "สแน็ปกับกริด"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "ระยะกริด"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "ด้านนอก"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "แบบปิด"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% จุด %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (บน)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (ด้านหน้า)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (ด้านข้าง)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "องศาหมุนขึ้นรูป"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "ตั้งเป็น 0 เพื่อยืดขึ้นรูป, >0 เพื่อหมุนขึ้นรูป"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "ช่องเว้า (ตัด)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "โปรไฟล์ปิด %zu รายการ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "วาดโปรไฟล์ปิดเพื่อเปิดใช้งาน"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "ล้างทั้งหมด"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "ผลลัพธ์ว่างเปล่า"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "ยืดขึ้นรูป: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "หมุนขึ้นรูป: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "ไม่ได้เลือกวัตถุ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "สร้างผิวหน้าล้มเหลว"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "สร้างผิวหน้าที่มีรูล้มเหลว"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "เมชเครื่องมือว่างเปล่า"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "เพิ่มช่องเว้าแล้ว (วอลลุ่มเชิงลบ)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "ช่องเว้า: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(ทดลอง) ใช้เอเจนต์เครื่องพิมพ์แทนโฮสต์การพิมพ์"
|
||||
@@ -31952,10 +31976,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "เกิดข้อผิดพลาดในการโหลด "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-08-21 23:18+0300\n"
|
||||
"Last-Translator: GlauTech\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4384,6 +4384,9 @@ msgstr "Filament bilgisini temizlemek istediğinizden emin misiniz?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Önce malzeme türünü ve rengini seçmeniz gerekir."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)"
|
||||
@@ -6255,7 +6258,7 @@ msgstr "Hacim:"
|
||||
msgid "Size:"
|
||||
msgstr "Boyut:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "%d katmanında G-code yollarında çakışmalar bulundu, Z = %.2lfmm. Lütfen çakışan nesneleri daha uzağa ayırın (%s <-> %s)."
|
||||
|
||||
@@ -7131,6 +7134,22 @@ msgstr ".gcode.3mf dosyası hiçbir G-code verisi içermiyor. Lütfen dosyayı B
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "'%s' dosyası kayboldu! Lütfen tekrar indirin."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11201,6 +11220,12 @@ msgstr "Timelapse'i İptal Et ve Yazdır"
|
||||
msgid "Clean Up"
|
||||
msgstr "Temizle"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Yazdırma için hazırlanıyor"
|
||||
|
||||
@@ -27062,214 +27087,6 @@ msgstr "Bu yazı tipinde bu metin için dış hat yok"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Boyut: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Şekil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Boş mesh oluşturuldu"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Kutu"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Hızlı:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Genişlik (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Derinlik (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Yükseklik (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Alt R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Üst R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Büyük R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Küçük R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Tüm kenarlar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Üst kenarlar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Alt kenarlar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Yan kenarlar"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Mesh çözünürlüğü"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Şekil ekle"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Dış profil yok"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Dış yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Delikli yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Döndürme başarısız oldu"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Yeni profil başlat (delikler için)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Segmentler"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Kenar sayısı"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Çizmek için tuvale tıklayın"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Izgaraya yasla"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Izgara adımı"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Dış"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "kapalı"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% nokta %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Üst)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Ön)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Yan)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Döndürme açısı"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Ekstrüzyon için 0, döndürme için >0 girin"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Cep (kes)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu kapalı profil"
|
||||
msgstr[1] "%zu kapalı profil"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Etkinleştirmek için kapalı bir profil çizin"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Tümünü temizle"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Boş sonuç"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Ekstrüzyon: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Döndürme: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Nesne seçilmedi"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Delikli yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Araç mesh'i boş"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Cep eklendi (negatif hacim)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Cep: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30665,6 +30482,10 @@ msgstr "Geliştirici Araçlarını Etkinleştir"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "%s yüklenirken bir hata oluştu"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31346,6 +31167,209 @@ msgstr ""
|
||||
"Eğilmeyi önleyin\n"
|
||||
"ABS gibi bükülmeye yatkın malzemelere baskı yaparken, ısıtma yatağı sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını azaltabileceğini biliyor muydunuz?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Şekil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Boş mesh oluşturuldu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Kutu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Hızlı:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Genişlik (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Derinlik (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Yükseklik (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Alt R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Üst R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Büyük R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Küçük R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Tüm kenarlar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Üst kenarlar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Alt kenarlar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Yan kenarlar"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Mesh çözünürlüğü"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Şekil ekle"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Dış profil yok"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Dış yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Delikli yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Döndürme başarısız oldu"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Yeni profil başlat (delikler için)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Segmentler"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Kenar sayısı"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Çizmek için tuvale tıklayın"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Izgaraya yasla"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Izgara adımı"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Dış"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "kapalı"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% nokta %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Üst)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Ön)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Yan)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Döndürme açısı"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Ekstrüzyon için 0, döndürme için >0 girin"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Cep (kes)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu kapalı profil"
|
||||
#~ msgstr[1] "%zu kapalı profil"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Etkinleştirmek için kapalı bir profil çizin"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Tümünü temizle"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Boş sonuç"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Ekstrüzyon: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Döndürme: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Nesne seçilmedi"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Delikli yüz oluşturulamadı"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Araç mesh'i boş"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Cep eklendi (negatif hacim)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Cep: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Deneysel) Baskı sunucuları yerine yazıcı aracılarını kullan"
|
||||
@@ -32401,10 +32425,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Yüklenirken bir hata oluştu: "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: orcaslicerua\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-07-17 16:25+0300\n"
|
||||
"Last-Translator: Andrij Mizyk <andm1zyk@proton.me>\n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
@@ -4298,6 +4298,9 @@ msgstr "Ви впевнені, що хочете видалити інформа
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Спочатку потрібно вибрати тип матеріалу та колір."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Будь ласка введіть коректне значення (K в %.1f~%.1f)"
|
||||
@@ -6209,7 +6212,7 @@ msgid "Size:"
|
||||
msgstr "Розмір:"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Виявлено конфлікти шляхів G-code на шарі %d, Z = %.2lf мм. Будь ласка, рознесіть конфліктуючі обʼєкти далі один від одного (%s <-> %s)."
|
||||
|
||||
@@ -7100,6 +7103,22 @@ msgstr "Файл .gcode.3mf не містить даних G-code. Будь ла
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "Файл '%s' втрачений! Завантажте його знову."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11218,6 +11237,12 @@ msgstr "Скасувати таймлапс і друкувати"
|
||||
msgid "Clean Up"
|
||||
msgstr "Очистити"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Підготовка завдання для друку"
|
||||
|
||||
@@ -27229,216 +27254,6 @@ msgstr "У цьому шрифті немає контурів символів
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Розмір: %.1f × %.1f мм"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Примітив"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Згенеровано порожню сітку"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Паралелепіпед"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Швидкий вибір:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Ширина (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Глибина (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Висота (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "Нижній R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "Верхній R"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "Великий R"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "Малий R"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Усі ребра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Верхні ребра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Нижні ребра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Бічні ребра"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Роздільна здатність сітки"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Додати форму"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Немає зовнішнього профілю"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Не вдалося створити зовнішню грань"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Не вдалося побудувати грань з отворами"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Не вдалося виконати обертання"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Профіль"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Почати новий профіль (для отворів)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Сегменти"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Сторони"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Клацніть на полотні, щоб малювати"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Привʼязка до сітки"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Крок сітки"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Зовнішній"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "замкнений"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2% (точок: %3%) %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Верх)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Перед)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Бік)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Обертання, °"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "0 — видавлювання, >0 — обертання"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Кишеня (вирізання)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu замкнений профіль"
|
||||
msgstr[1] "%zu замкнені профілі"
|
||||
msgstr[2] "%zu замкнених профілів"
|
||||
msgstr[3] "%zu замкненого профілю"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Намалюйте замкнений профіль, щоб увімкнути"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Очистити все"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Порожній результат"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Видавлювання: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Обертання: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Не вибрано обʼєкт"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Не вдалося створити грань"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Не вдалося створити грань з отворами"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Сітка інструмента порожня"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Кишеню додано (відʼємний обʼєм)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Кишеня: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30832,6 +30647,9 @@ msgstr "Увімкнути інструменти розробника"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Помилка під час завантаження %s"
|
||||
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -31516,6 +31334,211 @@ msgstr ""
|
||||
"Уникнення деформації\n"
|
||||
"Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Примітив"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Згенеровано порожню сітку"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Паралелепіпед"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Швидкий вибір:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Ширина (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Глибина (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Висота (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "Нижній R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "Верхній R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "Великий R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "Малий R"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Усі ребра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Верхні ребра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Нижні ребра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Бічні ребра"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Роздільна здатність сітки"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Додати форму"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Немає зовнішнього профілю"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Не вдалося створити зовнішню грань"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Не вдалося побудувати грань з отворами"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Не вдалося виконати обертання"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Профіль"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Почати новий профіль (для отворів)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Сегменти"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Сторони"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Клацніть на полотні, щоб малювати"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Привʼязка до сітки"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Крок сітки"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Зовнішній"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "замкнений"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2% (точок: %3%) %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Верх)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Перед)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Бік)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Обертання, °"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "0 — видавлювання, >0 — обертання"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Кишеня (вирізання)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu замкнений профіль"
|
||||
#~ msgstr[1] "%zu замкнені профілі"
|
||||
#~ msgstr[2] "%zu замкнених профілів"
|
||||
#~ msgstr[3] "%zu замкненого профілю"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Намалюйте замкнений профіль, щоб увімкнути"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Очистити все"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Порожній результат"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Видавлювання: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Обертання: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Не вибрано обʼєкт"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Не вдалося створити грань"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Не вдалося створити грань з отворами"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Сітка інструмента порожня"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Кишеню додано (відʼємний обʼєм)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Кишеня: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Експериментально) Використовувати агентів принтера замість хостів друку"
|
||||
@@ -32595,9 +32618,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Помилка під час завантаження "
|
||||
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2025-10-02 17:43+0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: hainguyen.ts13@gmail.com\n"
|
||||
@@ -4558,6 +4558,9 @@ msgstr "Bạn có chắc muốn xóa thông tin filament?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "Bạn cần chọn loại vật liệu và màu trước."
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "Vui lòng nhập giá trị hợp lệ (K trong %.1f~%.1f)"
|
||||
@@ -6562,7 +6565,7 @@ msgstr "Thể tích:"
|
||||
msgid "Size:"
|
||||
msgstr "Kích thước:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "Đã tìm thấy xung đột đường đi G-code tại lớp %d, Z = %.2lfmm. Vui lòng tách các vật thể xung đột ra xa hơn (%s <-> %s)."
|
||||
|
||||
@@ -7466,6 +7469,22 @@ msgstr "File .gcode.3mf không chứa dữ liệu G-code. Vui lòng slice với
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "File '%s' đã bị mất! Vui lòng tải lại."
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11744,6 +11763,12 @@ msgstr "Hủy timelapse & In"
|
||||
msgid "Clean Up"
|
||||
msgstr "Dọn dẹp"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "Đang chuẩn bị công việc in"
|
||||
|
||||
@@ -27905,213 +27930,6 @@ msgstr "Font này không có đường viền cho chữ này"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "Kích thước: %.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "Hình nguyên thủy"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "Đã tạo lưới rỗng"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "Hộp"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "Nhanh:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "Độ rộng (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "Độ sâu (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "Chiều cao (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "R đáy"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "R đỉnh"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "R lớn"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "R nhỏ"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "Tất cả cạnh"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "Cạnh trên"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "Cạnh dưới"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "Cạnh bên"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "Độ phân giải lưới"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "Thêm hình"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "Không có biên dạng ngoài"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "Không thể tạo mặt ngoài"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "Không thể tạo mặt có lỗ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "Tròn xoay thất bại"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "Biên dạng"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "Bắt đầu biên dạng mới (cho lỗ)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "Số đoạn"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "Số cạnh"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "Nhấn vào khung vẽ để vẽ"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "Bám theo lưới"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "Bước lưới"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "Ngoài"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "khép kín"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%: %3% điểm %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY (Trên)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ (Trước)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ (Bên)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "Góc tròn xoay"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "Đặt 0 để đùn, >0 để tạo khối tròn xoay"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "Khoét hốc (cắt)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu biên dạng khép kín"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "Vẽ một biên dạng khép kín để bật"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "Xóa tất cả"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "Kết quả rỗng"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "Đùn: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "Tròn xoay: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "Chưa chọn vật thể nào"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "Tạo mặt thất bại"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "Tạo mặt có lỗ thất bại"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "Lưới công cụ rỗng"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "Đã thêm hốc (thể tích âm)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "Khoét hốc: %1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -31505,6 +31323,10 @@ msgstr "Bật công cụ nhà phát triển"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "Đã xảy ra lỗi khi tải %s"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -32185,6 +32007,208 @@ msgstr ""
|
||||
"Tránh cong vênh\n"
|
||||
"Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn nóng một cách thích hợp có thể giảm xác suất cong vênh không?"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "Hình nguyên thủy"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "Đã tạo lưới rỗng"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "Hộp"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "Nhanh:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "Độ rộng (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "Độ sâu (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "Chiều cao (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "R đáy"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "R đỉnh"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "R lớn"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "R nhỏ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "Tất cả cạnh"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "Cạnh trên"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "Cạnh dưới"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "Cạnh bên"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "Độ phân giải lưới"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "Thêm hình"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "Không có biên dạng ngoài"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "Không thể tạo mặt ngoài"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "Không thể tạo mặt có lỗ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "Tròn xoay thất bại"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "Biên dạng"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "Bắt đầu biên dạng mới (cho lỗ)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "Số đoạn"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "Số cạnh"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "Nhấn vào khung vẽ để vẽ"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "Bám theo lưới"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "Bước lưới"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "Ngoài"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "khép kín"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%: %3% điểm %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY (Trên)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ (Trước)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ (Bên)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "Góc tròn xoay"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "Đặt 0 để đùn, >0 để tạo khối tròn xoay"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "Khoét hốc (cắt)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu biên dạng khép kín"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "Vẽ một biên dạng khép kín để bật"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "Xóa tất cả"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "Kết quả rỗng"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "Đùn: %1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "Tròn xoay: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "Chưa chọn vật thể nào"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "Tạo mặt thất bại"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "Tạo mặt có lỗ thất bại"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "Lưới công cụ rỗng"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "Đã thêm hốc (thể tích âm)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "Khoét hốc: %1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(Thử nghiệm) Dùng tác nhân máy in thay cho máy chủ in"
|
||||
@@ -33275,10 +33299,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "Đã xảy ra lỗi khi tải "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Slic3rPE\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2026-06-11 12:37-0300\n"
|
||||
"Last-Translator: Handle <mail@bysb.net>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4185,6 +4185,9 @@ msgstr "您确定要清除耗材丝信息吗?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "您需要先选择材料类型和颜色。"
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "请输入有效的数值(K的范围为%.1f~%.1f)"
|
||||
@@ -6039,7 +6042,7 @@ msgstr "体积:"
|
||||
msgid "Size:"
|
||||
msgstr "尺寸:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "发现G-code路径在层%d,高度为%.2lf mm处有冲突。请将有冲突的对象分离得更远(%s <-> %s)。"
|
||||
|
||||
@@ -6903,6 +6906,22 @@ msgstr ".gcode.3mf文件中不包含G-code数据。请使用Orca Slicer进行切
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "文件%s丢失,请重新下载。"
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -10853,6 +10872,12 @@ msgstr "取消延时摄影,继续打印"
|
||||
msgid "Clean Up"
|
||||
msgstr "清理"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "正在准备打印任务"
|
||||
|
||||
@@ -26335,213 +26360,6 @@ msgstr "此字体中没有该文字的字形轮廓"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "大小:%.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "标准模型"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "生成了空网格"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "长方体"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "快速:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "宽度 (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "深度 (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "高度 (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "底面半径"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "顶面半径"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "大半径"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "小半径"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "所有边"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "顶部边"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "底部边"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "侧边"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "网格精度"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "添加形状"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "没有外轮廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "无法生成外轮廓面"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "无法生成带孔的面"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "旋转失败"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "轮廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "开始新轮廓(用于孔)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "段数"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "边数"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "单击画布进行绘制"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "吸附到网格"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "网格间距"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "外轮廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "已闭合"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%:%3% 个点 %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY(顶部)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ(前面)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ(侧面)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "旋转角度"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "设为 0 则拉伸,大于 0 则旋转"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "凹槽(切除)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu 个闭合轮廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "绘制一个闭合轮廓以启用"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "全部清除"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "结果为空"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "拉伸:%1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "旋转:%1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "未选择对象"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "生成面失败"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "生成带孔的面失败"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "工具网格为空"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "已添加凹槽(负体积)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "凹槽:%1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -29944,6 +29762,10 @@ msgstr "启用开发者工具"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "加载 %s 时出错"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30623,6 +30445,208 @@ msgstr ""
|
||||
"避免翘曲\n"
|
||||
"您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "标准模型"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "生成了空网格"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "长方体"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "快速:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "宽度 (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "深度 (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "高度 (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "底面半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "顶面半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "大半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "小半径"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "所有边"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "顶部边"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "底部边"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "侧边"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "网格精度"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "添加形状"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "没有外轮廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "无法生成外轮廓面"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "无法生成带孔的面"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "旋转失败"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "轮廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "开始新轮廓(用于孔)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "段数"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "边数"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "单击画布进行绘制"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "吸附到网格"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "网格间距"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "外轮廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "已闭合"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%:%3% 个点 %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY(顶部)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ(前面)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ(侧面)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "旋转角度"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "设为 0 则拉伸,大于 0 则旋转"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "凹槽(切除)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu 个闭合轮廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "绘制一个闭合轮廓以启用"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "全部清除"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "结果为空"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "拉伸:%1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "旋转:%1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "未选择对象"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "生成面失败"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "生成带孔的面失败"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "工具网格为空"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "已添加凹槽(负体积)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "凹槽:%1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(实验性)使用打印机代理替代打印主机"
|
||||
@@ -31675,10 +31699,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "加载时出错: "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Orca Slicer\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-10-06 15:16-0300\n"
|
||||
"POT-Creation-Date: 2026-10-08 11:08+0800\n"
|
||||
"PO-Revision-Date: 2025-11-28 13:48-0600\n"
|
||||
"Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n"
|
||||
"Language-Team: \n"
|
||||
@@ -4290,6 +4290,9 @@ msgstr "您確認要清除線材資訊嗎?"
|
||||
msgid "You need to select the material type and color first."
|
||||
msgstr "您需要先選擇線材類型和顏色。"
|
||||
|
||||
msgid "The minimum temperature cannot be greater than the maximum temperature."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Please input a valid value (K in %.1f~%.1f)"
|
||||
msgstr "請輸入有效的數值 (K於 %.1f~%.1f 之間)"
|
||||
@@ -6169,7 +6172,7 @@ msgstr "體積:"
|
||||
msgid "Size:"
|
||||
msgstr "尺寸:"
|
||||
|
||||
#, c-format, boost-format
|
||||
#, boost-format
|
||||
msgid "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please separate the conflicted objects farther (%s <-> %s)."
|
||||
msgstr "發現 G-code 路徑在 %d 層,Z = %.2lf mm 處的衝突。請將有衝突的物件分離得更遠(%s <-> %s)。"
|
||||
|
||||
@@ -7038,6 +7041,22 @@ msgstr ".gcode.3mf 檔案不包含 G-code 資料。請使用 OrcaSlicer 切片
|
||||
msgid "File '%s' was lost! Please download it again."
|
||||
msgstr "檔案 %s 遺失,請重新下載。"
|
||||
|
||||
msgid "gcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to delete the file from printer."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid "Do you want to print the file '%s' from printer?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print file"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start the print job."
|
||||
msgstr ""
|
||||
|
||||
#, c-format, boost-format
|
||||
msgid ""
|
||||
"File: %s\n"
|
||||
@@ -11051,6 +11070,12 @@ msgstr "取消縮時攝影並列印"
|
||||
msgid "Clean Up"
|
||||
msgstr "清理"
|
||||
|
||||
msgid "AMS filament mapping is not available for this printer. Clear the AMS mapping before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "A filament used by this print has no AMS mapping. Assign it before printing."
|
||||
msgstr ""
|
||||
|
||||
msgid "Preparing print job"
|
||||
msgstr "正在準備列印作業"
|
||||
|
||||
@@ -26533,213 +26558,6 @@ msgstr "此字型中沒有該文字的字形輪廓"
|
||||
msgid "Size: %.1f × %.1f mm"
|
||||
msgstr "尺寸:%.1f × %.1f mm"
|
||||
|
||||
# AI Translated
|
||||
msgid "Primitive"
|
||||
msgstr "標準模型"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty mesh generated"
|
||||
msgstr "產生了空的網格"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Default name of an object created from the box primitive shape.
|
||||
msgid "Box"
|
||||
msgstr "長方體"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: label in front of the preset cube size buttons
|
||||
msgid "Quick:"
|
||||
msgstr "快速:"
|
||||
|
||||
# AI Translated
|
||||
msgid "Width (X)"
|
||||
msgstr "寬度 (X)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Depth (Y)"
|
||||
msgstr "深度 (Y)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Height (Z)"
|
||||
msgstr "高度 (Z)"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: bottom radius of a cone ("Top R" is the top radius)
|
||||
msgid "Bottom R"
|
||||
msgstr "底部半徑"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top R"
|
||||
msgstr "頂部半徑"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Primitive gizmo: major radius of a torus ("Minor R" is the tube radius)
|
||||
msgid "Major R"
|
||||
msgstr "主半徑"
|
||||
|
||||
# AI Translated
|
||||
msgid "Minor R"
|
||||
msgstr "次半徑"
|
||||
|
||||
# AI Translated
|
||||
msgid "All edges"
|
||||
msgstr "所有邊"
|
||||
|
||||
# AI Translated
|
||||
msgid "Top edges"
|
||||
msgstr "頂部邊"
|
||||
|
||||
# AI Translated
|
||||
msgid "Bottom edges"
|
||||
msgstr "底部邊"
|
||||
|
||||
# AI Translated
|
||||
msgid "Lateral edges"
|
||||
msgstr "側邊"
|
||||
|
||||
# AI Translated
|
||||
msgid "Mesh resolution"
|
||||
msgstr "網格解析度"
|
||||
|
||||
# AI Translated
|
||||
msgid "Add Shape"
|
||||
msgstr "新增形狀"
|
||||
|
||||
# AI Translated
|
||||
msgid "No outer profile"
|
||||
msgstr "沒有外輪廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to make outer face"
|
||||
msgstr "無法建立外部面"
|
||||
|
||||
# AI Translated
|
||||
msgid "Failed to build face with holes"
|
||||
msgstr "無法建立帶孔的面"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve failed"
|
||||
msgstr "迴轉失敗"
|
||||
|
||||
# AI Translated
|
||||
msgid "Profile"
|
||||
msgstr "輪廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "Start new profile (for holes)"
|
||||
msgstr "開始新輪廓(用於孔洞)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Segments"
|
||||
msgstr "段數"
|
||||
|
||||
# AI Translated
|
||||
msgid "Sides"
|
||||
msgstr "邊數"
|
||||
|
||||
# AI Translated
|
||||
msgid "Click on canvas to draw"
|
||||
msgstr "在畫布上點選以繪製"
|
||||
|
||||
# AI Translated
|
||||
msgid "Snap to grid"
|
||||
msgstr "貼齊格線"
|
||||
|
||||
# AI Translated
|
||||
msgid "Grid step"
|
||||
msgstr "格線間距"
|
||||
|
||||
# AI Translated
|
||||
msgid "Outer"
|
||||
msgstr "外輪廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "closed"
|
||||
msgstr "已封閉"
|
||||
|
||||
# AI Translated
|
||||
#. TRN Sketch gizmo profile list: "Outer" or "Hole", profile number, point count, "closed" or nothing
|
||||
#, boost-format
|
||||
msgid "%1% %2%: %3% points %4%"
|
||||
msgstr "%1% %2%:%3% 個點 %4%"
|
||||
|
||||
# AI Translated
|
||||
msgid "XY (Top)"
|
||||
msgstr "XY(頂部)"
|
||||
|
||||
# AI Translated
|
||||
msgid "XZ (Front)"
|
||||
msgstr "XZ(前面)"
|
||||
|
||||
# AI Translated
|
||||
msgid "YZ (Side)"
|
||||
msgstr "YZ(側面)"
|
||||
|
||||
# AI Translated
|
||||
msgid "Revolve deg"
|
||||
msgstr "迴轉角度"
|
||||
|
||||
# AI Translated
|
||||
msgid "Set to 0 for extrude, >0 for revolve"
|
||||
msgstr "設為 0 表示擠出,大於 0 表示迴轉"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket (cut)"
|
||||
msgstr "挖槽(切除)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
msgid "%zu closed profile"
|
||||
msgid_plural "%zu closed profiles"
|
||||
msgstr[0] "%zu 個封閉輪廓"
|
||||
|
||||
# AI Translated
|
||||
msgid "Draw a closed profile to enable"
|
||||
msgstr "請繪製封閉輪廓以啟用"
|
||||
|
||||
# AI Translated
|
||||
msgid "Clear all"
|
||||
msgstr "全部清除"
|
||||
|
||||
# AI Translated
|
||||
msgid "Empty result"
|
||||
msgstr "結果為空"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Extrude: %1%"
|
||||
msgstr "擠出:%1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Revolve: %1%"
|
||||
msgstr "迴轉:%1%"
|
||||
|
||||
# AI Translated
|
||||
msgid "No object selected"
|
||||
msgstr "未選取物件"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face failed"
|
||||
msgstr "建立面失敗"
|
||||
|
||||
# AI Translated
|
||||
msgid "Face with holes failed"
|
||||
msgstr "建立帶孔的面失敗"
|
||||
|
||||
# AI Translated
|
||||
msgid "Tool mesh empty"
|
||||
msgstr "工具網格為空"
|
||||
|
||||
# AI Translated
|
||||
msgid "Pocket added (negative volume)"
|
||||
msgstr "已新增挖槽(負體積)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Pocket: %1%"
|
||||
msgstr "挖槽:%1%"
|
||||
|
||||
# AI Translated
|
||||
msgctxt "Keyboard Shortcut"
|
||||
msgid "Ins"
|
||||
@@ -30137,6 +29955,10 @@ msgstr "啟用開發者工具"
|
||||
msgid "An error occurred loading %s"
|
||||
msgstr "載入 %s 時發生錯誤"
|
||||
|
||||
# AI Translated
|
||||
msgid "/"
|
||||
msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
msgid "Load %1% to %2%"
|
||||
@@ -30837,6 +30659,208 @@ msgstr ""
|
||||
"避免翹曲\n"
|
||||
"您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Primitive"
|
||||
#~ msgstr "標準模型"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty mesh generated"
|
||||
#~ msgstr "產生了空的網格"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Box"
|
||||
#~ msgstr "長方體"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Quick:"
|
||||
#~ msgstr "快速:"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Width (X)"
|
||||
#~ msgstr "寬度 (X)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Depth (Y)"
|
||||
#~ msgstr "深度 (Y)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Height (Z)"
|
||||
#~ msgstr "高度 (Z)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom R"
|
||||
#~ msgstr "底部半徑"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top R"
|
||||
#~ msgstr "頂部半徑"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Major R"
|
||||
#~ msgstr "主半徑"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Minor R"
|
||||
#~ msgstr "次半徑"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "All edges"
|
||||
#~ msgstr "所有邊"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Top edges"
|
||||
#~ msgstr "頂部邊"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Bottom edges"
|
||||
#~ msgstr "底部邊"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Lateral edges"
|
||||
#~ msgstr "側邊"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Mesh resolution"
|
||||
#~ msgstr "網格解析度"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Add Shape"
|
||||
#~ msgstr "新增形狀"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No outer profile"
|
||||
#~ msgstr "沒有外輪廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to make outer face"
|
||||
#~ msgstr "無法建立外部面"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Failed to build face with holes"
|
||||
#~ msgstr "無法建立帶孔的面"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve failed"
|
||||
#~ msgstr "迴轉失敗"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Profile"
|
||||
#~ msgstr "輪廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Start new profile (for holes)"
|
||||
#~ msgstr "開始新輪廓(用於孔洞)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Segments"
|
||||
#~ msgstr "段數"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Sides"
|
||||
#~ msgstr "邊數"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Click on canvas to draw"
|
||||
#~ msgstr "在畫布上點選以繪製"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Snap to grid"
|
||||
#~ msgstr "貼齊格線"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Grid step"
|
||||
#~ msgstr "格線間距"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Outer"
|
||||
#~ msgstr "外輪廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "closed"
|
||||
#~ msgstr "已封閉"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "%1% %2%: %3% points %4%"
|
||||
#~ msgstr "%1% %2%:%3% 個點 %4%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XY (Top)"
|
||||
#~ msgstr "XY(頂部)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "XZ (Front)"
|
||||
#~ msgstr "XZ(前面)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "YZ (Side)"
|
||||
#~ msgstr "YZ(側面)"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Revolve deg"
|
||||
#~ msgstr "迴轉角度"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Set to 0 for extrude, >0 for revolve"
|
||||
#~ msgstr "設為 0 表示擠出,大於 0 表示迴轉"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket (cut)"
|
||||
#~ msgstr "挖槽(切除)"
|
||||
|
||||
# AI Translated
|
||||
#, c-format
|
||||
#~ msgid "%zu closed profile"
|
||||
#~ msgid_plural "%zu closed profiles"
|
||||
#~ msgstr[0] "%zu 個封閉輪廓"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Draw a closed profile to enable"
|
||||
#~ msgstr "請繪製封閉輪廓以啟用"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Clear all"
|
||||
#~ msgstr "全部清除"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Empty result"
|
||||
#~ msgstr "結果為空"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Extrude: %1%"
|
||||
#~ msgstr "擠出:%1%"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Revolve: %1%"
|
||||
#~ msgstr "迴轉:%1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "No object selected"
|
||||
#~ msgstr "未選取物件"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face failed"
|
||||
#~ msgstr "建立面失敗"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Face with holes failed"
|
||||
#~ msgstr "建立帶孔的面失敗"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Tool mesh empty"
|
||||
#~ msgstr "工具網格為空"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "Pocket added (negative volume)"
|
||||
#~ msgstr "已新增挖槽(負體積)"
|
||||
|
||||
# AI Translated
|
||||
#, boost-format
|
||||
#~ msgid "Pocket: %1%"
|
||||
#~ msgstr "挖槽:%1%"
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "(Experimental) Use printer agents instead of print hosts"
|
||||
#~ msgstr "(實驗性)使用列印裝置代理程式取代列印主機"
|
||||
@@ -31890,10 +31914,6 @@ msgstr ""
|
||||
#~ msgid "An error occurred loading "
|
||||
#~ msgstr "載入時發生錯誤: "
|
||||
|
||||
# AI Translated
|
||||
#~ msgid "/"
|
||||
#~ msgstr "/"
|
||||
|
||||
# AI Translated
|
||||
#, c-format, boost-format
|
||||
#~ msgid "Load %s to "
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Elegoo",
|
||||
"version": "02.04.00.11",
|
||||
"version": "02.04.00.12",
|
||||
"force_update": "0",
|
||||
"description": "Elegoo configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -15,6 +15,6 @@
|
||||
"Elegoo"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; filament start gcode\n"
|
||||
"; Elegoo PLA filament start gcode\n"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Orca Arena Printer",
|
||||
"url": "",
|
||||
"version": "02.04.00.07",
|
||||
"version": "02.04.00.08",
|
||||
"force_update": "0",
|
||||
"description": "Orca Arena configuration files",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "OrcaFilamentLibrary",
|
||||
"version": "02.04.00.15",
|
||||
"version": "02.04.00.19",
|
||||
"force_update": "0",
|
||||
"description": "Orca Filament Library",
|
||||
"filament_list": [
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"60"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; filament start gcode\n"
|
||||
"; Elegoo PLA filament start gcode\n"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
"; filament end gcode \n"
|
||||
|
||||
@@ -165,7 +165,6 @@ using json = nlohmann::json;
|
||||
|
||||
#ifdef SLIC3R_GUI
|
||||
#include "slic3r/GUI/GUI_Init.hpp"
|
||||
#include "slic3r/GUI/Widgets/WebView.hpp"
|
||||
// BBLPrinterAgent::from_orca_filament_id(); the map and its lookups live in libslic3r_gui,
|
||||
// which only a SLIC3R_GUI build links (see target_link_libraries(OrcaSlicer libslic3r_gui)
|
||||
// in CMakeLists).
|
||||
@@ -1156,12 +1155,6 @@ int CLI::run(int argc, char **argv)
|
||||
// unset preserves WebKit hardware acceleration on Device / Setup
|
||||
// Wizard / login / store. The default path still applies it on
|
||||
// XWayland sessions as a conservative fallback for older WebKit.
|
||||
//
|
||||
// The default path also disables WebKit's DMA-BUF renderer when the
|
||||
// NVIDIA proprietary driver is in use on native Wayland. That is a
|
||||
// separate switch from compositing and is needed because GTK3 commits
|
||||
// a shared-memory frame onto an explicit-sync surface (GNOME/gtk#8056),
|
||||
// which KWin/Mutter reject with "Error 71 (Protocol error)".
|
||||
// ------------------------------------------------------------------
|
||||
{
|
||||
const char* gdk_backend = ::getenv("GDK_BACKEND");
|
||||
@@ -1225,34 +1218,6 @@ int CLI::run(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
// WebKitGTK's DMA-BUF renderer arms explicit sync
|
||||
// (linux-drm-syncobj-v1) on the toplevel Wayland surface. If the
|
||||
// first painted frame is a shared-memory buffer, GTK3's
|
||||
// gdk_wayland_window_attach_image() commits it without an acquire
|
||||
// point, and compositors that enforce the protocol (KWin, Mutter)
|
||||
// terminate the client with "Error 71 (Protocol error)" before the
|
||||
// app can log anything (GNOME/gtk#8056). NVIDIA's proprietary
|
||||
// driver has no implicit-sync fallback, so the crash only happens
|
||||
// there; Mesa tolerates the missing point. Scope the workaround to
|
||||
// NVIDIA on native Wayland, on WebKitGTK >= 2.46 (the oldest release
|
||||
// with a confirmed report; the DMA-BUF renderer predates it).
|
||||
// Non-replacing, so a user who does not hit the bug can opt back in
|
||||
// with WEBKIT_DISABLE_DMABUF_RENDERER=0.
|
||||
#if defined(__linux__)
|
||||
{
|
||||
const char* gdk_backend_wk = ::getenv("GDK_BACKEND");
|
||||
// The EGL-less fallback above may have just forced X11.
|
||||
const bool x11_backend_wk = gdk_backend_wk && boost::starts_with(gdk_backend_wk, "x11");
|
||||
const char* wayland_env_dmabuf = ::getenv("WAYLAND_DISPLAY");
|
||||
if (!x11_backend_wk && wayland_env_dmabuf && *wayland_env_dmabuf &&
|
||||
::access("/proc/driver/nvidia/version", F_OK) == 0 &&
|
||||
WebView::WebKitAtLeast(2, 46)) {
|
||||
BOOST_LOG_TRIVIAL(info) << "NVIDIA proprietary driver on Wayland: disabling the WebKit DMA-BUF renderer (GNOME/gtk#8056 workaround).";
|
||||
::setenv("WEBKIT_DISABLE_DMABUF_RENDERER", "1", /* replace */ false);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// XInitThreads is needed before GStreamer may use Xlib. On
|
||||
// native Wayland without DISPLAY, GStreamer uses waylandsink
|
||||
// (no Xlib involved), so the call is skipped.
|
||||
@@ -4129,8 +4094,6 @@ int CLI::run(int argc, char **argv)
|
||||
flush_and_exit(CLI_MIXED_FILAMENT_INVALID);
|
||||
}
|
||||
}
|
||||
if (filament_count > 0)
|
||||
resize_mixed_filament_metadata(m_print_config, size_t(filament_count), size_t(filament_count));
|
||||
|
||||
m_print_config.option<ConfigOptionEnum<PrinterTechnology>>("printer_technology", true)->value = printer_technology;
|
||||
|
||||
|
||||
@@ -126,6 +126,13 @@
|
||||
</array>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.10</string>
|
||||
<key>NSLocalNetworkUsageDescription</key>
|
||||
<string>OrcaSlicer uses your local network to discover and connect to printers.</string>
|
||||
<key>NSBonjourServices</key>
|
||||
<array>
|
||||
<string>_octoprint._tcp</string>
|
||||
<string>_http._tcp</string>
|
||||
</array>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
#include <cmath>
|
||||
#include <cctype>
|
||||
#include <cstdio>
|
||||
#include <functional>
|
||||
#include <gp_XY.hxx>
|
||||
#include <initializer_list>
|
||||
#include <math.h>
|
||||
|
||||
@@ -261,6 +261,8 @@ set(lisbslic3r_sources
|
||||
GCode/PreciseSeam.cpp
|
||||
GCode/PreciseSeam.hpp
|
||||
GCode/PreciseSeamInternal.hpp
|
||||
#GCodeSender.cpp
|
||||
#GCodeSender.hpp
|
||||
GCode/SmallAreaInfillFlowCompensator.cpp
|
||||
GCode/SmallAreaInfillFlowCompensator.hpp
|
||||
GCode/SpiralVase.cpp
|
||||
@@ -445,6 +447,7 @@ set(lisbslic3r_sources
|
||||
SLA/SupportTreeBuildsteps.hpp
|
||||
SLA/SupportTree.cpp
|
||||
SLA/SupportTree.hpp
|
||||
#SLA/SupportTreeIGL.cpp
|
||||
SLA/SupportTreeMesher.cpp
|
||||
SLA/SupportTreeMesher.hpp
|
||||
SlicesToTriangleMesh.cpp
|
||||
|
||||
@@ -2589,6 +2589,7 @@ void priv::create_face_types(FaceTypeMap &map,
|
||||
}
|
||||
|
||||
#include <CGAL/Polygon_mesh_processing/clip.h>
|
||||
#include <CGAL/Polygon_mesh_processing/corefinement.h>
|
||||
bool priv::clip_cut(SurfacePatch &cut, CutMesh clipper)
|
||||
{
|
||||
CutMesh& tm = cut.mesh;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "Emboss.hpp"
|
||||
#include <optional>
|
||||
#include <stdio.h>
|
||||
#include <numeric>
|
||||
#include <cstdlib>
|
||||
#include <boost/nowide/convert.hpp>
|
||||
#include <boost/log/trivial.hpp>
|
||||
|
||||
+25
-31
@@ -29,7 +29,6 @@
|
||||
#include "ExtrusionEntity.hpp"
|
||||
#include "Fill.hpp"
|
||||
#include "libslic3r/Fill/FillBase.hpp"
|
||||
#include "FillAdaptive.hpp"
|
||||
#include "FillRectilinear.hpp"
|
||||
#include "FillLightning.hpp"
|
||||
#include "FillConcentricInternal.hpp"
|
||||
@@ -927,6 +926,7 @@ std::vector<SurfaceFill> group_fills(const Layer &layer, LockRegionParam &lock_p
|
||||
params.lateral_lattice_angle_2 = region_config.lateral_lattice_angle_2;
|
||||
params.infill_overhang_angle = region_config.infill_overhang_angle;
|
||||
params.center_of_surface_pattern = region_config.center_of_surface_pattern;
|
||||
params.separated_infills = region_config.separated_infills;
|
||||
if (params.pattern == ipLockedZag) {
|
||||
params.infill_lock_depth = scale_(region_config.infill_lock_depth);
|
||||
params.skin_infill_depth = scale_(region_config.skin_infill_depth);
|
||||
@@ -999,9 +999,6 @@ std::vector<SurfaceFill> group_fills(const Layer &layer, LockRegionParam &lock_p
|
||||
// (which would unnecessarily split fill batching).
|
||||
// Stored on SurfaceFillParams; copied to FillParams during conversion.
|
||||
params.gyroid_optimized = (params.pattern == ipGyroid) && region_config.gyroid_optimized;
|
||||
// Orca: Likewise separated_infills only where it can move the pattern.
|
||||
params.separated_infills = region_config.separated_infills && is_separable_infill_pattern(params.pattern) &&
|
||||
params.extrusion_role != erTopSolidInfill && params.extrusion_role != erBottomSurface;
|
||||
|
||||
if (params.extrusion_role == erInternalInfill) {
|
||||
params.angle = calculate_infill_rotation_angle(layer.object(), layer.id(), region_config.infill_direction.value,
|
||||
@@ -1076,7 +1073,7 @@ std::vector<SurfaceFill> group_fills(const Layer &layer, LockRegionParam &lock_p
|
||||
//get locked region param
|
||||
if (params.pattern == ipLockedZag){
|
||||
const PrintObject *object = layerm.layer()->object();
|
||||
auto nozzle_diameter = float(nozzle_diameter_for_filament(object->print()->config(), layerm.region().extruder(extrusion_role), object->print()->is_BBL_printer()));
|
||||
auto nozzle_diameter = float(object->print()->config().nozzle_diameter.get_at(layerm.region().extruder(extrusion_role) - 1));
|
||||
Flow skin_flow = params.bridge ? params.flow : Flow::new_from_config_width(extrusion_role, region_config.skin_infill_line_width, nozzle_diameter, float((surface.thickness == -1) ? layer.height : surface.thickness));
|
||||
//add skin flow
|
||||
append_flow_param(lock_param.skin_flow_params, skin_flow, surface.expolygon);
|
||||
@@ -1274,28 +1271,29 @@ std::vector<SurfaceFill> group_fills(const Layer &layer, LockRegionParam &lock_p
|
||||
|
||||
// Orca: Anchors and printed infill must share the same body origin. Keep the choice
|
||||
// here so per-model surface centering and separated sparse infill cannot drift apart.
|
||||
// Returns the connected body the fill region is laid out on, or -1 to keep the object's origin.
|
||||
static int infill_body(const Layer &layer, const SurfaceFill &fill, const ExPolygon &expoly)
|
||||
static BoundingBox infill_bounding_box(const Layer &layer, const SurfaceFill &fill, const ExPolygon &expoly, BoundingBox bbox)
|
||||
{
|
||||
const auto ¶ms = fill.params;
|
||||
const bool per_model = (params.extrusion_role == erTopSolidInfill || params.extrusion_role == erBottomSurface) &&
|
||||
params.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model &&
|
||||
const auto &config = layer.regions()[fill.region_id]->region().config();
|
||||
const bool external = params.extrusion_role == erTopSolidInfill || params.extrusion_role == erBottomSurface;
|
||||
const bool per_model = external && params.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model &&
|
||||
(params.pattern == ipArchimedeanChords || params.pattern == ipOctagramSpiral);
|
||||
int body = -1;
|
||||
if (per_model || params.separated_infills || is_octree_infill_pattern(params.pattern)) {
|
||||
const BoundingBox box = get_extents(expoly);
|
||||
double best_overlap = 0.;
|
||||
for (size_t i = 0; i < layer.lslices.size() && i < layer.lslices_separated_component_ids.size(); ++i) {
|
||||
if (! layer.lslices_bboxes[i].overlap(box))
|
||||
continue;
|
||||
const bool separate = !external && params.separated_infills &&
|
||||
(is_separable_infill_pattern(params.pattern) || !config.solid_infill_rotate_template.value.empty() ||
|
||||
!config.sparse_infill_rotate_template.value.empty());
|
||||
if (per_model || separate) {
|
||||
double best_overlap = 0.;
|
||||
for (size_t i = 0; i < layer.lslices.size() && i < layer.lslices_separated_component_bboxes.size(); ++i) {
|
||||
const double overlap = area(intersection_ex(layer.lslices[i], expoly));
|
||||
if (overlap > best_overlap) {
|
||||
best_overlap = overlap;
|
||||
body = int(layer.lslices_separated_component_ids[i]);
|
||||
const Point center = layer.lslices_separated_component_bboxes[i].center();
|
||||
bbox = layer.object()->bounding_box();
|
||||
bbox.translate(center.x(), center.y());
|
||||
}
|
||||
}
|
||||
}
|
||||
return body;
|
||||
return bbox;
|
||||
}
|
||||
|
||||
#ifdef SLIC3R_DEBUG_SLICE_PROCESSING
|
||||
@@ -1320,7 +1318,7 @@ void export_group_fills_to_svg(const char *path, const std::vector<SurfaceFill>
|
||||
#endif
|
||||
|
||||
// friend to Layer
|
||||
void Layer::make_fills(const FillAdaptive::Octrees* adaptive_fill_octrees, const FillAdaptive::Octrees* support_fill_octrees, FillLightning::Generator* lightning_generator)
|
||||
void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive::Octree* support_fill_octree, FillLightning::Generator* lightning_generator)
|
||||
{
|
||||
for (LayerRegion *layerm : m_regions)
|
||||
layerm->fills.clear();
|
||||
@@ -1353,7 +1351,7 @@ void Layer::make_fills(const FillAdaptive::Octrees* adaptive_fill_octrees, const
|
||||
f->z = this->print_z;
|
||||
f->angle = surface_fill.params.angle;
|
||||
f->fixed_angle = surface_fill.params.fixed_angle;
|
||||
const FillAdaptive::Octrees *octrees = surface_fill.params.pattern == ipSupportCubic ? support_fill_octrees : adaptive_fill_octrees;
|
||||
f->adapt_fill_octree = (surface_fill.params.pattern == ipSupportCubic) ? support_fill_octree : adaptive_fill_octree;
|
||||
f->print_config = &this->object()->print()->config();
|
||||
f->print_object_config = &this->object()->config();
|
||||
if (surface_fill.params.pattern == ipConcentricInternal) {
|
||||
@@ -1445,10 +1443,8 @@ void Layer::make_fills(const FillAdaptive::Octrees* adaptive_fill_octrees, const
|
||||
params.can_reverse = false;
|
||||
for (ExPolygon& expoly : surface_fill.expolygons) {
|
||||
|
||||
// Orca: Reuse the body box and octree used for bridge anchoring, resetting them for each surface.
|
||||
const int body = infill_body(*this, surface_fill, expoly);
|
||||
f->set_bounding_box(body >= 0 ? this->object()->separated_body_bboxes()[body] : bbox);
|
||||
f->adapt_fill_octree = octrees ? octrees->get(body) : nullptr;
|
||||
// Orca: Reuse the body origin used for bridge anchoring, resetting it for each surface.
|
||||
f->set_bounding_box(infill_bounding_box(*this, surface_fill, expoly, bbox));
|
||||
|
||||
f->no_overlap_expolygons = intersection_ex(surface_fill.no_overlap_expolygons, ExPolygons() = {expoly}, ApplySafetyOffset::Yes);
|
||||
if (params.symmetric_infill_y_axis) {
|
||||
@@ -1516,7 +1512,7 @@ void Layer::make_fills(const FillAdaptive::Octrees* adaptive_fill_octrees, const
|
||||
* - For lightning/adaptive patterns, the respective generators are wired so their
|
||||
* polylines match the final infill layout.
|
||||
*/
|
||||
Polylines Layer::generate_sparse_infill_polylines_for_anchoring(const FillAdaptive::Octrees* adaptive_fill_octrees, const FillAdaptive::Octrees* support_fill_octrees, FillLightning::Generator* lightning_generator) const
|
||||
Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive::Octree* support_fill_octree, FillLightning::Generator* lightning_generator) const
|
||||
{
|
||||
LockRegionParam skin_inner_param;
|
||||
std::vector<SurfaceFill> surface_fills = group_fills(*this, skin_inner_param);
|
||||
@@ -1574,7 +1570,7 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(const FillAdapti
|
||||
f->z = this->print_z;
|
||||
f->angle = surface_fill.params.angle;
|
||||
f->fixed_angle = surface_fill.params.fixed_angle;
|
||||
const FillAdaptive::Octrees *octrees = surface_fill.params.pattern == ipSupportCubic ? support_fill_octrees : adaptive_fill_octrees;
|
||||
f->adapt_fill_octree = (surface_fill.params.pattern == ipSupportCubic) ? support_fill_octree : adaptive_fill_octree;
|
||||
f->print_config = &this->object()->print()->config();
|
||||
f->print_object_config = &this->object()->config();
|
||||
|
||||
@@ -1621,10 +1617,8 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(const FillAdapti
|
||||
params.extrusion_role = surface_fill.params.extrusion_role;
|
||||
|
||||
for (ExPolygon &expoly : surface_fill.expolygons) {
|
||||
// Orca: Match the per-body box and octree of make_fills() before generating physical anchors.
|
||||
const int body = infill_body(*this, surface_fill, expoly);
|
||||
f->set_bounding_box(body >= 0 ? this->object()->separated_body_bboxes()[body] : bbox);
|
||||
f->adapt_fill_octree = octrees ? octrees->get(body) : nullptr;
|
||||
// Orca: Match the per-body origin of make_fills() before generating physical anchors.
|
||||
f->set_bounding_box(infill_bounding_box(*this, surface_fill, expoly, bbox));
|
||||
// Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon.
|
||||
f->spacing = surface_fill.params.spacing;
|
||||
surface_fill.surface.expolygon = std::move(expoly);
|
||||
@@ -1794,7 +1788,7 @@ void Layer::make_ironing()
|
||||
|
||||
// Create the ironing extrusions for regions <i, j)
|
||||
ExPolygons ironing_areas;
|
||||
double nozzle_dmr = nozzle_diameter_for_filament(this->object()->print()->config(), ironing_params.extruder, this->object()->print()->is_BBL_printer());
|
||||
double nozzle_dmr = this->object()->print()->config().nozzle_diameter.get_at(ironing_params.extruder - 1);
|
||||
if (ironing_params.just_infill) {
|
||||
//TODO just_infill is currently not used.
|
||||
// Just infill.
|
||||
|
||||
@@ -25,7 +25,6 @@ public:
|
||||
// pattern is placed on top of previous layers
|
||||
bool use_bridge_flow() const override { return false; }
|
||||
bool is_self_crossing() override { return false; }
|
||||
bool aligned_to_origin() const override { return true; }
|
||||
|
||||
protected:
|
||||
void _fill_surface_single(
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#include "libslic3r/BoundingBox.hpp"
|
||||
#include "libslic3r/ExPolygon.hpp"
|
||||
#include "FillBase.hpp"
|
||||
#include <cstddef>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
#include <Eigen/Geometry>
|
||||
@@ -38,27 +37,6 @@ struct Octree;
|
||||
struct OctreeDeleter { void operator()(Octree *p); };
|
||||
using OctreePtr = std::unique_ptr<Octree, OctreeDeleter>;
|
||||
|
||||
// Orca: One octree per body (see Layer::lslices_separated_component_ids), and one of the whole object
|
||||
// for objects of a single body or with a body that has none of its own.
|
||||
struct Octrees
|
||||
{
|
||||
OctreePtr object;
|
||||
std::vector<OctreePtr> bodies;
|
||||
|
||||
// A body without an octree, or body -1, uses the object's, or any body's when the object has none.
|
||||
Octree *get(int body) const
|
||||
{
|
||||
if (body >= 0 && size_t(body) < bodies.size() && bodies[body])
|
||||
return bodies[body].get();
|
||||
if (object)
|
||||
return object.get();
|
||||
for (const OctreePtr &octree : bodies)
|
||||
if (octree)
|
||||
return octree.get();
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
// Calculate line spacing for
|
||||
// 1) adaptive cubic infill
|
||||
// 2) adaptive internal support cubic infill
|
||||
|
||||
@@ -128,9 +128,6 @@ Polylines Fill::fill_surface(const Surface *surface, const FillParams ¶ms)
|
||||
{
|
||||
// Perform offset.
|
||||
Slic3r::ExPolygons expp = offset_ex(surface->expolygon, float(scale_(this->overlap - 0.5 * this->spacing)));
|
||||
// Orca: Separated infills move the box center onto each body; origin-aligned patterns follow it.
|
||||
const Point shift = this->aligned_to_origin() && ! empty(this->bounding_box) ? this->bounding_box.center() : Point::Zero();
|
||||
translate(expp, -shift);
|
||||
// Create the infills for each of the regions.
|
||||
Polylines polylines_out;
|
||||
for (size_t i = 0; i < expp.size(); ++ i)
|
||||
@@ -140,8 +137,6 @@ Polylines Fill::fill_surface(const Surface *surface, const FillParams ¶ms)
|
||||
_infill_direction(surface),
|
||||
std::move(expp[i]),
|
||||
polylines_out);
|
||||
for (Polyline &pl : polylines_out)
|
||||
pl.translate(shift);
|
||||
return polylines_out;
|
||||
}
|
||||
|
||||
@@ -1596,18 +1591,13 @@ BoundaryInfillGraph create_boundary_infill_graph(const Polylines &infill_ordered
|
||||
// The extended bounding box of the whole object that covers any rotation of every layer.
|
||||
BoundingBox Fill::extended_object_bounding_box() const
|
||||
{
|
||||
// Orca: Extend about the box center, which separated infills move off the origin.
|
||||
const Point c = this->bounding_box.center();
|
||||
BoundingBox out = this->bounding_box;
|
||||
out.translate(-c.x(), -c.y());
|
||||
BoundingBox out = bounding_box;
|
||||
out.merge(Point(out.min.y(), out.min.x()));
|
||||
out.merge(Point(out.max.y(), out.max.x()));
|
||||
|
||||
// The bounding box is scaled by sqrt(2.) to ensure that the bounding box
|
||||
// covers any possible rotations.
|
||||
out = out.scaled(sqrt(2.));
|
||||
out.translate(c.x(), c.y());
|
||||
return out;
|
||||
return out.scaled(sqrt(2.));
|
||||
}
|
||||
|
||||
void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms)
|
||||
|
||||
@@ -188,9 +188,6 @@ public:
|
||||
// Return true if infill has a consistent pattern between layers.
|
||||
virtual bool has_consistent_pattern() const { return false; }
|
||||
|
||||
// Orca: Is the pattern laid out from the origin instead of the bounding box center?
|
||||
virtual bool aligned_to_origin() const { return false; }
|
||||
|
||||
// Perform the fill.
|
||||
virtual Polylines fill_surface(const Surface *surface, const FillParams ¶ms);
|
||||
virtual ThickPolylines fill_surface_arachne(const Surface* surface, const FillParams& params);
|
||||
|
||||
@@ -19,7 +19,6 @@ public:
|
||||
Fill *clone() const override { return new FillCrossHatch(*this); };
|
||||
~FillCrossHatch() override {}
|
||||
bool is_self_crossing() override { return false; }
|
||||
bool aligned_to_origin() const override { return true; }
|
||||
|
||||
protected:
|
||||
void _fill_surface_single(
|
||||
|
||||
@@ -20,7 +20,6 @@ public:
|
||||
// require bridge flow since most of this pattern hangs in air
|
||||
bool use_bridge_flow() const override { return false; }
|
||||
bool is_self_crossing() override { return false; }
|
||||
bool aligned_to_origin() const override { return true; }
|
||||
|
||||
// Correction applied to regular infill angle to maximize printing
|
||||
// speed in default configuration (degrees)
|
||||
|
||||
@@ -20,7 +20,6 @@ class FillHoneycomb : public Fill
|
||||
public:
|
||||
~FillHoneycomb() override {}
|
||||
bool is_self_crossing() override { return false; }
|
||||
bool aligned_to_origin() const override { return true; }
|
||||
|
||||
protected:
|
||||
Fill* clone() const override { return new FillHoneycomb(*this); };
|
||||
|
||||
@@ -2750,6 +2750,23 @@ static void polylines_from_paths(const std::vector<MonotonicRegionLink> &path, c
|
||||
}
|
||||
}
|
||||
|
||||
// The extended bounding box of the whole object that covers any rotation of every layer.
|
||||
BoundingBox FillRectilinear::extended_object_bounding_box() const {
|
||||
// Build the extension around the box center. The transpose merge and the sqrt(2.) scaling
|
||||
// (which covers any possible rotation) are both defined about the origin, so a box that is not
|
||||
// origin-centered — e.g. a separated-infill box re-centered on a single assembly part — would be
|
||||
// distorted. Shift to the origin first and back afterwards; for the default origin-centered box
|
||||
// the two translations cancel and this is identical to the original behavior.
|
||||
const Point c = this->bounding_box.center();
|
||||
BoundingBox out = this->bounding_box;
|
||||
out.translate(-c.x(), -c.y());
|
||||
out.merge(Point(out.min.y(), out.min.x()));
|
||||
out.merge(Point(out.max.y(), out.max.x()));
|
||||
out = out.scaled(sqrt(2.));
|
||||
out.translate(c.x(), c.y());
|
||||
return out;
|
||||
}
|
||||
|
||||
bool FillRectilinear::fill_surface_by_lines(const Surface *surface, const FillParams ¶ms, float angleBase, float pattern_shift, Polylines &polylines_out)
|
||||
{
|
||||
// At the end, only the new polylines will be rotated back.
|
||||
@@ -2784,13 +2801,7 @@ bool FillRectilinear::fill_surface_by_lines(const Surface *surface, const FillPa
|
||||
// For infill that needs to be consistent between layers (like Zig Zag),
|
||||
// we use bounding box of whole object to match vertical lines between layers.
|
||||
BoundingBox bounding_box_src = poly_with_offset.bounding_box_src();
|
||||
BoundingBox bounding_box = bounding_box_src;
|
||||
if (this->has_consistent_pattern()) {
|
||||
// Orca: The polygons are rotated about the origin, so follow the box center to where it was rotated.
|
||||
const Point c = this->bounding_box.center();
|
||||
bounding_box = this->extended_object_bounding_box();
|
||||
bounding_box.translate(c.rotated(- rotate_vector.first) - c);
|
||||
}
|
||||
BoundingBox bounding_box = this->has_consistent_pattern() ? this->extended_object_bounding_box() : bounding_box_src;
|
||||
|
||||
// define flow spacing according to requested density
|
||||
if (params.full_infill() && !params.dont_adjust) {
|
||||
|
||||
@@ -42,6 +42,9 @@ protected:
|
||||
};
|
||||
bool fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out);
|
||||
bool fill_surface_trapezoidal(const Surface *surface, FillParams params, Polylines &polylines_out, int Pattern_type);
|
||||
|
||||
// The extended bounding box of the whole object that covers any rotation of every layer.
|
||||
BoundingBox extended_object_bounding_box() const;
|
||||
};
|
||||
|
||||
class FillAlignedRectilinear : public FillRectilinear
|
||||
|
||||
@@ -31,7 +31,6 @@ public:
|
||||
Polylines& polylines_out) override;
|
||||
|
||||
bool is_self_crossing() override { return false; }
|
||||
bool aligned_to_origin() const override { return true; }
|
||||
|
||||
// Density adjustment to have a good %of weight.
|
||||
static constexpr double DensityAdjust = 2.1;
|
||||
|
||||
@@ -31,7 +31,6 @@ public:
|
||||
Polylines& polylines_out) override;
|
||||
|
||||
bool is_self_crossing() override { return false; }
|
||||
bool aligned_to_origin() const override { return true; }
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -241,14 +241,14 @@ Flow support_material_flow(const PrintObject *object, float layer_height)
|
||||
// The width parameter accepted by new_from_config_width is of type ConfigOptionFloatOrPercent, the Flow class takes care of the percent to value substitution.
|
||||
(object->config().support_line_width.value > 0) ? object->config().support_line_width : object->config().line_width,
|
||||
// if object->config().support_filament == 0 (which means to not trigger tool change, but use the current extruder instead), get_at will return the 0th component.
|
||||
float(nozzle_diameter_for_filament(object->print()->config(), object->config().support_filament, object->print()->is_BBL_printer())),
|
||||
float(object->print()->config().nozzle_diameter.get_at(object->config().support_filament-1)),
|
||||
(layer_height > 0.f) ? layer_height : float(object->config().layer_height.value));
|
||||
}
|
||||
//BBS
|
||||
Flow support_transition_flow(const PrintObject* object)
|
||||
{
|
||||
//BBS: support transition of tree support is bridge flow
|
||||
float dmr = float(nozzle_diameter_for_filament(object->print()->config(), object->config().support_filament, object->print()->is_BBL_printer()));
|
||||
float dmr = float(object->print()->config().nozzle_diameter.get_at(object->config().support_filament - 1));
|
||||
return Flow::bridging_flow(dmr, dmr);
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ Flow support_material_1st_layer_flow(const PrintObject *object, float layer_heig
|
||||
frSupportMaterial,
|
||||
// The width parameter accepted by new_from_config_width is of type ConfigOptionFloatOrPercent, the Flow class takes care of the percent to value substitution.
|
||||
(width.value > 0) ? width : object->config().line_width,
|
||||
float(nozzle_diameter_for_filament(print_config, object->config().support_filament, object->print()->is_BBL_printer())),
|
||||
float(print_config.nozzle_diameter.get_at(object->config().support_filament-1)),
|
||||
(layer_height > 0.f) ? layer_height : float(print_config.initial_layer_print_height.value));
|
||||
}
|
||||
|
||||
@@ -271,7 +271,7 @@ Flow support_material_interface_flow(const PrintObject *object, float layer_heig
|
||||
// The width parameter accepted by new_from_config_width is of type ConfigOptionFloatOrPercent, the Flow class takes care of the percent to value substitution.
|
||||
(object->config().support_line_width > 0) ? object->config().support_line_width : object->config().line_width,
|
||||
// if object->config().support_interface_filament == 0 (which means to not trigger tool change, but use the current extruder instead), get_at will return the 0th component.
|
||||
float(nozzle_diameter_for_filament(object->print()->config(), object->config().support_interface_filament, object->print()->is_BBL_printer())),
|
||||
float(object->print()->config().nozzle_diameter.get_at(object->config().support_interface_filament-1)),
|
||||
(layer_height > 0.f) ? layer_height : float(object->config().layer_height.value));
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "TDataStd_Name.hxx"
|
||||
#include "BRepBuilderAPI_Transform.hxx"
|
||||
#include "TopExp_Explorer.hxx"
|
||||
#include "TopExp_Explorer.hxx"
|
||||
#include "BRep_Tool.hxx"
|
||||
#include "BRepTools.hxx"
|
||||
#include <IMeshTools_Parameters.hxx>
|
||||
|
||||
+65
-41
@@ -43,6 +43,7 @@
|
||||
#include "Print.hpp"
|
||||
#include "Utils.hpp"
|
||||
#include "ClipperUtils.hpp"
|
||||
#include "libslic3r.h"
|
||||
#include "LocalesUtils.hpp"
|
||||
#include "libslic3r/format.hpp"
|
||||
#include "Time.hpp"
|
||||
@@ -154,9 +155,14 @@ static const float g_purge_volume_one_time = 135.f;
|
||||
static const int g_max_flush_count = 4;
|
||||
static const size_t g_max_label_object = 64;
|
||||
|
||||
static bool is_bambu_x2d_printer(const FullPrintConfig &config)
|
||||
{
|
||||
return config.printer_model.value == "Bambu Lab X2D";
|
||||
}
|
||||
|
||||
// Multi-nozzle printer predicate: an extruder carries a nozzle cluster (extruder_max_nozzle_count
|
||||
// entry > 1). Today only H2C profiles trip it, so every existing single- and dual-extruder printer
|
||||
// is excluded and keeps its historic first-filament marker.
|
||||
// is excluded and keeps its historic placeholder values.
|
||||
static bool is_multi_nozzle_printer(const FullPrintConfig &config)
|
||||
{
|
||||
return std::any_of(config.extruder_max_nozzle_count.values.begin(),
|
||||
@@ -164,20 +170,33 @@ static bool is_multi_nozzle_printer(const FullPrintConfig &config)
|
||||
[](int v) { return v > 1; });
|
||||
}
|
||||
|
||||
// current_hotend / next_hotend value. On a BBL printer: the real nozzle id only while the print uses a
|
||||
// dynamic nozzle map (a filament moves between nozzles across layers), else -1. Bambu firmware reads an
|
||||
// explicit hotend index as a request for the Filament Track Switch and rejects the job on a printer
|
||||
// without one. group_result may be null on slicing paths that don't populate it, which resolves to -1.
|
||||
// Any other printer has no firmware hotend selection and gets the filament's extruder index, whatever
|
||||
// its nozzle map, so existing custom G-code keeps its values.
|
||||
static int hotend_id_for_gcode_placeholder(const std::shared_ptr<MultiNozzleUtils::LayeredNozzleGroupResult> &group_result,
|
||||
bool is_bbl_printer, int filament_id, int extruder_id, int layer_id = -1)
|
||||
static int hotend_id_for_gcode_placeholder(const FullPrintConfig &config, int hotend_id)
|
||||
{
|
||||
if (!is_bbl_printer)
|
||||
return extruder_id;
|
||||
if (group_result && group_result->is_support_dynamic_nozzle_map() && filament_id >= 0)
|
||||
return group_result->get_nozzle_id(filament_id, layer_id);
|
||||
return -1;
|
||||
return is_bambu_x2d_printer(config) ? -1 : hotend_id;
|
||||
}
|
||||
|
||||
// current_hotend / next_hotend value. For multi-nozzle printers a dynamic nozzle map yields the real
|
||||
// nozzle id, a static map yields -1:
|
||||
// - multi-nozzle (H2C): dynamic nozzle map -> real nozzle id; static -> -1.
|
||||
// The dynamic branch is dormant today: the selector create() overload that sets the flag has no
|
||||
// callers yet (deferred with the nozzle-assignment pipeline), so H2C currently resolves to -1.
|
||||
// - X2D: keeps its historic -1 (single-nozzle -> falls through to the fallback helper).
|
||||
// - every other (existing single-nozzle) printer: keeps its historic extruder-id value, so
|
||||
// existing g-code stays byte-identical.
|
||||
// group_result may be null on slicing paths that don't populate it -> the dynamic branch is simply
|
||||
// skipped, so we never dereference null.
|
||||
static int hotend_id_for_gcode_placeholder(const FullPrintConfig &config,
|
||||
const std::shared_ptr<MultiNozzleUtils::LayeredNozzleGroupResult> &group_result,
|
||||
int filament_id,
|
||||
int extruder_id,
|
||||
int layer_id = -1)
|
||||
{
|
||||
if (is_multi_nozzle_printer(config)) {
|
||||
if (group_result && group_result->is_support_dynamic_nozzle_map() && filament_id >= 0)
|
||||
return group_result->get_nozzle_id(filament_id, layer_id);
|
||||
return -1;
|
||||
}
|
||||
return hotend_id_for_gcode_placeholder(config, extruder_id);
|
||||
}
|
||||
|
||||
// Logical nozzle id for the *_nozzle_id placeholders. Null-safe: falls back to the
|
||||
@@ -192,20 +211,24 @@ static int nozzle_id_for_gcode_placeholder(const std::shared_ptr<MultiNozzleUtil
|
||||
|
||||
// Init variants: the start-gcode init sites (first_non_support_hotend / initial_no_support_hotend /
|
||||
// current_hotend / initial_nozzle_id / filament_start current_nozzle_id) use get_first_nozzle_for_filament
|
||||
// (the nozzle a filament FIRST uses) rather than the layer-based get_nozzle_id. Same hotend-value rule
|
||||
// as hotend_id_for_gcode_placeholder above; they differ from the layer-based helper only on the dynamic
|
||||
// path for a filament first used after layer 0.
|
||||
static int first_hotend_id_for_gcode_placeholder(const std::shared_ptr<MultiNozzleUtils::LayeredNozzleGroupResult> &group_result,
|
||||
bool is_bbl_printer, int filament_id, int extruder_id)
|
||||
// (the nozzle a filament FIRST uses) rather than the layer-based get_nozzle_id. Same hotend-value semantics
|
||||
// as hotend_id_for_gcode_placeholder above (multi-nozzle static -> -1; dynamic branch dormant;
|
||||
// existing printers -> extruder id; X2D -> -1); they differ from the layer-based helper only on the dormant
|
||||
// dynamic path for a filament first used after layer 0.
|
||||
static int first_hotend_id_for_gcode_placeholder(const FullPrintConfig &config,
|
||||
const std::shared_ptr<MultiNozzleUtils::LayeredNozzleGroupResult> &group_result,
|
||||
int filament_id,
|
||||
int extruder_id)
|
||||
{
|
||||
if (!is_bbl_printer)
|
||||
return extruder_id;
|
||||
if (group_result && group_result->is_support_dynamic_nozzle_map() && filament_id >= 0) {
|
||||
auto nozzle = group_result->get_first_nozzle_for_filament(filament_id);
|
||||
if (nozzle)
|
||||
return nozzle->group_id;
|
||||
if (is_multi_nozzle_printer(config)) {
|
||||
if (group_result && group_result->is_support_dynamic_nozzle_map() && filament_id >= 0) {
|
||||
auto nozzle = group_result->get_first_nozzle_for_filament(filament_id);
|
||||
if (nozzle)
|
||||
return nozzle->group_id;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
return hotend_id_for_gcode_placeholder(config, extruder_id);
|
||||
}
|
||||
|
||||
static int first_nozzle_id_for_gcode_placeholder(const std::shared_ptr<MultiNozzleUtils::LayeredNozzleGroupResult> &group_result,
|
||||
@@ -1192,11 +1215,12 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
|
||||
|
||||
config.set_key_value("previous_extruder", new ConfigOptionInt(old_filament_id));
|
||||
config.set_key_value("next_extruder", new ConfigOptionInt(new_filament_id));
|
||||
const bool is_bbl_printer = gcodegen.m_print->is_BBL_printer();
|
||||
// current_hotend/next_hotend (see hotend_id_for_gcode_placeholder): multi-nozzle H2C -> -1
|
||||
// (static; dynamic branch dormant), X2D -> -1, existing printers -> extruder id.
|
||||
config.set_key_value("current_hotend", new ConfigOptionInt(
|
||||
hotend_id_for_gcode_placeholder(group_result, is_bbl_printer, old_filament_id, old_extruder_id, m_layer_idx)));
|
||||
hotend_id_for_gcode_placeholder(gcodegen.m_config, group_result, old_filament_id, old_extruder_id, m_layer_idx)));
|
||||
config.set_key_value("next_hotend", new ConfigOptionInt(
|
||||
hotend_id_for_gcode_placeholder(group_result, is_bbl_printer, new_filament_id, (int) gcodegen.get_extruder_id(new_filament_id), m_layer_idx)));
|
||||
hotend_id_for_gcode_placeholder(gcodegen.m_config, group_result, new_filament_id, (int) gcodegen.get_extruder_id(new_filament_id), m_layer_idx)));
|
||||
config.set_key_value("current_nozzle_id", new ConfigOptionInt(old_nozzle_id));
|
||||
config.set_key_value("next_nozzle_id", new ConfigOptionInt(next_nozzle_id));
|
||||
config.set_key_value("current_filament_id", new ConfigOptionInt(old_filament_id));
|
||||
@@ -1475,7 +1499,7 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
|
||||
gcodegen.placeholder_parser().set("current_nozzle_id",
|
||||
nozzle_id_for_gcode_placeholder(group_result, new_filament_id, new_extruder_id, m_layer_idx));
|
||||
gcodegen.placeholder_parser().set("current_hotend",
|
||||
hotend_id_for_gcode_placeholder(group_result, gcodegen.m_print->is_BBL_printer(), new_filament_id, new_extruder_id, m_layer_idx));
|
||||
hotend_id_for_gcode_placeholder(gcodegen.m_config, group_result, new_filament_id, new_extruder_id, m_layer_idx));
|
||||
{
|
||||
size_t fi = gcodegen.get_filament_config_index(new_filament_id);
|
||||
gcodegen.placeholder_parser().set("retraction_distance_when_cut", gcodegen.m_config.retraction_distances_when_cut.get_at(fi));
|
||||
@@ -3286,19 +3310,20 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
||||
first_non_support_hotends.reserve(first_non_support_filaments.size());
|
||||
for (int filament_id : first_non_support_filaments)
|
||||
first_non_support_hotends.push_back(filament_id < 0 ? -1 :
|
||||
first_hotend_id_for_gcode_placeholder(group_result, is_bbl_printers, filament_id, (int) get_extruder_id(filament_id)));
|
||||
first_hotend_id_for_gcode_placeholder(m_config, group_result, filament_id, (int) get_extruder_id(filament_id)));
|
||||
|
||||
this->placeholder_parser().set("first_non_support_tools", new ConfigOptionInts(first_non_support_filaments));
|
||||
this->placeholder_parser().set("first_non_support_filaments", new ConfigOptionInts(first_non_support_filaments));
|
||||
this->placeholder_parser().set("first_non_support_hotend", new ConfigOptionInts(first_non_support_hotends));
|
||||
this->placeholder_parser().set("initial_no_support_tool", initial_non_support_extruder_id);
|
||||
this->placeholder_parser().set("initial_no_support_extruder", initial_non_support_extruder_id);
|
||||
// initial_no_support_hotend/current_hotend (see first_hotend_id_for_gcode_placeholder): multi-nozzle
|
||||
// H2C -> -1 (static; dynamic branch dormant), X2D -> -1, existing printers -> extruder id.
|
||||
this->placeholder_parser().set("initial_no_support_hotend",
|
||||
first_hotend_id_for_gcode_placeholder(group_result, is_bbl_printers, (int) initial_non_support_extruder_id,
|
||||
(int) get_extruder_id(initial_non_support_extruder_id)));
|
||||
first_hotend_id_for_gcode_placeholder(m_config, group_result, (int) initial_non_support_extruder_id, (int) get_extruder_id(initial_non_support_extruder_id)));
|
||||
this->placeholder_parser().set("current_extruder", initial_extruder_id);
|
||||
this->placeholder_parser().set("current_hotend",
|
||||
first_hotend_id_for_gcode_placeholder(group_result, is_bbl_printers, (int) initial_extruder_id, extruder_id));
|
||||
first_hotend_id_for_gcode_placeholder(m_config, group_result, (int) initial_extruder_id, extruder_id));
|
||||
this->placeholder_parser().set("current_filament_id", (int) initial_extruder_id);
|
||||
this->placeholder_parser().set("current_extruder_id", extruder_id);
|
||||
this->placeholder_parser().set("current_nozzle_id",
|
||||
@@ -3807,7 +3832,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
|
||||
file.writeln(filament_start_gcode);
|
||||
// Mark the first filament used in print. Multi-nozzle printers (H2C) get ";VT%d H%d" where
|
||||
// H = dynamic ? nozzle_id : -1; existing single-nozzle printers keep the bare ";VT%d" so their
|
||||
// g-code stays byte-identical.
|
||||
// g-code stays byte-identical. (The dynamic branch is dormant, so H2C currently emits H-1.)
|
||||
if (is_multi_nozzle_printer(m_config)) {
|
||||
int initial_nozzle_id = -1;
|
||||
if (group_result && group_result->is_support_dynamic_nozzle_map()) {
|
||||
@@ -9591,9 +9616,6 @@ std::string GCode::set_extruder(unsigned int new_filament_id, double print_z, bo
|
||||
this->placeholder_parser().set("current_extruder_id", new_extruder_id);
|
||||
this->placeholder_parser().set("current_nozzle_id",
|
||||
nozzle_id_for_gcode_placeholder(m_print->get_layered_nozzle_group_result(), (int) new_filament_id, new_extruder_id, m_layer_index));
|
||||
this->placeholder_parser().set("current_hotend",
|
||||
hotend_id_for_gcode_placeholder(m_print->get_layered_nozzle_group_result(), m_print->is_BBL_printer(), (int) new_filament_id,
|
||||
new_extruder_id, m_layer_index));
|
||||
{
|
||||
size_t fi = get_filament_config_index(new_filament_id);
|
||||
this->placeholder_parser().set("retraction_distance_when_ec", m_config.retraction_distances_when_ec.get_at(fi));
|
||||
@@ -9772,10 +9794,12 @@ std::string GCode::set_extruder(unsigned int new_filament_id, double print_z, bo
|
||||
dyn_config.set_key_value("outer_wall_volumetric_speed", new ConfigOptionFloat(outer_wall_volumetric_speed));
|
||||
dyn_config.set_key_value("previous_extruder", new ConfigOptionInt(old_filament_id));
|
||||
dyn_config.set_key_value("next_extruder", new ConfigOptionInt((int)new_filament_id));
|
||||
// current_hotend/next_hotend (see hotend_id_for_gcode_placeholder): multi-nozzle H2C -> -1
|
||||
// (static; dynamic branch dormant), X2D -> -1, existing printers -> extruder id.
|
||||
dyn_config.set_key_value("current_hotend", new ConfigOptionInt(
|
||||
hotend_id_for_gcode_placeholder(group_result, m_print->is_BBL_printer(), old_filament_id, old_extruder_id, m_layer_index)));
|
||||
hotend_id_for_gcode_placeholder(m_config, group_result, old_filament_id, old_extruder_id, m_layer_index)));
|
||||
dyn_config.set_key_value("next_hotend", new ConfigOptionInt(
|
||||
hotend_id_for_gcode_placeholder(group_result, m_print->is_BBL_printer(), (int) new_filament_id, new_extruder_id, m_layer_index)));
|
||||
hotend_id_for_gcode_placeholder(m_config, group_result, (int) new_filament_id, new_extruder_id, m_layer_index)));
|
||||
dyn_config.set_key_value("current_nozzle_id", new ConfigOptionInt(old_nozzle_id));
|
||||
dyn_config.set_key_value("next_nozzle_id", new ConfigOptionInt(next_nozzle_id));
|
||||
dyn_config.set_key_value("current_filament_id", new ConfigOptionInt(old_filament_id));
|
||||
@@ -9953,7 +9977,7 @@ std::string GCode::set_extruder(unsigned int new_filament_id, double print_z, bo
|
||||
|
||||
this->placeholder_parser().set("current_extruder", new_filament_id);
|
||||
this->placeholder_parser().set("current_hotend",
|
||||
hotend_id_for_gcode_placeholder(group_result, m_print->is_BBL_printer(), (int) new_filament_id, new_extruder_id, m_layer_index));
|
||||
hotend_id_for_gcode_placeholder(m_config, group_result, (int) new_filament_id, new_extruder_id, m_layer_index));
|
||||
// Orca: keep the global current-tool identity coherent for later contexts (see append_tcr).
|
||||
this->placeholder_parser().set("current_filament_id", (int) new_filament_id);
|
||||
this->placeholder_parser().set("current_extruder_id", new_extruder_id);
|
||||
|
||||
@@ -148,6 +148,8 @@ struct ConflictComputeResult
|
||||
|
||||
using ConflictComputeOpt = std::optional<ConflictComputeResult>;
|
||||
|
||||
using ConflictObjName = std::optional<std::pair<std::string, std::string>>;
|
||||
|
||||
struct ConflictChecker
|
||||
{
|
||||
static ConflictResultOpt find_inter_of_lines_in_diff_objs(PrintObjectPtrs objs, std::optional<const FakeWipeTower *> wtdptr);
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#include "../PrintConfig.hpp"
|
||||
#include "../Utils.hpp"
|
||||
#include "Print.hpp"
|
||||
#include "libslic3r/PrintConfig.hpp"
|
||||
#include "libslic3r/libslic3r.h"
|
||||
|
||||
#include <boost/log/trivial.hpp>
|
||||
#include <string>
|
||||
|
||||
@@ -22,6 +22,9 @@
|
||||
namespace Slic3r {
|
||||
namespace PreciseSeam {
|
||||
|
||||
// Import EnforcedBlockedSeamPoint from SeamPlacerImpl namespace for convenience
|
||||
using SeamPlacerImpl::EnforcedBlockedSeamPoint;
|
||||
|
||||
// Geometry and its exterior bounds are prepared together, then treated as read-only.
|
||||
struct ModifierRegion {
|
||||
ExPolygon polygon;
|
||||
@@ -134,7 +137,7 @@ SegmentExtraction extract_perimeter_segments(const PreparedPerimeter &prepared,
|
||||
|
||||
// Result of weak modifier segment processing
|
||||
struct WeakModifierSegment {
|
||||
SeamPlacerImpl::EnforcedBlockedSeamPoint type; // Enforced/Blocked/Neutral
|
||||
EnforcedBlockedSeamPoint type; // Enforced/Blocked/Neutral
|
||||
Point left_point; // Coordinates of left (first) point of segment
|
||||
PerimeterPosition left_position; // Position on the source perimeter before insertion/refinement.
|
||||
Point right_point; // Coordinates of right (last) point of segment
|
||||
|
||||
@@ -40,7 +40,8 @@ std::string get_error_string(const ThumbnailErrors& errors);
|
||||
|
||||
|
||||
typedef std::vector<std::pair<GCodeThumbnailsFormat, Vec2d>> GCodeThumbnailDefinitionsList;
|
||||
std::pair<GCodeThumbnailDefinitionsList, ThumbnailErrors> make_and_check_thumbnail_list(const std::string& thumbnails_string, const std::string_view def_ext = "PNG");
|
||||
using namespace std::literals;
|
||||
std::pair<GCodeThumbnailDefinitionsList, ThumbnailErrors> make_and_check_thumbnail_list(const std::string& thumbnails_string, const std::string_view def_ext = "PNG"sv);
|
||||
std::pair<GCodeThumbnailDefinitionsList, ThumbnailErrors> make_and_check_thumbnail_list(const ConfigBase &config);
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,580 @@
|
||||
#include "GCodeSender.hpp"
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <boost/algorithm/string/predicate.hpp>
|
||||
#include <boost/algorithm/string/trim.hpp>
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
#if defined(__APPLE__) || defined(__OpenBSD__)
|
||||
#include <termios.h>
|
||||
#endif
|
||||
#ifdef __APPLE__
|
||||
#include <sys/ioctl.h>
|
||||
#include <IOKit/serial/ioss.h>
|
||||
#endif
|
||||
#ifdef __linux__
|
||||
#include <sys/ioctl.h>
|
||||
#include <fcntl.h>
|
||||
#include "/usr/include/asm-generic/ioctls.h"
|
||||
|
||||
/* The following definitions are kindly borrowed from:
|
||||
/usr/include/asm-generic/termbits.h
|
||||
Unfortunately we cannot just include that one because
|
||||
it would redefine the "struct termios" already defined
|
||||
the <termios.h> already included by Boost.ASIO. */
|
||||
#define K_NCCS 19
|
||||
struct termios2 {
|
||||
tcflag_t c_iflag;
|
||||
tcflag_t c_oflag;
|
||||
tcflag_t c_cflag;
|
||||
tcflag_t c_lflag;
|
||||
cc_t c_line;
|
||||
cc_t c_cc[K_NCCS];
|
||||
speed_t c_ispeed;
|
||||
speed_t c_ospeed;
|
||||
};
|
||||
#define BOTHER CBAUDEX
|
||||
|
||||
#endif
|
||||
|
||||
//#define DEBUG_SERIAL
|
||||
#ifdef DEBUG_SERIAL
|
||||
#include <cstdlib>
|
||||
#include <fstream>
|
||||
std::fstream fs;
|
||||
#endif
|
||||
|
||||
#define KEEP_SENT 20
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
GCodeSender::GCodeSender()
|
||||
: io(), serial(io), can_send(false), sent(0), open(false), error(false),
|
||||
connected(false), queue_paused(false)
|
||||
{
|
||||
#ifdef DEBUG_SERIAL
|
||||
std::srand(std::time(nullptr));
|
||||
#endif
|
||||
}
|
||||
|
||||
GCodeSender::~GCodeSender()
|
||||
{
|
||||
this->disconnect();
|
||||
}
|
||||
|
||||
bool
|
||||
GCodeSender::connect(std::string devname, unsigned int baud_rate)
|
||||
{
|
||||
this->disconnect();
|
||||
|
||||
this->set_error_status(false);
|
||||
try {
|
||||
this->serial.open(devname);
|
||||
|
||||
this->serial.set_option(boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::odd));
|
||||
this->serial.set_option(boost::asio::serial_port_base::character_size(boost::asio::serial_port_base::character_size(8)));
|
||||
this->serial.set_option(boost::asio::serial_port_base::flow_control(boost::asio::serial_port_base::flow_control::none));
|
||||
this->serial.set_option(boost::asio::serial_port_base::stop_bits(boost::asio::serial_port_base::stop_bits::one));
|
||||
this->set_baud_rate(baud_rate);
|
||||
|
||||
this->serial.close();
|
||||
this->serial.open(devname);
|
||||
this->serial.set_option(boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::none));
|
||||
|
||||
// set baud rate again because set_option overwrote it
|
||||
this->set_baud_rate(baud_rate);
|
||||
this->open = true;
|
||||
this->reset();
|
||||
} catch (boost::system::system_error &) {
|
||||
this->set_error_status(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
// a reset firmware expect line numbers to start again from 1
|
||||
this->sent = 0;
|
||||
this->last_sent.clear();
|
||||
|
||||
/* Initialize debugger */
|
||||
#ifdef DEBUG_SERIAL
|
||||
fs.open("serial.txt", std::fstream::out | std::fstream::trunc);
|
||||
#endif
|
||||
|
||||
// this gives some work to the io_service before it is started
|
||||
// (post() runs the supplied function in its thread)
|
||||
this->io.post(boost::bind(&GCodeSender::do_read, this));
|
||||
|
||||
// start reading in the background thread
|
||||
boost::thread t(boost::bind(&boost::asio::io_service::run, &this->io));
|
||||
this->background_thread.swap(t);
|
||||
|
||||
// always send a M105 to check for connection because firmware might be silent on connect
|
||||
//FIXME Vojtech: This is being sent too early, leading to line number synchronization issues,
|
||||
// from which the GCodeSender never recovers.
|
||||
// this->send("M105", true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::set_baud_rate(unsigned int baud_rate)
|
||||
{
|
||||
try {
|
||||
// This does not support speeds > 115200
|
||||
this->serial.set_option(boost::asio::serial_port_base::baud_rate(baud_rate));
|
||||
} catch (boost::system::system_error &) {
|
||||
boost::asio::serial_port::native_handle_type handle = this->serial.native_handle();
|
||||
|
||||
#if __APPLE__
|
||||
termios ios;
|
||||
::tcgetattr(handle, &ios);
|
||||
::cfsetspeed(&ios, baud_rate);
|
||||
speed_t newSpeed = baud_rate;
|
||||
ioctl(handle, IOSSIOSPEED, &newSpeed);
|
||||
::tcsetattr(handle, TCSANOW, &ios);
|
||||
#elif __linux__
|
||||
termios2 ios;
|
||||
if (ioctl(handle, TCGETS2, &ios))
|
||||
printf("Error in TCGETS2: %s\n", strerror(errno));
|
||||
ios.c_ispeed = ios.c_ospeed = baud_rate;
|
||||
ios.c_cflag &= ~CBAUD;
|
||||
ios.c_cflag |= BOTHER | CLOCAL | CREAD;
|
||||
ios.c_cc[VMIN] = 1; // Minimum of characters to read, prevents eof errors when 0 bytes are read
|
||||
ios.c_cc[VTIME] = 1;
|
||||
if (ioctl(handle, TCSETS2, &ios))
|
||||
printf("Error in TCSETS2: %s\n", strerror(errno));
|
||||
|
||||
#elif __OpenBSD__
|
||||
struct termios ios;
|
||||
::tcgetattr(handle, &ios);
|
||||
::cfsetspeed(&ios, baud_rate);
|
||||
if (::tcsetattr(handle, TCSAFLUSH, &ios) != 0)
|
||||
printf("Failed to set baud rate: %s\n", strerror(errno));
|
||||
#else
|
||||
//throw Slic3r::InvalidArgument("OS does not currently support custom bauds");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::disconnect()
|
||||
{
|
||||
if (!this->open) return;
|
||||
this->open = false;
|
||||
this->connected = false;
|
||||
this->io.post(boost::bind(&GCodeSender::do_close, this));
|
||||
this->background_thread.join();
|
||||
this->io.reset();
|
||||
/*
|
||||
if (this->error_status()) {
|
||||
throw(boost::system::system_error(boost::system::error_code(),
|
||||
"Error while closing the device"));
|
||||
}
|
||||
*/
|
||||
|
||||
#ifdef DEBUG_SERIAL
|
||||
fs << "DISCONNECTED" << std::endl << std::flush;
|
||||
fs.close();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
GCodeSender::is_connected() const
|
||||
{
|
||||
return this->connected;
|
||||
}
|
||||
|
||||
bool
|
||||
GCodeSender::wait_connected(unsigned int timeout) const
|
||||
{
|
||||
using namespace boost::posix_time;
|
||||
ptime t0 = second_clock::local_time() + seconds(timeout);
|
||||
while (!this->connected) {
|
||||
if (second_clock::local_time() > t0) return false;
|
||||
boost::this_thread::sleep(boost::posix_time::milliseconds(100));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
size_t
|
||||
GCodeSender::queue_size() const
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
return this->queue.size();
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::pause_queue()
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
this->queue_paused = true;
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::resume_queue()
|
||||
{
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
this->queue_paused = false;
|
||||
}
|
||||
this->send();
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::purge_queue(bool priority)
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
if (priority) {
|
||||
// clear priority queue
|
||||
std::list<std::string> empty;
|
||||
std::swap(this->priqueue, empty);
|
||||
} else {
|
||||
// clear queue
|
||||
std::queue<std::string> empty;
|
||||
std::swap(this->queue, empty);
|
||||
this->queue_paused = false;
|
||||
}
|
||||
}
|
||||
|
||||
// purge log and return its contents
|
||||
std::vector<std::string>
|
||||
GCodeSender::purge_log()
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->log_mutex);
|
||||
std::vector<std::string> retval;
|
||||
retval.reserve(this->log.size());
|
||||
while (!this->log.empty()) {
|
||||
retval.push_back(this->log.front());
|
||||
this->log.pop();
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
std::string
|
||||
GCodeSender::getT() const
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->log_mutex);
|
||||
return this->T;
|
||||
}
|
||||
|
||||
std::string
|
||||
GCodeSender::getB() const
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->log_mutex);
|
||||
return this->B;
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::do_close()
|
||||
{
|
||||
this->set_error_status(false);
|
||||
boost::system::error_code ec;
|
||||
this->serial.cancel(ec);
|
||||
if (ec) this->set_error_status(true);
|
||||
this->serial.close(ec);
|
||||
if (ec) this->set_error_status(true);
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::set_error_status(bool e)
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->error_mutex);
|
||||
this->error = e;
|
||||
}
|
||||
|
||||
bool
|
||||
GCodeSender::error_status() const
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->error_mutex);
|
||||
return this->error;
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::do_read()
|
||||
{
|
||||
// read one line
|
||||
boost::asio::async_read_until(
|
||||
this->serial,
|
||||
this->read_buffer,
|
||||
'\n',
|
||||
boost::bind(
|
||||
&GCodeSender::on_read,
|
||||
this,
|
||||
boost::asio::placeholders::error,
|
||||
boost::asio::placeholders::bytes_transferred
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::on_read(const boost::system::error_code& error,
|
||||
size_t bytes_transferred)
|
||||
{
|
||||
this->set_error_status(false);
|
||||
if (error) {
|
||||
#ifdef __APPLE__
|
||||
if (error.value() == 45) {
|
||||
// OS X bug: http://osdir.com/ml/lib.boost.asio.user/2008-08/msg00004.html
|
||||
this->do_read();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// printf("ERROR: [%d] %s\n", error.value(), error.message().c_str());
|
||||
// error can be true even because the serial port was closed.
|
||||
// In this case it is not a real error, so ignore.
|
||||
if (this->open) {
|
||||
this->do_close();
|
||||
this->set_error_status(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
std::istream is(&this->read_buffer);
|
||||
std::string line;
|
||||
std::getline(is, line);
|
||||
if (!line.empty()) {
|
||||
#ifdef DEBUG_SERIAL
|
||||
fs << "<< " << line << std::endl << std::flush;
|
||||
#endif
|
||||
|
||||
// note that line might contain \r at its end
|
||||
// parse incoming line
|
||||
if (!this->connected
|
||||
&& (boost::starts_with(line, "start")
|
||||
|| boost::starts_with(line, "Grbl ")
|
||||
|| boost::starts_with(line, "ok")
|
||||
|| boost::contains(line, "T:"))) {
|
||||
this->connected = true;
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
this->can_send = true;
|
||||
}
|
||||
this->send();
|
||||
} else if (boost::starts_with(line, "ok")) {
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
this->can_send = true;
|
||||
}
|
||||
this->send();
|
||||
} else if (boost::istarts_with(line, "resend") // Marlin uses "Resend: "
|
||||
|| boost::istarts_with(line, "rs")) {
|
||||
// extract the first number from line
|
||||
boost::algorithm::trim_left_if(line, !boost::algorithm::is_digit());
|
||||
size_t toresend = boost::lexical_cast<size_t>(line.substr(0, line.find_first_not_of("0123456789")));
|
||||
|
||||
#ifdef DEBUG_SERIAL
|
||||
fs << "!! line num out of sync: toresend = " << toresend << ", sent = " << sent << ", last_sent.size = " << last_sent.size() << std::endl;
|
||||
#endif
|
||||
|
||||
if (toresend > this->sent - this->last_sent.size() && toresend <= this->sent) {
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
|
||||
const auto lines_to_resend = this->sent - toresend + 1;
|
||||
#ifdef DEBUG_SERIAL
|
||||
fs << "!! resending " << lines_to_resend << " lines" << std::endl;
|
||||
#endif
|
||||
// move the unsent lines to priqueue
|
||||
this->priqueue.insert(
|
||||
this->priqueue.begin(), // insert at the beginning
|
||||
this->last_sent.begin() + this->last_sent.size() - lines_to_resend,
|
||||
this->last_sent.end()
|
||||
);
|
||||
|
||||
// we can empty last_sent because it's not useful anymore
|
||||
this->last_sent.clear();
|
||||
|
||||
// start resending with the requested line number
|
||||
this->sent = toresend - 1;
|
||||
this->can_send = true;
|
||||
}
|
||||
this->send();
|
||||
} else {
|
||||
printf("Cannot resend %zu (oldest we have is %zu)\n", toresend, this->sent - this->last_sent.size());
|
||||
}
|
||||
} else if (boost::starts_with(line, "wait")) {
|
||||
// ignore
|
||||
} else {
|
||||
// push any other line into the log
|
||||
boost::lock_guard<boost::mutex> l(this->log_mutex);
|
||||
this->log.push(line);
|
||||
}
|
||||
|
||||
// parse temperature info
|
||||
{
|
||||
size_t pos = line.find("T:");
|
||||
if (pos != std::string::npos && line.size() > pos + 2) {
|
||||
// we got temperature info
|
||||
boost::lock_guard<boost::mutex> l(this->log_mutex);
|
||||
this->T = line.substr(pos+2, line.find_first_not_of("0123456789.", pos+2) - (pos+2));
|
||||
|
||||
pos = line.find("B:");
|
||||
if (pos != std::string::npos && line.size() > pos + 2) {
|
||||
// we got bed temperature info
|
||||
this->B = line.substr(pos+2, line.find_first_not_of("0123456789.", pos+2) - (pos+2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this->do_read();
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::send(const std::vector<std::string> &lines, bool priority)
|
||||
{
|
||||
// append lines to queue
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
for (std::vector<std::string>::const_iterator line = lines.begin(); line != lines.end(); ++line) {
|
||||
if (priority) {
|
||||
this->priqueue.push_back(*line);
|
||||
} else {
|
||||
this->queue.push(*line);
|
||||
}
|
||||
}
|
||||
}
|
||||
this->send();
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::send(const std::string &line, bool priority)
|
||||
{
|
||||
// append line to queue
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
if (priority) {
|
||||
this->priqueue.push_back(line);
|
||||
} else {
|
||||
this->queue.push(line);
|
||||
}
|
||||
}
|
||||
this->send();
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::send()
|
||||
{
|
||||
this->io.post(boost::bind(&GCodeSender::do_send, this));
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::do_send()
|
||||
{
|
||||
boost::lock_guard<boost::mutex> l(this->queue_mutex);
|
||||
|
||||
// printer is not connected or we're still waiting for the previous ack
|
||||
if (!this->can_send) return;
|
||||
|
||||
std::string line;
|
||||
while (!this->priqueue.empty() || (!this->queue.empty() && !this->queue_paused)) {
|
||||
if (!this->priqueue.empty()) {
|
||||
line = this->priqueue.front();
|
||||
this->priqueue.pop_front();
|
||||
} else {
|
||||
line = this->queue.front();
|
||||
this->queue.pop();
|
||||
}
|
||||
|
||||
// strip comments
|
||||
size_t comment_pos = line.find_first_of(';');
|
||||
if (comment_pos != std::string::npos)
|
||||
line.erase(comment_pos, std::string::npos);
|
||||
boost::algorithm::trim(line);
|
||||
|
||||
// if line is not empty, send it
|
||||
if (!line.empty()) break;
|
||||
// if line is empty, process next item in queue
|
||||
}
|
||||
if (line.empty()) return;
|
||||
|
||||
// compute full line
|
||||
++ this->sent;
|
||||
#ifndef DEBUG_SERIAL
|
||||
const auto line_num = this->sent;
|
||||
#else
|
||||
// In DEBUG_SERIAL mode, test line re-synchronization by sending bad line number 1/4 of the time
|
||||
const auto line_num = std::rand() < RAND_MAX/4 ? 0 : this->sent;
|
||||
#endif
|
||||
std::string full_line = "N" + boost::lexical_cast<std::string>(line_num) + " " + line;
|
||||
|
||||
// calculate checksum
|
||||
int cs = 0;
|
||||
for (std::string::const_iterator it = full_line.begin(); it != full_line.end(); ++it)
|
||||
cs = cs ^ *it;
|
||||
|
||||
// write line to device
|
||||
full_line += "*";
|
||||
full_line += boost::lexical_cast<std::string>(cs);
|
||||
full_line += "\n";
|
||||
|
||||
#ifdef DEBUG_SERIAL
|
||||
fs << ">> " << full_line << std::flush;
|
||||
#endif
|
||||
|
||||
this->last_sent.push_back(line);
|
||||
this->can_send = false;
|
||||
|
||||
while (this->last_sent.size() > KEEP_SENT) {
|
||||
this->last_sent.pop_front();
|
||||
}
|
||||
|
||||
// we can't supply boost::asio::buffer(full_line) to async_write() because full_line is on the
|
||||
// stack and the buffer would lose its underlying storage causing memory corruption
|
||||
std::ostream os(&this->write_buffer);
|
||||
os << full_line;
|
||||
boost::asio::async_write(this->serial, this->write_buffer, boost::bind(&GCodeSender::on_write, this, boost::asio::placeholders::error,
|
||||
boost::asio::placeholders::bytes_transferred));
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::on_write(const boost::system::error_code& error,
|
||||
size_t bytes_transferred)
|
||||
{
|
||||
this->set_error_status(false);
|
||||
if (error) {
|
||||
if (this->open) {
|
||||
this->do_close();
|
||||
this->set_error_status(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
this->do_send();
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::set_DTR(bool on)
|
||||
{
|
||||
#if defined(_WIN32) && !defined(__SYMBIAN32__)
|
||||
boost::asio::serial_port_service::native_handle_type handle = this->serial.native_handle();
|
||||
if (on)
|
||||
EscapeCommFunction(handle, SETDTR);
|
||||
else
|
||||
EscapeCommFunction(handle, CLRDTR);
|
||||
#else
|
||||
int fd = this->serial.native_handle();
|
||||
int status;
|
||||
ioctl(fd, TIOCMGET, &status);
|
||||
if (on)
|
||||
status |= TIOCM_DTR;
|
||||
else
|
||||
status &= ~TIOCM_DTR;
|
||||
ioctl(fd, TIOCMSET, &status);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
GCodeSender::reset()
|
||||
{
|
||||
set_DTR(false);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
set_DTR(true);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
set_DTR(false);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||
}
|
||||
|
||||
} // namespace Slic3r
|
||||
@@ -0,0 +1,81 @@
|
||||
#ifndef slic3r_GCodeSender_hpp_
|
||||
#define slic3r_GCodeSender_hpp_
|
||||
|
||||
#include "libslic3r.h"
|
||||
#include <queue>
|
||||
#include <boost/core/noncopyable.hpp>
|
||||
#include <cstddef>
|
||||
#include <boost/asio/io_service.hpp>
|
||||
#include <boost/asio/serial_port.hpp>
|
||||
#include <boost/asio/streambuf.hpp>
|
||||
#include <list>
|
||||
#include <deque>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/noncopyable.hpp>
|
||||
#include <boost/bind/bind.hpp>
|
||||
#include <boost/thread.hpp>
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
namespace asio = boost::asio;
|
||||
|
||||
class GCodeSender : private boost::noncopyable {
|
||||
public:
|
||||
GCodeSender();
|
||||
~GCodeSender();
|
||||
bool connect(std::string devname, unsigned int baud_rate);
|
||||
void send(const std::vector<std::string> &lines, bool priority = false);
|
||||
void send(const std::string &s, bool priority = false);
|
||||
void disconnect();
|
||||
bool error_status() const;
|
||||
bool is_connected() const;
|
||||
bool wait_connected(unsigned int timeout = 3) const;
|
||||
size_t queue_size() const;
|
||||
void pause_queue();
|
||||
void resume_queue();
|
||||
void purge_queue(bool priority = false);
|
||||
std::vector<std::string> purge_log();
|
||||
std::string getT() const;
|
||||
std::string getB() const;
|
||||
void set_DTR(bool on);
|
||||
void reset();
|
||||
|
||||
private:
|
||||
asio::io_service io;
|
||||
asio::serial_port serial;
|
||||
boost::thread background_thread;
|
||||
boost::asio::streambuf read_buffer, write_buffer;
|
||||
bool open; // whether the serial socket is connected
|
||||
bool connected; // whether the printer is online
|
||||
bool error;
|
||||
mutable boost::mutex error_mutex;
|
||||
|
||||
// this mutex guards queue, priqueue, can_send, queue_paused, sent, last_sent
|
||||
mutable boost::mutex queue_mutex;
|
||||
std::queue<std::string> queue;
|
||||
std::list<std::string> priqueue;
|
||||
bool can_send;
|
||||
bool queue_paused;
|
||||
size_t sent;
|
||||
std::deque<std::string> last_sent;
|
||||
|
||||
// this mutex guards log, T, B
|
||||
mutable boost::mutex log_mutex;
|
||||
std::queue<std::string> log;
|
||||
std::string T, B;
|
||||
|
||||
void set_baud_rate(unsigned int baud_rate);
|
||||
void set_error_status(bool e);
|
||||
void do_send();
|
||||
void on_write(const boost::system::error_code& error, size_t bytes_transferred);
|
||||
void do_close();
|
||||
void do_read();
|
||||
void on_read(const boost::system::error_code& error, size_t bytes_transferred);
|
||||
void send();
|
||||
};
|
||||
|
||||
} // namespace Slic3r
|
||||
|
||||
#endif /* slic3r_GCodeSender_hpp_ */
|
||||
@@ -94,6 +94,8 @@ struct Circle {
|
||||
|
||||
using Circlef = Circle<Vec2f>;
|
||||
using Circled = Circle<Vec2d>;
|
||||
using CircleSqf = CircleSq<Vec2f>;
|
||||
using CircleSqd = CircleSq<Vec2d>;
|
||||
|
||||
/// Find the center of the circle corresponding to the vector of Points as an arc.
|
||||
Point circle_center_taubin_newton(const Points::const_iterator& input_start, const Points::const_iterator& input_end, size_t cycles = 20);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <boost/log/trivial.hpp>
|
||||
#include "MedialAxis.hpp"
|
||||
|
||||
#include <boost/log/trivial.hpp>
|
||||
#include <boost/polygon/polygon.hpp>
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
|
||||
@@ -33,7 +33,7 @@ class PrintObject;
|
||||
class Print;
|
||||
|
||||
namespace FillAdaptive {
|
||||
struct Octrees;
|
||||
struct Octree;
|
||||
};
|
||||
|
||||
namespace FillLightning {
|
||||
@@ -170,10 +170,10 @@ public:
|
||||
ExPolygons lslices;
|
||||
ExPolygons lslices_extrudable; // BBS: the extrudable part of lslices used for tree support
|
||||
std::vector<BoundingBox> lslices_bboxes;
|
||||
// Orca: for separated infills / per-model centering / octree infills. Aligned with lslices: for each
|
||||
// island, the 3D connected body (across all layers) it belongs to, indexing
|
||||
// PrintObject::separated_body_bboxes(). Populated by PrintObject::prepare_infill() only when needed.
|
||||
std::vector<size_t> lslices_separated_component_ids;
|
||||
// Orca: for separated infills / per-model centering. Aligned with lslices: for each island, the
|
||||
// full bounding box of the 3D connected body (across all layers) it belongs to. Populated by
|
||||
// PrintObject::infill() only when the feature is used; empty otherwise.
|
||||
std::vector<BoundingBox> lslices_separated_component_bboxes;
|
||||
|
||||
// BBS
|
||||
ExPolygons loverhangs;
|
||||
@@ -208,9 +208,9 @@ public:
|
||||
void make_perimeters();
|
||||
// Phony version of make_fills() without parameters for Perl integration only.
|
||||
void make_fills() { this->make_fills(nullptr, nullptr); }
|
||||
void make_fills(const FillAdaptive::Octrees* adaptive_fill_octrees, const FillAdaptive::Octrees* support_fill_octrees, FillLightning::Generator* lightning_generator = nullptr);
|
||||
Polylines generate_sparse_infill_polylines_for_anchoring(const FillAdaptive::Octrees *adaptive_fill_octrees,
|
||||
const FillAdaptive::Octrees *support_fill_octrees,
|
||||
void make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive::Octree* support_fill_octree, FillLightning::Generator* lightning_generator = nullptr);
|
||||
Polylines generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Octree *adaptive_fill_octree,
|
||||
FillAdaptive::Octree *support_fill_octree,
|
||||
FillLightning::Generator* lightning_generator) const;
|
||||
void make_ironing();
|
||||
// Returns the filament id (1-based) the region is ironed with, or -1 when the
|
||||
|
||||
@@ -62,7 +62,7 @@ Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge) const
|
||||
const PrintObject &print_object = *this->layer()->object();
|
||||
Flow bridge_flow;
|
||||
// Here this->extruder(role) - 1 may underflow to MAX_INT, but then the get_at() will fall back to zero'th element, so everything is all right.
|
||||
auto nozzle_diameter = float(nozzle_diameter_for_filament(print_object.print()->config(), region.extruder(role), print_object.print()->is_BBL_printer()));
|
||||
auto nozzle_diameter = float(print_object.print()->config().nozzle_diameter.get_at(region.extruder(role) - 1));
|
||||
const ConfigOptionFloatOrPercent& bridge_width_opt = region_config.bridge_line_width;
|
||||
const double bridge_width = bridge_width_opt.get_abs_value(nozzle_diameter);
|
||||
const bool has_bridge_width = bridge_width > 0.;
|
||||
|
||||
@@ -154,12 +154,13 @@ template<class ExecutionPolicy, class Enable = void> struct _Loop
|
||||
};
|
||||
|
||||
// Add Specialization for using ExecutionTBB for parallel loops.
|
||||
template<> struct _Loop<Slic3r::ExecutionTBB>
|
||||
using namespace Slic3r;
|
||||
template<> struct _Loop<ExecutionTBB>
|
||||
{
|
||||
template<class It, class Fn> static void for_each_idx(It from, It to, Fn&& fn)
|
||||
{
|
||||
Slic3r::execution::for_each(
|
||||
Slic3r::ex_tbb, size_t(0), size_t(to - from), [&from, &fn](size_t i) { fn(from[i], i); }, Slic3r::execution::max_concurrency(Slic3r::ex_tbb));
|
||||
execution::for_each(
|
||||
ex_tbb, size_t(0), size_t(to - from), [&from, &fn](size_t i) { fn(from[i], i); }, execution::max_concurrency(ex_tbb));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "Format/AssimpImport.hpp"
|
||||
#include "ClipperUtils.hpp"
|
||||
#include "Exception.hpp"
|
||||
#include "Model.hpp"
|
||||
#include "ModelArrange.hpp"
|
||||
#include "Arrange.hpp"
|
||||
#include "Geometry.hpp"
|
||||
@@ -1696,9 +1697,6 @@ indexed_triangle_set ModelObject::raw_indexed_triangle_set() const
|
||||
size_t j = out.indices.size();
|
||||
append(out.vertices, v->mesh().its.vertices);
|
||||
append(out.indices, v->mesh().its.indices);
|
||||
// Orca: Point the volume's triangles at its own vertices, which follow those of the volumes before it.
|
||||
for (size_t k = j; k < out.indices.size(); ++ k)
|
||||
out.indices[k] += stl_triangle_vertex_indices::Constant(int(i));
|
||||
const Transform3d& m = v->get_matrix();
|
||||
for (; i < out.vertices.size(); ++ i)
|
||||
out.vertices[i] = (m * out.vertices[i].cast<double>()).cast<float>().eval();
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "TriangleMesh.hpp"
|
||||
#include "CustomGCode.hpp"
|
||||
#include "calib.hpp"
|
||||
#include "enum_bitmask.hpp"
|
||||
#include "TextConfiguration.hpp"
|
||||
#include "EmbossShape.hpp"
|
||||
#include "TriangleSelector.hpp"
|
||||
|
||||
+129
-36
@@ -3593,6 +3593,24 @@ void PresetBundle::export_selections(AppConfig &config)
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": printer %1%, print %2%, filaments[0] %3% ")%printers.get_selected_preset_name() % prints.get_selected_preset_name() %filament_presets[0];
|
||||
}
|
||||
|
||||
// Preserve metadata only for existing colour slots; new slots get false/empty defaults.
|
||||
static void resize_mixed_filament_metadata(DynamicPrintConfig &config, size_t old_slot_count, size_t new_slot_count)
|
||||
{
|
||||
auto resize = [old_slot_count, new_slot_count](auto *opt) {
|
||||
if (opt) {
|
||||
opt->values.resize(std::min(old_slot_count, opt->values.size()));
|
||||
opt->values.resize(new_slot_count);
|
||||
}
|
||||
};
|
||||
resize(config.option<ConfigOptionBools>("filament_is_mixed"));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_components"));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_sublayer_ratios"));
|
||||
resize(config.option<ConfigOptionBools>("filament_mixed_gradient"));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_gradient_range"));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_gradient_curve"));
|
||||
resize(config.option<ConfigOptionBools>("filament_mixed_gradient_per_part"));
|
||||
}
|
||||
|
||||
void PresetBundle::set_num_filaments(unsigned int n, std::string new_color)
|
||||
{
|
||||
unsigned old_filament_count = this->filament_presets.size();
|
||||
@@ -3790,7 +3808,11 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info)
|
||||
auto ams_name = ams.opt_string("tray_name", 0u);
|
||||
auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed");
|
||||
auto filament_multi_color = ams.opt<ConfigOptionStrings>("filament_multi_colour")->values;
|
||||
if (filament_id.empty()) {
|
||||
auto filament_type = ams.opt_string("filament_type", 0u);
|
||||
auto is_placeholder = ams.has("filament_slot_placeholder") && ams.opt_bool("filament_slot_placeholder", 0u);
|
||||
// A printer-set tray carries a material type but no preset id; resolve it to the
|
||||
// matching Generic preset so it is not dropped and the combo array keeps aligning.
|
||||
if (filament_id.empty() && (is_placeholder || filament_type.empty())) {
|
||||
continue;
|
||||
}
|
||||
if (!filament_changed && this->filament_presets.size() > combox_info.ams_filament_presets.size()) {
|
||||
@@ -3800,16 +3822,48 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info)
|
||||
combox_info.ams_names.push_back(ams_name);
|
||||
continue;
|
||||
}
|
||||
auto iter = std::find_if(filaments.begin(), filaments.end(),
|
||||
[this, &filament_id](auto &f) { return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; });
|
||||
warn_ambiguous_filament_id_match(filaments, iter, filament_id);
|
||||
auto iter = filaments.end();
|
||||
if (!filament_id.empty()) {
|
||||
iter = std::find_if(filaments.begin(), filaments.end(),
|
||||
[this, &filament_id](auto &f) { return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; });
|
||||
warn_ambiguous_filament_id_match(filaments, iter, filament_id);
|
||||
}
|
||||
if (iter == filaments.end()) {
|
||||
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": filament_id %1% not found or system or compatible") % filament_id;
|
||||
auto filament_type = ams.opt_string("filament_type", 0u);
|
||||
if (!filament_type.empty()) {
|
||||
auto original_type = filament_type;
|
||||
filament_type = "Generic " + filament_type;
|
||||
iter = std::find_if(filaments.begin(), filaments.end(),
|
||||
[&filament_type](auto &f) { return f.is_compatible && f.is_system && boost::algorithm::starts_with(f.name, filament_type); });
|
||||
if (iter == filaments.end()) {
|
||||
// Similarity fallback: find a generic preset whose filament_type
|
||||
// appears as a whole word in the AMS type (e.g. "ASA" in "ASA Sparkle").
|
||||
auto upper_type = boost::to_upper_copy(original_type);
|
||||
auto contains_word = [](const std::string& haystack, const std::string& needle) {
|
||||
auto pos = haystack.find(needle);
|
||||
while (pos != std::string::npos) {
|
||||
bool start_ok = (pos == 0 || !std::isalnum(static_cast<unsigned char>(haystack[pos - 1])));
|
||||
bool end_ok = (pos + needle.size() >= haystack.size() ||
|
||||
!std::isalnum(static_cast<unsigned char>(haystack[pos + needle.size()])));
|
||||
if (start_ok && end_ok)
|
||||
return true;
|
||||
pos = haystack.find(needle, pos + 1);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
// Find the longest-matching preset type to prefer e.g. "PA-CF" over "PA".
|
||||
size_t best_len = 0;
|
||||
for (auto it = filaments.begin(); it != filaments.end(); ++it) {
|
||||
if (!it->is_compatible || !it->is_system || !boost::algorithm::starts_with(it->name, "Generic "))
|
||||
continue;
|
||||
auto preset_type = boost::to_upper_copy(it->config.opt_string("filament_type", 0u));
|
||||
if (preset_type.size() > best_len && contains_word(upper_type, preset_type)) {
|
||||
iter = it;
|
||||
best_len = preset_type.size();
|
||||
filament_type = "Generic " + it->config.opt_string("filament_type", 0u);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (iter == filaments.end()) {
|
||||
// Prefer old selection
|
||||
@@ -3820,7 +3874,11 @@ void PresetBundle::get_ams_cobox_infos(AMSComboInfo& combox_info)
|
||||
combox_info.ams_names.push_back(ams_name);
|
||||
continue;
|
||||
}
|
||||
iter = std::find_if(filaments.begin(), filaments.end(), [](auto &f) { return f.is_compatible && f.is_system; });
|
||||
iter = std::find_if(filaments.begin(), filaments.end(), [](auto &f) {
|
||||
return f.is_compatible && f.is_system && boost::algorithm::starts_with(f.name, "Generic ");
|
||||
});
|
||||
if (iter == filaments.end())
|
||||
iter = std::find_if(filaments.begin(), filaments.end(), [](auto &f) { return f.is_compatible && f.is_system; });
|
||||
if (iter == filaments.end())
|
||||
continue;
|
||||
}
|
||||
@@ -3858,6 +3916,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
|
||||
for (auto &entry : filament_ams_list) {
|
||||
auto & ams = entry.second;
|
||||
auto filament_id = ams.opt_string("filament_id", 0u);
|
||||
const bool printer_set_tray = filament_id.empty();
|
||||
auto filament_color = ams.opt_string("filament_colour", 0u);
|
||||
auto filament_color_type = ams.opt_string("filament_colour_type", 0u);
|
||||
auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed");
|
||||
@@ -3870,42 +3929,58 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
|
||||
ams_array_maps.push_back(temp);
|
||||
index++;
|
||||
if (filament_id.empty()) {
|
||||
if (use_map) {
|
||||
for (int j = maps.size() - 1; j >= 0; j--) {
|
||||
if (maps[j].slot_id == slot_id && maps[j].ams_id == ams_id) {
|
||||
maps.erase(j);
|
||||
// A tray written by the printer UI carries a material type but no
|
||||
// OrcaSlicer preset id. Resolve it to the matching Generic preset with
|
||||
// the tray's own color instead of dropping it (direct sync) or forcing
|
||||
// "Generic PLA" (mapping sync). Placeholders and typeless trays keep
|
||||
// the previous behavior.
|
||||
const auto tray_type = ams.opt_string("filament_type", 0u);
|
||||
if (is_placeholder || tray_type.empty()) {
|
||||
if (use_map) {
|
||||
for (int j = maps.size() - 1; j >= 0; j--) {
|
||||
if (maps[j].slot_id == slot_id && maps[j].ams_id == ams_id) {
|
||||
maps.erase(j);
|
||||
}
|
||||
}
|
||||
ams_filament_presets.push_back("Generic PLA");//for unknow matieral
|
||||
auto default_unknown_color = "#CECECE";
|
||||
ams_filament_colors.push_back(default_unknown_color);
|
||||
ams_filament_color_types.push_back("1");
|
||||
if (filament_multi_color.size() == 0) {
|
||||
filament_multi_color.push_back(default_unknown_color);
|
||||
}
|
||||
ams_multi_color_filment.push_back(filament_multi_color);
|
||||
} else if (is_placeholder) {
|
||||
// Orca: push placeholders to keep index alignment with ams_infos
|
||||
ams_filament_presets.push_back("");
|
||||
ams_filament_colors.push_back("");
|
||||
ams_filament_color_types.push_back("");
|
||||
ams_multi_color_filment.push_back({});
|
||||
}
|
||||
ams_filament_presets.push_back("Generic PLA");//for unknow matieral
|
||||
auto default_unknown_color = "#CECECE";
|
||||
ams_filament_colors.push_back(default_unknown_color);
|
||||
ams_filament_color_types.push_back("1");
|
||||
if (filament_multi_color.size() == 0) {
|
||||
filament_multi_color.push_back(default_unknown_color);
|
||||
}
|
||||
ams_multi_color_filment.push_back(filament_multi_color);
|
||||
} else if (is_placeholder) {
|
||||
// Orca: push placeholders to keep index alignment with ams_infos
|
||||
ams_filament_presets.push_back("");
|
||||
ams_filament_colors.push_back("");
|
||||
ams_filament_color_types.push_back("");
|
||||
ams_multi_color_filment.push_back({});
|
||||
continue;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (!filament_changed && this->filament_presets.size() > ams_filament_presets.size()) {
|
||||
ams_filament_presets.push_back(this->filament_presets[ams_filament_presets.size()]);
|
||||
ams_filament_colors.push_back(filament_color);
|
||||
ams_filament_color_types.push_back(filament_color_type);
|
||||
ams_multi_color_filment.push_back(filament_multi_color);
|
||||
ams_infos.back().valid = true;
|
||||
continue;
|
||||
}
|
||||
bool has_type = false;
|
||||
auto filament_type = ams.opt_string("filament_type", 0u);
|
||||
auto iter = std::find_if(filaments.begin(), filaments.end(), [this, &filament_id, &has_type, filament_type](auto &f) {
|
||||
has_type |= f.config.opt_string("filament_type", 0u) == filament_type;
|
||||
return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; });
|
||||
warn_ambiguous_filament_id_match(filaments, iter, filament_id);
|
||||
auto iter = filaments.end();
|
||||
if (!filament_id.empty()) {
|
||||
iter = std::find_if(filaments.begin(), filaments.end(), [this, &filament_id, &has_type, filament_type](auto &f) {
|
||||
has_type |= f.config.opt_string("filament_type", 0u) == filament_type;
|
||||
return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; });
|
||||
warn_ambiguous_filament_id_match(filaments, iter, filament_id);
|
||||
} else {
|
||||
// The material type is the only identity a printer-set tray carries.
|
||||
has_type = std::any_of(filaments.begin(), filaments.end(), [&filament_type](auto &f) {
|
||||
return f.is_compatible && f.config.opt_string("filament_type", 0u) == filament_type; });
|
||||
}
|
||||
if (iter == filaments.end()) {
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": filament_id %1% not found or system or compatible") % filament_id;
|
||||
if (!filament_type.empty()) {
|
||||
@@ -3945,6 +4020,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
|
||||
}
|
||||
}
|
||||
}
|
||||
const bool resolved_by_material_type = printer_set_tray && iter != filaments.end();
|
||||
if (iter == filaments.end()) {
|
||||
// Prefer old selection
|
||||
if (ams_filament_presets.size() < this->filament_presets.size()) {
|
||||
@@ -3952,6 +4028,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
|
||||
ams_filament_colors.push_back(filament_color);
|
||||
ams_filament_color_types.push_back(filament_color_type);
|
||||
ams_multi_color_filment.push_back(filament_multi_color);
|
||||
ams_infos.back().valid = true;
|
||||
unknowns.emplace_back(&ams, has_type ? L("The filament may not be compatible with the current machine settings. Generic filament presets will be used.") :
|
||||
L("The filament model is unknown. Still using the previous filament preset."));
|
||||
continue;
|
||||
@@ -3967,7 +4044,8 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
|
||||
if (iter == filaments.end())
|
||||
continue;
|
||||
}
|
||||
unknowns.emplace_back(&ams, boost::algorithm::starts_with(iter->name, filament_type) ?
|
||||
if (!resolved_by_material_type)
|
||||
unknowns.emplace_back(&ams, boost::algorithm::starts_with(iter->name, filament_type) ?
|
||||
(has_type ? L("The filament may not be compatible with the current machine settings. Generic filament presets will be used.") :
|
||||
L("The filament model is unknown. Generic filament presets will be used.")) :
|
||||
(has_type ? L("The filament may not be compatible with the current machine settings. A random filament preset will be used.") :
|
||||
@@ -3978,6 +4056,7 @@ unsigned int PresetBundle::sync_ams_list(std::vector<std::pair<DynamicPrintConfi
|
||||
ams_filament_colors.push_back(filament_color);
|
||||
ams_filament_color_types.push_back(filament_color_type);
|
||||
ams_multi_color_filment.push_back(filament_multi_color);
|
||||
ams_infos.back().valid = true;
|
||||
}
|
||||
if (ams_filament_presets.empty())
|
||||
return 0;
|
||||
@@ -4417,9 +4496,21 @@ std::vector<std::vector<DynamicPrintConfig>> PresetBundle::get_extruder_filament
|
||||
return filament_infos;
|
||||
}
|
||||
|
||||
// ORCA TODO: currently, this function assumes the printer name follows the pattern of "<printer_model> <nozzle_diameter>", e.g.
|
||||
// printer_type: "Bambu Lab X2D", nozzle_diameter_str: "0.4 nozzle" => printer_name: "Bambu Lab X2D 0.4 nozzle". If the printer name does
|
||||
// not follow this pattern, the function may not work correctly.
|
||||
std::string PresetBundle::get_printer_model_display_name(const std::string &model_id) const
|
||||
{
|
||||
if (model_id.empty())
|
||||
return {};
|
||||
for (const auto &vendor_entry : vendors) {
|
||||
for (const auto &model : vendor_entry.second.models) {
|
||||
if (model.model_id == model_id)
|
||||
return model.name;
|
||||
}
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
// ORCA TODO: this assumes printer names follow "<printer_model> <nozzle_diameter>", e.g.
|
||||
// "Bambu Lab X2D 0.4 nozzle". Other naming schemes may not resolve correctly.
|
||||
std::set<std::string> PresetBundle::get_printer_names_by_printer_type_and_nozzle(const std::string &printer_type, std::string nozzle_diameter_str, bool system_only)
|
||||
{
|
||||
std::set<std::string> printer_names;
|
||||
@@ -4441,7 +4532,9 @@ std::set<std::string> PresetBundle::get_printer_names_by_printer_type_and_nozzle
|
||||
if (printer_it->name.find(nozzle_diameter_str) != std::string::npos) printer_names.insert(printer_it->name);
|
||||
}
|
||||
|
||||
assert(printer_names.size() == 1);
|
||||
// No match is normal for a connected machine the user has not installed; only an
|
||||
// ambiguous match is a bug (the caller assumes one preset per model and nozzle).
|
||||
assert(printer_names.size() <= 1);
|
||||
|
||||
for (auto& printer_name : printer_names) {
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << " printer name: " << printer_name;
|
||||
@@ -4454,8 +4547,8 @@ std::vector<Preset *> PresetBundle::get_filament_presets_for_machine(const std::
|
||||
const std::string &nozzle_diameter_str,
|
||||
bool include_user_presets)
|
||||
{
|
||||
// Printer model plus nozzle diameter is expected to resolve to a single system printer preset;
|
||||
// get_printer_names_by_printer_type_and_nozzle asserts as much in debug builds.
|
||||
// Printer model plus nozzle diameter normally resolves to a single system printer preset.
|
||||
// Zero matches is normal for a connected machine the user never installed.
|
||||
const std::set<std::string> printer_names = get_printer_names_by_printer_type_and_nozzle(printer_type, nozzle_diameter_str);
|
||||
const Preset *printer = printer_names.empty() ? nullptr : printers.find_preset(*printer_names.begin());
|
||||
if (printer == nullptr)
|
||||
|
||||
@@ -411,6 +411,9 @@ public:
|
||||
|
||||
std::vector<std::vector<DynamicPrintConfig>> get_extruder_filament_info() const;
|
||||
|
||||
// Resolve a vendor model id (an agent-reported machine identity) to the display name
|
||||
// printer profiles use as printer_model. Empty when no loaded vendor declares it.
|
||||
std::string get_printer_model_display_name(const std::string &model_id) const;
|
||||
std::set<std::string> get_printer_names_by_printer_type_and_nozzle(const std::string &printer_type, std::string nozzle_diameter_str, bool system_only = true);
|
||||
// Orca: the root filament presets a connected machine can use, resolved with the rule the rest
|
||||
// of the app applies (is_compatible_with_printer): an empty compatible_printers means every
|
||||
|
||||
@@ -2229,7 +2229,7 @@ StringObjectException Print::validate(std::vector<StringObjectException> *warnin
|
||||
for (const PrintRegion ®ion : object->all_regions()) {
|
||||
const auto &bridge_width_opt = region.config().bridge_line_width;
|
||||
for (FlowRole bridge_role : { frPerimeter, frInfill, frSolidInfill, frTopSolidInfill }) {
|
||||
const double nozzle_diameter = nozzle_diameter_for_filament(m_config, region.extruder(bridge_role), this->is_BBL_printer());
|
||||
const double nozzle_diameter = m_config.nozzle_diameter.get_at(region.extruder(bridge_role) - 1);
|
||||
const double bridge_width = bridge_width_opt.get_abs_value(nozzle_diameter);
|
||||
if (bridge_width <= 0.)
|
||||
continue;
|
||||
@@ -2606,7 +2606,7 @@ Flow Print::brim_flow() const
|
||||
frPerimeter,
|
||||
// Flow::new_from_config_width takes care of the percent to value substitution
|
||||
width,
|
||||
(float)nozzle_diameter_for_filament(m_config, m_print_regions.front()->config().outer_wall_filament_id, this->is_BBL_printer()),
|
||||
(float)m_config.nozzle_diameter.get_at(m_print_regions.front()->config().outer_wall_filament_id-1),
|
||||
(float)this->skirt_first_layer_height());
|
||||
}
|
||||
|
||||
@@ -2623,13 +2623,12 @@ Flow Print::skirt_flow() const
|
||||
extruders and take the one with, say, the smallest index;
|
||||
The same logic should be applied to the code that selects the extruder during G-code
|
||||
generation as well. */
|
||||
return Flow::new_from_config_width(
|
||||
frPerimeter,
|
||||
// Flow::new_from_config_width takes care of the percent to value substitution
|
||||
width,
|
||||
// ORCA: resolve the actual nozzle the support filament is printed with (dual-nozzle printers).
|
||||
(float)nozzle_diameter_for_filament(m_config, m_objects.empty() ? 0 : m_objects.front()->config().support_filament, this->is_BBL_printer()),
|
||||
(float)this->skirt_first_layer_height());
|
||||
return Flow::new_from_config_width(frPerimeter,
|
||||
// Flow::new_from_config_width takes care of the percent to value substitution
|
||||
width,
|
||||
(float) m_config.nozzle_diameter.get_at(
|
||||
m_objects.empty() ? 0 : m_objects.front()->config().support_filament - 1),
|
||||
(float) this->skirt_first_layer_height());
|
||||
}
|
||||
|
||||
bool Print::has_support_material() const
|
||||
|
||||
@@ -375,8 +375,6 @@ public:
|
||||
Transform3d trafo_centered() const
|
||||
{ Transform3d t = this->trafo(); t.pretranslate(Vec3d(- unscale<double>(m_center_offset.x()), - unscale<double>(m_center_offset.y()), 0)); return t; }
|
||||
const PrintInstances& instances() const { return m_instances; }
|
||||
// Orca: Bounding box of each connected body, indexed by Layer::lslices_separated_component_ids.
|
||||
const std::vector<BoundingBox>& separated_body_bboxes() const { return m_separated_body_bboxes; }
|
||||
PrintInstances &instances() { return m_instances; }
|
||||
|
||||
// Whoever will get a non-const pointer to PrintObject will be able to modify its layers.
|
||||
@@ -583,8 +581,8 @@ private:
|
||||
void discover_horizontal_shells();
|
||||
void combine_infill();
|
||||
void _generate_support_material();
|
||||
std::pair<FillAdaptive::Octrees, FillAdaptive::Octrees> prepare_adaptive_infill_data(
|
||||
const std::vector<std::pair<const Surface*, const Layer*>>& surfaces_w_layer) const;
|
||||
std::pair<FillAdaptive::OctreePtr, FillAdaptive::OctreePtr> prepare_adaptive_infill_data(
|
||||
const std::vector<std::pair<const Surface*, float>>& surfaces_w_bottom_z) const;
|
||||
FillLightning::GeneratorPtr prepare_lightning_infill_data();
|
||||
|
||||
// BBS
|
||||
@@ -616,8 +614,7 @@ private:
|
||||
// so that next call to make_perimeters() performs a union() before computing loops
|
||||
bool m_typed_slices = false;
|
||||
|
||||
std::pair<FillAdaptive::Octrees, FillAdaptive::Octrees> m_adaptive_fill_octrees;
|
||||
std::vector<BoundingBox> m_separated_body_bboxes;
|
||||
std::pair<FillAdaptive::OctreePtr, FillAdaptive::OctreePtr> m_adaptive_fill_octrees;
|
||||
FillLightning::GeneratorPtr m_lightning_generator;
|
||||
|
||||
std::vector < VolumeSlices > firstLayerObjSliceByVolume;
|
||||
|
||||
@@ -133,15 +133,6 @@ size_t get_extruder_index(const GCodeConfig& config, unsigned int filament_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
double nozzle_diameter_for_filament(const PrintConfig& config, int filament_id, bool is_bbl_printer)
|
||||
{
|
||||
int extruder = filament_id;
|
||||
if (is_bbl_printer && config.nozzle_diameter.size() > 1 &&
|
||||
filament_id >= 1 && static_cast<size_t>(filament_id - 1) < config.filament_map.size())
|
||||
extruder = config.filament_map.get_at(filament_id - 1);
|
||||
return config.nozzle_diameter.get_at(extruder - 1);
|
||||
}
|
||||
|
||||
|
||||
// Orca: input shaping values types by flavor
|
||||
std::vector<std::string> get_shaper_type_values_for_flavor(GCodeFlavor flavor)
|
||||
@@ -7611,8 +7602,8 @@ void PrintConfigDef::init_fff_params()
|
||||
"whole assembly. Parts that touch or overlap are treated as one body and share a center; separate parts "
|
||||
"(or distinct 3D objects) each get their own.\n"
|
||||
"Useful when an assembly groups several objects that should each keep a consistent, self-centered infill.\n"
|
||||
"Adaptive Cubic and Support Cubic always center each part on itself, and Lightning infill is generated for "
|
||||
"the whole object and is unaffected.");
|
||||
"Affects line and grid patterns and rotation-template infills.\n"
|
||||
"Patterns locked to global coordinates (Gyroid, Honeycomb, TPMS, ...) are unaffected.");
|
||||
def->mode = comExpert;
|
||||
def->set_default_value(new ConfigOptionBool(false));
|
||||
|
||||
@@ -10854,21 +10845,6 @@ void set_filament_dev_options(DynamicPrintConfig &config, const std::vector<cons
|
||||
}
|
||||
}
|
||||
|
||||
void resize_mixed_filament_metadata(DynamicPrintConfig &config, size_t old_slot_count, size_t new_slot_count)
|
||||
{
|
||||
auto resize = [old_slot_count, new_slot_count](auto *opt) {
|
||||
opt->values.resize(std::min(old_slot_count, opt->values.size()));
|
||||
opt->values.resize(new_slot_count);
|
||||
};
|
||||
resize(config.option<ConfigOptionBools>("filament_is_mixed", true));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_components", true));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_sublayer_ratios", true));
|
||||
resize(config.option<ConfigOptionBools>("filament_mixed_gradient", true));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_gradient_range", true));
|
||||
resize(config.option<ConfigOptionStrings>("filament_mixed_gradient_curve", true));
|
||||
resize(config.option<ConfigOptionBools>("filament_mixed_gradient_per_part", true));
|
||||
}
|
||||
|
||||
|
||||
//used for object/region config
|
||||
//use the smallest of multiple to single
|
||||
@@ -12999,7 +12975,7 @@ CustomGcodeSpecificConfigDef::CustomGcodeSpecificConfigDef()
|
||||
// Common Defs
|
||||
def = this->add("layer_num", coInt);
|
||||
def->label = L("Layer number");
|
||||
def->tooltip = L("Index of the current layer. Zero-based (i.e. first layer is number 0), except in extrusion role change G-code, where it is one-based.");
|
||||
def->tooltip = L("Index of the current layer. One-based (i.e. first layer is number 1).");
|
||||
|
||||
def = this->add("layer_z", coFloat);
|
||||
def->label = L("Layer Z");
|
||||
|
||||
@@ -136,31 +136,25 @@ enum InfillPattern : int {
|
||||
ipCount,
|
||||
};
|
||||
|
||||
// Orca: Infill patterns that the "separated_infills" option can center on each connected body.
|
||||
// Orca: Infill patterns whose alignment origin follows the fill bounding box, so the
|
||||
// "separated_infills" option can re-center them per connected body. Patterns evaluated in
|
||||
// absolute/global coordinates (Gyroid, TPMS, Honeycomb, CrossHatch, ...) or that are shape-relative
|
||||
// (Concentric) ignore that bounding box and are therefore excluded.
|
||||
inline bool is_separable_infill_pattern(InfillPattern pattern)
|
||||
{
|
||||
switch (pattern) {
|
||||
case ipMonotonic:
|
||||
case ipMonotonicLine:
|
||||
case ipRectilinear:
|
||||
case ipAlignedRectilinear:
|
||||
case ipZigZag:
|
||||
case ipCrossZag:
|
||||
case ipLockedZag:
|
||||
case ipLine:
|
||||
case ipGrid:
|
||||
case ipTriangles:
|
||||
case ipStars: // tri-hexagon
|
||||
case ipCubic:
|
||||
case ipQuarterCubic:
|
||||
case ipHoneycomb:
|
||||
case ip3DHoneycomb:
|
||||
case ipLateralHoneycomb:
|
||||
case ipLateralLattice:
|
||||
case ipCrossHatch:
|
||||
case ipTpmsD:
|
||||
case ipTpmsFK:
|
||||
case ipGyroid:
|
||||
case ipHilbertCurve:
|
||||
case ipArchimedeanChords:
|
||||
case ipOctagramSpiral:
|
||||
@@ -170,9 +164,6 @@ inline bool is_separable_infill_pattern(InfillPattern pattern)
|
||||
}
|
||||
}
|
||||
|
||||
// Orca: Infill patterns laid out by an octree, which each connected body always gets of its own.
|
||||
inline bool is_octree_infill_pattern(InfillPattern pattern) { return pattern == ipAdaptiveCubic || pattern == ipSupportCubic; }
|
||||
|
||||
// Orca: Infill patterns that round their corners by the "sparse_infill_smooth_factor" option.
|
||||
// Grid, Triangles and Tri-hexagon only do so in their trapezoidal form, which is generated with more
|
||||
// than one line per infill wall; a single line makes them plain crossing lines with nothing to round.
|
||||
@@ -942,10 +933,6 @@ extern std::set<std::string> filament_dev_options;
|
||||
// filament_configs, one config per filament in slot order, as the filaments' values one after another.
|
||||
void set_filament_dev_options(DynamicPrintConfig &config, const std::vector<const DynamicPrintConfig *> &filament_configs);
|
||||
|
||||
// Orca: sizes the per-slot mixed-colour metadata options to new_slot_count, keeping the first
|
||||
// old_slot_count values; an option the config lacks is created.
|
||||
void resize_mixed_filament_metadata(DynamicPrintConfig &config, size_t old_slot_count, size_t new_slot_count);
|
||||
|
||||
extern void update_static_print_config_from_dynamic(ConfigBase& config, const DynamicPrintConfig& dest_config, std::vector<int> variant_index, std::set<std::string>& key_set1, int stride = 1);
|
||||
extern void compute_filament_override_value(const std::string& opt_key, const ConfigOption *opt_old_machine, const ConfigOption *opt_new_machine, const ConfigOption *opt_new_filament, const DynamicPrintConfig& new_full_config,
|
||||
t_config_option_keys& diff_keys, DynamicPrintConfig& filament_overrides, std::vector<int>& f_map_indices);
|
||||
@@ -2575,8 +2562,6 @@ static bool has_zero_flush_volume_for_used_filaments(const std::vector<T> &fv_ma
|
||||
|
||||
size_t get_extruder_index(const GCodeConfig& config, unsigned int filament_id);
|
||||
|
||||
double nozzle_diameter_for_filament(const PrintConfig& config, int filament_id, bool is_bbl_printer);
|
||||
|
||||
} // namespace Slic3r
|
||||
|
||||
// Serialization through the Cereal library
|
||||
|
||||
+34
-125
@@ -67,7 +67,6 @@
|
||||
#include <utility>
|
||||
|
||||
#include <boost/log/trivial.hpp>
|
||||
#include <Eigen/Core>
|
||||
|
||||
#include <tbb/parallel_for.h>
|
||||
#include <tbb/spin_mutex.h>
|
||||
@@ -720,8 +719,7 @@ void PrintObject::prepare_infill()
|
||||
bool needs_separated_components = false;
|
||||
for (size_t i = 0; i < this->num_printing_regions(); ++ i) {
|
||||
const PrintRegionConfig &rc = this->printing_region(i).config();
|
||||
if (rc.separated_infills || rc.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model ||
|
||||
(rc.sparse_infill_density > 0 && is_octree_infill_pattern(rc.sparse_infill_pattern))) {
|
||||
if (rc.separated_infills || rc.center_of_surface_pattern == CenterOfSurfacePattern::Each_Model) {
|
||||
needs_separated_components = true;
|
||||
break;
|
||||
}
|
||||
@@ -738,9 +736,8 @@ void PrintObject::prepare_infill()
|
||||
if (parts <= 1 && ! (first_part != nullptr && first_part->is_splittable()))
|
||||
needs_separated_components = false;
|
||||
}
|
||||
m_separated_body_bboxes.clear();
|
||||
for (Layer *layer : m_layers)
|
||||
layer->lslices_separated_component_ids.clear();
|
||||
layer->lslices_separated_component_bboxes.clear();
|
||||
if (needs_separated_components) {
|
||||
const size_t nl = m_layers.size();
|
||||
std::vector<size_t> offset(nl + 1, 0); // Orca: flat index of the first island of each layer
|
||||
@@ -791,20 +788,17 @@ void PrintObject::prepare_infill()
|
||||
});
|
||||
}
|
||||
}
|
||||
// Orca: Number the bodies by their first island and merge the bounding boxes of their islands.
|
||||
std::vector<size_t> body_of_root(nreg, size_t(-1));
|
||||
// Orca: Full bounding box of each body, indexed by its union-find root.
|
||||
std::vector<BoundingBox> body_bbox(nreg);
|
||||
for (size_t i = 0; i < nl; ++ i)
|
||||
for (size_t a = 0; a < m_layers[i]->lslices.size(); ++ a)
|
||||
body_bbox[find(offset[i] + a)].merge(m_layers[i]->lslices_bboxes[a]);
|
||||
// Orca: Store the body bbox for every island.
|
||||
for (size_t i = 0; i < nl; ++ i) {
|
||||
Layer *layer = m_layers[i];
|
||||
layer->lslices_separated_component_ids.resize(layer->lslices.size());
|
||||
for (size_t a = 0; a < layer->lslices.size(); ++ a) {
|
||||
size_t &body = body_of_root[find(offset[i] + a)];
|
||||
if (body == size_t(-1)) {
|
||||
body = m_separated_body_bboxes.size();
|
||||
m_separated_body_bboxes.emplace_back();
|
||||
}
|
||||
m_separated_body_bboxes[body].merge(layer->lslices_bboxes[a]);
|
||||
layer->lslices_separated_component_ids[a] = body;
|
||||
}
|
||||
layer->lslices_separated_component_bboxes.resize(layer->lslices.size());
|
||||
for (size_t a = 0; a < layer->lslices.size(); ++ a)
|
||||
layer->lslices_separated_component_bboxes[a] = body_bbox[find(offset[i] + a)];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -842,13 +836,16 @@ void PrintObject::infill()
|
||||
if (this->set_started(posInfill)) {
|
||||
m_print->set_status(35, L("Generating infill toolpath"));
|
||||
|
||||
const auto& adaptive_fill_octree = this->m_adaptive_fill_octrees.first;
|
||||
const auto& support_fill_octree = this->m_adaptive_fill_octrees.second;
|
||||
|
||||
BOOST_LOG_TRIVIAL(debug) << "Filling layers in parallel - start";
|
||||
tbb::parallel_for(
|
||||
tbb::blocked_range<size_t>(0, m_layers.size()),
|
||||
[this](const tbb::blocked_range<size_t>& range) {
|
||||
[this, &adaptive_fill_octree = adaptive_fill_octree, &support_fill_octree = support_fill_octree](const tbb::blocked_range<size_t>& range) {
|
||||
for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) {
|
||||
m_print->throw_if_canceled();
|
||||
m_layers[layer_idx]->make_fills(&m_adaptive_fill_octrees.first, &m_adaptive_fill_octrees.second, this->m_lightning_generator.get());
|
||||
m_layers[layer_idx]->make_fills(adaptive_fill_octree.get(), support_fill_octree.get(), this->m_lightning_generator.get());
|
||||
}
|
||||
}
|
||||
);
|
||||
@@ -1113,69 +1110,14 @@ void PrintObject::simplify_extrusion_path()
|
||||
}
|
||||
}
|
||||
|
||||
// Orca: Separated body of the island containing a point of a layer, else of the island outline nearest within 1 mm, or -1.
|
||||
static int separated_body_at(const Layer &layer, const Point &point)
|
||||
{
|
||||
int body = -1;
|
||||
double best = scaled<double>(1.);
|
||||
for (size_t i = 0; i < layer.lslices.size() && i < layer.lslices_separated_component_ids.size() && best > 0.; ++ i) {
|
||||
BoundingBox bbox = layer.lslices_bboxes[i];
|
||||
bbox.offset(coord_t(best));
|
||||
if (! bbox.contains(point))
|
||||
continue;
|
||||
const double dist = layer.lslices[i].contains(point) ? 0. : (layer.lslices[i].point_projection(point) - point).cast<double>().norm();
|
||||
if (dist < best) {
|
||||
best = dist;
|
||||
body = int(layer.lslices_separated_component_ids[i]);
|
||||
}
|
||||
}
|
||||
return body;
|
||||
}
|
||||
|
||||
// Orca: The object mesh in the octree frame split by separated body. Each connected component goes to the body
|
||||
// most of its sampled triangles lie on, sampled a layer height inside the solid at the layer nearest to them.
|
||||
static std::vector<indexed_triangle_set> split_mesh_by_body(const PrintObject &object, const indexed_triangle_set &mesh, size_t num_bodies)
|
||||
{
|
||||
const Eigen::Matrix3d to_object = FillAdaptive::transform_to_world().toRotationMatrix();
|
||||
const double inset = object.config().layer_height.value;
|
||||
std::vector<indexed_triangle_set> bodies(num_bodies);
|
||||
for (const indexed_triangle_set &component : its_split(mesh)) {
|
||||
std::vector<size_t> votes(num_bodies, 0);
|
||||
const size_t step = std::max<size_t>(1, component.indices.size() / 8);
|
||||
for (size_t i = 0; i < component.indices.size(); i += step) {
|
||||
const stl_triangle_vertex_indices &tri = component.indices[i];
|
||||
const Vec3d a = component.vertices[tri[0]].cast<double>(), b = component.vertices[tri[1]].cast<double>(),
|
||||
d = component.vertices[tri[2]].cast<double>();
|
||||
const Vec3d normal = (b - a).cross(d - a);
|
||||
const double area2 = normal.norm();
|
||||
const Vec3d c = to_object * ((a + b + d) / 3. - (area2 > 0. ? Vec3d(normal * (inset / area2)) : Vec3d::Zero()));
|
||||
size_t lo = 0, hi = object.layer_count();
|
||||
while (lo < hi) {
|
||||
const size_t mid = (lo + hi) / 2;
|
||||
if (object.get_layer(int(mid))->slice_z < c.z())
|
||||
lo = mid + 1;
|
||||
else
|
||||
hi = mid;
|
||||
}
|
||||
if (lo == object.layer_count() || (lo > 0 && c.z() - object.get_layer(int(lo) - 1)->slice_z < object.get_layer(int(lo))->slice_z - c.z()))
|
||||
-- lo;
|
||||
if (const int body = separated_body_at(*object.get_layer(int(lo)), Point(scaled<coord_t>(c.x()), scaled<coord_t>(c.y()))); body >= 0)
|
||||
++ votes[body];
|
||||
}
|
||||
if (const auto best = std::max_element(votes.begin(), votes.end()); *best > 0)
|
||||
its_merge(bodies[best - votes.begin()], component);
|
||||
}
|
||||
return bodies;
|
||||
}
|
||||
|
||||
std::pair<FillAdaptive::Octrees, FillAdaptive::Octrees> PrintObject::prepare_adaptive_infill_data(
|
||||
const std::vector<std::pair<const Surface *, const Layer *>> &surfaces_w_layer) const
|
||||
std::pair<FillAdaptive::OctreePtr, FillAdaptive::OctreePtr> PrintObject::prepare_adaptive_infill_data(
|
||||
const std::vector<std::pair<const Surface *, float>> &surfaces_w_bottom_z) const
|
||||
{
|
||||
using namespace FillAdaptive;
|
||||
|
||||
auto [adaptive_line_spacing, support_line_spacing] = adaptive_fill_line_spacing(*this);
|
||||
if ((adaptive_line_spacing == 0. && support_line_spacing == 0.) || this->layers().empty())
|
||||
return {};
|
||||
return std::make_pair(OctreePtr(), OctreePtr());
|
||||
|
||||
indexed_triangle_set mesh = this->model_object()->raw_indexed_triangle_set();
|
||||
// Rotate mesh and build octree on it with axis-aligned (standart base) cubes.
|
||||
@@ -1183,60 +1125,27 @@ std::pair<FillAdaptive::Octrees, FillAdaptive::Octrees> PrintObject::prepare_ada
|
||||
its_transform(mesh, to_octree * this->trafo_centered(), true);
|
||||
|
||||
// Triangulate internal bridging surfaces.
|
||||
std::vector<std::vector<Vec3d>> overhangs(std::max(surfaces_w_layer.size(), size_t(1)));
|
||||
std::vector<std::vector<Vec3d>> overhangs(std::max(surfaces_w_bottom_z.size(), size_t(1)));
|
||||
// ^ make sure vector is not empty, even with no briding surfaces we still want to build the adaptive trees later, some continue normally
|
||||
tbb::parallel_for(tbb::blocked_range<int>(0, surfaces_w_layer.size()),
|
||||
[this, &to_octree, &overhangs, &surfaces_w_layer](const tbb::blocked_range<int> &range) {
|
||||
tbb::parallel_for(tbb::blocked_range<int>(0, surfaces_w_bottom_z.size()),
|
||||
[this, &to_octree, &overhangs, &surfaces_w_bottom_z](const tbb::blocked_range<int> &range) {
|
||||
PRINT_OBJECT_TIME_LIMIT_MILLIS(PRINT_OBJECT_TIME_LIMIT_DEFAULT);
|
||||
for (int surface_idx = range.begin(); surface_idx < range.end(); ++surface_idx) {
|
||||
std::vector<Vec3d> &out = overhangs[surface_idx];
|
||||
m_print->throw_if_canceled();
|
||||
append(out, triangulate_expolygon_3d(surfaces_w_layer[surface_idx].first->expolygon,
|
||||
float(surfaces_w_layer[surface_idx].second->bottom_z())));
|
||||
append(out, triangulate_expolygon_3d(surfaces_w_bottom_z[surface_idx].first->expolygon,
|
||||
surfaces_w_bottom_z[surface_idx].second));
|
||||
for (Vec3d &p : out)
|
||||
p = (to_octree * p).eval();
|
||||
}
|
||||
});
|
||||
|
||||
// Orca: Each body gets the octree it has when sliced on its own, from its own triangles.
|
||||
std::pair<Octrees, Octrees> octrees;
|
||||
const size_t num_bodies = m_separated_body_bboxes.size();
|
||||
bool need_object = num_bodies <= 1;
|
||||
if (num_bodies > 1) {
|
||||
const std::vector<indexed_triangle_set> body_meshes = split_mesh_by_body(*this, mesh, num_bodies);
|
||||
need_object = std::any_of(body_meshes.begin(), body_meshes.end(), [](const indexed_triangle_set &its) { return its.indices.empty(); });
|
||||
std::vector<std::vector<Vec3d>> body_overhangs(num_bodies);
|
||||
for (size_t i = 0; i < surfaces_w_layer.size(); ++ i)
|
||||
if (const int body = separated_body_at(*surfaces_w_layer[i].second, surfaces_w_layer[i].first->expolygon.contour.points.front()); body >= 0)
|
||||
append(body_overhangs[body], overhangs[i]);
|
||||
if (adaptive_line_spacing)
|
||||
octrees.first.bodies.resize(num_bodies);
|
||||
if (support_line_spacing)
|
||||
octrees.second.bodies.resize(num_bodies);
|
||||
tbb::parallel_for(tbb::blocked_range<size_t>(0, num_bodies), [&, adaptive_spacing = adaptive_line_spacing, support_spacing = support_line_spacing](
|
||||
const tbb::blocked_range<size_t> &range) {
|
||||
for (size_t body = range.begin(); body < range.end(); ++ body) {
|
||||
m_print->throw_if_canceled();
|
||||
if (body_meshes[body].indices.empty())
|
||||
continue;
|
||||
if (adaptive_spacing)
|
||||
octrees.first.bodies[body] = build_octree(body_meshes[body], body_overhangs[body], adaptive_spacing, false);
|
||||
if (support_spacing)
|
||||
octrees.second.bodies[body] = build_octree(body_meshes[body], body_overhangs[body], support_spacing, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// and gather them.
|
||||
for (size_t i = 1; i < overhangs.size(); ++ i)
|
||||
append(overhangs.front(), std::move(overhangs[i]));
|
||||
|
||||
// Orca: The object's octree only serves bodies that have none of their own.
|
||||
if (need_object && adaptive_line_spacing)
|
||||
octrees.first.object = build_octree(mesh, overhangs.front(), adaptive_line_spacing, false);
|
||||
if (need_object && support_line_spacing)
|
||||
octrees.second.object = build_octree(mesh, overhangs.front(), support_line_spacing, true);
|
||||
return octrees;
|
||||
return std::make_pair(
|
||||
adaptive_line_spacing ? build_octree(mesh, overhangs.front(), adaptive_line_spacing, false) : OctreePtr(),
|
||||
support_line_spacing ? build_octree(mesh, overhangs.front(), support_line_spacing, true) : OctreePtr());
|
||||
}
|
||||
|
||||
FillLightning::GeneratorPtr PrintObject::prepare_lightning_infill_data()
|
||||
@@ -3054,14 +2963,14 @@ void PrintObject::bridge_over_infill()
|
||||
std::map<size_t, Polylines> infill_lines;
|
||||
// SECTION to generate infill polylines
|
||||
{
|
||||
std::vector<std::pair<const Surface *, const Layer *>> surfaces_w_layer;
|
||||
std::vector<std::pair<const Surface *, float>> surfaces_w_bottom_z;
|
||||
for (const auto &pair : surfaces_by_layer) {
|
||||
for (const CandidateSurface &c : pair.second) {
|
||||
surfaces_w_layer.emplace_back(c.original_surface, c.region->m_layer);
|
||||
surfaces_w_bottom_z.emplace_back(c.original_surface, c.region->m_layer->bottom_z());
|
||||
}
|
||||
}
|
||||
|
||||
this->m_adaptive_fill_octrees = this->prepare_adaptive_infill_data(surfaces_w_layer);
|
||||
this->m_adaptive_fill_octrees = this->prepare_adaptive_infill_data(surfaces_w_bottom_z);
|
||||
|
||||
std::vector<size_t> layers_to_generate_infill;
|
||||
for (const auto &pair : surfaces_by_layer) {
|
||||
@@ -3077,8 +2986,8 @@ void PrintObject::bridge_over_infill()
|
||||
for (size_t job_idx = r.begin(); job_idx < r.end(); job_idx++) {
|
||||
size_t lidx = layers_to_generate_infill[job_idx];
|
||||
infill_lines.at(
|
||||
lidx) = po->get_layer(lidx)->generate_sparse_infill_polylines_for_anchoring(&po->m_adaptive_fill_octrees.first,
|
||||
&po->m_adaptive_fill_octrees.second,
|
||||
lidx) = po->get_layer(lidx)->generate_sparse_infill_polylines_for_anchoring(po->m_adaptive_fill_octrees.first.get(),
|
||||
po->m_adaptive_fill_octrees.second.get(),
|
||||
po->m_lightning_generator.get());
|
||||
}
|
||||
});
|
||||
@@ -4558,8 +4467,8 @@ void PrintObject::combine_infill()
|
||||
// Limit the number of combined layers to the maximum height allowed by this regions' nozzle.
|
||||
//FIXME limit the layer height to max_layer_height
|
||||
double nozzle_diameter = std::min(
|
||||
nozzle_diameter_for_filament(this->print()->config(), region.config().sparse_infill_filament_id.value, this->print()->is_BBL_printer()),
|
||||
nozzle_diameter_for_filament(this->print()->config(), region.config().internal_solid_filament_id.value, this->print()->is_BBL_printer()));
|
||||
this->print()->config().nozzle_diameter.get_at(region.config().sparse_infill_filament_id.value - 1),
|
||||
this->print()->config().nozzle_diameter.get_at(region.config().internal_solid_filament_id.value - 1));
|
||||
|
||||
//Orca: Limit combination of infill to up to infill_combination_max_layer_height
|
||||
const double infill_combination_max_layer_height = region.config().infill_combination_max_layer_height.get_abs_value(nozzle_diameter);
|
||||
|
||||
@@ -57,7 +57,7 @@ Flow PrintRegion::flow(const PrintObject &object, FlowRole role, double layer_he
|
||||
|
||||
// Get the configured nozzle_diameter for the extruder associated to the flow role requested.
|
||||
// Here this->extruder(role) - 1 may underflow to MAX_INT, but then the get_at() will follback to zero'th element, so everything is all right.
|
||||
auto nozzle_diameter = float(nozzle_diameter_for_filament(print_config, this->extruder(role), object.print()->is_BBL_printer()));
|
||||
auto nozzle_diameter = float(print_config.nozzle_diameter.get_at(this->extruder(role) - 1));
|
||||
return Flow::new_from_config_width(role, config_width, nozzle_diameter, float(layer_height));
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ public:
|
||||
using TColor = typename PixelRenderer::color_type;
|
||||
using TValue = typename TColor::value_type;
|
||||
using TPixel = typename PixelRenderer::pixel_type;
|
||||
using TRawBuffer = agg::rendering_buffer;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "TDataStd_Name.hxx"
|
||||
#include "BRepBuilderAPI_Transform.hxx"
|
||||
#include "TopExp_Explorer.hxx"
|
||||
#include "TopExp_Explorer.hxx"
|
||||
#include "BRep_Tool.hxx"
|
||||
#include "Font_BRepFont.hxx"
|
||||
#include "Font_BRepTextBuilder.hxx"
|
||||
|
||||
@@ -2180,7 +2180,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers(
|
||||
|
||||
// check if the sharp tails should be extended higher
|
||||
bool detect_first_sharp_tail_only = false;
|
||||
const coordf_t extrusion_width = m_object_config->line_width.get_abs_value(nozzle_diameter_for_filament(object.print()->config(), object.config().support_interface_filament, object.print()->is_BBL_printer()));
|
||||
const coordf_t extrusion_width = m_object_config->line_width.get_abs_value(object.print()->config().nozzle_diameter.get_at(object.config().support_interface_filament-1));
|
||||
const coordf_t extrusion_width_scaled = scale_(extrusion_width);
|
||||
if (is_auto(m_object_config->support_type.value) && g_config_support_sharp_tails && !detect_first_sharp_tail_only) {
|
||||
for (size_t layer_nr = layer_id_start; layer_nr < num_layers; layer_nr++) {
|
||||
|
||||
@@ -1399,7 +1399,7 @@ void TreeSupport::generate_toolpaths()
|
||||
{
|
||||
const PrintObjectConfig &object_config = m_object->config();
|
||||
coordf_t support_extrusion_width = m_support_params.support_extrusion_width;
|
||||
coordf_t nozzle_diameter = nozzle_diameter_for_filament(*m_print_config, object_config.support_filament, m_object->print()->is_BBL_printer());
|
||||
coordf_t nozzle_diameter = m_print_config->nozzle_diameter.get_at(object_config.support_filament - 1);
|
||||
coordf_t layer_height = object_config.layer_height.value;
|
||||
const size_t wall_count = object_config.tree_support_wall_count.value;
|
||||
|
||||
|
||||
@@ -17,6 +17,9 @@ typedef std::vector<Color> ColorList;
|
||||
typedef std::array<double, 3> ColorDouble;
|
||||
typedef std::array<std::size_t, 3> RGB;
|
||||
|
||||
// Function pointer type that points to a specific color-difference function based on the chosen method.
|
||||
using DistanceFunction = double (*)(const Color&, const Color&);
|
||||
|
||||
// Color space used for computing color differences.
|
||||
enum struct ColorDifferenceMethod : std::size_t {
|
||||
RGB = 0, // Simplest and fastest
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
namespace Slic3r { namespace tex2color {
|
||||
|
||||
namespace PMP = CGAL::Polygon_mesh_processing;
|
||||
|
||||
// Default upper bound on the number of half-edges in any single boundary cycle
|
||||
// that CloseBoundariesAndRepairManifoldness will attempt to triangulate. The
|
||||
// cost of triangulate_hole grows non-linearly with cycle length, so this caps
|
||||
@@ -59,7 +61,6 @@ struct BoundaryEdgeStats
|
||||
// any pre-processing (e.g. stitch_borders) needed for the count to be meaningful.
|
||||
inline BoundaryEdgeStats ComputeBoundaryEdgeStats(const cgalutils::CGALMesh& cgal_mesh)
|
||||
{
|
||||
namespace PMP = CGAL::Polygon_mesh_processing;
|
||||
using CGALMesh = cgalutils::CGALMesh;
|
||||
using HalfedgeDescriptor = boost::graph_traits<CGALMesh>::halfedge_descriptor;
|
||||
|
||||
@@ -86,7 +87,6 @@ inline BoundaryEdgeStats ComputeBoundaryEdgeStats(const cgalutils::CGALMesh& cga
|
||||
// boundary statistics; entering this function always triggers triangulation.
|
||||
inline void CloseBoundariesAndRepairManifoldness(cgalutils::CGALMesh& cgal_mesh)
|
||||
{
|
||||
namespace PMP = CGAL::Polygon_mesh_processing;
|
||||
using CGALMesh = cgalutils::CGALMesh;
|
||||
using HalfedgeDescriptor = boost::graph_traits<CGALMesh>::halfedge_descriptor;
|
||||
using FaceDescriptor = boost::graph_traits<CGALMesh>::face_descriptor;
|
||||
@@ -112,7 +112,6 @@ inline bool RepairMesh(const TriMesh& mesh,
|
||||
AlgoCancelCallback cancel_callback = nullptr,
|
||||
const RepairSetting& setting = RepairSetting{})
|
||||
{
|
||||
namespace PMP = CGAL::Polygon_mesh_processing;
|
||||
using Clock = std::chrono::steady_clock;
|
||||
auto elapsed_ms = [](Clock::time_point t0) {
|
||||
return std::chrono::duration_cast<std::chrono::milliseconds>(Clock::now() - t0).count();
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <initializer_list>
|
||||
#include <string_view>
|
||||
#include <regex>
|
||||
#include <string_view>
|
||||
#include <algorithm>
|
||||
|
||||
#include <boost/system/error_code.hpp>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
@@ -432,6 +432,8 @@ inline IntegerOnly<I, I> fast_round_up(double a)
|
||||
return a == 0.49999999999999994 ? I(0) : I(floor(a + 0.5));
|
||||
}
|
||||
|
||||
template<class T> using SamePair = std::pair<T, T>;
|
||||
|
||||
} // namespace Slic3r
|
||||
|
||||
#endif
|
||||
|
||||
@@ -368,6 +368,10 @@ set(SLIC3R_GUI_SOURCES
|
||||
GUI/MarkdownTip.hpp
|
||||
GUI/MediaFilePanel.cpp
|
||||
GUI/MediaFilePanel.h
|
||||
GUI/OrcaFilesPanel.cpp
|
||||
GUI/OrcaFilesPanel.h
|
||||
GUI/StoragePanel.cpp
|
||||
GUI/StoragePanel.h
|
||||
GUI/MediaPlayCtrl.cpp
|
||||
GUI/MediaPlayCtrl.h
|
||||
GUI/WebRtcMediaController.cpp
|
||||
@@ -457,6 +461,11 @@ set(SLIC3R_GUI_SOURCES
|
||||
GUI/PresetHints.hpp
|
||||
GUI/PrinterCloudAuthDialog.cpp
|
||||
GUI/PrinterCloudAuthDialog.hpp
|
||||
GUI/Printer/BambuFileGridModel.cpp
|
||||
GUI/Printer/BambuFileGridModel.h
|
||||
GUI/Printer/IFileGridModel.h
|
||||
GUI/Printer/RemoteFileGridModel.cpp
|
||||
GUI/Printer/RemoteFileGridModel.h
|
||||
GUI/Printer/PrinterFileSystem.cpp
|
||||
GUI/Printer/PrinterFileSystem.h
|
||||
GUI/PrinterWebView.cpp
|
||||
@@ -772,8 +781,12 @@ set(SLIC3R_GUI_SOURCES
|
||||
Utils/ICameraSignalingChannel.hpp
|
||||
Utils/OrcaCloudServiceAgent.cpp
|
||||
Utils/OrcaCloudServiceAgent.hpp
|
||||
Utils/OrcaMqttConnection.cpp
|
||||
Utils/OrcaMqttConnection.hpp
|
||||
Utils/OrcaPrinterAgent.cpp
|
||||
Utils/OrcaPrinterAgent.hpp
|
||||
Utils/OrcaCloudSignalingChannel.cpp
|
||||
Utils/OrcaCloudSignalingChannel.hpp
|
||||
Utils/QidiPrinterAgent.cpp
|
||||
Utils/QidiPrinterAgent.hpp
|
||||
Utils/SnapmakerPrinterAgent.cpp
|
||||
@@ -912,7 +925,7 @@ target_include_directories(libslic3r_gui PRIVATE Utils ${CMAKE_CURRENT_BINARY_DI
|
||||
|
||||
if (WIN32)
|
||||
target_include_directories(libslic3r_gui SYSTEM PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../deps/WebView2/include)
|
||||
target_link_libraries(libslic3r_gui Advapi32)
|
||||
target_link_libraries(libslic3r_gui Advapi32 Crypt32)
|
||||
endif()
|
||||
|
||||
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SLIC3R_GUI_SOURCES})
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "slic3r/GUI/DeviceCore/DevExtruderSystem.h"
|
||||
|
||||
#include "slic3r/GUI/DeviceCore/DevManager.h"
|
||||
#include "slic3r/GUI/DeviceManager.hpp"
|
||||
|
||||
#include "slic3r/GUI/MsgDialog.hpp"
|
||||
|
||||
@@ -1633,8 +1634,16 @@ int AMSDryCtrWin::update_filament_list(DevAms* dev_ams, MachineObject* obj)
|
||||
stream << std::fixed << std::setprecision(1) << obj->GetExtderSystem()->GetNozzleDiameter(extruder_id);
|
||||
std::string nozzle_diameter_str = stream.str();
|
||||
|
||||
// The connected device's model may not resolve (OrcaSonar's is optional); the
|
||||
// helper falls back to the selected profile so the list is never empty.
|
||||
const std::string filament_printer_model = resolve_filament_printer_model(obj->printer_type, preset_bundle);
|
||||
if (filament_printer_model.empty()) {
|
||||
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << " cannot resolve a printer model for the filament list";
|
||||
return false;
|
||||
}
|
||||
|
||||
for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine(
|
||||
DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
filament_printer_model, nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
if (!filament_id_set.insert(filament_it->filament_id).second)
|
||||
continue;
|
||||
const std::string filament_alias = filaments.get_preset_alias(*filament_it, true);
|
||||
|
||||
@@ -4,10 +4,12 @@
|
||||
#include "GUI_App.hpp"
|
||||
#include "GUI.hpp"
|
||||
#include "slic3r/Utils/NetworkAgent.hpp"
|
||||
#include "slic3r/Utils/NetworkAgentFactory.hpp"
|
||||
#include "libslic3r/Preset.hpp"
|
||||
#include "I18N.hpp"
|
||||
#include <algorithm>
|
||||
#include <boost/log/trivial.hpp>
|
||||
#include <slic3r/GUI/DeviceManager.hpp>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <ios>
|
||||
@@ -472,6 +474,13 @@ void AMSMaterialsSetting::update_filament_editing(bool is_printing)
|
||||
m_button_confirm->Show(true);
|
||||
}
|
||||
|
||||
// A third-party tray owns its temp range; BBL RFID trays keep the read-only preset values.
|
||||
// Only the OrcaSonar agent accepts the temp fields, so other agents stay read-only.
|
||||
const bool is_orca_agent = obj && obj->printer_agent_id == ORCA_PRINTER_AGENT_ID;
|
||||
const bool can_edit = !is_printing || obj->is_support_filament_setting_inprinting;
|
||||
m_input_nozzle_min->Enable(m_is_third && can_edit && is_orca_agent);
|
||||
m_input_nozzle_max->Enable(m_is_third && can_edit && is_orca_agent);
|
||||
|
||||
if (!m_is_third) {
|
||||
m_tip_readonly->SetLabelText(wxEmptyString);
|
||||
m_tip_readonly->Hide();
|
||||
@@ -494,6 +503,8 @@ void AMSMaterialsSetting::update_filament_editing(bool is_printing)
|
||||
if (m_view_only) { // Orca: view-only (2D laser/cut) — lock every edit control and hide apply/reset
|
||||
m_comboBox_filament->Enable(false);
|
||||
m_comboBox_cali_result->Enable(false);
|
||||
m_input_nozzle_min->Enable(false);
|
||||
m_input_nozzle_max->Enable(false);
|
||||
m_input_k_val->Enable(false);
|
||||
m_input_n_val->Enable(false);
|
||||
m_button_confirm->Hide();
|
||||
@@ -543,7 +554,7 @@ void AMSMaterialsSetting::on_select_reset(wxCommandEvent& event) {
|
||||
}
|
||||
|
||||
// set k / n value
|
||||
if (obj->cali_version <= -1 && obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
|
||||
if (obj->supports_extrusion_cali() && obj->cali_version <= -1 && obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
|
||||
// set extrusion cali ratio
|
||||
int cali_tray_id = ams_id * 4 + slot_id;
|
||||
|
||||
@@ -564,7 +575,7 @@ void AMSMaterialsSetting::on_select_reset(wxCommandEvent& event) {
|
||||
}
|
||||
obj->command_extrusion_cali_set(cali_tray_id, "", "", k, n);
|
||||
}
|
||||
else {
|
||||
else if (obj->supports_extrusion_cali()) {
|
||||
PACalibIndexInfo select_index_info;
|
||||
int tray_id = ams_id * 4 + slot_id;
|
||||
if (is_virtual_tray()) {
|
||||
@@ -723,6 +734,21 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
||||
return;
|
||||
}
|
||||
|
||||
if (nozzle_temp_min_int < FILAMENT_MIN_TEMP || nozzle_temp_min_int > FILAMENT_MAX_TEMP ||
|
||||
nozzle_temp_max_int < FILAMENT_MIN_TEMP || nozzle_temp_max_int > FILAMENT_MAX_TEMP) {
|
||||
MessageDialog msg_dlg(nullptr,
|
||||
wxString::Format(_L("The input value should be greater than %1% and less than %2%"), FILAMENT_MIN_TEMP, FILAMENT_MAX_TEMP),
|
||||
wxEmptyString, wxICON_WARNING | wxOK);
|
||||
msg_dlg.ShowModal();
|
||||
return;
|
||||
}
|
||||
if (nozzle_temp_min_int > nozzle_temp_max_int) {
|
||||
MessageDialog msg_dlg(nullptr, _L("The minimum temperature cannot be greater than the maximum temperature."),
|
||||
wxEmptyString, wxICON_WARNING | wxOK);
|
||||
msg_dlg.ShowModal();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Orca: log the tray payload this dialog hands the printer, so the filament_id resolved from the
|
||||
// dropdown selection can be checked against the tray_info_idx the AMS actually receives. A
|
||||
@@ -746,7 +772,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
||||
wxString k_text = m_input_k_val->GetTextCtrl()->GetValue();
|
||||
wxString n_text = m_input_n_val->GetTextCtrl()->GetValue();
|
||||
|
||||
if (obj->cali_version <= -1 && (obj->get_printer_series() != PrinterSeries::SERIES_X1) && !ExtrusionCalibration::check_k_validation(k_text)) {
|
||||
if (obj->supports_extrusion_cali() && obj->cali_version <= -1 && (obj->get_printer_series() != PrinterSeries::SERIES_X1) && !ExtrusionCalibration::check_k_validation(k_text)) {
|
||||
wxString k_tips = wxString::Format(_L("Please input a valid value (K in %.1f~%.1f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE);
|
||||
wxString kn_tips = wxString::Format(_L("Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE, 0.6, 2.0);
|
||||
MessageDialog msg_dlg(nullptr, k_tips, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
@@ -776,7 +802,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
||||
vt_tray = VIRTUAL_TRAY_DEPUTY_ID;
|
||||
}
|
||||
|
||||
if (obj->cali_version >= 0) {
|
||||
if (obj->supports_extrusion_cali() && obj->cali_version >= 0) {
|
||||
PACalibIndexInfo select_index_info;
|
||||
select_index_info.tray_id = vt_tray;
|
||||
select_index_info.ams_id = ams_id;
|
||||
@@ -795,7 +821,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
||||
|
||||
CalibUtils::select_PA_calib_result(select_index_info);
|
||||
}
|
||||
else {
|
||||
else if (obj->supports_extrusion_cali()) {
|
||||
obj->command_extrusion_cali_set(vt_tray, "", "", k, n);
|
||||
}
|
||||
}
|
||||
@@ -817,7 +843,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
||||
;
|
||||
}
|
||||
|
||||
if (obj->cali_version >= 0) {
|
||||
if (obj->supports_extrusion_cali() && obj->cali_version >= 0) {
|
||||
PACalibIndexInfo select_index_info;
|
||||
select_index_info.tray_id = cali_tray_id;
|
||||
select_index_info.ams_id = ams_id;
|
||||
@@ -836,7 +862,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
|
||||
|
||||
CalibUtils::select_PA_calib_result(select_index_info);
|
||||
}
|
||||
else {
|
||||
else if (obj->supports_extrusion_cali()) {
|
||||
obj->command_extrusion_cali_set(cali_tray_id, "", "", k, n);
|
||||
}
|
||||
}
|
||||
@@ -932,7 +958,12 @@ bool AMSMaterialsSetting::is_virtual_tray()
|
||||
|
||||
void AMSMaterialsSetting::update_widgets()
|
||||
{
|
||||
if (obj && obj->get_printer_series() == PrinterSeries::SERIES_X1 && obj->cali_version <= -1) {
|
||||
if (obj && !obj->supports_extrusion_cali()) {
|
||||
// No printer-side K/N records: do not offer them.
|
||||
m_panel_normal->Show();
|
||||
m_panel_kn->Hide();
|
||||
}
|
||||
else if (obj && obj->get_printer_series() == PrinterSeries::SERIES_X1 && obj->cali_version <= -1) {
|
||||
// Low version firmware does not display k value
|
||||
m_panel_kn->Hide();
|
||||
}
|
||||
@@ -993,6 +1024,9 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
|
||||
|
||||
m_input_k_val->GetTextCtrl()->SetValue(k);
|
||||
m_input_n_val->GetTextCtrl()->SetValue(n);
|
||||
// Tray values are re-supplied by every caller; clear so a previous popup cannot leak in.
|
||||
m_input_nozzle_min->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_input_nozzle_max->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
|
||||
wxArrayString filament_items;
|
||||
wxString bambu_filament_name;
|
||||
@@ -1012,18 +1046,18 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
|
||||
float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
|
||||
if (machine_diameter == 0.0f && preset_bundle) {
|
||||
const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter");
|
||||
if (opt) {
|
||||
const auto &nd = static_cast<const ConfigOptionFloats *>(opt)->values;
|
||||
if (!nd.empty()) machine_diameter = nd.size() > 1 ? nd[1] : nd[0];
|
||||
}
|
||||
if (opt) machine_diameter = static_cast<const ConfigOptionFloats *>(opt)->values[0];
|
||||
}
|
||||
stream << std::fixed << std::setprecision(1) << machine_diameter;
|
||||
std::string nozzle_diameter_str = stream.str();
|
||||
// OrcaSonar's model id is optional, so the device model alone can resolve to nothing;
|
||||
// the helper falls back to the selected profile so the dropdown is never empty.
|
||||
const std::string filament_printer_model = resolve_filament_printer_model(obj->printer_type, preset_bundle);
|
||||
|
||||
if (preset_bundle) {
|
||||
if (preset_bundle && !filament_printer_model.empty()) {
|
||||
BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size();
|
||||
for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine(
|
||||
DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
filament_printer_model, nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
if (!filament_id_set.insert(filament_it->filament_id).second)
|
||||
continue;
|
||||
const std::string alias = preset_bundle->filaments.get_preset_alias(*filament_it, true);
|
||||
@@ -1090,6 +1124,12 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
|
||||
else {
|
||||
m_comboBox_filament->Show();
|
||||
m_readonly_filament->Hide();
|
||||
// A printer-set tray carries its own temps; the preset selection only fills
|
||||
// them when the tray has none.
|
||||
if (!temp_min.IsEmpty() && temp_min != "0")
|
||||
m_input_nozzle_min->GetTextCtrl()->SetValue(temp_min);
|
||||
if (!temp_max.IsEmpty() && temp_max != "0")
|
||||
m_input_nozzle_max->GetTextCtrl()->SetValue(temp_max);
|
||||
}
|
||||
|
||||
if (obj->cali_version >= 0) {
|
||||
@@ -1226,7 +1266,12 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
|
||||
}
|
||||
}
|
||||
|
||||
if (filament_items.IsEmpty())
|
||||
BOOST_LOG_TRIVIAL(warning) << "ams_materials_setting: no filament presets for printer model \""
|
||||
<< filament_printer_model << "\" at nozzle " << nozzle_diameter_str;
|
||||
|
||||
m_comboBox_filament->Set(filament_items);
|
||||
m_comboBox_from_printer = true;
|
||||
m_comboBox_filament->SetSelection(selection_idx);
|
||||
post_select_event(selection_idx);
|
||||
|
||||
@@ -1234,9 +1279,6 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
|
||||
m_comboBox_filament->SetValue(wxEmptyString);
|
||||
}
|
||||
|
||||
// Set the flag whether to open the filament setting dialog from the device page
|
||||
m_comboBox_filament->SetClientData(new int(1));
|
||||
|
||||
update();
|
||||
Layout();
|
||||
Fit();
|
||||
@@ -1280,53 +1322,53 @@ int AMSMaterialsSetting::get_filament_variant_index(const Preset &filament, cons
|
||||
|
||||
void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
|
||||
{
|
||||
// Get the flag whether to open the filament setting dialog from the device page
|
||||
int* from_printer = static_cast<int*>(m_comboBox_filament->GetClientData());
|
||||
// True for the popup's own initial selection: the dialog pre-filled the tray's
|
||||
// temps, so the matching preset must not overwrite them.
|
||||
const bool initial_printer_selection = m_comboBox_from_printer;
|
||||
|
||||
m_filament_type = "";
|
||||
PresetBundle* preset_bundle = wxGetApp().preset_bundle;
|
||||
std::string filament_printer_model;
|
||||
if (preset_bundle) {
|
||||
std::ostringstream stream;
|
||||
if (obj) {
|
||||
// Defensive: this dialog is opened only from StatusPanel (BBL-only) today, so the fallback fires
|
||||
// only during the brief BBL startup window before firmware reports nozzle info. Without this,
|
||||
// the "0.0" lookup string returns an empty set and filament lookup yields no results.
|
||||
// Use the selected profile's nozzle diameter until the connected device reports one.
|
||||
float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
|
||||
if (machine_diameter == 0.0f) {
|
||||
const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter");
|
||||
if (opt) {
|
||||
const auto &nd = static_cast<const ConfigOptionFloats *>(opt)->values;
|
||||
if (!nd.empty()) machine_diameter = nd.size() > 1 ? nd[1] : nd[0];
|
||||
}
|
||||
if (opt) machine_diameter = static_cast<const ConfigOptionFloats *>(opt)->values[0];
|
||||
}
|
||||
stream << std::fixed << std::setprecision(1) << machine_diameter;
|
||||
filament_printer_model = resolve_filament_printer_model(obj->printer_type, preset_bundle);
|
||||
}
|
||||
std::string nozzle_diameter_str = stream.str();
|
||||
// Resolve the selection against the same list Popup() built the dropdown from, so the two
|
||||
// halves of the dialog cannot disagree about which filaments this machine can use.
|
||||
const std::string selected = m_comboBox_filament->GetValue().ToStdString();
|
||||
if (!selected.empty()) {
|
||||
if (!selected.empty() && !filament_printer_model.empty()) {
|
||||
const std::string filament_id = map_filament_items[selected].filament_id;
|
||||
for (Preset *it : preset_bundle->get_filament_presets_for_machine(
|
||||
DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
filament_printer_model, nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
if (it->filament_id != filament_id)
|
||||
continue;
|
||||
// ) if nozzle_temperature_range is found
|
||||
const int variant_index = get_filament_variant_index(*it, nozzle_diameter_str);
|
||||
ConfigOption* opt_min = it->config.option("nozzle_temperature_range_low");
|
||||
if (opt_min) {
|
||||
ConfigOptionInts* opt_min_ints = dynamic_cast<ConfigOptionInts*>(opt_min);
|
||||
if (opt_min_ints) {
|
||||
wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(variant_index));
|
||||
m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min);
|
||||
if (!initial_printer_selection) {
|
||||
// ) if nozzle_temperature_range is found
|
||||
const int variant_index = get_filament_variant_index(*it, nozzle_diameter_str);
|
||||
ConfigOption* opt_min = it->config.option("nozzle_temperature_range_low");
|
||||
if (opt_min) {
|
||||
ConfigOptionInts* opt_min_ints = dynamic_cast<ConfigOptionInts*>(opt_min);
|
||||
if (opt_min_ints) {
|
||||
wxString text_nozzle_temp_min = wxString::Format("%d", opt_min_ints->get_at(variant_index));
|
||||
m_input_nozzle_min->GetTextCtrl()->SetValue(text_nozzle_temp_min);
|
||||
}
|
||||
}
|
||||
}
|
||||
ConfigOption* opt_max = it->config.option("nozzle_temperature_range_high");
|
||||
if (opt_max) {
|
||||
ConfigOptionInts* opt_max_ints = dynamic_cast<ConfigOptionInts*>(opt_max);
|
||||
if (opt_max_ints) {
|
||||
wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(variant_index));
|
||||
m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max);
|
||||
ConfigOption* opt_max = it->config.option("nozzle_temperature_range_high");
|
||||
if (opt_max) {
|
||||
ConfigOptionInts* opt_max_ints = dynamic_cast<ConfigOptionInts*>(opt_max);
|
||||
if (opt_max_ints) {
|
||||
wxString text_nozzle_temp_max = wxString::Format("%d", opt_max_ints->get_at(variant_index));
|
||||
m_input_nozzle_max->GetTextCtrl()->SetValue(text_nozzle_temp_max);
|
||||
}
|
||||
}
|
||||
}
|
||||
ConfigOption* opt_type = it->config.option("filament_type");
|
||||
@@ -1365,13 +1407,16 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
|
||||
m_button_confirm->Disable(); // ORCA No need to change style
|
||||
m_comboBox_cali_result->Clear();
|
||||
m_comboBox_cali_result->SetValue(wxEmptyString);
|
||||
m_input_k_val->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_input_n_val->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_comboBox_filament->SetClientData(new int(0));
|
||||
if (!initial_printer_selection) {
|
||||
m_input_k_val->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
m_input_n_val->GetTextCtrl()->SetValue(wxEmptyString);
|
||||
}
|
||||
m_comboBox_from_printer = false;
|
||||
return;
|
||||
}
|
||||
else {
|
||||
m_button_confirm->Enable(true); // ORCA No need to change style
|
||||
if (!m_view_only)
|
||||
m_button_confirm->Enable(true); // ORCA No need to change style
|
||||
}
|
||||
|
||||
//filament id
|
||||
@@ -1395,6 +1440,9 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
|
||||
}
|
||||
}
|
||||
|
||||
if (!ams_filament_id.empty())
|
||||
m_clr_picker->is_empty(false);
|
||||
|
||||
wxArrayString items;
|
||||
m_pa_profile_items.clear();
|
||||
m_comboBox_cali_result->SetValue(wxEmptyString);
|
||||
@@ -1450,7 +1498,7 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
|
||||
|
||||
m_comboBox_cali_result->Set(items);
|
||||
if (ams_id == VIRTUAL_TRAY_MAIN_ID || ams_id == VIRTUAL_TRAY_DEPUTY_ID) {
|
||||
if (from_printer && (*from_printer == 1)) {
|
||||
if (initial_printer_selection) {
|
||||
for (auto slot : obj->vt_slot) {
|
||||
if (slot.id == std::to_string(ams_id))
|
||||
cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items, slot.cali_idx);
|
||||
@@ -1467,10 +1515,11 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (from_printer && (*from_printer == 1)) {
|
||||
if (initial_printer_selection) {
|
||||
DevAmsTray* selected_tray = this->obj->GetFilaSystem()->GetAmsTray(std::to_string(ams_id), std::to_string(slot_id));
|
||||
if (!selected_tray)
|
||||
{
|
||||
m_comboBox_from_printer = false;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1501,7 +1550,7 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
|
||||
else {
|
||||
if (!ams_filament_id.empty()) {
|
||||
//m_input_k_val->GetTextCtrl()->SetValue("0.00");
|
||||
m_input_k_val->Enable(true);
|
||||
m_input_k_val->Enable(!m_view_only);
|
||||
}
|
||||
else {
|
||||
//m_input_k_val->GetTextCtrl()->SetValue("0.00");
|
||||
@@ -1509,7 +1558,7 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
|
||||
}
|
||||
}
|
||||
|
||||
m_comboBox_filament->SetClientData(new int(0));
|
||||
m_comboBox_from_printer = false;
|
||||
}
|
||||
|
||||
void AMSMaterialsSetting::on_dpi_changed(const wxRect &suggested_rect)
|
||||
|
||||
@@ -138,7 +138,7 @@ public:
|
||||
std::string ams_filament_id;
|
||||
std::string ams_setting_id;
|
||||
|
||||
bool m_is_third;
|
||||
bool m_is_third = false;
|
||||
// Orca: view-only mode (laser/cut). When set, the dialog is inspectable but every
|
||||
// editing control is disabled and no command is sent.
|
||||
bool m_view_only = false;
|
||||
@@ -200,6 +200,9 @@ protected:
|
||||
wxStaticText* m_n_param;
|
||||
TextInput* m_input_n_val;
|
||||
int m_filament_selection;
|
||||
// True while the popup's initial, printer-driven selection is being handled; it
|
||||
// keeps that selection from overwriting the tray's own temps with preset temps.
|
||||
bool m_comboBox_from_printer = false;
|
||||
|
||||
int m_pa_cali_select_id = 0;
|
||||
|
||||
|
||||
@@ -530,7 +530,8 @@ void AMSSetting::on_insert_material_read(wxCommandEvent &event)
|
||||
bool tray_read_opt = m_checkbox_Insert_material_auto_read->GetValue();
|
||||
bool remain_opt = m_checkbox_remain->GetValue();
|
||||
|
||||
m_obj->command_ams_user_settings(start_read_opt, tray_read_opt, remain_opt);
|
||||
if (m_obj->command_ams_user_settings(start_read_opt, tray_read_opt, remain_opt) != 0)
|
||||
UpdateByObj(m_obj);
|
||||
|
||||
m_sizer_Insert_material_tip_inline->Layout();
|
||||
Layout();
|
||||
@@ -556,7 +557,8 @@ void AMSSetting::on_starting_read(wxCommandEvent &event)
|
||||
bool tray_read_opt = m_checkbox_Insert_material_auto_read->GetValue();
|
||||
bool remain_opt = m_checkbox_remain->GetValue();
|
||||
|
||||
m_obj->command_ams_user_settings(start_read_opt, tray_read_opt, remain_opt);
|
||||
if (m_obj->command_ams_user_settings(start_read_opt, tray_read_opt, remain_opt) != 0)
|
||||
UpdateByObj(m_obj);
|
||||
|
||||
m_sizer_starting_tip_inline->Layout();
|
||||
Layout();
|
||||
@@ -570,7 +572,8 @@ void AMSSetting::on_remain(wxCommandEvent& event)
|
||||
bool start_read_opt = m_checkbox_starting_auto_read->GetValue();
|
||||
bool tray_read_opt = m_checkbox_Insert_material_auto_read->GetValue();
|
||||
bool remain_opt = m_checkbox_remain->GetValue();
|
||||
m_obj->command_ams_user_settings(start_read_opt, tray_read_opt, remain_opt);
|
||||
if (m_obj->command_ams_user_settings(start_read_opt, tray_read_opt, remain_opt) != 0)
|
||||
UpdateByObj(m_obj);
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
@@ -806,4 +809,4 @@ void AMSSettingArrangeAMSOrder::OnBtnRearrangeClicked(wxCommandEvent& event)
|
||||
}
|
||||
#endif
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
}} // namespace Slic3r::GUI
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <wx/dataview.h>
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/dataview.h>
|
||||
#include <wx/gdicmn.h>
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
@@ -29,6 +30,7 @@
|
||||
#include <wx/dialog.h>
|
||||
#include <wx/popupwin.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/wrapsizer.h>
|
||||
|
||||
#include "GUI_Utils.hpp"
|
||||
|
||||
@@ -19,17 +19,20 @@
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/grid.h>
|
||||
#include <wx/dataview.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/tglbtn.h>
|
||||
#include <wx/popupwin.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include <wx/artprov.h>
|
||||
|
||||
|
||||
#include <map>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <wx/font.h>
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/grid.h>
|
||||
#include <wx/dataview.h>
|
||||
#include <wx/panel.h>
|
||||
@@ -35,12 +36,14 @@
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/statbox.h>
|
||||
#include <wx/tglbtn.h>
|
||||
#include <wx/popupwin.h>
|
||||
#include <wx/spinctrl.h>
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/webrequest.h>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
#include "Jobs/ProgressIndicator.hpp"
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <wx/string.h>
|
||||
#include "Jobs/ProgressIndicator.hpp"
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <wx/hyperlink.h>
|
||||
|
||||
#include "Jobs/ProgressIndicator.hpp"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <wx/hyperlink.h>
|
||||
|
||||
#include "Jobs/ProgressIndicator.hpp"
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <wx/string.h>
|
||||
#include <wx/toplevel.h>
|
||||
#include <wx/timer.h>
|
||||
#include "Widgets/Button.hpp"
|
||||
#include "CapsuleButton.hpp"
|
||||
|
||||
namespace Slic3r::GUI { struct IntEvent; }
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include "libslic3r/Model.hpp"
|
||||
#include "libslic3r/Polygon.hpp"
|
||||
#include "MainFrame.hpp"
|
||||
#include "GUI_App.hpp"
|
||||
#include "Plater.hpp"
|
||||
#include "Jobs/BoostThreadWorker.hpp"
|
||||
#include "Jobs/PlaterWorker.hpp"
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "slic3r/GUI/GUI_App.hpp"
|
||||
#include "slic3r/GUI/I18N.hpp"
|
||||
#include "slic3r/GUI/format.hpp"
|
||||
#include "slic3r/Utils/Bonjour.hpp"
|
||||
|
||||
#include "slic3r/GUI/Widgets/DialogButtons.hpp"
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "Widgets/DialogButtons.hpp"
|
||||
#include "libslic3r/Config.hpp"
|
||||
#include <boost/log/trivial.hpp>
|
||||
#include <slic3r/GUI/DeviceManager.hpp>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "libslic3r/calib.hpp"
|
||||
@@ -745,9 +746,15 @@ wxArrayString NewCalibrationHistoryDialog::get_all_filaments(const MachineObject
|
||||
std::string nozzle_diameter_str = stream.str();
|
||||
|
||||
if (preset_bundle) {
|
||||
// OrcaSonar's model id is optional; the helper falls back to the selected profile
|
||||
// so the list is never empty.
|
||||
const std::string filament_printer_model = resolve_filament_printer_model(obj->printer_type, preset_bundle);
|
||||
if (filament_printer_model.empty())
|
||||
return filament_items;
|
||||
|
||||
BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size();
|
||||
for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine(
|
||||
DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
filament_printer_model, nozzle_diameter_str, obj->is_support_user_preset)) {
|
||||
if (!filament_id_set.insert(filament_it->filament_id).second)
|
||||
continue;
|
||||
const std::string alias = preset_bundle->filaments.get_preset_alias(*filament_it, true);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user