diff --git a/.claude/skills/orca-profiles/SKILL.md b/.claude/skills/orca-profiles/SKILL.md index 259564e063..3b2130660f 100644 --- a/.claude/skills/orca-profiles/SKILL.md +++ b/.claude/skills/orca-profiles/SKILL.md @@ -58,6 +58,9 @@ Paths below are relative to this skill. Commands run from the repository root. 9. **Run the full profile checks before reporting completion.** A vendor-scoped pass is only a development loop. Review also covers version bumps, assets, non-default processes and hardware tuning that CI cannot establish. +10. **One all-printer preset per product; color is a runtime property, never a preset.** Never ship + presets that differ only by color — CI accepts them, so this is a review call. See + [color is a runtime property](references/filament-profiles.md#color-is-a-runtime-property). ## Creating or modifying a profile @@ -107,6 +110,7 @@ Paths below are relative to this skill. Commands run from the repository root. | A setting has no effect | Key spelling/type, `handle_legacy`, or a config key placed on a `machine_model` | | A preset exists but is not selectable | Index registration, `instantiation`, installation and compatibility | | A filament is missing, duplicated, or matches the wrong spool | [Compatibility and alias shadowing](references/filament-profiles.md#compatible_printers); [ids](references/ids.md) | +| Presets differ only by color, or an all-printer library preset lacks `@System` | [Color is a runtime property](references/filament-profiles.md#color-is-a-runtime-property) | | A bed temperature is ignored | [Plate-specific temperature keys](references/filament-profiles.md#bed-temperature-is-twelve-keys-not-one) | | A change is absent from the running app | Version bump and [installed profile location](references/validation.md#testing-in-the-app) | | A check fails | [Error → remedy](references/validation.md#error--remedy) | diff --git a/.claude/skills/orca-profiles/references/filament-profiles.md b/.claude/skills/orca-profiles/references/filament-profiles.md index d6679d9122..873e2a6510 100644 --- a/.claude/skills/orca-profiles/references/filament-profiles.md +++ b/.claude/skills/orca-profiles/references/filament-profiles.md @@ -52,6 +52,15 @@ a brand means adding a folder here; the folder name is a directory label only collection, so there is no duplicate-name error. - You may inherit from an instantiated preset as well as from a base; it is common. +## Color is a runtime property + +`filament_id` identifies a product, not a color; filament sync/AMS reads the color from the spool at +runtime. A product ships one all-printer preset and the color is chosen at runtime — never a sibling +preset that differs only by color. A material family (PLA vs PLA Matte vs PLA Silk) is a new product; a +color is not. A printer tune keeps the product alias and does not multiply per color either. + +CI does not catch this — per-color presets pass `check` — so it is a review call. + ## The two most common contributions **A printer vendor tuning a generic.** Keep the `Generic X` base name so the alias shadows the library diff --git a/.claude/skills/orca-profiles/references/naming.md b/.claude/skills/orca-profiles/references/naming.md index 502863f0c4..2e56416179 100644 --- a/.claude/skills/orca-profiles/references/naming.md +++ b/.claude/skills/orca-profiles/references/naming.md @@ -46,12 +46,17 @@ to the first `@`; the target half is a label except for reserved forms: - `@base` — a non-instantiated product root. `@base` is convention; a base is really identified by `instantiation: "false"` and no `setting_id` ([the three-part shape](filament-profiles.md#the-three-part-shape)). -- `@System` — the OrcaFilamentLibrary selectable shim. The literal `Generic @System` is - load-bearing for 3MF/project recovery, beyond the alias rule ([alias shadowing](filament-profiles.md#alias-shadowing)). +- `@System` — the OrcaFilamentLibrary selectable shim, and the convention for an all-printer product + (` @System`, empty `compatible_printers`); not enforced, so a deviation is worth a review + comment. The literal `Generic @System` is load-bearing for 3MF/project recovery, beyond the + alias rule ([alias shadowing](filament-profiles.md#alias-shadowing)). - `@`, `@ `, `@ nozzle` — printer tunes, BBL's shape. Other vendors differ (a bare model, a printer serial, Creality's `@-all`). Specificity is judged from `compatible_printers`, not the name ([one variant, one profile](filament-profiles.md#overlapping-coverage-one-variant-one-profile-per-product)). +- Color is not part of the product name: ` ` presets are not authored; the color is + chosen at runtime + ([color is a runtime property](filament-profiles.md#color-is-a-runtime-property)). ## Not the same as the filename diff --git a/.claude/skills/orca-profiles/references/review-checklist.md b/.claude/skills/orca-profiles/references/review-checklist.md index 43dc5091f8..4862ebb428 100644 --- a/.claude/skills/orca-profiles/references/review-checklist.md +++ b/.claude/skills/orca-profiles/references/review-checklist.md @@ -15,6 +15,7 @@ The table highlights gaps that need human review. What CI *does* run: | Whether the intended default survived compatibility selection | The sweep can select a different compatible preset | | A dangling `compatible_printers` inside an `instantiation: "false"` base | A base never becomes a `Preset`, so the reference check never sees it (a bad `inherits` in a base *is* caught) | | A `renamed_from` whose old name is still a live preset | The redirect is inert while a live preset carries that name | +| A preset differentiated only by color, or an all-printer library preset without `@System` | Per-color presets split one product across ids and the selector fills with near-duplicates; CI stays green | | Per-extruder vector length on a multi-nozzle printer | Silently padded (with the **first** value) or truncated | ## 1. Was the vendor `version` bumped? diff --git a/.github/workflows/post_merge_profiles.yml b/.github/workflows/post_merge_profiles.yml index 469bb2a6c3..67780e37bd 100644 --- a/.github/workflows/post_merge_profiles.yml +++ b/.github/workflows/post_merge_profiles.yml @@ -75,8 +75,6 @@ jobs: if [ -z "$base" ] || [ "$base" = "0000000000000000000000000000000000000000" ] || ! git cat-file -e "$base^{commit}" 2>/dev/null; then base="$head^" fi - echo "Diffing $base..$head" - mapfile -t candidates < <( git diff --name-only "$base" "$head" -- resources/profiles \ | sed -nE 's#^resources/profiles/([^/]+)/.*#\1#p; s#^resources/profiles/([^/]+)\.json$#\1#p' \ @@ -95,7 +93,6 @@ jobs: done if [ "${#vendors[@]}" -eq 0 ]; then - echo "No changed vendor profiles in this push; nothing to publish." echo "vendors=" >> "$GITHUB_OUTPUT" exit 0 fi @@ -138,13 +135,10 @@ jobs: done if [ "${#unauthorized[@]}" -ne 0 ]; then - echo "Changed vendor profiles are not covered by FOLDER_MERGERS: ${unauthorized[*]}" - echo "No profile caches will be published for this push." echo "vendors=" >> "$GITHUB_OUTPUT" exit 0 fi - printf 'Changed vendors: %s\n' "${vendors[*]}" echo "vendors=${vendors[*]}" >> "$GITHUB_OUTPUT" - name: Resolve Orca version @@ -163,7 +157,6 @@ jobs: # OrcaCloud keys R2 on; orca_ver (X.Y.Z) is the asset-name prefix. echo "release_tag=$raw" >> "$GITHUB_OUTPUT" echo "orca_ver=$orca_ver" >> "$GITHUB_OUTPUT" - echo "Orca version: release_tag=$raw asset_prefix=$orca_ver" - name: Validate profile versions id: pver @@ -179,7 +172,6 @@ jobs: exit 1 fi printf '%s\t%s\n' "$v" "$pv" >> "$RUNNER_TEMP/pver.tsv" - echo "$v -> $pv" done - name: Download generate_system_cache @@ -214,7 +206,6 @@ jobs: pv="$(awk -F'\t' -v v="$v" '$1==v{print $2}' "$RUNNER_TEMP/pver.tsv")" name="${orca_ver}_${v}_${pv}_${ts}.zip" ( cd resources/profiles && zip -q -j "$out/$name" "$v.opc" ) - echo "packaged $name" done echo "dir=$out" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/pr-merge-bot.yml b/.github/workflows/pr-merge-bot.yml index a2722f105e..3376cf4a36 100644 --- a/.github/workflows/pr-merge-bot.yml +++ b/.github/workflows/pr-merge-bot.yml @@ -520,6 +520,28 @@ jobs: } catch (error) { core.warning(`Merged successfully, but dispatching build_all.yml failed: ${error.message}`); } + // ---- re-kick the profile publish ---- + // Same reason as above: post_merge_profiles.yml is push-triggered, so a + // GITHUB_TOKEN merge never starts it. workflow_dispatch skips the paths: + // filter, so only dispatch when the PR actually touched profiles. + const touchesProfiles = files.some((file) => + [file.filename, file.previous_filename] + .filter(Boolean) + .some((p) => p.startsWith('resources/profiles/')) + ); + if (touchesProfiles) { + try { + await github.rest.actions.createWorkflowDispatch({ + owner, + repo, + workflow_id: 'post_merge_profiles.yml', + ref: pr.base.ref + }); + core.info(`Dispatched post_merge_profiles.yml on ${pr.base.ref}.`); + } catch (error) { + core.warning(`Merged successfully, but dispatching post_merge_profiles.yml failed: ${error.message}`); + } + } label-profile: # Independent of the merge rules: any PR that changes only files inside @@ -529,7 +551,7 @@ jobs: && github.event_name == 'pull_request_target' permissions: contents: read - pull-requests: read + pull-requests: write issues: write runs-on: ubuntu-latest timeout-minutes: 5 @@ -636,7 +658,7 @@ jobs: && github.event_name == 'pull_request_target' permissions: contents: read # delegatable subtree, for file modes - pull-requests: read + pull-requests: write issues: write # label + comment runs-on: ubuntu-latest timeout-minutes: 10 diff --git a/CMakeLists.txt b/CMakeLists.txt index fe7a00d6b2..d6026a5e9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1155,7 +1155,6 @@ function(orcaslicer_copy_dlls target config postfix output_dlls) ${_out_dir}/swresample-5.dll ${_out_dir}/swscale-8.dll ${_out_dir}/avutil-59.dll - PARENT_SCOPE ) list(APPEND _dll_list ${_occt_staged}) set(${output_dlls} ${_dll_list} PARENT_SCOPE) diff --git a/deps/GMP/0001-GMP_GCC15.patch b/deps/GMP/0001-GMP_GCC15.patch index e005120acd..fdabed26f7 100644 --- a/deps/GMP/0001-GMP_GCC15.patch +++ b/deps/GMP/0001-GMP_GCC15.patch @@ -5,7 +5,7 @@ #if defined (__GNUC__) && ! defined (__cplusplus) typedef unsigned long long t1;typedef t1*t2; -void g(){} -+void g(int,t1 const*,t1,t2,t1 const*,int){} ++void g(int a,t1 const*b,t1 c,t2 dd,t1 const*e,int ff){} void h(){} static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) {t1 c,x,r;int i;if(v0){c=1;for(i=1;i Control with that +option scrolled into view and focused, instead of editing a key. +Editing a row opens a capture dialog that records the next chord, names the shortcuts it +would take the chord from, and on confirmation unbinds those and binds this one. +Resetting a row asks the same question when its default is now held by another +shortcut, so a reset cannot leave two shortcuts on one chord. Each change is written to +the config at once and pushed to the menus, tooltips and accelerator tables through +`GUI_App::on_shortcuts_changed()`. The dialog opens from the Help menu and Preferences > +Control on the Global page, and from the `?` key on the page of the view that received it. + +## Adding a shortcut + +1. Add the enum value to `Shortcut` and its row to `shortcut_table`, in the position + the dialog should list it; the row's section heading is the `section_table` entry + above it, so a new section needs an entry there too. Pick a default that does not + collide inside its contexts; the `[Shortcuts]` tests check every default against the + others. +2. Handle it in the dispatcher of its context: `MainFrame::handle_global_shortcut`, + `GLCanvas3D::handle_shortcut`, `ObjectList::dispatch_shortcut`, or a gizmo's + `on_tool_shortcut`. A gizmo that opens on a key sets `m_shortcut` in its constructor. +3. Where the UI shows the key, ask the registry (`display()` for tooltips, + `accelerator()` for menu labels); no label holds a literal key name. diff --git a/docs/HLSD/printer-agent.md b/docs/HLSD/printer-agent.md new file mode 100644 index 0000000000..7062fab966 --- /dev/null +++ b/docs/HLSD/printer-agent.md @@ -0,0 +1,240 @@ +# Printer agents + +Printer agents isolate printer-specific communication from the rest of OrcaSlicer. The GUI and +`DeviceManager` operate on a shared set of printer operations and device state; a selected printer +agent implements those operations for a particular printer ecosystem. The agent boundary allows +Bambu, Moonraker-based printers, built-in integrations, and Python-provided integrations to use the +same application workflow without making the GUI understand every printer protocol. + +The current boundary is an adapter boundary around the existing application contract. In particular, +some request fields and message payloads still use the Bambu-shaped representation that existing +`MachineObject` and `DeviceManager` code consumes. The printer agent is responsible for translating +that representation into the protocol spoken by its printer. This is an intentional compatibility +constraint of the current design; the interface is not yet a neutral printer protocol. + +The v1 dialect migration path is deliberately narrow. `DeviceManager` currently speaks the Bambu JSON +dialect because that is the payload shape already used throughout the command and state workflow. The +v1 `OrcaPrinterAgent` also accepts that Bambu dialect. Its transport path places the small translation +needed for the target printer at `deliver_to_sink`, keeping the compatibility code at the edge rather +than spreading it through `DeviceManager` or the agent interface. + +The eventual direction is for `DeviceManager` to produce an Orca JSON dialect. The Bambu agent will then +own the translation from Orca JSON to Bambu's protocol, while `OrcaPrinterAgent` can forward the Orca +payload directly to its sink. The v1 translation at `deliver_to_sink` can then be removed without +changing `DeviceManager`, the command callers, or the rest of the agent workflow. + +## Components + +The system has four relevant layers: + +```text +GUI / DeviceManager / MachineObject + | + NetworkAgent + / \ + IPrinterAgent ICloudServiceAgent + | | + printer protocol authentication and cloud services +``` + +### `DeviceManager` and `MachineObject` + +`DeviceManager` owns the application-facing printer workflow. It maintains `MachineObject` instances, +updates their state, filters devices for the active printer agent, and initiates operations such as +homing, temperature changes, printing, subscriptions, and camera playback. + +`MachineObject` remains the shared state model used by the GUI. It does not contain the implementation +of a printer protocol. When a device is discovered or returned by a cloud query, the device is tagged +with the active `printer_agent_id`. Device lists and selected-machine operations use that tag to avoid +sending an operation through an agent that does not own the device. + +### `NetworkAgent` + +`NetworkAgent` is the façade used by the GUI and `DeviceManager`. It owns: + +- the currently selected `IPrinterAgent`; +- the registered cloud-service instances, indexed by provider; +- callbacks shared by the active printer agent and the application; +- the forwarding methods for printer commands and cloud operations. + +There is one active printer agent for the currently selected printer preset. Switching the preset +increments the machine-list generation, disconnects the old printer agent, removes its callbacks, and +installs the newly selected agent. The façade then forwards printer operations to that agent. + +Cloud operations are selected separately using a provider key. `NetworkAgent` forwards a cloud request +to the matching `ICloudServiceAgent`, and forwards cloud camera operations with a device ID. The +printer agent receives a cloud-agent pointer through `set_cloud_agent()` when it is created, allowing +printer communication to obtain cloud tokens without depending on a concrete cloud implementation. + +### `IPrinterAgent` + +`IPrinterAgent` is the printer-facing contract. It covers: + +- cloud-relay and direct-LAN message delivery; +- LAN connection, discovery, binding, and certificates; +- printer subscriptions and callbacks; +- print operations; +- filament synchronization; +- camera capability and local camera URL reporting; +- printer command methods. + +Concrete built-in implementations include the Bambu wrapper, the native Orca/Moonraker path, and +other printer-agent implementations registered by the application. A printer agent may use either +the cloud agent, a direct LAN connection, or both. + +### `ICloudServiceAgent` + +`ICloudServiceAgent` owns authentication and services provided by a cloud backend. It covers login +state, tokens, user and printer lists, settings synchronization, model services, cloud messages, and +cloud camera operations. + +Cloud camera operations are device-scoped: + +- `get_camera_url(dev_id, callback)` obtains a stream URL for one device; +- `create_camera_signaling_channel(dev_id)` creates signaling for one device where the provider + supports it. + +This is separate from the local camera URL exposed by `IPrinterAgent`, which is currently scoped to +the active printer agent because a normal LAN agent represents one physical printer connection. + +## Agent registration and selection + +`NetworkAgentFactory` maintains the printer-agent registry. Each registry entry contains an agent ID, +a display name, and a factory function. Built-in agents register during application initialization. +Python printer-agent capabilities register dynamically and contribute an agent ID and factory entry. + +The selected printer preset contains the printer-agent choice. If no explicit choice is stored, the +application preserves the existing default behavior: Bambu presets select the Bambu agent and other +presets select the native Orca agent. When a preset is changed, `GUI_App` resolves the effective agent +ID, obtains the corresponding cloud agent, creates the printer agent through the registry, and installs +it in `NetworkAgent`. + +The registry rejects conflicting agent IDs. This matters for Python plugins because an agent ID is the +stable identity used by presets and device ownership; two enabled plugin capabilities must not claim +the same ID. + +## Message and command flow + +There are two low-level message paths: + +- `send_message()` publishes a command through the printer's cloud relay; +- `send_message_to_printer()` sends a command directly to the printer over the LAN path. + +Both paths accept a JSON string, quality-of-service and flag values, and return the existing network +status code domain. The agent owns the conversion from that JSON contract to its native transport. + +The typed `command_*` methods are the application-facing convenience layer. The five generic defaults +currently implemented by `IPrinterAgent` construct the existing JSON dialect and route through the +same message path: + +| Method | Default operation | +| --- | --- | +| `command_xyz_abs()` | Send `G90` for absolute positioning | +| `command_auto_leveling()` | Send `G29` for bed leveling | +| `command_go_home()` | Use the supported homing operation or send `G28` | +| `command_set_bed()` | Use the supported bed control or send `M140` | +| `command_set_nozzle()` | Send `M104` for nozzle temperature | + +These are compatibility defaults for common printer workflows, not a guarantee that every firmware +implements every command identically. An agent can override a method when its protocol needs another +operation. For example, a Klipper configuration may use `BED_MESH_CALIBRATE` instead of `G29`. + +The remaining common command methods default to `ORCA_NETWORK_ERR_CMD_NOT_SUPPORTED` because their +existing behavior is vendor-specific or has no portable implementation: + +- AMS RFID refresh; +- AMS calibration; +- AMS tray selection; +- camera start; +- axis control. + +The methods remain on the common interface so an agent that supports them can override them explicitly. +`sequence_id` remains part of the command contract because `DeviceManager` creates and tracks it as +the command ID. + +## Device ownership and stale responses + +Printer-agent ownership is represented by `printer_agent_id` on device records and `MachineObject` +instances. The active agent ID is attached when a device is discovered, returned by a cloud list, or +reused after a preset switch. Local-machine configuration also persists the agent ID so a saved LAN +device is not silently reused by an unrelated agent. + +Cloud printer-list responses carry three pieces of request context added by `NetworkAgent`: + +```text +provider cloud provider used for the request +agent_id active printer agent when the request was made +generation machine-list generation when the request was made +``` + +`DeviceManager` accepts the response only when those values still match the current provider, active +agent, and generation. This prevents a slow response from the previous preset or provider from +repopulating the current device list. + +The provider mapping is currently selected by `GUI_App`: the Bambu agent maps to the Bambu cloud +provider and other agents map to the Orca cloud provider. The generation check protects that existing +selection from races; it does not make cloud-provider ownership intrinsic to an agent. Cloud-printer +ownership and the broader Orca cloud services are therefore still separate architectural concerns. + +## Python printer agents + +`PrinterAgentPluginCapability` implements `IPrinterAgent` directly. The live capability object is +registered with `NetworkAgentFactory` and handed out as the printer agent when its agent ID is selected. +The plugin receives the selected `ICloudServiceAgent` through `set_cloud_agent()` just like a built-in +printer agent. + +Python plugins must implement the core communication and lifecycle methods required by the interface, +including agent metadata, printer connection, discovery callbacks, and the two message-send methods. +Methods that are meaningful only to a particular printer are optional overrides where the C++ base +class provides a default. + +All ten `command_*` methods are available in the Python binding and in the trampoline. Their override +status is intentionally optional: + +- the five generic commands use the C++ default when Python does not override them; +- the five vendor-specific commands return `NOT_SUPPORTED` unless Python supplies an implementation; +- a Python implementation can replace either behavior for its own protocol. + +The Python camera binding exposes HTTP, HTTPS, RTSP, and HTTP-snapshot modes. WebRTC remains a +built-in C++ camera mode, but is not exposed as a Python mode because the current Python capability +does not provide the corresponding cloud signaling-channel contract. + +## Camera playback boundary + +The camera stream mode describes how a stream is obtained; it does not by itself define ownership of +the wxWidgets view that renders it. `MediaPlayCtrl` selects and tears down the active backend, while +the wx parent owns the child window or renderer. This is important because a web view, native media +control, and frame-based/WebRTC renderer have different wx window-lifetime requirements. + +Cloud URL and signaling requests are routed through `NetworkAgent` to the cloud provider selected for +the device. Local URL requests are routed to the active printer agent. The distinction keeps cloud +account services device-scoped while preserving the current one-LAN-agent/one-printer model. + +## Compatibility constraints + +The printer-agent boundary intentionally preserves several existing application contracts: + +- Bambu-shaped JSON is still the shared command representation; +- existing network status codes are reused, with Orca-specific unsupported/capability errors added + in the Orca-reserved range; +- `MachineObject` remains the shared device-state model; +- preset and local-machine data retain compatibility with the existing agent-selection behavior; +- Python plugins use the existing capability and pybind11 registration system. + +The agent abstraction is therefore responsible for containing vendor differences, not for pretending +that all vendor protocols are identical. The planned Orca JSON dialect is the protocol-neutral command +model for the `DeviceManager`/agent boundary. Once it is introduced, Bambu-specific translation remains +inside the Bambu agent and the Orca agent's v1 sink adapter can be removed as a self-contained cleanup. + +## Main implementation locations + +- [`IPrinterAgent`](../../src/slic3r/Utils/IPrinterAgent.hpp) — printer-agent contract and generic command defaults +- [`ICloudServiceAgent`](../../src/slic3r/Utils/ICloudServiceAgent.hpp) — cloud service and per-device + cloud camera contract +- [`NetworkAgent`](../../src/slic3r/Utils/NetworkAgent.hpp) — façade and dispatch between active agents +- [`NetworkAgentFactory`](../../src/slic3r/Utils/NetworkAgentFactory.hpp) — built-in and Python agent registry +- [`DeviceManager`](../../src/slic3r/GUI/DeviceCore/DevManager.cpp) — device ownership, filtering, and + stale-response checks +- [`PrinterAgentPluginCapability`](../../src/slic3r/plugin/pluginTypes/printerAgent/PrinterAgentPluginCapability.cpp) + — Python bindings +- [`MediaPlayCtrl`](../../src/slic3r/GUI/MediaPlayCtrl.cpp) — camera backend selection and playback lifecycle diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 79d50e844c..fa09e82104 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -5554,10 +5554,13 @@ msgctxt "Camera View" msgid "Right" msgstr "" -msgid "Add" +msgid "Add plate" msgstr "" -msgid "Add plate" +msgid "Split to objects" +msgstr "" + +msgid "Add" msgstr "" msgid "Auto orient all/selected objects" @@ -5572,9 +5575,6 @@ msgstr "" msgid "Arrange objects on selected plates" msgstr "" -msgid "Split to objects" -msgstr "" - msgid "Assembly View" msgstr "" @@ -5629,6 +5629,9 @@ msgstr "" msgid "Wireframe" msgstr "" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "" @@ -6158,9 +6161,6 @@ msgstr "" msgid "Preferences" msgstr "" -msgid "Open speed dial..." -msgstr "" - msgctxt "Menu" msgid "Edit" msgstr "" @@ -6168,6 +6168,9 @@ msgstr "" msgid "View" msgstr "" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "" @@ -7886,9 +7889,6 @@ msgstr "" msgid "Collapse sidebar" msgstr "" -msgid "Tab" -msgstr "" - #, possible-c-format, possible-boost-format msgid "Loading file: %s" msgstr "" @@ -8827,10 +8827,10 @@ msgstr "" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "" -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -8956,6 +8956,15 @@ msgstr "" msgid "Set the action that dragging the right mouse button should perform." msgstr "" +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "" @@ -9049,10 +9058,38 @@ msgid "" "Set to 0 for unlimited frame rate." msgstr "" +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "" -msgid "Displays current viewport FPS in the top-right corner." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." msgstr "" msgid "G-code Preview" @@ -9480,10 +9517,7 @@ msgstr "" msgid "Select which settings to be published in the 3MF file" msgstr "" -msgid "Publish 3MF Wiki" -msgstr "" - -msgid "Publish 3MF Video Guide" +msgid "Video Guide" msgstr "" msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -9675,6 +9709,12 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "" + +msgid "Hide details" +msgstr "" + #, possible-c-format, possible-boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -11373,65 +11413,37 @@ msgstr "" msgid "Configuration package changed" msgstr "" -msgid "Toolbar" -msgstr "" - -msgid "Objects list" -msgstr "" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "" - -msgid "Paste from clipboard" -msgstr "" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "" - -msgid "Switch table page" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "" - -msgid "Global shortcuts" -msgstr "" - msgid "Pan View" msgstr "" msgid "Rotate View" msgstr "" -msgid "Middle mouse button" +#, possible-c-format, possible-boost-format +msgid "Use %s or %s, or a key that does not type a character." msgstr "" -msgid "Zoom View" +msgctxt "Keyboard Shortcut" +msgid "Key" msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +msgid "Left mouse" msgstr "" -msgid "Auto orients all objects on the active plate." +msgid "Available anywhere in the window, even while typing in a text field." msgstr "" -msgid "Collapse/Expand the sidebar" +msgid "Run a speed dial favorite while the dial is open" msgstr "" -msgid "Any arrow" +msgctxt "Keyboard Shortcut" +msgid "Tab" msgstr "" -msgid "Movement in camera space" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." msgstr "" msgid "Select a part" @@ -11443,120 +11455,28 @@ msgstr "" msgid "Select objects by rectangle" msgstr "" -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "" - -msgid "Move selection 10mm in positive Y direction" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "" - -msgid "Move selection 10mm in negative Y direction" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "" - -msgid "Move selection 10mm in negative X direction" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "" - -msgid "Move selection 10mm in positive X direction" +msgid "Keyboard 1-9: set filament for object/part" msgstr "" msgid "Movement step set to 1mm" msgstr "" -msgid "Keyboard 1-9: set filament for object/part" +msgid "Movement in camera space" msgstr "" -msgid "Camera view - Default" +msgid "Middle mouse" msgstr "" -msgid "Camera view - Top" +msgid "Right mouse" msgstr "" -msgid "Camera view - Bottom" +msgid "Zoom View" msgstr "" -msgid "Camera view - Front" +msgid "Painting" msgstr "" -msgid "Camera view - Behind" -msgstr "" - -msgid "Camera Angle - Left side" -msgstr "" - -msgid "Camera Angle - Right side" -msgstr "" - -msgid "Select all objects" -msgstr "" - -msgid "Gizmo move" -msgstr "" - -msgid "Gizmo rotate" -msgstr "" - -msgid "Gizmo scale" -msgstr "" - -msgid "Gizmo place face on bed" -msgstr "" - -msgid "Gizmo cut" -msgstr "" - -msgid "Gizmo mesh boolean" -msgstr "" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "" - -msgid "Gizmo SLA support points" -msgstr "" - -msgid "Gizmo FDM paint-on seam" -msgstr "" - -msgid "Gizmo text emboss/engrave" -msgstr "" - -msgid "Gizmo measure" -msgstr "" - -msgid "Gizmo assemble" -msgstr "" - -msgid "Gizmo brim ears" -msgstr "" - -msgid "Zoom in" -msgstr "" - -msgid "Zoom out" -msgstr "" - -msgid "Toggle printable for object/part" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "" - -msgid "Switch between Prepare/Preview" -msgstr "" - -msgid "Plater" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." msgstr "" msgid "Move: press to snap by 1mm" @@ -11568,13 +11488,17 @@ msgstr "" msgid "Support/Color Painting: adjust section position" msgstr "" -msgid "Gizmo" +msgid "Objects list" +msgstr "" + +msgid "Available while the object list has focus." msgstr "" msgid "Set extruder number for the objects and parts" msgstr "" -msgid "Delete objects, parts, modifiers" +msgctxt "Keyboard Shortcut" +msgid "Space" msgstr "" msgid "Select the object/part and press space to change the name" @@ -11586,42 +11510,47 @@ msgstr "" msgid "Select the object/part and mouse click to change the name" msgstr "" -msgid "Objects List" -msgstr "" - -msgid "Vertical slider - Move active thumb Up" -msgstr "" - -msgid "Vertical slider - Move active thumb Down" -msgstr "" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "" - -msgid "On/Off G-code window" +msgid "Available while the 3D view on the Preview tab has focus." msgstr "" msgid "Move slider 5x faster" msgstr "" -msgctxt "Keyboard Shortcut" -msgid "Home" +msgid "Scroll slider 5x faster" msgstr "" -msgid "Horizontal slider - Move to start position" +msgid "Not customizable" msgstr "" -msgctxt "Keyboard Shortcut" -msgid "End" +#, possible-c-format, possible-boost-format +msgid "%s is assigned to %s. Reassign it to %s?" msgstr "" -msgid "Horizontal slider - Move to last position" +#, possible-c-format, possible-boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "Already assigned to %s. Press OK to reassign it." msgstr "" msgid "Release Note" @@ -15921,7 +15850,7 @@ msgstr "" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "" -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." msgstr "" msgid "Start G-code" @@ -17330,12 +17259,36 @@ msgstr "" msgid "Total length of filament used in the print." msgstr "" -msgid "Print time (seconds)" +msgid "Print time (total seconds)" msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "" +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "" @@ -19016,6 +18969,9 @@ msgstr "" msgid "Success!" msgstr "" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "" @@ -19225,12 +19181,6 @@ msgstr "" msgid "Could not connect to Duet" msgstr "" -msgid "Connection to Ultimaker is working correctly." -msgstr "" - -msgid "Could not connect to Ultimaker" -msgstr "" - msgid "Unknown error occurred" msgstr "" @@ -19958,12 +19908,6 @@ msgstr "" msgid "Error: %s" msgstr "" -msgid "Show details" -msgstr "" - -msgid "Hide details" -msgstr "" - msgid "Version to install:" msgstr "" @@ -22542,6 +22486,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -22554,6 +22504,210 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "" + +msgid "Select all objects" +msgstr "" + +msgid "Paste from clipboard" +msgstr "" + +msgid "Toggle printable for object/part" +msgstr "" + +msgid "Move selection 10mm in negative X direction" +msgstr "" + +msgid "Move selection 10mm in positive X direction" +msgstr "" + +msgid "Move selection 10mm in positive Y direction" +msgstr "" + +msgid "Move selection 10mm in negative Y direction" +msgstr "" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "" + +msgid "Gizmo rotate" +msgstr "" + +msgid "Gizmo scale" +msgstr "" + +msgid "Gizmo place face on bed" +msgstr "" + +msgid "Gizmo cut" +msgstr "" + +msgid "Gizmo mesh boolean" +msgstr "" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "" + +msgid "Gizmo measure" +msgstr "" + +msgid "Gizmo assemble" +msgstr "" + +msgid "Gizmo brim ears" +msgstr "" + +msgid "Vertical slider - Move active thumb Up" +msgstr "" + +msgid "Vertical slider - Move active thumb Down" +msgstr "" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "" + +msgid "Horizontal slider - Move to start position" +msgstr "" + +msgid "Horizontal slider - Move to last position" +msgstr "" + +msgid "Camera view - Default" +msgstr "" + +msgid "Camera view - Top" +msgstr "" + +msgid "Camera view - Bottom" +msgstr "" + +msgid "Camera view - Front" +msgstr "" + +msgid "Camera view - Behind" +msgstr "" + +msgid "Camera Angle - Left side" +msgstr "" + +msgid "Camera Angle - Right side" +msgstr "" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "" + +msgid "Zoom out" +msgstr "" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "" + +msgid "Switch between Prepare/Preview" +msgstr "" + +msgid "Collapse/Expand the sidebar" +msgstr "" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "Precise wall\nDid you know that turning on precise wall can improve precision and layer consistency?" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index dedb57fff3..dbd0272542 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -6015,12 +6015,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Dreta" -msgid "Add" -msgstr "Afegir" - msgid "Add plate" msgstr "Afegir placa" +msgid "Split to objects" +msgstr "Separar en objectes" + +msgid "Add" +msgstr "Afegir" + msgid "Auto orient all/selected objects" msgstr "Auto-orientació tots/seleccionats objectes" @@ -6033,9 +6036,6 @@ msgstr "Ordenar tots els objectes" msgid "Arrange objects on selected plates" msgstr "Ordenar els objectes en plaques seleccionades" -msgid "Split to objects" -msgstr "Separar en objectes" - msgid "Assembly View" msgstr "Vista de muntatge" @@ -6092,6 +6092,9 @@ msgstr "Contorn" msgid "Wireframe" msgstr "Malla alàmbrica" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Vista realista" @@ -6634,9 +6637,6 @@ msgstr "Mostrar el contorn al voltant de l'objecte seleccionat a l'escena 3D" msgid "Preferences" msgstr "Preferències" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6645,6 +6645,9 @@ msgstr "Edita" msgid "View" msgstr "Vista" +msgid "Open Speed Dial" +msgstr "" + # AI Translated msgid "Preset Bundle" msgstr "Paquet de perfils" @@ -8469,10 +8472,6 @@ msgstr "Expandir la barra lateral" msgid "Collapse sidebar" msgstr "Replegar barra lateral" -# AI Translated -msgid "Tab" -msgstr "Pestanya" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Carregant fitxer: %s" @@ -9510,10 +9509,10 @@ msgstr "Gestió multidispositiu" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Amb aquesta opció habilitada, podeu enviar una tasca a diversos dispositius alhora i gestionar múltiples dispositius." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9652,6 +9651,15 @@ msgstr "Arrossegament amb el botó dret del ratolí" msgid "Set the action that dragging the right mouse button should perform." msgstr "Estableix l'acció que ha de fer l'arrossegament amb el botó dret del ratolí." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Esborra la meva elecció a..." @@ -9776,13 +9784,40 @@ msgstr "" "Limita la velocitat de fotogrames de la vista per reduir la càrrega de la GPU i el consum.\n" "Establiu-ho a 0 per a una velocitat de fotogrames sense límit." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "Mostrar la superposició d'FPS" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Mostra els FPS actuals de la vista a la cantonada superior dreta." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10261,13 +10296,8 @@ msgstr "Publicar 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Seleccioneu quines opcions es publicaran al fitxer 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki de Publicar 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Guia en vídeo de Publicar 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10469,6 +10499,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Mostra detalls" + +# AI Translated +msgid "Hide details" +msgstr "Amagar els detalls" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12336,41 +12373,6 @@ msgstr "El paquet de configuració s'ha canviat a la Guia de Configuració anter msgid "Configuration package changed" msgstr "S'ha canviat el paquet de configuració" -msgid "Toolbar" -msgstr "Barra d’eines" - -msgid "Objects list" -msgstr "Llista d'objectes" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importar dades de geometria des de fitxers STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Enganxa des del porta-retalls" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Mostrar/Amagar quadre de diàleg Configuració de Dispositius 3Dconnexion" - -msgid "Switch table page" -msgstr "Canviar de pàgina de taula" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Espai" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Mostrar la llista de dreceres de teclat" - -msgid "Global shortcuts" -msgstr "Dreceres Globals" - # AI Translated msgid "Pan View" msgstr "Desplaçament de la vista" @@ -12379,28 +12381,33 @@ msgstr "Desplaçament de la vista" msgid "Rotate View" msgstr "Rotació de la vista" -# AI Translated -msgid "Middle mouse button" -msgstr "Botó central del ratolí" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" # AI Translated -msgid "Zoom View" -msgstr "Zoom de la vista" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Orienta/alinea automàticament els objectes seleccionats o tots els objectes. Si hi ha objectes seleccionats, només orientarà/alinearà els seleccionats. En cas contrari, orientarà/alinearà tots els objectes del projecte actual." +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Orienta/alinea automàticament tots els objectes de la placa actual." - -msgid "Collapse/Expand the sidebar" -msgstr "Replegar/Expandir barra lateral" - -msgid "Any arrow" -msgstr "Qualsevol fletxa" - -msgid "Movement in camera space" -msgstr "Moviment a l'espai de la càmera" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Seleccionar una peça" @@ -12411,127 +12418,30 @@ msgstr "Seleccionar múltiples objectes" msgid "Select objects by rectangle" msgstr "Seleccionar objectes per rectangle" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Fletxa amunt" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Moure la selecció 10 mm en direcció Y positiva" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Fletxa avall" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Moure la selecció 10 mm en direcció Y negativa" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Fletxa esquerra" - -msgid "Move selection 10mm in negative X direction" -msgstr "Moure la selecció 10 mm en direcció X negativa" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Fletxa dreta" - -msgid "Move selection 10mm in positive X direction" -msgstr "Moure la selecció 10 mm en direcció X positiva" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "teclat 1-9: establir filament per a objecte/peça" msgid "Movement step set to 1mm" msgstr "Pas de moviment configurat a 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "teclat 1-9: establir filament per a objecte/peça" +msgid "Movement in camera space" +msgstr "Moviment a l'espai de la càmera" -msgid "Camera view - Default" -msgstr "Vista de càmera - Predeterminada" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Vista de càmera - Part Superior" - -msgid "Camera view - Bottom" -msgstr "Vista de càmera - Part Inferior" - -msgid "Camera view - Front" -msgstr "Vista de càmera - Frontal" - -msgid "Camera view - Behind" -msgstr "Vista de càmera - Darrere" - -msgid "Camera Angle - Left side" -msgstr "Angle de càmera - Costat Esquerre" - -msgid "Camera Angle - Right side" -msgstr "Angle de càmera - Costat Dret" - -msgid "Select all objects" -msgstr "Seleccionar tots els objectes" - -msgid "Gizmo move" -msgstr "Gizmo de Moviment" - -msgid "Gizmo rotate" -msgstr "Gizmo de Rotació" - -msgid "Gizmo scale" -msgstr "Gizmo d'Escala" - -msgid "Gizmo place face on bed" -msgstr "Gizmo de recolzament sobre la Cara a la placa" - -msgid "Gizmo cut" -msgstr "Gizmo de Tall" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo booleà de malla" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Eina FDM per a pell difusa pintada" - -msgid "Gizmo SLA support points" -msgstr "Gizmo de Punts de suport SLA" - -msgid "Gizmo FDM paint-on seam" -msgstr "Eina de Pintat de costures FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo de text en relleu/gravat" - -msgid "Gizmo measure" -msgstr "Gizmo mesurar" - -msgid "Gizmo assemble" -msgstr "Gizmo ensamblar" - -msgid "Gizmo brim ears" -msgstr "Gizmo orelles de la Vora d'Adherència" - -msgid "Zoom in" -msgstr "Augmentar zoom" - -msgid "Zoom out" -msgstr "Reduir zoom" +msgid "Right mouse" +msgstr "" # AI Translated -msgid "Toggle printable for object/part" -msgstr "Commutar la impressibilitat de l'objecte/peça" +msgid "Zoom View" +msgstr "Zoom de la vista" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" +msgid "Painting" +msgstr "" -msgid "Switch between Prepare/Preview" -msgstr "Canviar entre Preparar/Previsualitzar" - -msgid "Plater" -msgstr "Plataforma" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Moure: Clicka per ajustar en passos d'1 mm" @@ -12542,15 +12452,19 @@ msgstr "Suport/Pintat de color: configuració del radi de la ploma" msgid "Support/Color Painting: adjust section position" msgstr "Suport/Pintat de color: configuració de la posició de la secció" -# AI Translated -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Llista d'objectes" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Establir el número d'extrusor per als objectes i les peces" -msgid "Delete objects, parts, modifiers" -msgstr "Eliminar objectes, peces, modificadors" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Espai" msgid "Select the object/part and press space to change the name" msgstr "Seleccioneu l'objecte/peça i premeu espai per canviar-ne el nom" @@ -12561,45 +12475,48 @@ msgstr "Feu clic amb el ratolí" msgid "Select the object/part and mouse click to change the name" msgstr "Seleccioneu l'objecte/peça i feu clic amb el ratolí per canviar el nom" -msgid "Objects List" -msgstr "Llista d'Objectes" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Barra de desplaçament Vertical - Mou el barra de desplaçament actiu cap Amunt" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Barra de desplaçament Vertical - Mou el barra de desplaçament actiu cap Avall" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Barra de desplaçament Horitzontal - Mou el barra de desplaçament actiu cap a l'Esquerra" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Barra de desplaçament Horitzontal - Mou la barra de desplaçament activa cap a la Dreta" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Activar/desactivar el mode de capa única de la barra de desplaçament vertical" - -msgid "On/Off G-code window" -msgstr "Activar/Desactivar finestra de Codi-G" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Moure la barra de desplaçament 5 vegades més ràpid" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Inici" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Control lliscant horitzontal - Mou fins a la posició inicial" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "Fi" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Control lliscant horitzontal - Mou a l'última posició" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Notes de la versió" @@ -17594,8 +17511,8 @@ msgstr "Passos de preescalfament" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Inseriu diverses ordres de preescalfament (p. ex., M104.1). Només útil per a Prusa XL. Per a altres impressores, poseu-la a 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code escrit al començament del fitxer de sortida, abans de qualsevol altre contingut. Útil per afegir metadades que el firmware de la impressora llegeix de les primeres línies del fitxer (p. ex. temps d'impressió estimat, ús de filament). Admet espais reservats com {print_time_sec} i {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Codi-G inicial" @@ -19154,12 +19071,36 @@ msgstr "Filament usat" msgid "Total length of filament used in the print." msgstr "Longitud total de filament utilitzat a la impressió." -msgid "Print time (seconds)" -msgstr "Temps d'impressió (segons)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Temps d'impressió estimat total en segons. Substituït pel valor real durant el post-processament." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Longitud del filament (metres)" @@ -21033,6 +20974,9 @@ msgstr "No s'ha detectat cap sessió vàlida. Voleu continuar amb l'inici de ses msgid "Success!" msgstr "Èxit!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Estàs segur de tancar sessió?" @@ -22088,13 +22032,6 @@ msgstr "El connector de xarxa Bambu és necessari per a les funcions del núvol, msgid "Error: %s" msgstr "Error: %s" -msgid "Show details" -msgstr "Mostra detalls" - -# AI Translated -msgid "Hide details" -msgstr "Amagar els detalls" - msgid "Version to install:" msgstr "Versió a instal·lar:" @@ -24751,6 +24688,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24763,6 +24706,217 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Inici" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "Fi" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Fletxa esquerra" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Fletxa dreta" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Fletxa amunt" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Fletxa avall" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importar dades de geometria des de fitxers STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Seleccionar tots els objectes" + +msgid "Paste from clipboard" +msgstr "Enganxa des del porta-retalls" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "Commutar la impressibilitat de l'objecte/peça" + +msgid "Move selection 10mm in negative X direction" +msgstr "Moure la selecció 10 mm en direcció X negativa" + +msgid "Move selection 10mm in positive X direction" +msgstr "Moure la selecció 10 mm en direcció X positiva" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Moure la selecció 10 mm en direcció Y positiva" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Moure la selecció 10 mm en direcció Y negativa" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo de Moviment" + +msgid "Gizmo rotate" +msgstr "Gizmo de Rotació" + +msgid "Gizmo scale" +msgstr "Gizmo d'Escala" + +msgid "Gizmo place face on bed" +msgstr "Gizmo de recolzament sobre la Cara a la placa" + +msgid "Gizmo cut" +msgstr "Gizmo de Tall" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo booleà de malla" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Eina de Pintat de costures FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Eina FDM per a pell difusa pintada" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo de text en relleu/gravat" + +msgid "Gizmo measure" +msgstr "Gizmo mesurar" + +msgid "Gizmo assemble" +msgstr "Gizmo ensamblar" + +msgid "Gizmo brim ears" +msgstr "Gizmo orelles de la Vora d'Adherència" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Barra de desplaçament Vertical - Mou el barra de desplaçament actiu cap Amunt" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Barra de desplaçament Vertical - Mou el barra de desplaçament actiu cap Avall" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Barra de desplaçament Horitzontal - Mou el barra de desplaçament actiu cap a l'Esquerra" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Barra de desplaçament Horitzontal - Mou la barra de desplaçament activa cap a la Dreta" + +msgid "Horizontal slider - Move to start position" +msgstr "Control lliscant horitzontal - Mou fins a la posició inicial" + +msgid "Horizontal slider - Move to last position" +msgstr "Control lliscant horitzontal - Mou a l'última posició" + +msgid "Camera view - Default" +msgstr "Vista de càmera - Predeterminada" + +msgid "Camera view - Top" +msgstr "Vista de càmera - Part Superior" + +msgid "Camera view - Bottom" +msgstr "Vista de càmera - Part Inferior" + +msgid "Camera view - Front" +msgstr "Vista de càmera - Frontal" + +msgid "Camera view - Behind" +msgstr "Vista de càmera - Darrere" + +msgid "Camera Angle - Left side" +msgstr "Angle de càmera - Costat Esquerre" + +msgid "Camera Angle - Right side" +msgstr "Angle de càmera - Costat Dret" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Augmentar zoom" + +msgid "Zoom out" +msgstr "Reduir zoom" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Mostrar/Amagar quadre de diàleg Configuració de Dispositius 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Activar/Desactivar finestra de Codi-G" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Activar/desactivar el mode de capa única de la barra de desplaçament vertical" + +msgid "Switch between Prepare/Preview" +msgstr "Canviar entre Preparar/Previsualitzar" + +msgid "Collapse/Expand the sidebar" +msgstr "Replegar/Expandir barra lateral" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Mostrar la llista de dreceres de teclat" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -25064,6 +25218,66 @@ 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 "Tab" +#~ msgstr "Pestanya" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Mostra els FPS actuals de la vista a la cantonada superior dreta." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki de Publicar 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Guia en vídeo de Publicar 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Barra d’eines" + +#~ msgid "Switch table page" +#~ msgstr "Canviar de pàgina de taula" + +#~ msgid "Global shortcuts" +#~ msgstr "Dreceres Globals" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Botó central del ratolí" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Orienta/alinea automàticament els objectes seleccionats o tots els objectes. Si hi ha objectes seleccionats, només orientarà/alinearà els seleccionats. En cas contrari, orientarà/alinearà tots els objectes del projecte actual." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Orienta/alinea automàticament tots els objectes de la placa actual." + +#~ msgid "Any arrow" +#~ msgstr "Qualsevol fletxa" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo de Punts de suport SLA" + +#~ msgid "Plater" +#~ msgstr "Plataforma" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Eliminar objectes, peces, modificadors" + +#~ msgid "Objects List" +#~ msgstr "Llista d'Objectes" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code escrit al començament del fitxer de sortida, abans de qualsevol altre contingut. Útil per afegir metadades que el firmware de la impressora llegeix de les primeres línies del fitxer (p. ex. temps d'impressió estimat, ús de filament). Admet espais reservats com {print_time_sec} i {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Temps d'impressió (segons)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Obrir el marcatge ràpid d'accions" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 5518d1d81e..41eeda79fd 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -5976,12 +5976,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Pravý" -msgid "Add" -msgstr "Přidat" - msgid "Add plate" msgstr "Přidat desku" +msgid "Split to objects" +msgstr "Rozdělit na objekty" + +msgid "Add" +msgstr "Přidat" + msgid "Auto orient all/selected objects" msgstr "Automaticky orientovat všechny/vybrané objekty" @@ -5994,9 +5997,6 @@ msgstr "Rozložit všechny objekty" msgid "Arrange objects on selected plates" msgstr "Rozložit objekty na vybraných deskách" -msgid "Split to objects" -msgstr "Rozdělit na objekty" - msgid "Assembly View" msgstr "Zobrazení sestavy" @@ -6054,6 +6054,9 @@ msgstr "Obrys" msgid "Wireframe" msgstr "Drátový model" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Realistické zobrazení" @@ -6599,9 +6602,6 @@ msgstr "Zobrazit obrys kolem vybraného objektu ve 3D scéně." msgid "Preferences" msgstr "Předvolby" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6610,6 +6610,9 @@ msgstr "Upravit" msgid "View" msgstr "Zobrazit" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Balík předvoleb" @@ -8436,10 +8439,6 @@ msgstr "Rozbalit postranní panel" msgid "Collapse sidebar" msgstr "Sbalit postranní panel" -# AI Translated -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Načítání souboru: %s" @@ -9463,10 +9462,10 @@ msgstr "Správa více zařízení" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Pokud je tato volba povolena, můžete odeslat úlohu na více zařízení současně a spravovat více zařízení." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9606,6 +9605,15 @@ msgstr "Tažení pravým tlačítkem myši" msgid "Set the action that dragging the right mouse button should perform." msgstr "Nastavte akci, kterou má provádět tažení pravým tlačítkem myši." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Vymazat mou volbu pro..." @@ -9730,13 +9738,40 @@ msgstr "" "Omezuje snímkovou frekvenci zobrazení, aby se snížila zátěž GPU a spotřeba energie.\n" "Nastavte 0 pro neomezenou snímkovou frekvenci." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "Zobrazit překryv s FPS" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Zobrazuje aktuální FPS zobrazení v pravém horním rohu." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10208,13 +10243,8 @@ msgstr "Publikovat 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Vyberte, která nastavení se mají publikovat v souboru 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki k publikování 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Videonávod k publikování 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10417,6 +10447,14 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +# AI Translated +msgid "Show details" +msgstr "Zobrazit podrobnosti" + +# AI Translated +msgid "Hide details" +msgstr "Skrýt podrobnosti" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12321,68 +12359,39 @@ msgstr "Konfigurační balíček byl změněn v předchozím průvodci nastaven msgid "Configuration package changed" msgstr "Balíček konfigurace byl změněn" -msgid "Toolbar" -msgstr "Panel nástrojů" - -msgid "Objects list" -msgstr "Seznam objektů" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importovat geometrická data ze souborů STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Vložit ze schránky" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Zobrazit/Skrýt dialog nastavení zařízení 3Dconnexion" - -msgid "Switch table page" -msgstr "Přepnout stránku tabulky" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Mezerník" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Zobrazit seznam klávesových zkratek" - -msgid "Global shortcuts" -msgstr "Globální klávesové zkratky" - msgid "Pan View" msgstr "Posun pohledu" msgid "Rotate View" msgstr "Otočit pohled" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + # AI Translated -msgid "Middle mouse button" -msgstr "Prostřední tlačítko myši" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Zoom View" -msgstr "Přiblížení pohledu" +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Automaticky orientuje vybrané nebo všechny objekty. Pokud jsou vybrané objekty, orientuje pouze tyto. Jinak orientuje všechny objekty v aktuálním projektu." - -msgid "Auto orients all objects on the active plate." -msgstr "Automaticky orientuje všechny objekty na aktivní desce." - -msgid "Collapse/Expand the sidebar" -msgstr "Sbalit/rozbalit postranní panel" - -msgid "Any arrow" -msgstr "Libovolná šipka" - -msgid "Movement in camera space" -msgstr "Pohyb v prostoru kamery" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Vyberte část" @@ -12393,127 +12402,29 @@ msgstr "Vyberte více objektů" msgid "Select objects by rectangle" msgstr "Vyberte objekty obdélníkem" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Šipka nahoru" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Přesuňte výběr o 10 mm v kladném směru osy Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Šipka dolů" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Přesuňte výběr o 10 mm v záporném směru osy Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Šipka vlevo" - -msgid "Move selection 10mm in negative X direction" -msgstr "Přesuňte výběr o 10 mm v záporném směru osy X" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Šipka vpravo" - -msgid "Move selection 10mm in positive X direction" -msgstr "Přesuňte výběr o 10 mm v kladném směru osy X" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Klávesy 1–9: nastavit filament pro objekt/část" msgid "Movement step set to 1mm" msgstr "Krok pohybu nastaven na 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Klávesy 1–9: nastavit filament pro objekt/část" +msgid "Movement in camera space" +msgstr "Pohyb v prostoru kamery" -msgid "Camera view - Default" -msgstr "Pohled kamery – výchozí" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Pohled kamery – shora" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Pohled kamery – zespodu" +msgid "Zoom View" +msgstr "Přiblížení pohledu" -msgid "Camera view - Front" -msgstr "Pohled kamery – zepředu" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Pohled kamery – zezadu" - -msgid "Camera Angle - Left side" -msgstr "Úhel kamery – levá strana" - -msgid "Camera Angle - Right side" -msgstr "Úhel kamery – pravá strana" - -msgid "Select all objects" -msgstr "Vybrat všechny objekty" - -msgid "Gizmo move" -msgstr "Gizmo posouvat" - -msgid "Gizmo rotate" -msgstr "Gizmo otočit" - -msgid "Gizmo scale" -msgstr "Gizmo změnit měřítko" - -msgid "Gizmo place face on bed" -msgstr "Gizmo umístit plochu na podložku" - -msgid "Gizmo cut" -msgstr "Gizmo řezat" - -# AI Translated -msgid "Gizmo mesh boolean" -msgstr "Gizmo booleovské operace se sítí" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM malování efektu chlupatého povrchu" - -msgid "Gizmo SLA support points" -msgstr "Gizmo SLA podpůrné body" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo FDM malování švu" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo text vystouplý/gravírovaný" - -msgid "Gizmo measure" -msgstr "Gizmo měření" - -msgid "Gizmo assemble" -msgstr "Gizmo sestavit" - -msgid "Gizmo brim ears" -msgstr "Gizmo ouška lemu" - -msgid "Zoom in" -msgstr "Přiblížit" - -msgid "Zoom out" -msgstr "Oddálit" - -msgid "Toggle printable for object/part" -msgstr "Přepnout tisknutelnost objektu/části" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Přepnout mezi Přípravou/Náhledem" - -msgid "Plater" -msgstr "Deska" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Pohyb: stiskněte pro posun o 1 mm" @@ -12524,15 +12435,19 @@ msgstr "Podpora/barva malování: nastavení poloměru pera" msgid "Support/Color Painting: adjust section position" msgstr "Podpora/barva malování: nastavení pozice úseku" -# AI Translated -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Seznam objektů" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Nastavit číslo extruderu pro objekty a části" -msgid "Delete objects, parts, modifiers" -msgstr "Smazat objekty, části, modifikátory" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Mezerník" msgid "Select the object/part and press space to change the name" msgstr "Vyberte objekt/část a stiskněte mezerník pro změnu názvu" @@ -12543,45 +12458,48 @@ msgstr "Kliknutí myší" msgid "Select the object/part and mouse click to change the name" msgstr "Vyberte objekt/část a klikněte myší pro změnu názvu" -msgid "Objects List" -msgstr "Seznam objektů" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Vertikální posuvník – Posuňte aktivní jezdec nahoru" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Vertikální posuvník – posuňte aktivní jezdec dolů" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Vodorovný posuvník – posunout aktivní jezdec vlevo" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Vodorovný posuvník – posunout aktivní jezdec vpravo" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Zapnout/vypnout režim jedné vrstvy na vertikálním posuvníku" - -msgid "On/Off G-code window" -msgstr "Zapnout/vypnout okno G-code" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Posouvejte posuvník 5× rychleji" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Vodorovný posuvník – přesunout na začátek" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Vodorovný posuvník – přesunout na poslední pozici" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Poznámky k vydání" @@ -17532,8 +17450,8 @@ msgstr "Kroky předehřevu" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Vložte více příkazů pro předehřev (např. M104.1). Pouze pro Prusa XL. U ostatních tiskáren nastavte na 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code zapsaný na úplný začátek výstupního souboru před jakýkoli další obsah. Užitečné pro přidání metadat, která firmware tiskárny čte z prvních řádků souboru (např. odhadovaná doba tisku nebo spotřeba filamentu). Podporuje zástupné proměnné jako {print_time_sec} a {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" # AI Translated msgid "Start G-code" @@ -19075,12 +18993,36 @@ msgstr "Použitý filament" msgid "Total length of filament used in the print." msgstr "Celková délka filamentu použitého při tisku." -msgid "Print time (seconds)" -msgstr "Doba tisku (sekundy)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Celková odhadovaná doba tisku v sekundách. Během následného zpracování bude nahrazena skutečnou hodnotou." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Délka filamentu (metry)" @@ -20950,6 +20892,9 @@ msgstr "Nebyla zjištěna platná relace. Pokračovat přihlášením do 3DPrint msgid "Success!" msgstr "Úspěch!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Opravdu se chcete odhlásit?" @@ -22041,14 +21986,6 @@ msgstr "Síťový plug-in Bambu je nutný pro cloudové funkce, vyhledávání t msgid "Error: %s" msgstr "Chyba: %s" -# AI Translated -msgid "Show details" -msgstr "Zobrazit podrobnosti" - -# AI Translated -msgid "Hide details" -msgstr "Skrýt podrobnosti" - # AI Translated msgid "Version to install:" msgstr "Verze k instalaci:" @@ -24731,6 +24668,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24743,6 +24686,217 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Šipka vlevo" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Šipka vpravo" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Šipka nahoru" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Šipka dolů" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importovat geometrická data ze souborů STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Vybrat všechny objekty" + +msgid "Paste from clipboard" +msgstr "Vložit ze schránky" + +msgid "Toggle printable for object/part" +msgstr "Přepnout tisknutelnost objektu/části" + +msgid "Move selection 10mm in negative X direction" +msgstr "Přesuňte výběr o 10 mm v záporném směru osy X" + +msgid "Move selection 10mm in positive X direction" +msgstr "Přesuňte výběr o 10 mm v kladném směru osy X" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Přesuňte výběr o 10 mm v kladném směru osy Y" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Přesuňte výběr o 10 mm v záporném směru osy Y" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo posouvat" + +msgid "Gizmo rotate" +msgstr "Gizmo otočit" + +msgid "Gizmo scale" +msgstr "Gizmo změnit měřítko" + +msgid "Gizmo place face on bed" +msgstr "Gizmo umístit plochu na podložku" + +msgid "Gizmo cut" +msgstr "Gizmo řezat" + +# AI Translated +msgid "Gizmo mesh boolean" +msgstr "Gizmo booleovské operace se sítí" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo FDM malování švu" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM malování efektu chlupatého povrchu" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo text vystouplý/gravírovaný" + +msgid "Gizmo measure" +msgstr "Gizmo měření" + +msgid "Gizmo assemble" +msgstr "Gizmo sestavit" + +msgid "Gizmo brim ears" +msgstr "Gizmo ouška lemu" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Vertikální posuvník – Posuňte aktivní jezdec nahoru" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Vertikální posuvník – posuňte aktivní jezdec dolů" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Vodorovný posuvník – posunout aktivní jezdec vlevo" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Vodorovný posuvník – posunout aktivní jezdec vpravo" + +msgid "Horizontal slider - Move to start position" +msgstr "Vodorovný posuvník – přesunout na začátek" + +msgid "Horizontal slider - Move to last position" +msgstr "Vodorovný posuvník – přesunout na poslední pozici" + +msgid "Camera view - Default" +msgstr "Pohled kamery – výchozí" + +msgid "Camera view - Top" +msgstr "Pohled kamery – shora" + +msgid "Camera view - Bottom" +msgstr "Pohled kamery – zespodu" + +msgid "Camera view - Front" +msgstr "Pohled kamery – zepředu" + +msgid "Camera view - Behind" +msgstr "Pohled kamery – zezadu" + +msgid "Camera Angle - Left side" +msgstr "Úhel kamery – levá strana" + +msgid "Camera Angle - Right side" +msgstr "Úhel kamery – pravá strana" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Přiblížit" + +msgid "Zoom out" +msgstr "Oddálit" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Zobrazit/Skrýt dialog nastavení zařízení 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Zapnout/vypnout okno G-code" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Zapnout/vypnout režim jedné vrstvy na vertikálním posuvníku" + +msgid "Switch between Prepare/Preview" +msgstr "Přepnout mezi Přípravou/Náhledem" + +msgid "Collapse/Expand the sidebar" +msgstr "Sbalit/rozbalit postranní panel" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Zobrazit seznam klávesových zkratek" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -25045,6 +25199,66 @@ 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 "Tab" +#~ msgstr "Tab" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Zobrazuje aktuální FPS zobrazení v pravém horním rohu." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki k publikování 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Videonávod k publikování 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Panel nástrojů" + +#~ msgid "Switch table page" +#~ msgstr "Přepnout stránku tabulky" + +#~ msgid "Global shortcuts" +#~ msgstr "Globální klávesové zkratky" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Prostřední tlačítko myši" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Automaticky orientuje vybrané nebo všechny objekty. Pokud jsou vybrané objekty, orientuje pouze tyto. Jinak orientuje všechny objekty v aktuálním projektu." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Automaticky orientuje všechny objekty na aktivní desce." + +#~ msgid "Any arrow" +#~ msgstr "Libovolná šipka" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo SLA podpůrné body" + +#~ msgid "Plater" +#~ msgstr "Deska" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Smazat objekty, části, modifikátory" + +#~ msgid "Objects List" +#~ msgstr "Seznam objektů" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code zapsaný na úplný začátek výstupního souboru před jakýkoli další obsah. Užitečné pro přidání metadat, která firmware tiskárny čte z prvních řádků souboru (např. odhadovaná doba tisku nebo spotřeba filamentu). Podporuje zástupné proměnné jako {print_time_sec} a {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Doba tisku (sekundy)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Otevřít rychlou nabídku akcí" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 4957eef170..62fa086efa 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -5873,12 +5873,15 @@ msgctxt "Camera View" msgid "Right" msgstr "rechts" -msgid "Add" -msgstr "Hinzufügen" - msgid "Add plate" msgstr "Druckplatte hinzufügen" +msgid "Split to objects" +msgstr "In Objekte trennen" + +msgid "Add" +msgstr "Hinzufügen" + msgid "Auto orient all/selected objects" msgstr "Alle/ausgewählte Objekte automatische Ausrichtung" @@ -5891,9 +5894,6 @@ msgstr "Alle Objekte anordnen" msgid "Arrange objects on selected plates" msgstr "Objekte auf ausgewählten Druckplatten anordnen" -msgid "Split to objects" -msgstr "In Objekte trennen" - msgid "Assembly View" msgstr "Montageansicht" @@ -5949,6 +5949,9 @@ msgstr "Umriss" msgid "Wireframe" msgstr "Gittermodell" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Realistische Ansicht" @@ -6487,9 +6490,6 @@ msgstr "Kontur um das ausgewählte Objekt in der 3D-Szene anzeigen." msgid "Preferences" msgstr "Einstellungen" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6498,6 +6498,9 @@ msgstr "Bearbeiten" msgid "View" msgstr "Ansicht" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Vorlagen-Bundle" @@ -8304,10 +8307,6 @@ msgstr "Seitenleiste erweitern" msgid "Collapse sidebar" msgstr "Seitenleiste reduzieren" -# AI Translated -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Datei wird geladen: %s" @@ -9334,10 +9333,10 @@ msgstr "Multi-Geräte-Verwaltung" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Wenn diese Option aktiviert ist, können Sie eine Aufgabe gleichzeitig an mehrere Geräte senden und mehrere Geräte verwalten." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9469,6 +9468,15 @@ msgstr "Rechte Maustaste drücken" msgid "Set the action that dragging the right mouse button should perform." msgstr "Legen Sie die Aktion fest, die das Ziehen der rechten Maustaste ausführen soll." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Meine Auswahl löschen bei ..." @@ -9579,11 +9587,39 @@ msgstr "" "Begrenzt die Bildrate des Viewports, um die GPU-Auslastung und den Energieverbrauch zu reduzieren.\n" "Auf 0 setzen für unbegrenzte Bildrate." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "FPS-Overlay anzeigen" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Zeigt die aktuelle FPS des Viewports in der oberen rechten Ecke an." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10042,13 +10078,8 @@ msgstr "3MF veröffentlichen..." msgid "Select which settings to be published in the 3MF file" msgstr "Wählen Sie aus, welche Einstellungen in der 3MF-Datei veröffentlicht werden" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki: 3MF veröffentlichen" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Videoanleitung: 3MF veröffentlichen" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10250,6 +10281,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Zeige Details" + +# AI Translated +msgid "Hide details" +msgstr "Details ausblenden" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12080,67 +12118,39 @@ msgstr "Das Konfigurationspaket wurde im vorherigen Konfigurationsleitfaden geä msgid "Configuration package changed" msgstr "Konfigurationspaket geändert" -msgid "Toolbar" -msgstr "Werkzeugleiste" - -msgid "Objects list" -msgstr "Liste der Objekte" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importiere Geometriedaten aus STL/STEP/3MF/OBJ/AMF-Dateien" - -msgid "Paste from clipboard" -msgstr "Aus Zwischenablage einfügen" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Dialogfeld für 3Dconnexion Geräteeinstellungen anzeigen/ausblenden" - -msgid "Switch table page" -msgstr "Seitenwechsel" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Leertaste" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Liste der Tastaturkürzel anzeigen" - -msgid "Global shortcuts" -msgstr "Globale Tastaturkürzel" - msgid "Pan View" msgstr "Ansicht verschieben" msgid "Rotate View" msgstr "Ansicht drehen" -msgid "Middle mouse button" -msgstr "Mittlere Maustaste" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Ansicht zoomen" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Diese Funktion richtet ausgewählte Objekte oder alle Objekte automatisch aus. Wenn es ausgewählte Objekte gibt, werden nur die ausgewählten Objekte ausgerichtet. Andernfalls werden alle Objekte auf das aktuelle Projekt ausgerichtet." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Diese Funktion richtet alle Objekte auf der aktuellen Druckplatte ausgerichtet." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Seitenleiste zu-/aufklappen" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "Beliebiger Pfeil" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Bewegung im Kameraraum" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Teil auswählen" @@ -12151,126 +12161,29 @@ msgstr "Mehrere Objekte auswählen" msgid "Select objects by rectangle" msgstr "Objekte per Rechteck auswählen" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Pfeil nach oben" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Auswahl 10 mm in positiver Y-Richtung verschieben" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Pfeil nach unten" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Auswahl 10 mm in negativer Y-Richtung verschieben" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Pfeil nach links" - -msgid "Move selection 10mm in negative X direction" -msgstr "Auswahl 10 mm in negativer X-Richtung verschieben" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Pfeil nach rechts" - -msgid "Move selection 10mm in positive X direction" -msgstr "Auswahl 10 mm in positiver X-Richtung verschieben" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Tastatur 1-9: Filament für Objekt/Teil einstellen" msgid "Movement step set to 1mm" msgstr "Bewegungsschritt auf 1 mm eingestellt" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Tastatur 1-9: Filament für Objekt/Teil einstellen" +msgid "Movement in camera space" +msgstr "Bewegung im Kameraraum" -msgid "Camera view - Default" -msgstr "Kameraperspektive - Standard" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Kameraperspektive - Oben" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Kameraperspektive - Unten" +msgid "Zoom View" +msgstr "Ansicht zoomen" -msgid "Camera view - Front" -msgstr "Kameraperspektive - Vorderseite" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Kameraperspektive - Hinten" - -msgid "Camera Angle - Left side" -msgstr "Kameraperspektive - Links" - -msgid "Camera Angle - Right side" -msgstr "Kameraperspektive - Rechts" - -msgid "Select all objects" -msgstr "Alle Objekte auswählen" - -msgid "Gizmo move" -msgstr "Bewegen" - -msgid "Gizmo rotate" -msgstr "Rotieren" - -msgid "Gizmo scale" -msgstr "Skalieren" - -msgid "Gizmo place face on bed" -msgstr "Fläche auf druckbett platzieren" - -msgid "Gizmo cut" -msgstr "Trennen" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo mesh-boolesche" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "FDM Pinsel auf Fuzzy Oberfläche" - -msgid "Gizmo SLA support points" -msgstr "SLA Stützpunkte" - -msgid "Gizmo FDM paint-on seam" -msgstr "FDM Naht aufmalen" - -msgid "Gizmo text emboss/engrave" -msgstr "Text prägen/gravieren" - -msgid "Gizmo measure" -msgstr "Gizmo messen" - -msgid "Gizmo assemble" -msgstr "Gizmo Zusammenbauen" - -msgid "Gizmo brim ears" -msgstr "Gizmo mausohren" - -msgid "Zoom in" -msgstr "Vergrößern" - -msgid "Zoom out" -msgstr "Verkleinern" - -msgid "Toggle printable for object/part" -msgstr "Druckbar für Objekt/Teil umschalten" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Zwischen Vorbereiten/ Vorschau wechseln" - -msgid "Plater" -msgstr "Druckplatte" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Verschieben: Drücken, um in 1 mm einzurasten" @@ -12281,14 +12194,19 @@ msgstr "Stützen/Farbmalen: Stiftradius einstellen" msgid "Support/Color Painting: adjust section position" msgstr "Stützen/Farbmalen: Position des Abschnitts anpassen" -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Liste der Objekte" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Extrudernummer für die Objekte und Teile einstellen" -msgid "Delete objects, parts, modifiers" -msgstr "Objekte, Teile, Modifikatoren löschen" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Leertaste" msgid "Select the object/part and press space to change the name" msgstr "Wähle das Objekt/Teil aus und drücke die Leertaste, um den Namen zu ändern" @@ -12299,45 +12217,48 @@ msgstr "Mausklick" msgid "Select the object/part and mouse click to change the name" msgstr "Wähle das Objekt/Teil aus und klicke mit der Maus, um den Namen zu ändern" -msgid "Objects List" -msgstr "Objektliste" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Vertikaler Schieberegler - Aktiven Schieber nach oben bewegen" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Vertikaler Schieberegler - Aktiven Schieber nach unten bewegen" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Horizontaler Schieberegler - Aktiven Schieber nach links bewegen" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Horizontaler Schieberegler - Aktiven Schieber nach rechts bewegen" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Ein/Aus Einschichtmodus des vertikalen Schiebereglers" - -msgid "On/Off G-code window" -msgstr "Ein-/Ausblenden des G-Code-Fensters" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Schieberegler 5x schneller bewegen" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Pos1" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Horizontaler Schieberegler - Zur Startposition bewegen" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "Ende" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Horizontaler Schieberegler - Zur letzten Position bewegen" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Hinweis zur Veröffentlichung" @@ -17194,8 +17115,8 @@ msgstr "Vorheizschritte" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Fügen Sie mehrere Vorheizbefehle ein (z.B. M104.1). Nur nützlich für Prusa XL. Für andere Drucker bitte auf 1 setzen." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-Code, der ganz oben in die Ausgabedatei geschrieben wird, vor allen anderen Inhalten. Nützlich zum Hinzufügen von Metadaten, die die Druckerfirmware aus den ersten Zeilen der Datei liest (z.B. geschätzte Druckzeit, Filamentverbrauch). Unterstützt Platzhalter wie {print_time_sec} und {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" # AI Translated msgid "Start G-code" @@ -18724,12 +18645,36 @@ msgstr "Genutztes Filament" msgid "Total length of filament used in the print." msgstr "Gesamtlänge des im Druck verwendeten Filaments." -msgid "Print time (seconds)" -msgstr "Druckzeit (Sekunden)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Gesammt geschätzte Druckzeit in Sekunden. Ersetzt durch den tatsächlichen Wert während der Nachbearbeitung." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Filamentlänge (Meter)" @@ -20563,6 +20508,9 @@ msgstr "Keine gültige Sitzung erkannt. Mit dem Login bei 3DPrinterOS fortfahren msgid "Success!" msgstr "Erfolgreich!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Sind Sie sicher, dass Sie sich abmelden möchten?" @@ -21518,13 +21466,6 @@ msgstr "Das Bambu Netzwerk Plug-in ist erforderlich für Cloud-Funktionen, Druck msgid "Error: %s" msgstr "Fehler: %s" -msgid "Show details" -msgstr "Zeige Details" - -# AI Translated -msgid "Hide details" -msgstr "Details ausblenden" - msgid "Version to install:" msgstr "Version zum Installieren:" @@ -24155,6 +24096,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24167,6 +24114,216 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Pos1" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "Ende" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Pfeil nach links" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Pfeil nach rechts" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Pfeil nach oben" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Pfeil nach unten" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importiere Geometriedaten aus STL/STEP/3MF/OBJ/AMF-Dateien" + +msgid "Select all objects" +msgstr "Alle Objekte auswählen" + +msgid "Paste from clipboard" +msgstr "Aus Zwischenablage einfügen" + +msgid "Toggle printable for object/part" +msgstr "Druckbar für Objekt/Teil umschalten" + +msgid "Move selection 10mm in negative X direction" +msgstr "Auswahl 10 mm in negativer X-Richtung verschieben" + +msgid "Move selection 10mm in positive X direction" +msgstr "Auswahl 10 mm in positiver X-Richtung verschieben" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Auswahl 10 mm in positiver Y-Richtung verschieben" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Auswahl 10 mm in negativer Y-Richtung verschieben" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Bewegen" + +msgid "Gizmo rotate" +msgstr "Rotieren" + +msgid "Gizmo scale" +msgstr "Skalieren" + +msgid "Gizmo place face on bed" +msgstr "Fläche auf druckbett platzieren" + +msgid "Gizmo cut" +msgstr "Trennen" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo mesh-boolesche" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "FDM Naht aufmalen" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "FDM Pinsel auf Fuzzy Oberfläche" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Text prägen/gravieren" + +msgid "Gizmo measure" +msgstr "Gizmo messen" + +msgid "Gizmo assemble" +msgstr "Gizmo Zusammenbauen" + +msgid "Gizmo brim ears" +msgstr "Gizmo mausohren" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Vertikaler Schieberegler - Aktiven Schieber nach oben bewegen" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Vertikaler Schieberegler - Aktiven Schieber nach unten bewegen" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Horizontaler Schieberegler - Aktiven Schieber nach links bewegen" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Horizontaler Schieberegler - Aktiven Schieber nach rechts bewegen" + +msgid "Horizontal slider - Move to start position" +msgstr "Horizontaler Schieberegler - Zur Startposition bewegen" + +msgid "Horizontal slider - Move to last position" +msgstr "Horizontaler Schieberegler - Zur letzten Position bewegen" + +msgid "Camera view - Default" +msgstr "Kameraperspektive - Standard" + +msgid "Camera view - Top" +msgstr "Kameraperspektive - Oben" + +msgid "Camera view - Bottom" +msgstr "Kameraperspektive - Unten" + +msgid "Camera view - Front" +msgstr "Kameraperspektive - Vorderseite" + +msgid "Camera view - Behind" +msgstr "Kameraperspektive - Hinten" + +msgid "Camera Angle - Left side" +msgstr "Kameraperspektive - Links" + +msgid "Camera Angle - Right side" +msgstr "Kameraperspektive - Rechts" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Vergrößern" + +msgid "Zoom out" +msgstr "Verkleinern" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Dialogfeld für 3Dconnexion Geräteeinstellungen anzeigen/ausblenden" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Ein-/Ausblenden des G-Code-Fensters" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Ein/Aus Einschichtmodus des vertikalen Schiebereglers" + +msgid "Switch between Prepare/Preview" +msgstr "Zwischen Vorbereiten/ Vorschau wechseln" + +msgid "Collapse/Expand the sidebar" +msgstr "Seitenleiste zu-/aufklappen" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Liste der Tastaturkürzel anzeigen" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24467,6 +24624,63 @@ 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 "Tab" +#~ msgstr "Tab" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Zeigt die aktuelle FPS des Viewports in der oberen rechten Ecke an." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki: 3MF veröffentlichen" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Videoanleitung: 3MF veröffentlichen" + +#~ msgid "Toolbar" +#~ msgstr "Werkzeugleiste" + +#~ msgid "Switch table page" +#~ msgstr "Seitenwechsel" + +#~ msgid "Global shortcuts" +#~ msgstr "Globale Tastaturkürzel" + +#~ msgid "Middle mouse button" +#~ msgstr "Mittlere Maustaste" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Diese Funktion richtet ausgewählte Objekte oder alle Objekte automatisch aus. Wenn es ausgewählte Objekte gibt, werden nur die ausgewählten Objekte ausgerichtet. Andernfalls werden alle Objekte auf das aktuelle Projekt ausgerichtet." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Diese Funktion richtet alle Objekte auf der aktuellen Druckplatte ausgerichtet." + +#~ msgid "Any arrow" +#~ msgstr "Beliebiger Pfeil" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "SLA Stützpunkte" + +#~ msgid "Plater" +#~ msgstr "Druckplatte" + +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Objekte, Teile, Modifikatoren löschen" + +#~ msgid "Objects List" +#~ msgstr "Objektliste" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-Code, der ganz oben in die Ausgabedatei geschrieben wird, vor allen anderen Inhalten. Nützlich zum Hinzufügen von Metadaten, die die Druckerfirmware aus den ersten Zeilen der Datei liest (z.B. geschätzte Druckzeit, Filamentverbrauch). Unterstützt Platzhalter wie {print_time_sec} und {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Druckzeit (Sekunden)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Aktions-Schnellwahl öffnen" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 080cae9632..12ae826e67 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-06-17 15:44-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -5550,10 +5550,13 @@ msgctxt "Camera View" msgid "Right" msgstr "" -msgid "Add" +msgid "Add plate" msgstr "" -msgid "Add plate" +msgid "Split to objects" +msgstr "" + +msgid "Add" msgstr "" msgid "Auto orient all/selected objects" @@ -5568,9 +5571,6 @@ msgstr "" msgid "Arrange objects on selected plates" msgstr "" -msgid "Split to objects" -msgstr "" - msgid "Assembly View" msgstr "" @@ -5625,6 +5625,9 @@ msgstr "" msgid "Wireframe" msgstr "" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "" @@ -6154,9 +6157,6 @@ msgstr "" msgid "Preferences" msgstr "" -msgid "Open speed dial..." -msgstr "" - msgctxt "Menu" msgid "Edit" msgstr "" @@ -6164,6 +6164,9 @@ msgstr "" msgid "View" msgstr "" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "" @@ -7882,9 +7885,6 @@ msgstr "" msgid "Collapse sidebar" msgstr "" -msgid "Tab" -msgstr "" - #, c-format, boost-format msgid "Loading file: %s" msgstr "" @@ -8823,10 +8823,10 @@ msgstr "" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "" -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -8952,6 +8952,15 @@ msgstr "" msgid "Set the action that dragging the right mouse button should perform." msgstr "" +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "" @@ -9045,10 +9054,38 @@ msgid "" "Set to 0 for unlimited frame rate." msgstr "" +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "" -msgid "Displays current viewport FPS in the top-right corner." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." msgstr "" msgid "G-code Preview" @@ -9476,10 +9513,7 @@ msgstr "" msgid "Select which settings to be published in the 3MF file" msgstr "" -msgid "Publish 3MF Wiki" -msgstr "" - -msgid "Publish 3MF Video Guide" +msgid "Video Guide" msgstr "" msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -9671,6 +9705,12 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "" + +msgid "Hide details" +msgstr "" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -11369,65 +11409,37 @@ msgstr "" msgid "Configuration package changed" msgstr "" -msgid "Toolbar" -msgstr "" - -msgid "Objects list" -msgstr "" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "" - -msgid "Paste from clipboard" -msgstr "" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "" - -msgid "Switch table page" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "" - -msgid "Global shortcuts" -msgstr "" - msgid "Pan View" msgstr "" msgid "Rotate View" msgstr "" -msgid "Middle mouse button" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." msgstr "" -msgid "Zoom View" +msgctxt "Keyboard Shortcut" +msgid "Key" msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +msgid "Left mouse" msgstr "" -msgid "Auto orients all objects on the active plate." +msgid "Available anywhere in the window, even while typing in a text field." msgstr "" -msgid "Collapse/Expand the sidebar" +msgid "Run a speed dial favorite while the dial is open" msgstr "" -msgid "Any arrow" +msgctxt "Keyboard Shortcut" +msgid "Tab" msgstr "" -msgid "Movement in camera space" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." msgstr "" msgid "Select a part" @@ -11439,120 +11451,28 @@ msgstr "" msgid "Select objects by rectangle" msgstr "" -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "" - -msgid "Move selection 10mm in positive Y direction" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "" - -msgid "Move selection 10mm in negative Y direction" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "" - -msgid "Move selection 10mm in negative X direction" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "" - -msgid "Move selection 10mm in positive X direction" +msgid "Keyboard 1-9: set filament for object/part" msgstr "" msgid "Movement step set to 1mm" msgstr "" -msgid "Keyboard 1-9: set filament for object/part" +msgid "Movement in camera space" msgstr "" -msgid "Camera view - Default" +msgid "Middle mouse" msgstr "" -msgid "Camera view - Top" +msgid "Right mouse" msgstr "" -msgid "Camera view - Bottom" +msgid "Zoom View" msgstr "" -msgid "Camera view - Front" +msgid "Painting" msgstr "" -msgid "Camera view - Behind" -msgstr "" - -msgid "Camera Angle - Left side" -msgstr "" - -msgid "Camera Angle - Right side" -msgstr "" - -msgid "Select all objects" -msgstr "" - -msgid "Gizmo move" -msgstr "" - -msgid "Gizmo rotate" -msgstr "" - -msgid "Gizmo scale" -msgstr "" - -msgid "Gizmo place face on bed" -msgstr "" - -msgid "Gizmo cut" -msgstr "" - -msgid "Gizmo mesh boolean" -msgstr "" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "" - -msgid "Gizmo SLA support points" -msgstr "" - -msgid "Gizmo FDM paint-on seam" -msgstr "" - -msgid "Gizmo text emboss/engrave" -msgstr "" - -msgid "Gizmo measure" -msgstr "" - -msgid "Gizmo assemble" -msgstr "" - -msgid "Gizmo brim ears" -msgstr "" - -msgid "Zoom in" -msgstr "" - -msgid "Zoom out" -msgstr "" - -msgid "Toggle printable for object/part" -msgstr "" - -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "" - -msgid "Switch between Prepare/Preview" -msgstr "" - -msgid "Plater" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." msgstr "" msgid "Move: press to snap by 1mm" @@ -11564,13 +11484,17 @@ msgstr "" msgid "Support/Color Painting: adjust section position" msgstr "" -msgid "Gizmo" +msgid "Objects list" +msgstr "" + +msgid "Available while the object list has focus." msgstr "" msgid "Set extruder number for the objects and parts" msgstr "" -msgid "Delete objects, parts, modifiers" +msgctxt "Keyboard Shortcut" +msgid "Space" msgstr "" msgid "Select the object/part and press space to change the name" @@ -11582,42 +11506,47 @@ msgstr "" msgid "Select the object/part and mouse click to change the name" msgstr "" -msgid "Objects List" -msgstr "" - -msgid "Vertical slider - Move active thumb Up" -msgstr "" - -msgid "Vertical slider - Move active thumb Down" -msgstr "" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "" - -msgid "On/Off G-code window" +msgid "Available while the 3D view on the Preview tab has focus." msgstr "" msgid "Move slider 5x faster" msgstr "" -msgctxt "Keyboard Shortcut" -msgid "Home" +msgid "Scroll slider 5x faster" msgstr "" -msgid "Horizontal slider - Move to start position" +msgid "Not customizable" msgstr "" -msgctxt "Keyboard Shortcut" -msgid "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" msgstr "" -msgid "Horizontal slider - Move to last position" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." msgstr "" msgid "Release Note" @@ -15917,7 +15846,7 @@ msgstr "" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "" -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." msgstr "" msgid "Start G-code" @@ -17326,12 +17255,36 @@ msgstr "" msgid "Total length of filament used in the print." msgstr "" -msgid "Print time (seconds)" +msgid "Print time (total seconds)" msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "" +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "" @@ -19012,6 +18965,9 @@ msgstr "" msgid "Success!" msgstr "" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "" @@ -19948,12 +19904,6 @@ msgstr "" msgid "Error: %s" msgstr "" -msgid "Show details" -msgstr "" - -msgid "Hide details" -msgstr "" - msgid "Version to install:" msgstr "" @@ -22532,6 +22482,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -22544,6 +22500,210 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "" + +msgid "Select all objects" +msgstr "" + +msgid "Paste from clipboard" +msgstr "" + +msgid "Toggle printable for object/part" +msgstr "" + +msgid "Move selection 10mm in negative X direction" +msgstr "" + +msgid "Move selection 10mm in positive X direction" +msgstr "" + +msgid "Move selection 10mm in positive Y direction" +msgstr "" + +msgid "Move selection 10mm in negative Y direction" +msgstr "" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "" + +msgid "Gizmo rotate" +msgstr "" + +msgid "Gizmo scale" +msgstr "" + +msgid "Gizmo place face on bed" +msgstr "" + +msgid "Gizmo cut" +msgstr "" + +msgid "Gizmo mesh boolean" +msgstr "" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "" + +msgid "Gizmo measure" +msgstr "" + +msgid "Gizmo assemble" +msgstr "" + +msgid "Gizmo brim ears" +msgstr "" + +msgid "Vertical slider - Move active thumb Up" +msgstr "" + +msgid "Vertical slider - Move active thumb Down" +msgstr "" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "" + +msgid "Horizontal slider - Move to start position" +msgstr "" + +msgid "Horizontal slider - Move to last position" +msgstr "" + +msgid "Camera view - Default" +msgstr "" + +msgid "Camera view - Top" +msgstr "" + +msgid "Camera view - Bottom" +msgstr "" + +msgid "Camera view - Front" +msgstr "" + +msgid "Camera view - Behind" +msgstr "" + +msgid "Camera Angle - Left side" +msgstr "" + +msgid "Camera Angle - Right side" +msgstr "" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "" + +msgid "Zoom out" +msgstr "" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "" + +msgid "Switch between Prepare/Preview" +msgstr "" + +msgid "Collapse/Expand the sidebar" +msgstr "" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 5d864aa200..4c2a634e3c 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -5729,12 +5729,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Derecha" -msgid "Add" -msgstr "Añadir" - msgid "Add plate" msgstr "Añadir cama" +msgid "Split to objects" +msgstr "Separar en objetos" + +msgid "Add" +msgstr "Añadir" + msgid "Auto orient all/selected objects" msgstr "Orientar automáticamente todos/seleccionados objetos" @@ -5747,9 +5750,6 @@ msgstr "Ordenar todos los objetos" msgid "Arrange objects on selected plates" msgstr "Organizar los objetos en las camas seleccionadas" -msgid "Split to objects" -msgstr "Separar en objetos" - msgid "Assembly View" msgstr "Vista de Emsamblado" @@ -5804,6 +5804,9 @@ msgstr "Contorno" msgid "Wireframe" msgstr "Malla alámbrica" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Vista realista" @@ -6343,9 +6346,6 @@ msgstr "Mostrar el contorno alrededor del objeto seleccionado en la escena 3D." msgid "Preferences" msgstr "Preferencias" -msgid "Open speed dial..." -msgstr "" - msgctxt "Menu" msgid "Edit" msgstr "Edición" @@ -6353,6 +6353,9 @@ msgstr "Edición" msgid "View" msgstr "Vista" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Paquete de perfiles" @@ -8109,9 +8112,6 @@ msgstr "Expandir barra lateral" msgid "Collapse sidebar" msgstr "Colapsar barra lateral" -msgid "Tab" -msgstr "Pestaña" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Cargando archivo: %s" @@ -9102,10 +9102,10 @@ msgstr "Gestión multidispositivo" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Con esta opción activada, puede enviar una tarea a varios dispositivos al mismo tiempo y gestionar varios dispositivos." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9237,6 +9237,15 @@ msgstr "Arrastrar con el botón derecho del ratón" msgid "Set the action that dragging the right mouse button should perform." msgstr "Establece la acción que se debe realizar al arrastrar el botón derecho del ratón." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Limpiar mi elección en..." @@ -9345,11 +9354,39 @@ msgstr "" "Limita la frecuencia de fotogramas de la ventana gráfica para reducir la carga de la GPU y el consumo de energía.\n" "Establece el valor en 0 para una frecuencia de fotogramas ilimitada." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "Mostrar FPS en pantalla" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Muestra los FPS en la esquina superior derecha." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" msgid "G-code Preview" msgstr "Vista previa del G-code" @@ -9800,13 +9837,8 @@ msgstr "Publicar 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Seleccione qué ajustes se publicarán en el archivo 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki de Publicar 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Guía en vídeo de Publicar 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10008,6 +10040,12 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Mostrar detalles" + +msgid "Hide details" +msgstr "Ocultar detalles" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -11783,66 +11821,38 @@ msgstr "El paquete de configuración se cambia en la Guía de configuración ant msgid "Configuration package changed" msgstr "Paquete de configuración cambiado" -msgid "Toolbar" -msgstr "Barra de herramientas" - -msgid "Objects list" -msgstr "Lista de objetos" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importar datos de geometría de los archivos STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Pegar desde el portapapeles" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Mostrar/Ocultar el diálogo de ajustes de los dispositivos 3Dconnexion" - -msgid "Switch table page" -msgstr "Cambiar de página de tabla" - -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Espacio" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Muestra lista de atajos de teclado" - -msgid "Global shortcuts" -msgstr "Atajos globales" - msgid "Pan View" msgstr "Movimiento de la vista" msgid "Rotate View" msgstr "Rotación de vista" -msgid "Middle mouse button" -msgstr "Botón central del ratón" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Zoom de vista" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Orienta automáticamente los objetos seleccionados o todos los objetos. Si hay objetos seleccionados, sólo orienta los seleccionados. En caso contrario, orientará todos los objetos del proyecto actual." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Orienta automáticamente todos los objetos de la placa actual." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Ocultar/Expandir barra lateral" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "⌘+Cualquier flecha" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Movimiento en el espacio de la cámara" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Seleccionar una pieza" @@ -11853,121 +11863,29 @@ msgstr "Seleccionar varios objetos" msgid "Select objects by rectangle" msgstr "Seleccionar objetos por rectángulo" -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Flecha arriba" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Mover la selección 10 mm en dirección Y positiva" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Flecha abajo" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Mover la selección 10 mm en dirección Y negativa" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Flecha izquierda" - -msgid "Move selection 10mm in negative X direction" -msgstr "Mover la selección 10 mm en dirección X negativa" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Flecha derecha" - -msgid "Move selection 10mm in positive X direction" -msgstr "Mover la selección 10 mm en dirección X positiva" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Teclado 1-9: ajustar el filamento para el objeto/pieza" msgid "Movement step set to 1mm" msgstr "Paso de movimiento configurado a 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Teclado 1-9: ajustar el filamento para el objeto/pieza" +msgid "Movement in camera space" +msgstr "Movimiento en el espacio de la cámara" -msgid "Camera view - Default" -msgstr "Vista de la cámara - Por defecto" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Vista de la cámara - Parte Superior" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Vista de la cámara - Parte inferior" +msgid "Zoom View" +msgstr "Zoom de vista" -msgid "Camera view - Front" -msgstr "Vista de la cámara - Frontal" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Vista de la cámara - Posterior" - -msgid "Camera Angle - Left side" -msgstr "Ángulo de la cámara - Lado izquierdo" - -msgid "Camera Angle - Right side" -msgstr "Ángulo de la cámara - Lado derecho" - -msgid "Select all objects" -msgstr "Seleccionar todos los objetos" - -msgid "Gizmo move" -msgstr "Herramienta de movimiento" - -msgid "Gizmo rotate" -msgstr "Herramienta de rotación" - -msgid "Gizmo scale" -msgstr "Herramienta de escala" - -msgid "Gizmo place face on bed" -msgstr "Herramienta de situar cara en cama" - -msgid "Gizmo cut" -msgstr "Herramienta de corte" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo buleana de malla" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Herramienta FDM para pintar piel rugosa" - -msgid "Gizmo SLA support points" -msgstr "Herramienta de puntos de soporte SLA" - -msgid "Gizmo FDM paint-on seam" -msgstr "Herramienta de pintado de costuras FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "Herramienta de texto en relieve/grabado" - -msgid "Gizmo measure" -msgstr "Gizmo medir" - -msgid "Gizmo assemble" -msgstr "Gizmo ensamblar" - -msgid "Gizmo brim ears" -msgstr "Gizmo orejas de borde" - -msgid "Zoom in" -msgstr "Acercar" - -msgid "Zoom out" -msgstr "Alejar" - -msgid "Toggle printable for object/part" -msgstr "Activar/desactivar la impresión para el objeto/pieza" - -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Cambiar entre Preparar/Previsualizar" - -msgid "Plater" -msgstr "Cama" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Mover: pulsar para ajustar 1mm" @@ -11978,14 +11896,18 @@ msgstr "Soporte/Pintado en color: ajuste del radio del pincel" msgid "Support/Color Painting: adjust section position" msgstr "Soporte/Pintado de color: ajuste de la posición de la sección" -msgid "Gizmo" -msgstr "Herramienta" +msgid "Objects list" +msgstr "Lista de objetos" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Ajustar el número de extrusor para los objetos y las piezas" -msgid "Delete objects, parts, modifiers" -msgstr "Eliminar objetos, piezas, modificadores" +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Espacio" msgid "Select the object/part and press space to change the name" msgstr "Seleccione el objeto/pieza y pulse la barra espaciadora para cambiar el nombre" @@ -11996,43 +11918,48 @@ msgstr "Clic del ratón" msgid "Select the object/part and mouse click to change the name" msgstr "Seleccione el objeto/pieza y haga clic con el ratón para cambiar el nombre" -msgid "Objects List" -msgstr "Lista de Objetos" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Control deslizante vertical - Mover el pulgar activo hacia Arriba" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Control deslizante vertical - Mover el pulgar activo hacia Abajo" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Activar/Desactivar el modo de una capa del control deslizante vertical" - -msgid "On/Off G-code window" -msgstr "Activar/Desactivar ventana de G-Code" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Mover el deslizador 5 veces más rápido" -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Inicio" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Deslizador horizontal - Desplazarse a la posición inicial" +msgid "Not customizable" +msgstr "" -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "Fin" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Deslizador horizontal - Desplazarse a la última posición" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Notas de versión" @@ -16817,8 +16744,8 @@ msgstr "Pasos de precalentamiento" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Insertar múltiples comandos de precalentamiento (por ejemplo, M104.1). Sólo útil para Prusa XL. Para otras impresoras, por favor ajústar a 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code escrito en la parte superior del archivo de salida, antes de cualquier otro contenido. Útil para añadir metadatos que el firmware de la impresora lea desde las primeras líneas del archivo (por ejemplo, tiempo estimado de impresión, uso de filamento). Soporta marcadores como {print_time_sec} y {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "G-Code inicial" @@ -18326,12 +18253,36 @@ msgstr "Filamento usado" msgid "Total length of filament used in the print." msgstr "Longitud total de filamento utilizado en la impresión." -msgid "Print time (seconds)" -msgstr "Tiempo de impresión (segundos)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Tiempo total estimado de impresión en segundos. Reemplazado con valor real durante el post-procesamiento." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Longitud de filamento (metros)" @@ -20165,6 +20116,9 @@ msgstr "No se ha detectado una sesión válida. ¿Desea iniciar sesión en 3DPri msgid "Success!" msgstr "¡Éxito!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "¿Estás seguro de cerrar la sesión?" @@ -21115,12 +21069,6 @@ msgstr "El Plug-in de Bambu Network es necesario para las funciones en la nube, msgid "Error: %s" msgstr "Error: %s" -msgid "Show details" -msgstr "Mostrar detalles" - -msgid "Hide details" -msgstr "Ocultar detalles" - msgid "Version to install:" msgstr "Versión a instalar:" @@ -23704,6 +23652,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -23716,6 +23670,210 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Inicio" + +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "Fin" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Flecha izquierda" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Flecha derecha" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Flecha arriba" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Flecha abajo" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importar datos de geometría de los archivos STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Seleccionar todos los objetos" + +msgid "Paste from clipboard" +msgstr "Pegar desde el portapapeles" + +msgid "Toggle printable for object/part" +msgstr "Activar/desactivar la impresión para el objeto/pieza" + +msgid "Move selection 10mm in negative X direction" +msgstr "Mover la selección 10 mm en dirección X negativa" + +msgid "Move selection 10mm in positive X direction" +msgstr "Mover la selección 10 mm en dirección X positiva" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Mover la selección 10 mm en dirección Y positiva" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Mover la selección 10 mm en dirección Y negativa" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Herramienta de movimiento" + +msgid "Gizmo rotate" +msgstr "Herramienta de rotación" + +msgid "Gizmo scale" +msgstr "Herramienta de escala" + +msgid "Gizmo place face on bed" +msgstr "Herramienta de situar cara en cama" + +msgid "Gizmo cut" +msgstr "Herramienta de corte" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo buleana de malla" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Herramienta de pintado de costuras FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Herramienta FDM para pintar piel rugosa" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Herramienta de texto en relieve/grabado" + +msgid "Gizmo measure" +msgstr "Gizmo medir" + +msgid "Gizmo assemble" +msgstr "Gizmo ensamblar" + +msgid "Gizmo brim ears" +msgstr "Gizmo orejas de borde" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Control deslizante vertical - Mover el pulgar activo hacia Arriba" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Control deslizante vertical - Mover el pulgar activo hacia Abajo" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" + +msgid "Horizontal slider - Move to start position" +msgstr "Deslizador horizontal - Desplazarse a la posición inicial" + +msgid "Horizontal slider - Move to last position" +msgstr "Deslizador horizontal - Desplazarse a la última posición" + +msgid "Camera view - Default" +msgstr "Vista de la cámara - Por defecto" + +msgid "Camera view - Top" +msgstr "Vista de la cámara - Parte Superior" + +msgid "Camera view - Bottom" +msgstr "Vista de la cámara - Parte inferior" + +msgid "Camera view - Front" +msgstr "Vista de la cámara - Frontal" + +msgid "Camera view - Behind" +msgstr "Vista de la cámara - Posterior" + +msgid "Camera Angle - Left side" +msgstr "Ángulo de la cámara - Lado izquierdo" + +msgid "Camera Angle - Right side" +msgstr "Ángulo de la cámara - Lado derecho" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Acercar" + +msgid "Zoom out" +msgstr "Alejar" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Mostrar/Ocultar el diálogo de ajustes de los dispositivos 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Activar/Desactivar ventana de G-Code" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Activar/Desactivar el modo de una capa del control deslizante vertical" + +msgid "Switch between Prepare/Preview" +msgstr "Cambiar entre Preparar/Previsualizar" + +msgid "Collapse/Expand the sidebar" +msgstr "Ocultar/Expandir barra lateral" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Muestra lista de atajos de teclado" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24016,6 +24174,62 @@ msgstr "" "Evita la deformación\n" "¿Sabías que al imprimir materiales propensos a la deformación como el ABS, aumentar adecuadamente la temperatura de la cama térmica puede reducir la probabilidad de deformaciones?" +#~ msgid "Tab" +#~ msgstr "Pestaña" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Muestra los FPS en la esquina superior derecha." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki de Publicar 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Guía en vídeo de Publicar 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Barra de herramientas" + +#~ msgid "Switch table page" +#~ msgstr "Cambiar de página de tabla" + +#~ msgid "Global shortcuts" +#~ msgstr "Atajos globales" + +#~ msgid "Middle mouse button" +#~ msgstr "Botón central del ratón" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Orienta automáticamente los objetos seleccionados o todos los objetos. Si hay objetos seleccionados, sólo orienta los seleccionados. En caso contrario, orientará todos los objetos del proyecto actual." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Orienta automáticamente todos los objetos de la placa actual." + +#~ msgid "Any arrow" +#~ msgstr "⌘+Cualquier flecha" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Herramienta de puntos de soporte SLA" + +#~ msgid "Plater" +#~ msgstr "Cama" + +#~ msgid "Gizmo" +#~ msgstr "Herramienta" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Eliminar objetos, piezas, modificadores" + +#~ msgid "Objects List" +#~ msgstr "Lista de Objetos" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code escrito en la parte superior del archivo de salida, antes de cualquier otro contenido. Útil para añadir metadatos que el firmware de la impresora lea desde las primeras líneas del archivo (por ejemplo, tiempo estimado de impresión, uso de filamento). Soporta marcadores como {print_time_sec} y {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Tiempo de impresión (segundos)" + #~ msgid "Open actions speed dial" #~ msgstr "Abrir el menú rápido de acciones" diff --git a/localization/i18n/eu/OrcaSlicer_eu.po b/localization/i18n/eu/OrcaSlicer_eu.po index a3b02f9e87..c5f7363361 100644 --- a/localization/i18n/eu/OrcaSlicer_eu.po +++ b/localization/i18n/eu/OrcaSlicer_eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-07-20 13:33+0200\n" "Last-Translator: Manu Goiogana \n" "Language-Team: \n" @@ -5779,12 +5779,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Eskuinekoa" -msgid "Add" -msgstr "Gehitu" - msgid "Add plate" msgstr "Plaka gehitu" +msgid "Split to objects" +msgstr "Objektuetan zatitu" + +msgid "Add" +msgstr "Gehitu" + msgid "Auto orient all/selected objects" msgstr "Automatikoki orientatu hautatutako objektuak/objektu guztiak" @@ -5797,9 +5800,6 @@ msgstr "Antolatu objektu guztiak" msgid "Arrange objects on selected plates" msgstr "Antolatu hautatutako plaketako objektu guztiak" -msgid "Split to objects" -msgstr "Objektuetan zatitu" - msgid "Assembly View" msgstr "Multzoaren Ikuspegia" @@ -5854,6 +5854,9 @@ msgstr "Ingerada" msgid "Wireframe" msgstr "Alanbre-egitura" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Ikuspegi errealista" @@ -6389,9 +6392,6 @@ msgstr "Erakutsi hautatutako objektuaren inguruko ingerada 3D eszenan." msgid "Preferences" msgstr "Hobespenak" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6400,6 +6400,9 @@ msgstr "Editatu" msgid "View" msgstr "Bista" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Aurrezarpen-paketea" @@ -8186,9 +8189,6 @@ msgstr "Zabaldu alboko barra" msgid "Collapse sidebar" msgstr "Tolestu alboko barra" -msgid "Tab" -msgstr "Fitxa" - #, c-format, boost-format msgid "Loading file: %s" msgstr "%s fitxategia kargatzen" @@ -9183,10 +9183,10 @@ msgstr "Gailu anitzen kudeaketa" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Aukera hau gaituta, zeregin bat hainbat gailutara bidali eta hainbat gailu kudea ditzakezu aldi berean." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9318,6 +9318,15 @@ msgstr "Saguaren eskuineko botoiarekin arrastatu" msgid "Set the action that dragging the right mouse button should perform." msgstr "Ezarri saguaren eskuineko botoia arrastatzean egin beharreko ekintza." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Garbitu nire aukera hemen..." @@ -9426,11 +9435,39 @@ msgstr "" "Ikuspegiaren fotograma-tasa mugatzen du GPUaren karga eta energia-kontsumoa murrizteko.\n" "Ezarri 0 fotograma-tasa mugagabea erabiltzeko." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "Erakutsi FPS gainjartzea" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Uneko ikuspegiaren FPSa goiko eskuineko izkinan erakusten du." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -9886,13 +9923,8 @@ msgstr "Argitaratu 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Hautatu zein ezarpen argitaratuko diren 3MF fitxategian" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "3MF argitaratzeko wikia" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "3MF argitaratzeko bideo-gida" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10094,6 +10126,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Erakutsi xehetasunak" + +# AI Translated +msgid "Hide details" +msgstr "Ezkutatu xehetasunak" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -11893,67 +11932,39 @@ msgstr "Konfigurazio-paketea aldatu da aurreko Konfigurazio Gidan" msgid "Configuration package changed" msgstr "Konfigurazio-paketea aldatu da" -msgid "Toolbar" -msgstr "Tresna-barra" - -msgid "Objects list" -msgstr "Objektuen zerrenda" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Inportatu geometriaren datuak STL/STEP/3MF/OBJ/AMF fitxategietatik" - -msgid "Paste from clipboard" -msgstr "Itsatsi arbeletik" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Erakutsi/Ezkutatu 3Dconnexion gailuen ezarpenen elkarrizketa-koadroa" - -msgid "Switch table page" -msgstr "Aldatu taula-orria" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Zuriunea" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Erakutsi teklatu-lasterbideen zerrenda" - -msgid "Global shortcuts" -msgstr "Lasterbide globalak" - msgid "Pan View" msgstr "Mugitu ikuspegia" msgid "Rotate View" msgstr "Biratu ikuspegia" -msgid "Middle mouse button" -msgstr "Saguaren erdiko botoia" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Zooma ikuspegian" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Hautatutako objektuak edo objektu guztiak automatikoki orientatzen ditu. Objektuak hautatuta badaude, hautatutakoak bakarrik orientatzen ditu. Bestela, uneko proiektuko objektu guztiak orientatuko ditu." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Objektu guztiak automatikoki orientatzen ditu plaka aktiboan." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Tolestu/Zabaldu alboko barra" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "Edozein gezi" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Mugimendua kameraren espazioan" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Hautatu pieza bat" @@ -11964,126 +11975,29 @@ msgstr "Hautatu objektu bat baino gehiago" msgid "Select objects by rectangle" msgstr "Hautatu objektuak laukizuzen bidez" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Gora gezia" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Mugitu hautapena 10 mm Y noranzko positiboan" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Behera gezia" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Mugitu hautapena 10 mm Y noranzko negatiboan" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Ezkerrera gezia" - -msgid "Move selection 10mm in negative X direction" -msgstr "Mugitu hautapena 10 mm X noranzko negatiboan" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Eskuinera gezia" - -msgid "Move selection 10mm in positive X direction" -msgstr "Mugitu hautapena 10 mm X noranzko positiboan" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "1-9 teklak: ezarri filamentua objektuari/piezari" msgid "Movement step set to 1mm" msgstr "Mugimendu-urratsa 1 mm-an ezarri da" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "1-9 teklak: ezarri filamentua objektuari/piezari" +msgid "Movement in camera space" +msgstr "Mugimendua kameraren espazioan" -msgid "Camera view - Default" -msgstr "Kameraren ikuspegia - Lehenetsia" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Kameraren ikuspegia - Goia" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Kameraren ikuspegia - Behea" +msgid "Zoom View" +msgstr "Zooma ikuspegian" -msgid "Camera view - Front" -msgstr "Kameraren ikuspegia - Aurrea" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Kameraren ikuspegia - Atzea" - -msgid "Camera Angle - Left side" -msgstr "Kameraren angelua - Ezker aldea" - -msgid "Camera Angle - Right side" -msgstr "Kameraren angelua - Eskuin aldea" - -msgid "Select all objects" -msgstr "Hautatu objektu guztiak" - -msgid "Gizmo move" -msgstr "Mugitzeko tresna" - -msgid "Gizmo rotate" -msgstr "Biraketa tresna" - -msgid "Gizmo scale" -msgstr "Eskalarako tresna" - -msgid "Gizmo place face on bed" -msgstr "Aurpegia ohean kokatzeko tresna" - -msgid "Gizmo cut" -msgstr "Ebakitzeko tresna" - -msgid "Gizmo mesh boolean" -msgstr "Sare boolearrerako tresna" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "FDM gainazal zimurra margotzeko tresna" - -msgid "Gizmo SLA support points" -msgstr "SLA euskarri-puntuentzako tresna" - -msgid "Gizmo FDM paint-on seam" -msgstr "FDM josturak margotzeko tresna" - -msgid "Gizmo text emboss/engrave" -msgstr "Testua erliebean/grabatuta ipintzeko tresna" - -msgid "Gizmo measure" -msgstr "Neurtzeko tresna" - -msgid "Gizmo assemble" -msgstr "Muntatzeko tresna" - -msgid "Gizmo brim ears" -msgstr "Belarri ertzen tresna" - -msgid "Zoom in" -msgstr "Zooma handitu" - -msgid "Zoom out" -msgstr "Txikiagotu zooma" - -msgid "Toggle printable for object/part" -msgstr "Txandakatu objektuaren/piezaren inprimagarritasuna" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Aldatu Prestatu/Aurrebista artean" - -msgid "Plater" -msgstr "Plaka-antolatzailea" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Mugitu: sakatu 1 mm-ko jauzietan atxikitzeko" @@ -12094,14 +12008,19 @@ msgstr "Euskarri/Kolore margotzea: doitu boligrafoaren erradioa" msgid "Support/Color Painting: adjust section position" msgstr "Euskarri/Kolore-margotzea: doitu sekzioaren posizioa" -msgid "Gizmo" -msgstr "Tresna" +msgid "Objects list" +msgstr "Objektuen zerrenda" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Ezarri objektuen eta piezen estrusore zenbakia" -msgid "Delete objects, parts, modifiers" -msgstr "Ezabatu objektuak, piezak eta aldatzaileak" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Zuriunea" msgid "Select the object/part and press space to change the name" msgstr "Hautatu objektua/partea eta sakatu zuriunea izena aldatzeko" @@ -12112,45 +12031,48 @@ msgstr "Saguaren klika" msgid "Select the object/part and mouse click to change the name" msgstr "Hautatu objektua/pieza eta egin klik izena aldatzeko" -msgid "Objects List" -msgstr "Objektuen zerrenda" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Graduatzaile bertikala - Mugitu hatz aktiboa gora" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Graduatzaile bertikala - Mugitu hatz aktiboa behera" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Graduatzaile horizontala - Mugitu hatz aktiboa ezkerrera" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Graduatzaile horizontala - Mugitu hatz aktiboa eskuinera" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Aktibatu/Desaktibatu graduatzaile bertikalaren geruza bakarreko modua" - -msgid "On/Off G-code window" -msgstr "G-code leihoa aktibatu/desaktibatu" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Mugitu graduatzailea 5 aldiz azkarrago" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Hasiera" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Graduatzaile horizontala - Mugitu hasierako posiziora" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "Amaiera" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Graduatzaile horizontala - Mugitu azken posiziora" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Argitalpen-oharra" @@ -16987,8 +16909,8 @@ msgstr "Aurrez berotzeko urratsak" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Txertatu aurrez berotzeko hainbat komando (adib. M104.1). Prusa XL-rakobakarrik da erabilgarria. Beste inprimagailuetarako, ezarri 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "Irteerako fitxategiaren hasiera-hasieran idatzitako G-codea, beste edozein eduki baino lehen. Inprimagailuaren firmwareak fitxategiaren lehen lerroetatik irakurtzen dituen metadatuak gehitzeko erabilgarria da (adibidez, zenbatetsitako inprimatze-denbora edo filamentuen erabilera). {print_time_sec} eta {used_filament_length} moduko leku-markak onartzen ditu." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Hasierako G-codea" @@ -18505,12 +18427,36 @@ msgstr "Erabilitako filamentua" msgid "Total length of filament used in the print." msgstr "Inprimaketan erabilitako filamentuen luzera osoa." -msgid "Print time (seconds)" -msgstr "Inprimatze-denbora (segundoak)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Kalkulatutako guztizko inprimatze-denbora, segundotan. Benetako balioarekin ordezten da osteko prozesatzean." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Filamentuaren luzera (metroak)" @@ -20345,6 +20291,9 @@ msgstr "Ez da baliozko saiorik detektatu. 3DPrinterOS-en saioa hasi nahi duzu?" msgid "Success!" msgstr "Ondo egin da!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Ziur saioa amaitu nahi duzula?" @@ -21300,13 +21249,6 @@ msgstr "Bambu sareko plugina beharrezkoa da hodeiko funtzioetarako, inprimagailu msgid "Error: %s" msgstr "Errorea: %s" -msgid "Show details" -msgstr "Erakutsi xehetasunak" - -# AI Translated -msgid "Hide details" -msgstr "Ezkutatu xehetasunak" - msgid "Version to install:" msgstr "Instalatu beharreko bertsioa:" @@ -23891,6 +23833,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -23903,6 +23851,216 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Hasiera" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "Amaiera" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Ezkerrera gezia" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Eskuinera gezia" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Gora gezia" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Behera gezia" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Inportatu geometriaren datuak STL/STEP/3MF/OBJ/AMF fitxategietatik" + +msgid "Select all objects" +msgstr "Hautatu objektu guztiak" + +msgid "Paste from clipboard" +msgstr "Itsatsi arbeletik" + +msgid "Toggle printable for object/part" +msgstr "Txandakatu objektuaren/piezaren inprimagarritasuna" + +msgid "Move selection 10mm in negative X direction" +msgstr "Mugitu hautapena 10 mm X noranzko negatiboan" + +msgid "Move selection 10mm in positive X direction" +msgstr "Mugitu hautapena 10 mm X noranzko positiboan" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Mugitu hautapena 10 mm Y noranzko positiboan" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Mugitu hautapena 10 mm Y noranzko negatiboan" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Mugitzeko tresna" + +msgid "Gizmo rotate" +msgstr "Biraketa tresna" + +msgid "Gizmo scale" +msgstr "Eskalarako tresna" + +msgid "Gizmo place face on bed" +msgstr "Aurpegia ohean kokatzeko tresna" + +msgid "Gizmo cut" +msgstr "Ebakitzeko tresna" + +msgid "Gizmo mesh boolean" +msgstr "Sare boolearrerako tresna" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "FDM josturak margotzeko tresna" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "FDM gainazal zimurra margotzeko tresna" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Testua erliebean/grabatuta ipintzeko tresna" + +msgid "Gizmo measure" +msgstr "Neurtzeko tresna" + +msgid "Gizmo assemble" +msgstr "Muntatzeko tresna" + +msgid "Gizmo brim ears" +msgstr "Belarri ertzen tresna" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Graduatzaile bertikala - Mugitu hatz aktiboa gora" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Graduatzaile bertikala - Mugitu hatz aktiboa behera" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Graduatzaile horizontala - Mugitu hatz aktiboa ezkerrera" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Graduatzaile horizontala - Mugitu hatz aktiboa eskuinera" + +msgid "Horizontal slider - Move to start position" +msgstr "Graduatzaile horizontala - Mugitu hasierako posiziora" + +msgid "Horizontal slider - Move to last position" +msgstr "Graduatzaile horizontala - Mugitu azken posiziora" + +msgid "Camera view - Default" +msgstr "Kameraren ikuspegia - Lehenetsia" + +msgid "Camera view - Top" +msgstr "Kameraren ikuspegia - Goia" + +msgid "Camera view - Bottom" +msgstr "Kameraren ikuspegia - Behea" + +msgid "Camera view - Front" +msgstr "Kameraren ikuspegia - Aurrea" + +msgid "Camera view - Behind" +msgstr "Kameraren ikuspegia - Atzea" + +msgid "Camera Angle - Left side" +msgstr "Kameraren angelua - Ezker aldea" + +msgid "Camera Angle - Right side" +msgstr "Kameraren angelua - Eskuin aldea" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Zooma handitu" + +msgid "Zoom out" +msgstr "Txikiagotu zooma" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Erakutsi/Ezkutatu 3Dconnexion gailuen ezarpenen elkarrizketa-koadroa" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "G-code leihoa aktibatu/desaktibatu" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Aktibatu/Desaktibatu graduatzaile bertikalaren geruza bakarreko modua" + +msgid "Switch between Prepare/Preview" +msgstr "Aldatu Prestatu/Aurrebista artean" + +msgid "Collapse/Expand the sidebar" +msgstr "Tolestu/Zabaldu alboko barra" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Erakutsi teklatu-lasterbideen zerrenda" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24203,6 +24361,62 @@ msgstr "" "Saihestu okertzea\n" "Ba al zenekien ABS bezalako okertzeko joera duten materialak inprimatzean ohe beroaren tenperatura egoki igotzeak okertzeko probabilitatea murriztu dezakeela?" +#~ msgid "Tab" +#~ msgstr "Fitxa" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Uneko ikuspegiaren FPSa goiko eskuineko izkinan erakusten du." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "3MF argitaratzeko wikia" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "3MF argitaratzeko bideo-gida" + +#~ msgid "Toolbar" +#~ msgstr "Tresna-barra" + +#~ msgid "Switch table page" +#~ msgstr "Aldatu taula-orria" + +#~ msgid "Global shortcuts" +#~ msgstr "Lasterbide globalak" + +#~ msgid "Middle mouse button" +#~ msgstr "Saguaren erdiko botoia" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Hautatutako objektuak edo objektu guztiak automatikoki orientatzen ditu. Objektuak hautatuta badaude, hautatutakoak bakarrik orientatzen ditu. Bestela, uneko proiektuko objektu guztiak orientatuko ditu." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Objektu guztiak automatikoki orientatzen ditu plaka aktiboan." + +#~ msgid "Any arrow" +#~ msgstr "Edozein gezi" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "SLA euskarri-puntuentzako tresna" + +#~ msgid "Plater" +#~ msgstr "Plaka-antolatzailea" + +#~ msgid "Gizmo" +#~ msgstr "Tresna" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Ezabatu objektuak, piezak eta aldatzaileak" + +#~ msgid "Objects List" +#~ msgstr "Objektuen zerrenda" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "Irteerako fitxategiaren hasiera-hasieran idatzitako G-codea, beste edozein eduki baino lehen. Inprimagailuaren firmwareak fitxategiaren lehen lerroetatik irakurtzen dituen metadatuak gehitzeko erabilgarria da (adibidez, zenbatetsitako inprimatze-denbora edo filamentuen erabilera). {print_time_sec} eta {used_filament_length} moduko leku-markak onartzen ditu." + +#~ msgid "Print time (seconds)" +#~ msgstr "Inprimatze-denbora (segundoak)" + #~ msgid "Open actions speed dial" #~ msgstr "Ekintzen markatze azkarra ireki" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index a4c3c88954..51e021d073 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -5822,12 +5822,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Droite" -msgid "Add" -msgstr "Ajouter" - msgid "Add plate" msgstr "Ajouter un plateau" +msgid "Split to objects" +msgstr "Diviser en objets individuels" + +msgid "Add" +msgstr "Ajouter" + msgid "Auto orient all/selected objects" msgstr "Orientation automatique de tous les objets sélectionnés" @@ -5840,9 +5843,6 @@ msgstr "Organiser tous les objets" msgid "Arrange objects on selected plates" msgstr "Organiser les objets sur les plaques sélectionnées" -msgid "Split to objects" -msgstr "Diviser en objets individuels" - msgid "Assembly View" msgstr "Vue de l'assemblage" @@ -5897,6 +5897,9 @@ msgstr "Contour" msgid "Wireframe" msgstr "Fil de fer" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Vue réaliste" @@ -6436,9 +6439,6 @@ msgstr "Afficher le tracé contour de l’objet sélectionné dans la scène 3D. msgid "Preferences" msgstr "Préférences" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6447,6 +6447,9 @@ msgstr "Édition" msgid "View" msgstr "Affichage" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Paquet de préréglages" @@ -8242,9 +8245,6 @@ msgstr "Agrandir la barre latérale" msgid "Collapse sidebar" msgstr "Réduire la barre latérale" -msgid "Tab" -msgstr "Onglet" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Chargement du fichier : %s" @@ -9250,10 +9250,10 @@ msgstr "Gestion multi appareils" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Si cette option est activée, vous pouvez envoyer une tâche à plusieurs appareils en même temps et gérer plusieurs appareils." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9385,6 +9385,15 @@ msgstr "Glisser avec le bouton droit de la souris" msgid "Set the action that dragging the right mouse button should perform." msgstr "Définit l’action effectuée en faisant glisser le bouton droit de la souris." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Effacer mon choix sur…" @@ -9495,11 +9504,39 @@ msgstr "" "Limite la fréquence d’images de la vue pour réduire la charge du GPU et la consommation d’énergie.\n" "Réglez sur 0 pour une fréquence d’images illimitée." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "Afficher la superposition des FPS" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Affiche les FPS actuels de la vue dans le coin supérieur droit." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -9956,13 +9993,8 @@ msgstr "Publier 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Sélectionnez les réglages à publier dans le fichier 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki de Publier 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Guide vidéo de Publier 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10164,6 +10196,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Afficher les détails" + +# AI Translated +msgid "Hide details" +msgstr "Masquer les détails" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -11988,67 +12027,39 @@ msgstr "Le paquet de configuration a été modifié dans le guide de configurati msgid "Configuration package changed" msgstr "Package de configuration modifié" -msgid "Toolbar" -msgstr "Barre d'outils" - -msgid "Objects list" -msgstr "Liste des objets" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Coller depuis le presse-papier" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Afficher/Masquer la boîte de dialogue des paramètres des périphériques 3Dconnexion" - -msgid "Switch table page" -msgstr "Page du tableau de commutation" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Espace" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Afficher la liste des raccourcis clavier" - -msgid "Global shortcuts" -msgstr "Raccourcis globaux" - msgid "Pan View" msgstr "Déplacement de la vue" msgid "Rotate View" msgstr "Rotation de la vue" -msgid "Middle mouse button" -msgstr "Bouton central de la souris" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Zoom de la vue" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Oriente automatiquement les objets sélectionnés ou tous les objets. S’il y a des objets sélectionnés, seuls ceux-ci sont orientés. Sinon, tous les objets du projet en cours sont orientés." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Oriente automatiquement tous les objets de la plaque actuelle." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Réduire/développer la barre latérale" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "Toutes les flèches" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Mouvement dans l'espace de la caméra" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Sélectionner une pièce" @@ -12059,126 +12070,29 @@ msgstr "Sélectionner plusieurs objets" msgid "Select objects by rectangle" msgstr "Sélectionner les objets par rectangle" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Flèche haut" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Déplacer la sélection de 10 mm dans la direction positive Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Flèche bas" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Déplacer la sélection de 10 mm dans la direction négative Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Flèche gauche" - -msgid "Move selection 10mm in negative X direction" -msgstr "Déplacer la sélection de 10 mm dans la direction négative X" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Flèche droite" - -msgid "Move selection 10mm in positive X direction" -msgstr "Déplacer la sélection de 10 mm dans la direction positive X" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "clavier 1-9 : définir le filament pour l'objet/la pièce" msgid "Movement step set to 1mm" msgstr "Pas du mouvement réglé sur 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "clavier 1-9 : définir le filament pour l'objet/la pièce" +msgid "Movement in camera space" +msgstr "Mouvement dans l'espace de la caméra" -msgid "Camera view - Default" -msgstr "Vue caméra - Par défaut" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Vue caméra - Haut" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Vue caméra - Bas" +msgid "Zoom View" +msgstr "Zoom de la vue" -msgid "Camera view - Front" -msgstr "Vue de la caméra - Avant" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Vue caméra - Derrière" - -msgid "Camera Angle - Left side" -msgstr "Angle de caméra - Côté gauche" - -msgid "Camera Angle - Right side" -msgstr "Angle de caméra - Côté droit" - -msgid "Select all objects" -msgstr "Sélectionner tous les objets" - -msgid "Gizmo move" -msgstr "Gizmo déplacer" - -msgid "Gizmo rotate" -msgstr "Gizmo pivoter" - -msgid "Gizmo scale" -msgstr "Gizmo redimensionner" - -msgid "Gizmo place face on bed" -msgstr "Gizmo placer la face sur le plateau" - -msgid "Gizmo cut" -msgstr "Gizmo couper" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo booléennes" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Outil FDM de surface irrégulière peinte" - -msgid "Gizmo SLA support points" -msgstr "Gizmo Point de support SLA" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo Peinture de la couture FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo embosser/graver du texte" - -msgid "Gizmo measure" -msgstr "Gizmo mesurer" - -msgid "Gizmo assemble" -msgstr "Gizmo assembler" - -msgid "Gizmo brim ears" -msgstr "Gizmo bordure à oreilles" - -msgid "Zoom in" -msgstr "Zoom avant" - -msgid "Zoom out" -msgstr "Zoom arrière" - -msgid "Toggle printable for object/part" -msgstr "Basculer l’état imprimable de l’objet/de la pièce" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Basculer entre Préparer/Aperçu" - -msgid "Plater" -msgstr "Plateau" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Déplacer : appuyez pour aligner de 1 mm" @@ -12189,14 +12103,19 @@ msgstr "Support/Peinture couleur : ajustez le rayon du stylet" msgid "Support/Color Painting: adjust section position" msgstr "Support/Peinture couleur : ajuster la position de la section" -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Liste des objets" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Définir le numéro d'extrudeur pour les objets et les pièces" -msgid "Delete objects, parts, modifiers" -msgstr "Supprimer des objets, des pièces, des modificateurs" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Espace" msgid "Select the object/part and press space to change the name" msgstr "Sélectionnez l'objet/la pièce et appuyez sur espace pour changer le nom" @@ -12207,45 +12126,48 @@ msgstr "Clic de souris" msgid "Select the object/part and mouse click to change the name" msgstr "Sélectionnez l'objet/la pièce et cliquez avec la souris pour changer le nom" -msgid "Objects List" -msgstr "Liste des objets" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Barre de défilement verticale - Déplacer le curseur actif vers le Haut" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Barre de défilement verticale - Déplacer le curseur actif vers le Bas" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Barre de défilement horizontale - Déplacer le curseur actif vers la Gauche" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Barre de défilement horizontale - Déplacer le curseur actif vers la Droite" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "On/Off mode couche unique de la barre de défilement verticale" - -msgid "On/Off G-code window" -msgstr "On/Off Fenêtre G-code" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Déplacez le curseur 5 fois plus vite" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Début" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Curseur horizontal - Déplacement vers la position de départ" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "Fin" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Curseur horizontal - Déplacer vers la dernière position" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Note de version" @@ -17090,8 +17012,8 @@ msgstr "Étapes de préchauffage" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Insérer plusieurs commandes de préchauffage (par exemple M104.1). Uniquement utile pour la Prusa XL. Pour les autres imprimantes, veuillez le régler sur 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code écrit tout en haut du fichier de sortie, avant tout autre contenu. Utile pour ajouter des métadonnées que le firmware de l'imprimante lit depuis les premières lignes du fichier (ex. temps d'impression estimé, utilisation du filament). Prend en charge les espaces réservés comme {print_time_sec} et {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "G-code de démarrage" @@ -18615,12 +18537,36 @@ msgstr "Filament utilisé" msgid "Total length of filament used in the print." msgstr "Longueur totale de filament utilisé dans l'impression." -msgid "Print time (seconds)" -msgstr "Temps d'impression (secondes)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Temps d'impression total estimé en secondes. Remplacé par la valeur réelle lors du post-traitement." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Longueur de filament (mètres)" @@ -20455,6 +20401,9 @@ msgstr "Aucune session valide détectée. Procéder à la connexion à 3DPrinter msgid "Success!" msgstr "Succès !" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Voulez-vous vraiment vous déconnecter ?" @@ -21410,13 +21359,6 @@ msgstr "Le plug-in réseau Bambu est requis pour les fonctionnalités cloud, la msgid "Error: %s" msgstr "Erreur : %s" -msgid "Show details" -msgstr "Afficher les détails" - -# AI Translated -msgid "Hide details" -msgstr "Masquer les détails" - msgid "Version to install:" msgstr "Version à installer :" @@ -24045,6 +23987,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24057,6 +24005,216 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Début" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "Fin" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Flèche gauche" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Flèche droite" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Flèche haut" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Flèche bas" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Sélectionner tous les objets" + +msgid "Paste from clipboard" +msgstr "Coller depuis le presse-papier" + +msgid "Toggle printable for object/part" +msgstr "Basculer l’état imprimable de l’objet/de la pièce" + +msgid "Move selection 10mm in negative X direction" +msgstr "Déplacer la sélection de 10 mm dans la direction négative X" + +msgid "Move selection 10mm in positive X direction" +msgstr "Déplacer la sélection de 10 mm dans la direction positive X" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Déplacer la sélection de 10 mm dans la direction positive Y" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Déplacer la sélection de 10 mm dans la direction négative Y" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo déplacer" + +msgid "Gizmo rotate" +msgstr "Gizmo pivoter" + +msgid "Gizmo scale" +msgstr "Gizmo redimensionner" + +msgid "Gizmo place face on bed" +msgstr "Gizmo placer la face sur le plateau" + +msgid "Gizmo cut" +msgstr "Gizmo couper" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo booléennes" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo Peinture de la couture FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Outil FDM de surface irrégulière peinte" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo embosser/graver du texte" + +msgid "Gizmo measure" +msgstr "Gizmo mesurer" + +msgid "Gizmo assemble" +msgstr "Gizmo assembler" + +msgid "Gizmo brim ears" +msgstr "Gizmo bordure à oreilles" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Barre de défilement verticale - Déplacer le curseur actif vers le Haut" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Barre de défilement verticale - Déplacer le curseur actif vers le Bas" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Barre de défilement horizontale - Déplacer le curseur actif vers la Gauche" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Barre de défilement horizontale - Déplacer le curseur actif vers la Droite" + +msgid "Horizontal slider - Move to start position" +msgstr "Curseur horizontal - Déplacement vers la position de départ" + +msgid "Horizontal slider - Move to last position" +msgstr "Curseur horizontal - Déplacer vers la dernière position" + +msgid "Camera view - Default" +msgstr "Vue caméra - Par défaut" + +msgid "Camera view - Top" +msgstr "Vue caméra - Haut" + +msgid "Camera view - Bottom" +msgstr "Vue caméra - Bas" + +msgid "Camera view - Front" +msgstr "Vue de la caméra - Avant" + +msgid "Camera view - Behind" +msgstr "Vue caméra - Derrière" + +msgid "Camera Angle - Left side" +msgstr "Angle de caméra - Côté gauche" + +msgid "Camera Angle - Right side" +msgstr "Angle de caméra - Côté droit" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Zoom avant" + +msgid "Zoom out" +msgstr "Zoom arrière" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Afficher/Masquer la boîte de dialogue des paramètres des périphériques 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "On/Off Fenêtre G-code" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "On/Off mode couche unique de la barre de défilement verticale" + +msgid "Switch between Prepare/Preview" +msgstr "Basculer entre Préparer/Aperçu" + +msgid "Collapse/Expand the sidebar" +msgstr "Réduire/développer la barre latérale" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Afficher la liste des raccourcis clavier" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24357,6 +24515,62 @@ 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?" +#~ msgid "Tab" +#~ msgstr "Onglet" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Affiche les FPS actuels de la vue dans le coin supérieur droit." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki de Publier 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Guide vidéo de Publier 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Barre d'outils" + +#~ msgid "Switch table page" +#~ msgstr "Page du tableau de commutation" + +#~ msgid "Global shortcuts" +#~ msgstr "Raccourcis globaux" + +#~ msgid "Middle mouse button" +#~ msgstr "Bouton central de la souris" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Oriente automatiquement les objets sélectionnés ou tous les objets. S’il y a des objets sélectionnés, seuls ceux-ci sont orientés. Sinon, tous les objets du projet en cours sont orientés." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Oriente automatiquement tous les objets de la plaque actuelle." + +#~ msgid "Any arrow" +#~ msgstr "Toutes les flèches" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo Point de support SLA" + +#~ msgid "Plater" +#~ msgstr "Plateau" + +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Supprimer des objets, des pièces, des modificateurs" + +#~ msgid "Objects List" +#~ msgstr "Liste des objets" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code écrit tout en haut du fichier de sortie, avant tout autre contenu. Utile pour ajouter des métadonnées que le firmware de l'imprimante lit depuis les premières lignes du fichier (ex. temps d'impression estimé, utilisation du filament). Prend en charge les espaces réservés comme {print_time_sec} et {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Temps d'impression (secondes)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Ouvrir le menu d'actions rapides" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index f83b1679e5..4e1f233351 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5919,12 +5919,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Jobb" -msgid "Add" -msgstr "Hozzáadás" - msgid "Add plate" msgstr "Tálca hozzáadása" +msgid "Split to objects" +msgstr "Felosztás objektumokra" + +msgid "Add" +msgstr "Hozzáadás" + msgid "Auto orient all/selected objects" msgstr "Az összes/kiválasztott objektum automatikus tájolása" @@ -5937,9 +5940,6 @@ msgstr "Összes objektum elrendezése" msgid "Arrange objects on selected plates" msgstr "Objektumok elrendezése a kiválasztott tálcákon" -msgid "Split to objects" -msgstr "Felosztás objektumokra" - msgid "Assembly View" msgstr "Összeszerelési nézet" @@ -5996,6 +5996,9 @@ msgstr "Körvonal" msgid "Wireframe" msgstr "Drótváz" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Valósághű nézet" @@ -6538,9 +6541,6 @@ msgstr "Körvonal megjelenítése a kijelölt objektum körül a 3D nézetben." msgid "Preferences" msgstr "Beállítások" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6549,6 +6549,9 @@ msgstr "Szerkesztés" msgid "View" msgstr "Nézet" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Beállításcsomag" @@ -8358,10 +8361,6 @@ msgstr "Az oldalsáv kibontása" msgid "Collapse sidebar" msgstr "&Az oldalsáv összecsukása" -# AI Translated -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Fájl betöltése: %s" @@ -9386,10 +9385,10 @@ msgstr "Többeszközös kezelés" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Ezzel az opcióval egyszerre több eszközre küldhetsz feladatot és több eszközt kezelhetsz." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9521,6 +9520,15 @@ msgstr "Jobb egérhúzás" msgid "Set the action that dragging the right mouse button should perform." msgstr "Állítsd be a jobb egérgomb húzásával végrehajtandó műveletet." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Választásom törlése ennél..." @@ -9637,11 +9645,39 @@ msgstr "" "Korlátozza a nézetablak képsebességét a GPU terhelés és az energiafogyasztás csökkentése érdekében.\n" "Állítsd 0-ra a korlátlan képkockasebességhez." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "FPS fedvény megjelenítése" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Megjeleníti az aktuális nézetablak FPS-t a jobb felső sarokban." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10116,13 +10152,8 @@ msgstr "3MF közzététele..." msgid "Select which settings to be published in the 3MF file" msgstr "Válaszd ki, mely beállítások kerüljenek közzétételre a 3MF fájlban" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "3MF közzététele wiki" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "3MF közzététele videós útmutató" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10324,6 +10355,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Részletek megjelenítése" + +# AI Translated +msgid "Hide details" +msgstr "Részletek elrejtése" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12170,67 +12208,39 @@ msgstr "A konfigurációs csomag az előző konfigurációs útmutatóban módos msgid "Configuration package changed" msgstr "Konfigurációs csomag megváltozott" -msgid "Toolbar" -msgstr "Eszköztár" - -msgid "Objects list" -msgstr "Objektumok listája" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Geometriai adatok importálása STL/STEP/3MF/OBJ/AMF fájlokból" - -msgid "Paste from clipboard" -msgstr "Beillesztés a vágólapról" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "3Dconnexion-eszközbeállítások párbeszédablak megjelenítése/elrejtése" - -msgid "Switch table page" -msgstr "Váltás táblázatra" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Szóköz" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Gyorsgombok listájának megjelenítése" - -msgid "Global shortcuts" -msgstr "Globális gyorsbillentyűk" - msgid "Pan View" msgstr "Pásztázó nézet" msgid "Rotate View" msgstr "Forgató nézet" -msgid "Middle mouse button" -msgstr "Középső egérgomb" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Nagyító nézet" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Automatikusan beállítja a kijelölt objektumok vagy az összes objektum tájolását. Ha vannak kijelölt objektumok, akkor csak a kijelölteket, ellenkező esetben pedig a projektben levő összes objektumot orientálja." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Automatikusan orientálja az aktuális tálcán levő összes objektumot." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Az oldalsáv összecsukása/kinyitása" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "Bármelyik nyílbillentyű" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Mozgás a kameratérben" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Válassz egy tárgyat" @@ -12241,126 +12251,29 @@ msgstr "Több objektum kijelölése" msgid "Select objects by rectangle" msgstr "Objektumok kijelölése téglalapok alapján" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Felfelé nyíl" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Kijelölés mozgatása 10 mm-rel pozitív Y irányban" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Lefelé nyíl" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Kijelölés mozgatása 10 mm-rel negatív Y irányban" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Balra nyíl" - -msgid "Move selection 10mm in negative X direction" -msgstr "Kijelölés mozgatása 10 mm-rel negatív X irányban" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Jobbra nyíl" - -msgid "Move selection 10mm in positive X direction" -msgstr "Kijelölés mozgatása 10 mm-rel pozitív X irányban" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "filament hozzárendelése az objektumhoz/tárgyhoz" msgid "Movement step set to 1mm" msgstr "Mozgatás lépéstávolsága 1mm-re állítva" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "filament hozzárendelése az objektumhoz/tárgyhoz" +msgid "Movement in camera space" +msgstr "Mozgás a kameratérben" -msgid "Camera view - Default" -msgstr "Kameranézet - Alapértelmezett" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Kameranézet - Felülről" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Kameranézet - Alulról" +msgid "Zoom View" +msgstr "Nagyító nézet" -msgid "Camera view - Front" -msgstr "Kameranézet - Elölről" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Kameranézet - Hátulról" - -msgid "Camera Angle - Left side" -msgstr "Kameranézet - Bal oldal" - -msgid "Camera Angle - Right side" -msgstr "Kameranézet - Jobb oldal" - -msgid "Select all objects" -msgstr "Összes objektum kijelölése" - -msgid "Gizmo move" -msgstr "Gizmo mozgatás" - -msgid "Gizmo rotate" -msgstr "Gizmo forgatás" - -msgid "Gizmo scale" -msgstr "Gizmo átméretezés" - -msgid "Gizmo place face on bed" -msgstr "Gizmo felület asztalra illesztése" - -msgid "Gizmo cut" -msgstr "Gizmo vágás" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo modellháló logikai műveletek" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM barázdált felület festése" - -msgid "Gizmo SLA support points" -msgstr "Gizmo SLA támaszpontok" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo FDM varrat festés" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo szöveg dombornyomás/gravírozás" - -msgid "Gizmo measure" -msgstr "Gizmo mérés" - -msgid "Gizmo assemble" -msgstr "Gizmo összeállítás" - -msgid "Gizmo brim ears" -msgstr "Gizmo peremfülek" - -msgid "Zoom in" -msgstr "Zoom közelítés" - -msgid "Zoom out" -msgstr "Zoom távolítás" - -msgid "Toggle printable for object/part" -msgstr "Nyomtathatóság váltása objektumhoz/alkatrészhez" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Váltás előkészítés/előnézet között" - -msgid "Plater" -msgstr "Tálca" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Mozgatás: lenyomva 1 mm-es lépésekre illeszt" @@ -12371,15 +12284,19 @@ msgstr "Támasz/Színfestés: toll méretének beállítása" msgid "Support/Color Painting: adjust section position" msgstr "Támasz/Színfestés: metszet pozíciójának beállítása" -# AI Translated -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Objektumok listája" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Extruder szám beállítása az objektumok és tárgyak számára" -msgid "Delete objects, parts, modifiers" -msgstr "Objektumok, tárgyak, módosítók törlése" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Szóköz" msgid "Select the object/part and press space to change the name" msgstr "Válaszd ki az objektumot vagy alkatrészt, majd nyomd meg a szóközt a név megváltoztatásához" @@ -12390,45 +12307,48 @@ msgstr "Egérkattintás" msgid "Select the object/part and mouse click to change the name" msgstr "Válaszd ki az objektumot vagy alkatrészt, majd kattints a nevére az átnevezéshez" -msgid "Objects List" -msgstr "Tárgyak listája" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Függőleges csúszka - Az aktív csúszka felfelé mozgatása" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Függőleges csúszka - Az aktív csúszka lefelé mozgatása" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Vízszintes csúszka - Az aktív csúszka balra mozgatása" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Vízszintes csúszka - Az aktív csúszka jobbra mozgatása" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Függőleges csúszka egyréteges módjának ki/bekapcsolása" - -msgid "On/Off G-code window" -msgstr "G-kód ablak be/ki" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Csúszka 5x gyorsabb mozgatása" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Vízszintes csúszka - Ugrás a kezdőpozícióra" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Vízszintes csúszka - Ugrás az utolsó pozícióra" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Verzióinformáció" @@ -17350,8 +17270,8 @@ msgstr "Előmelegítési lépések" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Több előmelegítési parancs beszúrása (pl. M104.1). Ez csak a Prusa XL esetén hasznos. Más nyomtatóknál állítsd 1-re." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "A kimeneti fájl legelejére írt G-kód, minden más tartalom előtt. Hasznos olyan metaadatok hozzáadására, amelyeket a nyomtató firmware-e a fájl első soraiból olvas ki (pl. becsült nyomtatási idő, filamentfelhasználás). Támogatja az olyan helyőrzőket, mint a {print_time_sec} és a {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Kezdő G-kód" @@ -18888,12 +18808,36 @@ msgstr "Használt filament" msgid "Total length of filament used in the print." msgstr "A nyomtatás során felhasznált filament teljes hossza." -msgid "Print time (seconds)" -msgstr "Nyomtatási idő (másodperc)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "A teljes becsült nyomtatási idő másodpercben. Az utófeldolgozás során a tényleges értékre cserélődik." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Filament hossza (méter)" @@ -20761,6 +20705,9 @@ msgstr "Nem található érvényes munkamenet. Folytatod a bejelentkezést a 3DP msgid "Success!" msgstr "Sikerült!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Biztosan kijelentkezel?" @@ -21810,13 +21757,6 @@ msgstr "A Bambu hálózati bővítmény szükséges a felhőfunkciókhoz, a nyom msgid "Error: %s" msgstr "Hiba: %s" -msgid "Show details" -msgstr "Részletek megjelenítése" - -# AI Translated -msgid "Hide details" -msgstr "Részletek elrejtése" - msgid "Version to install:" msgstr "Telepítendő verzió:" @@ -24473,6 +24413,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24485,6 +24431,216 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Balra nyíl" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Jobbra nyíl" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Felfelé nyíl" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Lefelé nyíl" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Geometriai adatok importálása STL/STEP/3MF/OBJ/AMF fájlokból" + +msgid "Select all objects" +msgstr "Összes objektum kijelölése" + +msgid "Paste from clipboard" +msgstr "Beillesztés a vágólapról" + +msgid "Toggle printable for object/part" +msgstr "Nyomtathatóság váltása objektumhoz/alkatrészhez" + +msgid "Move selection 10mm in negative X direction" +msgstr "Kijelölés mozgatása 10 mm-rel negatív X irányban" + +msgid "Move selection 10mm in positive X direction" +msgstr "Kijelölés mozgatása 10 mm-rel pozitív X irányban" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Kijelölés mozgatása 10 mm-rel pozitív Y irányban" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Kijelölés mozgatása 10 mm-rel negatív Y irányban" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo mozgatás" + +msgid "Gizmo rotate" +msgstr "Gizmo forgatás" + +msgid "Gizmo scale" +msgstr "Gizmo átméretezés" + +msgid "Gizmo place face on bed" +msgstr "Gizmo felület asztalra illesztése" + +msgid "Gizmo cut" +msgstr "Gizmo vágás" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo modellháló logikai műveletek" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo FDM varrat festés" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM barázdált felület festése" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo szöveg dombornyomás/gravírozás" + +msgid "Gizmo measure" +msgstr "Gizmo mérés" + +msgid "Gizmo assemble" +msgstr "Gizmo összeállítás" + +msgid "Gizmo brim ears" +msgstr "Gizmo peremfülek" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Függőleges csúszka - Az aktív csúszka felfelé mozgatása" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Függőleges csúszka - Az aktív csúszka lefelé mozgatása" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Vízszintes csúszka - Az aktív csúszka balra mozgatása" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Vízszintes csúszka - Az aktív csúszka jobbra mozgatása" + +msgid "Horizontal slider - Move to start position" +msgstr "Vízszintes csúszka - Ugrás a kezdőpozícióra" + +msgid "Horizontal slider - Move to last position" +msgstr "Vízszintes csúszka - Ugrás az utolsó pozícióra" + +msgid "Camera view - Default" +msgstr "Kameranézet - Alapértelmezett" + +msgid "Camera view - Top" +msgstr "Kameranézet - Felülről" + +msgid "Camera view - Bottom" +msgstr "Kameranézet - Alulról" + +msgid "Camera view - Front" +msgstr "Kameranézet - Elölről" + +msgid "Camera view - Behind" +msgstr "Kameranézet - Hátulról" + +msgid "Camera Angle - Left side" +msgstr "Kameranézet - Bal oldal" + +msgid "Camera Angle - Right side" +msgstr "Kameranézet - Jobb oldal" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Zoom közelítés" + +msgid "Zoom out" +msgstr "Zoom távolítás" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "3Dconnexion-eszközbeállítások párbeszédablak megjelenítése/elrejtése" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "G-kód ablak be/ki" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Függőleges csúszka egyréteges módjának ki/bekapcsolása" + +msgid "Switch between Prepare/Preview" +msgstr "Váltás előkészítés/előnézet között" + +msgid "Collapse/Expand the sidebar" +msgstr "Az oldalsáv összecsukása/kinyitása" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Gyorsgombok listájának megjelenítése" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24786,6 +24942,64 @@ 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 "Tab" +#~ msgstr "Tab" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Megjeleníti az aktuális nézetablak FPS-t a jobb felső sarokban." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "3MF közzététele wiki" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "3MF közzététele videós útmutató" + +#~ msgid "Toolbar" +#~ msgstr "Eszköztár" + +#~ msgid "Switch table page" +#~ msgstr "Váltás táblázatra" + +#~ msgid "Global shortcuts" +#~ msgstr "Globális gyorsbillentyűk" + +#~ msgid "Middle mouse button" +#~ msgstr "Középső egérgomb" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Automatikusan beállítja a kijelölt objektumok vagy az összes objektum tájolását. Ha vannak kijelölt objektumok, akkor csak a kijelölteket, ellenkező esetben pedig a projektben levő összes objektumot orientálja." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Automatikusan orientálja az aktuális tálcán levő összes objektumot." + +#~ msgid "Any arrow" +#~ msgstr "Bármelyik nyílbillentyű" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo SLA támaszpontok" + +#~ msgid "Plater" +#~ msgstr "Tálca" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Objektumok, tárgyak, módosítók törlése" + +#~ msgid "Objects List" +#~ msgstr "Tárgyak listája" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "A kimeneti fájl legelejére írt G-kód, minden más tartalom előtt. Hasznos olyan metaadatok hozzáadására, amelyeket a nyomtató firmware-e a fájl első soraiból olvas ki (pl. becsült nyomtatási idő, filamentfelhasználás). Támogatja az olyan helyőrzőket, mint a {print_time_sec} és a {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Nyomtatási idő (másodperc)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Műveletek gyorsmenüjének megnyitása" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 087189ae93..f17bfc5ba3 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5920,12 +5920,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Destra" -msgid "Add" -msgstr "Aggiungi" - msgid "Add plate" msgstr "Aggiungi piatto" +msgid "Split to objects" +msgstr "Dividi in oggetti" + +msgid "Add" +msgstr "Aggiungi" + msgid "Auto orient all/selected objects" msgstr "Orientamento automatico tutti/selezionati oggetti" @@ -5938,9 +5941,6 @@ msgstr "Disponi tutti gli oggetti" msgid "Arrange objects on selected plates" msgstr "Disponi gli oggetti sui piatti selezionati" -msgid "Split to objects" -msgstr "Dividi in oggetti" - msgid "Assembly View" msgstr "Vista di montaggio" @@ -5997,6 +5997,9 @@ msgstr "Contorno" msgid "Wireframe" msgstr "Modello reticolato" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Vista realistica" @@ -6540,9 +6543,6 @@ msgstr "Mostra il contorno attorno all'oggetto selezionato nella scena 3D." msgid "Preferences" msgstr "Preferenze" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6551,6 +6551,9 @@ msgstr "Modifica" msgid "View" msgstr "Vista" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Pacchetto profili" @@ -8362,10 +8365,6 @@ msgstr "Espandi barra laterale" msgid "Collapse sidebar" msgstr "Riduci barra laterale" -# AI Translated -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Caricamento file: %s" @@ -9388,10 +9387,10 @@ msgstr "Gestione multi-dispositivo" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Abilitando questa opzione, puoi inviare un'attività a più dispositivi contemporaneamente e gestire più dispositivi." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9530,6 +9529,15 @@ msgstr "Trascinamento con il tasto destro del mouse" msgid "Set the action that dragging the right mouse button should perform." msgstr "Imposta l'azione che deve eseguire il trascinamento con il tasto destro del mouse." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Cancella la mia scelta su..." @@ -9654,13 +9662,40 @@ msgstr "" "Limita la frequenza dei fotogrammi della vista per ridurre il carico della GPU e il consumo energetico.\n" "Imposta a 0 per una frequenza dei fotogrammi illimitata." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "Mostra overlay FPS" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Mostra gli FPS correnti della vista nell'angolo in alto a destra." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10134,13 +10169,8 @@ msgstr "Pubblica 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Seleziona quali impostazioni pubblicare nel file 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki di Pubblica 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Guida video di Pubblica 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10342,6 +10372,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Mostra dettagli" + +# AI Translated +msgid "Hide details" +msgstr "Nascondi dettagli" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12190,68 +12227,39 @@ msgstr "Il pacchetto di configurazione è stato modificato nella precedente Guid msgid "Configuration package changed" msgstr "Pacchetto di configurazione modificato" -msgid "Toolbar" -msgstr "Barra degli strumenti" - -msgid "Objects list" -msgstr "Elenco oggetti" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importa geometrie da file STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Incolla dagli appunti" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Mostra/nascondi la finestra di dialogo delle impostazioni dei dispositivi 3Dconnexion" - -msgid "Switch table page" -msgstr "Cambia pagina tabella" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Spazio" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Mostra elenco scorciatoie da tastiera" - -msgid "Global shortcuts" -msgstr "Scorciatoie globali" - msgid "Pan View" msgstr "Vista panoramica" msgid "Rotate View" msgstr "Ruota vista" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + # AI Translated -msgid "Middle mouse button" -msgstr "Tasto centrale del mouse" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Zoom View" -msgstr "Vista Zoom" +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Questo orienta automaticamente gli oggetti selezionati o tutti gli oggetti. Se ci sono oggetti selezionati, orienta solo quelli selezionati. Altrimenti, orienterà tutti gli elementi nel progetto corrente." - -msgid "Auto orients all objects on the active plate." -msgstr "Questo orienta tutti gli oggetti nel piatto corrente." - -msgid "Collapse/Expand the sidebar" -msgstr "Riduci/Espandi barra laterale" - -msgid "Any arrow" -msgstr "Qualsiasi freccia" - -msgid "Movement in camera space" -msgstr "Movimento nello spazio della telecamera" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Seleziona parte" @@ -12262,126 +12270,29 @@ msgstr "Seleziona più oggetti" msgid "Select objects by rectangle" msgstr "Seleziona oggetti per rettangolo" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Freccia su" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Sposta selezione di 10 mm in direzione Y positiva" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Freccia giù" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Sposta selezione di 10 mm in direzione Y negativa" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Freccia sinistra" - -msgid "Move selection 10mm in negative X direction" -msgstr "Sposta selezione di 10 mm in direzione X negativa" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Freccia destra" - -msgid "Move selection 10mm in positive X direction" -msgstr "Sposta selezione di 10 mm in direzione X positiva" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Tastiera 1-9: imposta il filamento per l'oggetto/parte" msgid "Movement step set to 1mm" msgstr "Passo movimento impostato a 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Tastiera 1-9: imposta il filamento per l'oggetto/parte" +msgid "Movement in camera space" +msgstr "Movimento nello spazio della telecamera" -msgid "Camera view - Default" -msgstr "Vista telecamera - Predefinito" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Vista telecamera - In Alto" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Vista telecamera - In Basso" +msgid "Zoom View" +msgstr "Vista Zoom" -msgid "Camera view - Front" -msgstr "Vista telecamera - Anteriore" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Vista telecamera - Posteriore" - -msgid "Camera Angle - Left side" -msgstr "Angolo della camera - Lato sinistro" - -msgid "Camera Angle - Right side" -msgstr "Angolo della camera - Lato destro" - -msgid "Select all objects" -msgstr "Seleziona tutti gli oggetti" - -msgid "Gizmo move" -msgstr "Strumento Muovi" - -msgid "Gizmo rotate" -msgstr "Strumento Ruota" - -msgid "Gizmo scale" -msgstr "Strumento Scala" - -msgid "Gizmo place face on bed" -msgstr "Strumento posiziona faccia sul piatto" - -msgid "Gizmo cut" -msgstr "Strumento Taglia" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo maglia booleana" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Strumento FDM per superficie ruvida dipinta" - -msgid "Gizmo SLA support points" -msgstr "Strumento Punti di supporto SLA" - -msgid "Gizmo FDM paint-on seam" -msgstr "Strumento Dipingi cucitura FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "Strumento testo in rilievo/incisione" - -msgid "Gizmo measure" -msgstr "Gizmo misura" - -msgid "Gizmo assemble" -msgstr "Gizmo assemblaggio" - -msgid "Gizmo brim ears" -msgstr "Gizmo tese ad orecchio" - -msgid "Zoom in" -msgstr "Ingrandisci" - -msgid "Zoom out" -msgstr "Rimpicciolisci" - -msgid "Toggle printable for object/part" -msgstr "Attiva/disattiva stampa per oggetto/parte" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Passa tra Prepara e Anteprima" - -msgid "Plater" -msgstr "Piatto" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Sposta: premi per muovere di 1 mm" @@ -12392,14 +12303,19 @@ msgstr "Supporto/Pittura a colori: regola il raggio della penna" msgid "Support/Color Painting: adjust section position" msgstr "Supporto/Pittura a colori: regola la posizione della sezione" -msgid "Gizmo" -msgstr "Strumento" +msgid "Objects list" +msgstr "Elenco oggetti" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Imposta il numero dell'estrusore per gli oggetti e le parti" -msgid "Delete objects, parts, modifiers" -msgstr "Elimina oggetti, parti, modificatori" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Spazio" msgid "Select the object/part and press space to change the name" msgstr "Seleziona l'oggetto/la parte e premi la barra spaziatrice per modificare il nome" @@ -12410,45 +12326,48 @@ msgstr "Clic del mouse" msgid "Select the object/part and mouse click to change the name" msgstr "Seleziona l'oggetto/la parte e fai clic con il mouse per modificare il nome" -msgid "Objects List" -msgstr "Elenco oggetti" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Cursore di scorrimento verticale - Solleva cursore attivo" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Cursore di scorrimento verticale - Abbassa cursore attivo" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Cursore di scorrimento orizzontale - Sposta a sinistra il cursore attivo" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Cursore di scorrimento orizzontale - Sposta a destra il cursore attivo" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Attiva/Disattiva modalità singolo strato del cursore di scorrimento verticale" - -msgid "On/Off G-code window" -msgstr "Attiva/Disattiva finestra G-code" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Sposta il cursore 5 volte più velocemente" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Cursore di scorrimento orizzontale - Sposta alla posizione iniziale" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "Fine" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Cursore di scorrimento orizzontale - Sposta alla posizione finale" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Note di rilascio" @@ -17372,8 +17291,8 @@ msgstr "Fasi preriscaldamento" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Inserisci più comandi di preriscaldamento (ad esempio M104.1). Utile solo per Prusa XL. Per altre stampanti, impostalo su 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code scritto all'inizio del file di output, prima di qualsiasi altro contenuto. Utile per aggiungere metadati che il firmware della stampante legge dalle prime righe del file (ad es. tempo di stampa stimato, utilizzo filamento). Supporta segnaposto come {print_time_sec} e {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "G-code iniziale" @@ -18911,12 +18830,36 @@ msgstr "Filamento usato" msgid "Total length of filament used in the print." msgstr "Lunghezza totale di filamento utilizzato nella stampa." -msgid "Print time (seconds)" -msgstr "Tempo di stampa (secondi)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Tempo di stampa stimato totale in secondi. Sostituito con il valore effettivo durante la post-elaborazione." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Lunghezza filamento (metri)" @@ -20779,6 +20722,9 @@ msgstr "Nessuna sessione valida rilevata. Procedere con l'accesso a 3DPrinterOS? msgid "Success!" msgstr "Successo!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Sei sicuro di volerti disconnettere?" @@ -21834,13 +21780,6 @@ msgstr "Il modulo di rete Bambu è necessario per le funzionalità cloud, il ril msgid "Error: %s" msgstr "Errore: %s" -msgid "Show details" -msgstr "Mostra dettagli" - -# AI Translated -msgid "Hide details" -msgstr "Nascondi dettagli" - msgid "Version to install:" msgstr "Versione da installare:" @@ -24497,6 +24436,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24509,6 +24454,216 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "Fine" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Freccia sinistra" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Freccia destra" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Freccia su" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Freccia giù" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importa geometrie da file STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Seleziona tutti gli oggetti" + +msgid "Paste from clipboard" +msgstr "Incolla dagli appunti" + +msgid "Toggle printable for object/part" +msgstr "Attiva/disattiva stampa per oggetto/parte" + +msgid "Move selection 10mm in negative X direction" +msgstr "Sposta selezione di 10 mm in direzione X negativa" + +msgid "Move selection 10mm in positive X direction" +msgstr "Sposta selezione di 10 mm in direzione X positiva" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Sposta selezione di 10 mm in direzione Y positiva" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Sposta selezione di 10 mm in direzione Y negativa" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Strumento Muovi" + +msgid "Gizmo rotate" +msgstr "Strumento Ruota" + +msgid "Gizmo scale" +msgstr "Strumento Scala" + +msgid "Gizmo place face on bed" +msgstr "Strumento posiziona faccia sul piatto" + +msgid "Gizmo cut" +msgstr "Strumento Taglia" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo maglia booleana" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Strumento Dipingi cucitura FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Strumento FDM per superficie ruvida dipinta" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Strumento testo in rilievo/incisione" + +msgid "Gizmo measure" +msgstr "Gizmo misura" + +msgid "Gizmo assemble" +msgstr "Gizmo assemblaggio" + +msgid "Gizmo brim ears" +msgstr "Gizmo tese ad orecchio" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Cursore di scorrimento verticale - Solleva cursore attivo" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Cursore di scorrimento verticale - Abbassa cursore attivo" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Cursore di scorrimento orizzontale - Sposta a sinistra il cursore attivo" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Cursore di scorrimento orizzontale - Sposta a destra il cursore attivo" + +msgid "Horizontal slider - Move to start position" +msgstr "Cursore di scorrimento orizzontale - Sposta alla posizione iniziale" + +msgid "Horizontal slider - Move to last position" +msgstr "Cursore di scorrimento orizzontale - Sposta alla posizione finale" + +msgid "Camera view - Default" +msgstr "Vista telecamera - Predefinito" + +msgid "Camera view - Top" +msgstr "Vista telecamera - In Alto" + +msgid "Camera view - Bottom" +msgstr "Vista telecamera - In Basso" + +msgid "Camera view - Front" +msgstr "Vista telecamera - Anteriore" + +msgid "Camera view - Behind" +msgstr "Vista telecamera - Posteriore" + +msgid "Camera Angle - Left side" +msgstr "Angolo della camera - Lato sinistro" + +msgid "Camera Angle - Right side" +msgstr "Angolo della camera - Lato destro" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Ingrandisci" + +msgid "Zoom out" +msgstr "Rimpicciolisci" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Mostra/nascondi la finestra di dialogo delle impostazioni dei dispositivi 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Attiva/Disattiva finestra G-code" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Attiva/Disattiva modalità singolo strato del cursore di scorrimento verticale" + +msgid "Switch between Prepare/Preview" +msgstr "Passa tra Prepara e Anteprima" + +msgid "Collapse/Expand the sidebar" +msgstr "Riduci/Espandi barra laterale" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Mostra elenco scorciatoie da tastiera" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24810,6 +24965,65 @@ 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 "Tab" +#~ msgstr "Tab" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Mostra gli FPS correnti della vista nell'angolo in alto a destra." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki di Pubblica 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Guida video di Pubblica 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Barra degli strumenti" + +#~ msgid "Switch table page" +#~ msgstr "Cambia pagina tabella" + +#~ msgid "Global shortcuts" +#~ msgstr "Scorciatoie globali" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Tasto centrale del mouse" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Questo orienta automaticamente gli oggetti selezionati o tutti gli oggetti. Se ci sono oggetti selezionati, orienta solo quelli selezionati. Altrimenti, orienterà tutti gli elementi nel progetto corrente." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Questo orienta tutti gli oggetti nel piatto corrente." + +#~ msgid "Any arrow" +#~ msgstr "Qualsiasi freccia" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Strumento Punti di supporto SLA" + +#~ msgid "Plater" +#~ msgstr "Piatto" + +#~ msgid "Gizmo" +#~ msgstr "Strumento" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Elimina oggetti, parti, modificatori" + +#~ msgid "Objects List" +#~ msgstr "Elenco oggetti" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code scritto all'inizio del file di output, prima di qualsiasi altro contenuto. Utile per aggiungere metadati che il firmware della stampante legge dalle prime righe del file (ad es. tempo di stampa stimato, utilizzo filamento). Supporta segnaposto come {print_time_sec} e {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Tempo di stampa (secondi)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Apri la selezione rapida delle azioni" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 98f937fc6d..3601d3add0 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5937,12 +5937,15 @@ msgctxt "Camera View" msgid "Right" msgstr "右" -msgid "Add" -msgstr "追加" - msgid "Add plate" msgstr "プレートを追加" +msgid "Split to objects" +msgstr "オブジェクトに分割" + +msgid "Add" +msgstr "追加" + msgid "Auto orient all/selected objects" msgstr "すべてのオブジェクト/選択したオブジェクトの方向を自動設定する" @@ -5955,9 +5958,6 @@ msgstr "全てをレイアウト" msgid "Arrange objects on selected plates" msgstr "選択したプレートをレイアウト" -msgid "Split to objects" -msgstr "オブジェクトに分割" - msgid "Assembly View" msgstr "組立て" @@ -6014,6 +6014,9 @@ msgstr "アウトライン" msgid "Wireframe" msgstr "ワイヤフレーム" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "リアルビュー" @@ -6550,9 +6553,6 @@ msgstr "3Dシーンで選択したオブジェクトの周りにアウトライ msgid "Preferences" msgstr "設定" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6561,6 +6561,9 @@ msgstr "編集" msgid "View" msgstr "表示" +msgid "Open Speed Dial" +msgstr "" + # AI Translated msgid "Preset Bundle" msgstr "プリセットバンドル" @@ -8373,10 +8376,6 @@ msgstr "サイドバーを展開" msgid "Collapse sidebar" msgstr "サイドバーを折りたたむ" -# AI Translated -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "ファイルを読込む: %s" @@ -9411,10 +9410,10 @@ msgstr "マルチデバイス管理" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "このオプションを有効にすると、複数のデバイスに同時にタスクを送信し、複数のデバイスを管理できます。" -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9553,6 +9552,15 @@ msgstr "マウス右ドラッグ" msgid "Set the action that dragging the right mouse button should perform." msgstr "マウス右ボタンのドラッグで実行する操作を設定します。" +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "選択をクリア..." @@ -9677,13 +9685,40 @@ msgstr "" "ビューポートのフレームレートを制限し、GPU負荷と消費電力を抑えます。\n" "0に設定するとフレームレートは無制限になります。" +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "FPSオーバーレイを表示" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "現在のビューポートのFPSを右上に表示します。" +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10159,13 +10194,8 @@ msgstr "3MFを公開..." msgid "Select which settings to be published in the 3MF file" msgstr "3MFファイルで公開する設定を選択してください" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "3MF公開のWiki" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "3MF公開のビデオガイド" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10367,6 +10397,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "詳細を表示" + +# AI Translated +msgid "Hide details" +msgstr "詳細を隠す" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12214,68 +12251,39 @@ msgstr "構成パッケージが前のコンフィグガイドに変更されま msgid "Configuration package changed" msgstr "構成パッケージが変更されました" -msgid "Toolbar" -msgstr "ツールバー" - -msgid "Objects list" -msgstr "オブジェクト一覧" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "STL/STEP/3MF/OBJ/AMFファイルからジオメトリデータをインポート" - -msgid "Paste from clipboard" -msgstr "貼り付け" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "3Dconnexion設定を表示/非表示" - -msgid "Switch table page" -msgstr "テーブルページを切り替え" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Space" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "ショートカット一覧を表示" - -msgid "Global shortcuts" -msgstr "ショートカット" - msgid "Pan View" msgstr "移動" msgid "Rotate View" msgstr "回転" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + # AI Translated -msgid "Middle mouse button" -msgstr "マウス中ボタン" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Zoom View" -msgstr "ズーム" +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "選択したオブジェクトまたはプロジェクト内のすべてのオブジェクトの方向を自動的に設定します。" - -msgid "Auto orients all objects on the active plate." -msgstr "現在のプレート上のすべてのオブジェクトの方向を自動的に設定します。" - -msgid "Collapse/Expand the sidebar" -msgstr "サイドバーを展開/隠す" - -msgid "Any arrow" -msgstr "任意の矢印キー" - -msgid "Movement in camera space" -msgstr "オブジェクト移動" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "パーツを選択" @@ -12286,127 +12294,29 @@ msgstr "複数のオブジェクトを選択" msgid "Select objects by rectangle" msgstr "矩形でオブジェクトを選択" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "↑" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Y方向 10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "↓" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Y方向 -10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "←" - -msgid "Move selection 10mm in negative X direction" -msgstr "X方向 -10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "→" - -msgid "Move selection 10mm in positive X direction" -msgstr "X方向 10mm" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "キー1-9: オブジェクト/パーツのフィラメントを設定" msgid "Movement step set to 1mm" msgstr "移動ステップを1mmに設定" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "キー1-9: オブジェクト/パーツのフィラメントを設定" +msgid "Movement in camera space" +msgstr "オブジェクト移動" -msgid "Camera view - Default" -msgstr "デフォルト" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "トップ" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "底面" +msgid "Zoom View" +msgstr "ズーム" -msgid "Camera view - Front" -msgstr "正面" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "背面" - -msgid "Camera Angle - Left side" -msgstr "左側" - -msgid "Camera Angle - Right side" -msgstr "右側" - -msgid "Select all objects" -msgstr "すべてのオブジェクトを選択" - -msgid "Gizmo move" -msgstr "移動" - -msgid "Gizmo rotate" -msgstr "回転" - -msgid "Gizmo scale" -msgstr "スケール" - -msgid "Gizmo place face on bed" -msgstr "底面選択" - -msgid "Gizmo cut" -msgstr "カット" - -msgid "Gizmo mesh boolean" -msgstr "メッシュブール" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "ギズモ FDMファジースキンペイント" - -msgid "Gizmo SLA support points" -msgstr "SLAサポートポイント" - -msgid "Gizmo FDM paint-on seam" -msgstr "継ぎ目ペイント" - -msgid "Gizmo text emboss/engrave" -msgstr "ギズモ・テキストのエンボス/エングレーブ" - -msgid "Gizmo measure" -msgstr "測る" - -msgid "Gizmo assemble" -msgstr "組立てる" - -msgid "Gizmo brim ears" -msgstr "ブリム" - -msgid "Zoom in" -msgstr "ズームイン" - -msgid "Zoom out" -msgstr "縮小" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "オブジェクト/パーツの印刷可否を切り替え" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "準備/プレビュー間の切り替え" - -msgid "Plater" -msgstr "準備" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "1mm単位で移動" @@ -12417,15 +12327,19 @@ msgstr "サポート/色塗り: 半径のサイズ" msgid "Support/Color Painting: adjust section position" msgstr "サポート/色塗り: 断面の位置" -# AI Translated -msgid "Gizmo" -msgstr "ギズモ" +msgid "Objects list" +msgstr "オブジェクト一覧" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "オブジェクトとパーツ造形用の押出機番号を設定" -msgid "Delete objects, parts, modifiers" -msgstr "オブジェクト、パーツ、モディファイヤを削除" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Space" msgid "Select the object/part and press space to change the name" msgstr "オブジェクト/パーツを選択し、名前を変更します" @@ -12436,45 +12350,48 @@ msgstr "マウスクリック" msgid "Select the object/part and mouse click to change the name" msgstr "オブジェクト/パーツを選択し、名前を変更します" -msgid "Objects List" -msgstr "オブジェクト一覧" - -msgid "Vertical slider - Move active thumb Up" -msgstr "垂直スライダー" - -msgid "Vertical slider - Move active thumb Down" -msgstr "垂直スライダー" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "水平スライダー (左)" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "水平スライダー (右)" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "垂直スライダーの1レイヤーモードのオン/オフ" - -msgid "On/Off G-code window" -msgstr "G-codeウィンドウのオン/オフ" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "5x" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "水平スライダー - 開始位置に移動" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "水平スライダー - 最後の位置に移動" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "リリースノート" @@ -17711,9 +17628,8 @@ msgstr "予熱ステップ数" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "複数の予熱コマンド (M104.1など) を挿入します。Prusa XLでのみ有効です。その他のプリンターでは1に設定してください。" -# AI Translated -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "出力ファイルの先頭、他のどの内容よりも前に書き込まれるG-codeです。プリンターのファームウェアがファイル先頭の数行から読み取るメタデータ (推定印刷時間、フィラメント使用量など) を追加するのに便利です。{print_time_sec}や{used_filament_length}などのプレースホルダーに対応しています。" +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "スタートG-code" @@ -19371,14 +19287,37 @@ msgstr "フィラメント使用量" msgid "Total length of filament used in the print." msgstr "プリントに使用されるフィラメントの全長。" -# AI Translated -msgid "Print time (seconds)" -msgstr "印刷時間 (秒)" +msgid "Print time (total seconds)" +msgstr "" # AI Translated msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "推定される総印刷時間 (秒) です。後処理時に実際の値に置き換えられます。" +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + # AI Translated msgid "Filament length (meters)" msgstr "フィラメント長 (メートル)" @@ -21296,6 +21235,9 @@ msgstr "有効なセッションが検出されませんでした。3DPrinterOS msgid "Success!" msgstr "成功!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "本当にログアウトしますか?" @@ -22379,13 +22321,6 @@ msgstr "Bambuネットワークプラグインはクラウド機能、プリン msgid "Error: %s" msgstr "エラー: %s" -msgid "Show details" -msgstr "詳細を表示" - -# AI Translated -msgid "Hide details" -msgstr "詳細を隠す" - msgid "Version to install:" msgstr "インストールするバージョン:" @@ -25042,6 +24977,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -25054,6 +24995,217 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "←" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "→" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "↑" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "↓" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "STL/STEP/3MF/OBJ/AMFファイルからジオメトリデータをインポート" + +msgid "Select all objects" +msgstr "すべてのオブジェクトを選択" + +msgid "Paste from clipboard" +msgstr "貼り付け" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "オブジェクト/パーツの印刷可否を切り替え" + +msgid "Move selection 10mm in negative X direction" +msgstr "X方向 -10mm" + +msgid "Move selection 10mm in positive X direction" +msgstr "X方向 10mm" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Y方向 10mm" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Y方向 -10mm" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "移動" + +msgid "Gizmo rotate" +msgstr "回転" + +msgid "Gizmo scale" +msgstr "スケール" + +msgid "Gizmo place face on bed" +msgstr "底面選択" + +msgid "Gizmo cut" +msgstr "カット" + +msgid "Gizmo mesh boolean" +msgstr "メッシュブール" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "継ぎ目ペイント" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "ギズモ FDMファジースキンペイント" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "ギズモ・テキストのエンボス/エングレーブ" + +msgid "Gizmo measure" +msgstr "測る" + +msgid "Gizmo assemble" +msgstr "組立てる" + +msgid "Gizmo brim ears" +msgstr "ブリム" + +msgid "Vertical slider - Move active thumb Up" +msgstr "垂直スライダー" + +msgid "Vertical slider - Move active thumb Down" +msgstr "垂直スライダー" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "水平スライダー (左)" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "水平スライダー (右)" + +msgid "Horizontal slider - Move to start position" +msgstr "水平スライダー - 開始位置に移動" + +msgid "Horizontal slider - Move to last position" +msgstr "水平スライダー - 最後の位置に移動" + +msgid "Camera view - Default" +msgstr "デフォルト" + +msgid "Camera view - Top" +msgstr "トップ" + +msgid "Camera view - Bottom" +msgstr "底面" + +msgid "Camera view - Front" +msgstr "正面" + +msgid "Camera view - Behind" +msgstr "背面" + +msgid "Camera Angle - Left side" +msgstr "左側" + +msgid "Camera Angle - Right side" +msgstr "右側" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "ズームイン" + +msgid "Zoom out" +msgstr "縮小" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "3Dconnexion設定を表示/非表示" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "G-codeウィンドウのオン/オフ" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "垂直スライダーの1レイヤーモードのオン/オフ" + +msgid "Switch between Prepare/Preview" +msgstr "準備/プレビュー間の切り替え" + +msgid "Collapse/Expand the sidebar" +msgstr "サイドバーを展開/隠す" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "ショートカット一覧を表示" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + # AI Translated #: resources/data/hints.ini: [hint:Precise wall] msgid "" @@ -25366,6 +25518,68 @@ msgstr "" "反りを避ける\n" "ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げることで、反りが発生する確率を下げることができることをご存知ですか?" +# AI Translated +#~ msgid "Tab" +#~ msgstr "Tab" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "現在のビューポートのFPSを右上に表示します。" + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "3MF公開のWiki" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "3MF公開のビデオガイド" + +#~ msgid "Toolbar" +#~ msgstr "ツールバー" + +#~ msgid "Switch table page" +#~ msgstr "テーブルページを切り替え" + +#~ msgid "Global shortcuts" +#~ msgstr "ショートカット" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "マウス中ボタン" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "選択したオブジェクトまたはプロジェクト内のすべてのオブジェクトの方向を自動的に設定します。" + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "現在のプレート上のすべてのオブジェクトの方向を自動的に設定します。" + +#~ msgid "Any arrow" +#~ msgstr "任意の矢印キー" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "SLAサポートポイント" + +#~ msgid "Plater" +#~ msgstr "準備" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "ギズモ" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "オブジェクト、パーツ、モディファイヤを削除" + +#~ msgid "Objects List" +#~ msgstr "オブジェクト一覧" + +# AI Translated +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "出力ファイルの先頭、他のどの内容よりも前に書き込まれるG-codeです。プリンターのファームウェアがファイル先頭の数行から読み取るメタデータ (推定印刷時間、フィラメント使用量など) を追加するのに便利です。{print_time_sec}や{used_filament_length}などのプレースホルダーに対応しています。" + +# AI Translated +#~ msgid "Print time (seconds)" +#~ msgstr "印刷時間 (秒)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "アクションスピードダイヤルを開く" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 1dda527e28..e05554dab8 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -5949,12 +5949,15 @@ msgctxt "Camera View" msgid "Right" msgstr "오른쪽" -msgid "Add" -msgstr "추가" - msgid "Add plate" msgstr "플레이트 추가" +msgid "Split to objects" +msgstr "객체로 분할" + +msgid "Add" +msgstr "추가" + msgid "Auto orient all/selected objects" msgstr "모든/선택한 객체 자동 방향 지정" @@ -5967,9 +5970,6 @@ msgstr "모든 객체 정렬" msgid "Arrange objects on selected plates" msgstr "선택한 플레이트의 객체 정렬" -msgid "Split to objects" -msgstr "객체로 분할" - msgid "Assembly View" msgstr "조립 보기" @@ -6026,6 +6026,9 @@ msgstr "외곽선" msgid "Wireframe" msgstr "와이어프레임" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "사실적 보기" @@ -6563,9 +6566,6 @@ msgstr "3D 장면에서 선택한 객체 주변에 윤곽선 표시" msgid "Preferences" msgstr "기본 설정" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6574,6 +6574,9 @@ msgstr "편집" msgid "View" msgstr "시점" +msgid "Open Speed Dial" +msgstr "" + # AI Translated msgid "Preset Bundle" msgstr "사전 설정 번들" @@ -8387,10 +8390,6 @@ msgstr "사이드바 확장" msgid "Collapse sidebar" msgstr "사이드바 접기" -# AI Translated -msgid "Tab" -msgstr "탭" - #, c-format, boost-format msgid "Loading file: %s" msgstr "파일 로드 중: %s" @@ -9471,10 +9470,10 @@ msgstr "다중 장치 관리" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "활성화하면 여러 장치에 동시에 작업을 보내고 여러 장치를 관리할 수 있습니다." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9622,6 +9621,15 @@ msgstr "마우스 오른쪽 버튼 드래그" msgid "Set the action that dragging the right mouse button should perform." msgstr "마우스 오른쪽 버튼을 드래그할 때 수행할 동작을 설정합니다." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + # AI Translated msgid "Clear my choice on..." msgstr "다음 항목에 대한 선택 지우기..." @@ -9750,13 +9758,40 @@ msgstr "" "뷰포트의 프레임 속도를 제한하여 GPU 부하와 전력 사용량을 줄입니다.\n" "0으로 설정하면 프레임 속도가 무제한이 됩니다." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "FPS 오버레이 표시" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "현재 뷰포트의 FPS를 오른쪽 위 모서리에 표시합니다." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10247,13 +10282,8 @@ msgstr "3MF 게시..." msgid "Select which settings to be published in the 3MF file" msgstr "3MF 파일에 게시할 설정을 선택하세요" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "3MF 게시 위키" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "3MF 게시 비디오 가이드" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10456,6 +10486,14 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +# AI Translated +msgid "Show details" +msgstr "세부 정보 표시" + +# AI Translated +msgid "Hide details" +msgstr "세부 정보 숨기기" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12345,68 +12383,39 @@ msgstr "이전 구성 가이드에서 구성 패키지가 변경되었습니다" msgid "Configuration package changed" msgstr "구성 패키지가 변경됨" -msgid "Toolbar" -msgstr "도구 모음" - -msgid "Objects list" -msgstr "객체 목록" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "STL/STEP/3MF/OBJ/AMF 파일에서 형상 데이터 가져오기" - -msgid "Paste from clipboard" -msgstr "클립보드에서 붙여넣기" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "3D 연결 장치 설정 표시/숨기기 대화상자" - -msgid "Switch table page" -msgstr "테이블 페이지 전환" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Space" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "키보드 단축키 목록 보기" - -msgid "Global shortcuts" -msgstr "전역 단축키" - msgid "Pan View" msgstr "보기 이동" msgid "Rotate View" msgstr "보기 회전" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + # AI Translated -msgid "Middle mouse button" -msgstr "마우스 가운데 버튼" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Zoom View" -msgstr "줌 뷰" +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "선택한 객체 또는 모든 객체의 방향을 자동으로 조정합니다. 선택한 객체가 있는 경우 선택한 객체만 조정되고, 그렇지 않은 경우 프로젝트의 모든 객체가 조정됩니다." - -msgid "Auto orients all objects on the active plate." -msgstr "현재 플레이트에 있는 모든 객체의 방향을 자동으로 지정합니다." - -msgid "Collapse/Expand the sidebar" -msgstr "사이드바 접기/펼치기" - -msgid "Any arrow" -msgstr "모든 화살표" - -msgid "Movement in camera space" -msgstr "카메라 공간에서 이동" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "부품 선택" @@ -12417,129 +12426,30 @@ msgstr "여러 객체 선택" msgid "Select objects by rectangle" msgstr "사각형으로 객체 선택" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "↑" - -msgid "Move selection 10mm in positive Y direction" -msgstr "선택 항목을 +Y 방향으로 10mm 이동" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "↓" - -msgid "Move selection 10mm in negative Y direction" -msgstr "선택 항목을 -Y 방향으로 10mm 이동" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "←" - -msgid "Move selection 10mm in negative X direction" -msgstr "선택 항목을 -X 방향으로 10mm 이동" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "→" - -msgid "Move selection 10mm in positive X direction" -msgstr "선택 항목을 +X 방향으로 10mm 이동" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "키보드 1-9: 객체/부품에 필라멘트 할당" # AI Translated msgid "Movement step set to 1mm" msgstr "이동 단위를 1mm로 설정" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "키보드 1-9: 객체/부품에 필라멘트 할당" +msgid "Movement in camera space" +msgstr "카메라 공간에서 이동" -msgid "Camera view - Default" -msgstr "카메라 시점 - 기본" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "카메라 시점 - 위" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "카메라 시점 - 아래" +msgid "Zoom View" +msgstr "줌 뷰" -msgid "Camera view - Front" -msgstr "카메라 시점 - 앞" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "카메라 시점 - 뒤" - -msgid "Camera Angle - Left side" -msgstr "카메라 각도 - 좌측" - -msgid "Camera Angle - Right side" -msgstr "카메라 각도 - 우측" - -msgid "Select all objects" -msgstr "모든 객체 선택" - -msgid "Gizmo move" -msgstr "변형도구 이동" - -msgid "Gizmo rotate" -msgstr "변형도구 회전" - -msgid "Gizmo scale" -msgstr "변형도구 배율" - -msgid "Gizmo place face on bed" -msgstr "변형도구 바닥면 선택" - -msgid "Gizmo cut" -msgstr "변형도구 잘라내기" - -msgid "Gizmo mesh boolean" -msgstr "변형도구 합집합/차집합/교집합" - -# AI Translated -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "변형도구 FDM 퍼지 스킨 칠하기" - -msgid "Gizmo SLA support points" -msgstr "변형도구 서포트 칠하기" - -msgid "Gizmo FDM paint-on seam" -msgstr "변형도구 재봉선 칠하기" - -msgid "Gizmo text emboss/engrave" -msgstr "변형도구 - 텍스트 엠보싱/인그레이빙" - -msgid "Gizmo measure" -msgstr "변형도구 측정" - -msgid "Gizmo assemble" -msgstr "변형도구 병합" - -msgid "Gizmo brim ears" -msgstr "변형도구 브림 귀" - -msgid "Zoom in" -msgstr "확대" - -msgid "Zoom out" -msgstr "축소" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "객체/부품의 출력 가능 여부 전환" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "준비 하기/미리 보기 전환" - -msgid "Plater" -msgstr "출력판" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "이동: 눌러서 1mm씩 이동" @@ -12550,14 +12460,19 @@ msgstr "서포트/색상 칠하기: 펜 반경 조정" msgid "Support/Color Painting: adjust section position" msgstr "서포트/색상 칠하기: 단면 위치 조정" -msgid "Gizmo" -msgstr "변형도구" +msgid "Objects list" +msgstr "객체 목록" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "객체 및 부품에 대한 압출기 번호 설정" -msgid "Delete objects, parts, modifiers" -msgstr "객체, 부품, 수정자 삭제" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Space" msgid "Select the object/part and press space to change the name" msgstr "객체/부품을 선택하고 스페이스바를 눌러 이름을 변경합니다" @@ -12568,45 +12483,48 @@ msgstr "마우스 클릭" msgid "Select the object/part and mouse click to change the name" msgstr "객체/부품을 선택하고 마우스를 클릭하여 이름을 변경합니다" -msgid "Objects List" -msgstr "객체 목록" - -msgid "Vertical slider - Move active thumb Up" -msgstr "수직 슬라이더 - 활성 레이어 위로 이동" - -msgid "Vertical slider - Move active thumb Down" -msgstr "수직 슬라이더 - 활성 레이어 아래로 이동" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "수평 슬라이더 - 활성 라인 왼쪽으로 이동" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "수평 슬라이더 - 활성 라인 오른쪽으로 이동" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "수직 슬라이더의 한 레이어 모드 켜기/끄기" - -msgid "On/Off G-code window" -msgstr "Gcode 창 켜기/끄기" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "슬라이더를 5배 빠르게 이동" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "수평 슬라이더 - 시작 위치로 이동" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "수평 슬라이더 - 마지막 위치로 이동" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "릴리스 노트" @@ -17678,9 +17596,8 @@ msgstr "예열 단계" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "여러 예열 명령(예: M104.1)을 삽입하세요. Prusa XL에만 유용합니다. 다른 프린터의 경우 1로 설정하세요." -# AI Translated -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "출력 파일의 가장 앞부분, 다른 모든 내용보다 먼저 기록되는 G-code입니다. 프린터 펌웨어가 파일의 첫 줄에서 읽는 메타데이터(예: 예상 출력 시간, 필라멘트 사용량)를 추가하는 데 유용합니다. {print_time_sec}, {used_filament_length}와 같은 자리 표시자를 지원합니다." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "시작 Gcode" @@ -19257,14 +19174,37 @@ msgstr "사용된 필라멘트" msgid "Total length of filament used in the print." msgstr "출력에 사용된 필라멘트의 총 길이입니다." -# AI Translated -msgid "Print time (seconds)" -msgstr "출력 시간(초)" +msgid "Print time (total seconds)" +msgstr "" # AI Translated msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "초 단위의 총 예상 출력 시간입니다. 후처리 중에 실제 값으로 대체됩니다." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + # AI Translated msgid "Filament length (meters)" msgstr "필라멘트 길이(미터)" @@ -21172,6 +21112,9 @@ msgstr "유효한 세션이 감지되지 않았습니다. 3DPrinterOS에 로그 msgid "Success!" msgstr "성공!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "정말 로그아웃하시겠습니까?" @@ -22241,14 +22184,6 @@ msgstr "클라우드 기능, 프린터 검색, 원격 출력에는 Bambu 네트 msgid "Error: %s" msgstr "오류: %s" -# AI Translated -msgid "Show details" -msgstr "세부 정보 표시" - -# AI Translated -msgid "Hide details" -msgstr "세부 정보 숨기기" - # AI Translated msgid "Version to install:" msgstr "설치할 버전:" @@ -24918,6 +24853,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24930,6 +24871,218 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "←" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "→" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "↑" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "↓" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "STL/STEP/3MF/OBJ/AMF 파일에서 형상 데이터 가져오기" + +msgid "Select all objects" +msgstr "모든 객체 선택" + +msgid "Paste from clipboard" +msgstr "클립보드에서 붙여넣기" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "객체/부품의 출력 가능 여부 전환" + +msgid "Move selection 10mm in negative X direction" +msgstr "선택 항목을 -X 방향으로 10mm 이동" + +msgid "Move selection 10mm in positive X direction" +msgstr "선택 항목을 +X 방향으로 10mm 이동" + +msgid "Move selection 10mm in positive Y direction" +msgstr "선택 항목을 +Y 방향으로 10mm 이동" + +msgid "Move selection 10mm in negative Y direction" +msgstr "선택 항목을 -Y 방향으로 10mm 이동" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "변형도구 이동" + +msgid "Gizmo rotate" +msgstr "변형도구 회전" + +msgid "Gizmo scale" +msgstr "변형도구 배율" + +msgid "Gizmo place face on bed" +msgstr "변형도구 바닥면 선택" + +msgid "Gizmo cut" +msgstr "변형도구 잘라내기" + +msgid "Gizmo mesh boolean" +msgstr "변형도구 합집합/차집합/교집합" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "변형도구 재봉선 칠하기" + +# AI Translated +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "변형도구 FDM 퍼지 스킨 칠하기" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "변형도구 - 텍스트 엠보싱/인그레이빙" + +msgid "Gizmo measure" +msgstr "변형도구 측정" + +msgid "Gizmo assemble" +msgstr "변형도구 병합" + +msgid "Gizmo brim ears" +msgstr "변형도구 브림 귀" + +msgid "Vertical slider - Move active thumb Up" +msgstr "수직 슬라이더 - 활성 레이어 위로 이동" + +msgid "Vertical slider - Move active thumb Down" +msgstr "수직 슬라이더 - 활성 레이어 아래로 이동" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "수평 슬라이더 - 활성 라인 왼쪽으로 이동" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "수평 슬라이더 - 활성 라인 오른쪽으로 이동" + +msgid "Horizontal slider - Move to start position" +msgstr "수평 슬라이더 - 시작 위치로 이동" + +msgid "Horizontal slider - Move to last position" +msgstr "수평 슬라이더 - 마지막 위치로 이동" + +msgid "Camera view - Default" +msgstr "카메라 시점 - 기본" + +msgid "Camera view - Top" +msgstr "카메라 시점 - 위" + +msgid "Camera view - Bottom" +msgstr "카메라 시점 - 아래" + +msgid "Camera view - Front" +msgstr "카메라 시점 - 앞" + +msgid "Camera view - Behind" +msgstr "카메라 시점 - 뒤" + +msgid "Camera Angle - Left side" +msgstr "카메라 각도 - 좌측" + +msgid "Camera Angle - Right side" +msgstr "카메라 각도 - 우측" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "확대" + +msgid "Zoom out" +msgstr "축소" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "3D 연결 장치 설정 표시/숨기기 대화상자" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Gcode 창 켜기/끄기" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "수직 슬라이더의 한 레이어 모드 켜기/끄기" + +msgid "Switch between Prepare/Preview" +msgstr "준비 하기/미리 보기 전환" + +msgid "Collapse/Expand the sidebar" +msgstr "사이드바 접기/펼치기" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "키보드 단축키 목록 보기" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -25232,6 +25385,67 @@ msgstr "" "뒤틀림 방지\n" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +# AI Translated +#~ msgid "Tab" +#~ msgstr "탭" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "현재 뷰포트의 FPS를 오른쪽 위 모서리에 표시합니다." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "3MF 게시 위키" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "3MF 게시 비디오 가이드" + +#~ msgid "Toolbar" +#~ msgstr "도구 모음" + +#~ msgid "Switch table page" +#~ msgstr "테이블 페이지 전환" + +#~ msgid "Global shortcuts" +#~ msgstr "전역 단축키" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "마우스 가운데 버튼" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "선택한 객체 또는 모든 객체의 방향을 자동으로 조정합니다. 선택한 객체가 있는 경우 선택한 객체만 조정되고, 그렇지 않은 경우 프로젝트의 모든 객체가 조정됩니다." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "현재 플레이트에 있는 모든 객체의 방향을 자동으로 지정합니다." + +#~ msgid "Any arrow" +#~ msgstr "모든 화살표" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "변형도구 서포트 칠하기" + +#~ msgid "Plater" +#~ msgstr "출력판" + +#~ msgid "Gizmo" +#~ msgstr "변형도구" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "객체, 부품, 수정자 삭제" + +#~ msgid "Objects List" +#~ msgstr "객체 목록" + +# AI Translated +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "출력 파일의 가장 앞부분, 다른 모든 내용보다 먼저 기록되는 G-code입니다. 프린터 펌웨어가 파일의 첫 줄에서 읽는 메타데이터(예: 예상 출력 시간, 필라멘트 사용량)를 추가하는 데 유용합니다. {print_time_sec}, {used_filament_length}와 같은 자리 표시자를 지원합니다." + +# AI Translated +#~ msgid "Print time (seconds)" +#~ msgstr "출력 시간(초)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "작업 스피드 다이얼 열기" diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt index 7636bf2484..ef049fa48e 100644 --- a/localization/i18n/list.txt +++ b/localization/i18n/list.txt @@ -300,3 +300,5 @@ src/slic3r/GUI/CAD/DesignPanel.cpp src/slic3r/GUI/CAD/SketchInlineEditor.cpp src/slic3r/GUI/Gizmos/GLGizmoPrimitive.cpp src/slic3r/GUI/Gizmos/GLGizmoSketch.cpp +src/slic3r/GUI/KeyChord.cpp +src/slic3r/GUI/Shortcuts.cpp diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 6fe2933981..1765ad1cc1 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-07-02 14:13+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -5911,12 +5911,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Dešinė" -msgid "Add" -msgstr "Įtraukti" - msgid "Add plate" msgstr "Įtraukti plokštę" +msgid "Split to objects" +msgstr "Padalinti į objektus" + +msgid "Add" +msgstr "Įtraukti" + msgid "Auto orient all/selected objects" msgstr "Automatiškai orientuoti visus / pasirinktus objektus" @@ -5929,9 +5932,6 @@ msgstr "Išdėstyti visus objektus" msgid "Arrange objects on selected plates" msgstr "Išdėstyti objektus pasirinktose plokštėse" -msgid "Split to objects" -msgstr "Padalinti į objektus" - msgid "Assembly View" msgstr "Surinkimo vaizdas" @@ -5986,6 +5986,9 @@ msgstr "Kontūras" msgid "Wireframe" msgstr "Rodyti karkasinį vaizdą" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Realistiškas vaizdas" @@ -6525,9 +6528,6 @@ msgstr "Rodyti kontūrą aplink pasirinktą objektą 3D scenoje." msgid "Preferences" msgstr "Parinktys" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6536,6 +6536,9 @@ msgstr "Redaguoti" msgid "View" msgstr "Vaizdas" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Profilių rinkinys" @@ -8353,9 +8356,6 @@ msgstr "Išskleisti šoninę juostą" msgid "Collapse sidebar" msgstr "Sutraukti šoninę juostą" -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Įkeliamas failas: %s" @@ -9369,10 +9369,10 @@ msgstr "Kelių įrenginių valdymas" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Kai įjungta ši funkcija, jūs galite siųsti užduotį keliems įrenginiams vienu metu, taip apt kontroliuoti keletą įrenginių." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9504,6 +9504,15 @@ msgstr "Vilkti dešiniuoju pelės mygtuku" msgid "Set the action that dragging the right mouse button should perform." msgstr "Nustatykite veiksmą, kuris turi būti atliktas, velkant dešinįjį pelės mygtuką." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Išvalyti mano pasirinkimą..." @@ -9612,11 +9621,39 @@ msgid "" "Set to 0 for unlimited frame rate." msgstr "Riboja vaizdo srities kadrų dažnį, kad sumažintų vaizdo plokštės (GPU) apkrovą ir energijos sąnaudas. Įveskite 0, jei kadrų dažnis neribojamas." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "Rodyti KPS (FPS) indikatorių" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Viršutiniame dešiniajame kampe rodo esamą vaizdo srities kadrų dažnį." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10073,13 +10110,8 @@ msgstr "Talpinti 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Pasirinkite, kuriuos parametrus talpinti 3MF faile" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "3MF talpinimo wiki" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "3MF talpinimo vaizdo vadovas" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10281,6 +10313,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Rodyti išsamiau" + +# AI Translated +msgid "Hide details" +msgstr "Slėpti išsamią informaciją" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12117,67 +12156,39 @@ msgstr "Konfigūracijos paketas buvo pakeistas ankstesniame konfigūravimo vadov msgid "Configuration package changed" msgstr "Pakeistas konfigūracijos paketas" -msgid "Toolbar" -msgstr "Įrankių juosta" - -msgid "Objects list" -msgstr "Objektų sąrašas" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importuoti geometrijos duomenis iš STL/STEP/3MF/OBJ/AMF failų" - -msgid "Paste from clipboard" -msgstr "Įklijuoti iš mainų srities" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Rodyti/slėpti 3DConnexion įrenginių nustatymų dialogo langą" - -msgid "Switch table page" -msgstr "Perjungti lentelės puslapį" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Tarpas" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Rodyti sparčiųjų klavišų sąrašą" - -msgid "Global shortcuts" -msgstr "Bendrieji spartieji klavišai" - msgid "Pan View" msgstr "Vaizdo stūmimas (panoraminis vaizdas)" msgid "Rotate View" msgstr "Vaizdo pasukimas" -msgid "Middle mouse button" -msgstr "Vidurinis pelės mygtukas" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Vaizdo mastelio keitimas (zoom)" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Automatiškai orientuoja pasirinktus objektus arba visus objektus. Jei yra pasirinkti objektai, orientuoja tik pasirinktus. Kitais atvejais orientuoja visus esamo projekto objektus." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Automatiškai orientuoja visus objektus aktyvioje plokštėje." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Sutraukti / išskleisti šoninę juostą" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "Bet kuri rodyklė" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Judėjimas kameros erdvėje" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Pasirinkti dalį" @@ -12188,126 +12199,29 @@ msgstr "Pasirinkite kelis objektus" msgid "Select objects by rectangle" msgstr "Pasirinkti objektus stačiakampio rėmeliu" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Rodyklė aukštyn" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Perkelti pasirinkimą 10 mm teigiama Y kryptimi" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Rodyklė žemyn" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Perkelti pasirinkimą 10 mm neigiama Y kryptimi" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Rodyklė kairėn" - -msgid "Move selection 10mm in negative X direction" -msgstr "Perkelti pasirinkimą 10 mm neigiama X kryptimi" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Rodyklė dešinėn" - -msgid "Move selection 10mm in positive X direction" -msgstr "Perkelti pasirinkimą 10 mm teigiama X kryptimi" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Klaviatūra 1-9: nustatyti objekto/dalies giją" msgid "Movement step set to 1mm" msgstr "Judėjimo žingsnis nustatytas į 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Klaviatūra 1-9: nustatyti objekto/dalies giją" +msgid "Movement in camera space" +msgstr "Judėjimas kameros erdvėje" -msgid "Camera view - Default" -msgstr "Kameros vaizdas - Numatytasis" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Kameros vaizdas - Viršus" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Kameros vaizdas - Apačia" +msgid "Zoom View" +msgstr "Vaizdo mastelio keitimas (zoom)" -msgid "Camera view - Front" -msgstr "Kameros vaizdas - Priekis" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Kameros vaizdas – iš galo" - -msgid "Camera Angle - Left side" -msgstr "Kameros kampas – iš kairės" - -msgid "Camera Angle - Right side" -msgstr "Kameros kampas – iš dešinės" - -msgid "Select all objects" -msgstr "Pasirinkti visus objektus" - -msgid "Gizmo move" -msgstr "Perkėlimo manipuliatorius" - -msgid "Gizmo rotate" -msgstr "Pasukimo manipuliatorius" - -msgid "Gizmo scale" -msgstr "Mastelio keitimo manipuliatorius" - -msgid "Gizmo place face on bed" -msgstr "Paviršiaus dėjimo ant pagrindo manipuliatorius" - -msgid "Gizmo cut" -msgstr "Pjovimo manipuliatorius" - -msgid "Gizmo mesh boolean" -msgstr "Loginių tinklelio veiksmų (Boolean) manipuliatorius" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "FDM užtepamo grublėto paviršiaus (fuzzy skin) manipuliatorius" - -msgid "Gizmo SLA support points" -msgstr "SLA atramų taškų manipuliatorius" - -msgid "Gizmo FDM paint-on seam" -msgstr "FDM užtepamos siūlės (seam) manipuliatorius" - -msgid "Gizmo text emboss/engrave" -msgstr "Teksto iškėlimo ir įspaudimo (emboss/engrave) manipuliatorius" - -msgid "Gizmo measure" -msgstr "Matavimo manipuliatorius" - -msgid "Gizmo assemble" -msgstr "Surinkimo manipuliatorius" - -msgid "Gizmo brim ears" -msgstr "Krašto „auselių“ (brim ears) manipuliatorius" - -msgid "Zoom in" -msgstr "Padidinti" - -msgid "Zoom out" -msgstr "Nutolinti" - -msgid "Toggle printable for object/part" -msgstr "Perjungti objekto / dalies spausdinimą" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Perjungimas tarp Paruošti / Peržiūrėti" - -msgid "Plater" -msgstr "Plokštė" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Perkėlimas: paspauskite, kad pritrauktumėte kas 1 mm" @@ -12318,14 +12232,19 @@ msgstr "Atramų ir spalvų užtepimas: keisti teptuko spindulį" msgid "Support/Color Painting: adjust section position" msgstr "Atramų ir spalvų užtepimas: keisti pjūvio padėtį" -msgid "Gizmo" -msgstr "Manipuliatorius" +msgid "Objects list" +msgstr "Objektų sąrašas" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Nustatykite ekstruderio numerį objektams ir dalims" -msgid "Delete objects, parts, modifiers" -msgstr "Ištrinti objektus, dalis, modifikatorius" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Tarpas" msgid "Select the object/part and press space to change the name" msgstr "Pasirinkite objektą ir (arba) dalį ir paspauskite tarpo klavišą, kad pakeistumėte pavadinimą" @@ -12336,45 +12255,48 @@ msgstr "Pelės paspaudimas" msgid "Select the object/part and mouse click to change the name" msgstr "Pasirinkite objektą/dalį ir spustelėkite pele, kad pakeistumėte pavadinimą" -msgid "Objects List" -msgstr "Objektų sąrašas" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Vertikalus slankiklis – kelti aktyvų žymeklį aukštyn" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Vertikalus slankiklis – nuleisti aktyvų žymeklį žemyn" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Horizontalus slankiklis – stumti aktyvų žymeklį kairėn" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Horizontalus slankiklis – stumti aktyvų žymeklį dešinėn" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Vertikalaus slankiklio vieno sluoksnio režimas įjungimas / išjungimas" - -msgid "On/Off G-code window" -msgstr "G-kodo lango įjungimas / išjungimas" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Judinkite slankiklį 5 kartus greičiau" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Horizontalus slankiklis – perkelti į pradinę padėtį" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Horizontalus slankiklis – perkelti į paskutinę padėtį" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Versijos pastabos (Release notes)" @@ -17222,8 +17144,8 @@ msgstr "Įkaitinimo etapai" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Įterpkite kelias įkaitinimo komandas (pvz., M104.1). Naudinga tik „Prusa XL“. Kitiems spausdintuvams nustatykite 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-kodas, įrašomas pačiame išvesties failo viršuje, prieš bet kokį kitą turinį. Naudingas įterpti metaduomenims, kuriuos spausdintuvo aparatinė programinė įranga nuskaito iš pirmųjų failo eilučių (pvz., numatomą spausdinimo laiką, gijos sąnaudas). Palaiko kintamuosius (placeholders), tokius kaip {print_time_sec} ir {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Pradžios G-kodas" @@ -18765,12 +18687,36 @@ msgstr "Naudota gija" msgid "Total length of filament used in the print." msgstr "Bendras viso spausdinimo metu sunaudotos gijos ilgis." -msgid "Print time (seconds)" -msgstr "Spausdinimo laikas (sekundėmis)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Bendras numatomas spausdinimo laikas sekundėmis. Papildomo apdorojimo (post-processing) metu pakeičiama faktine reikšme." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Gijos ilgis (metrais)" @@ -20612,6 +20558,9 @@ msgstr "Nerasta galiojančios sesijos. Prisijungti prie „3DPrinterOS“?" msgid "Success!" msgstr "Pavyko!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Ar tikrai norite atsijungti?" @@ -21567,13 +21516,6 @@ msgstr "„Bambu“ tinklo papildinys yra būtinas, kad veiktų debesijos funkci msgid "Error: %s" msgstr "Klaida: %s" -msgid "Show details" -msgstr "Rodyti išsamiau" - -# AI Translated -msgid "Hide details" -msgstr "Slėpti išsamią informaciją" - msgid "Version to install:" msgstr "Diegiama versija:" @@ -24202,6 +24144,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24214,6 +24162,216 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Rodyklė kairėn" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Rodyklė dešinėn" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Rodyklė aukštyn" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Rodyklė žemyn" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importuoti geometrijos duomenis iš STL/STEP/3MF/OBJ/AMF failų" + +msgid "Select all objects" +msgstr "Pasirinkti visus objektus" + +msgid "Paste from clipboard" +msgstr "Įklijuoti iš mainų srities" + +msgid "Toggle printable for object/part" +msgstr "Perjungti objekto / dalies spausdinimą" + +msgid "Move selection 10mm in negative X direction" +msgstr "Perkelti pasirinkimą 10 mm neigiama X kryptimi" + +msgid "Move selection 10mm in positive X direction" +msgstr "Perkelti pasirinkimą 10 mm teigiama X kryptimi" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Perkelti pasirinkimą 10 mm teigiama Y kryptimi" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Perkelti pasirinkimą 10 mm neigiama Y kryptimi" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Perkėlimo manipuliatorius" + +msgid "Gizmo rotate" +msgstr "Pasukimo manipuliatorius" + +msgid "Gizmo scale" +msgstr "Mastelio keitimo manipuliatorius" + +msgid "Gizmo place face on bed" +msgstr "Paviršiaus dėjimo ant pagrindo manipuliatorius" + +msgid "Gizmo cut" +msgstr "Pjovimo manipuliatorius" + +msgid "Gizmo mesh boolean" +msgstr "Loginių tinklelio veiksmų (Boolean) manipuliatorius" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "FDM užtepamos siūlės (seam) manipuliatorius" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "FDM užtepamo grublėto paviršiaus (fuzzy skin) manipuliatorius" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Teksto iškėlimo ir įspaudimo (emboss/engrave) manipuliatorius" + +msgid "Gizmo measure" +msgstr "Matavimo manipuliatorius" + +msgid "Gizmo assemble" +msgstr "Surinkimo manipuliatorius" + +msgid "Gizmo brim ears" +msgstr "Krašto „auselių“ (brim ears) manipuliatorius" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Vertikalus slankiklis – kelti aktyvų žymeklį aukštyn" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Vertikalus slankiklis – nuleisti aktyvų žymeklį žemyn" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Horizontalus slankiklis – stumti aktyvų žymeklį kairėn" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Horizontalus slankiklis – stumti aktyvų žymeklį dešinėn" + +msgid "Horizontal slider - Move to start position" +msgstr "Horizontalus slankiklis – perkelti į pradinę padėtį" + +msgid "Horizontal slider - Move to last position" +msgstr "Horizontalus slankiklis – perkelti į paskutinę padėtį" + +msgid "Camera view - Default" +msgstr "Kameros vaizdas - Numatytasis" + +msgid "Camera view - Top" +msgstr "Kameros vaizdas - Viršus" + +msgid "Camera view - Bottom" +msgstr "Kameros vaizdas - Apačia" + +msgid "Camera view - Front" +msgstr "Kameros vaizdas - Priekis" + +msgid "Camera view - Behind" +msgstr "Kameros vaizdas – iš galo" + +msgid "Camera Angle - Left side" +msgstr "Kameros kampas – iš kairės" + +msgid "Camera Angle - Right side" +msgstr "Kameros kampas – iš dešinės" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Padidinti" + +msgid "Zoom out" +msgstr "Nutolinti" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Rodyti/slėpti 3DConnexion įrenginių nustatymų dialogo langą" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "G-kodo lango įjungimas / išjungimas" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Vertikalaus slankiklio vieno sluoksnio režimas įjungimas / išjungimas" + +msgid "Switch between Prepare/Preview" +msgstr "Perjungimas tarp Paruošti / Peržiūrėti" + +msgid "Collapse/Expand the sidebar" +msgstr "Sutraukti / išskleisti šoninę juostą" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Rodyti sparčiųjų klavišų sąrašą" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24514,6 +24672,62 @@ 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ę?" +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Viršutiniame dešiniajame kampe rodo esamą vaizdo srities kadrų dažnį." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "3MF talpinimo wiki" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "3MF talpinimo vaizdo vadovas" + +#~ msgid "Toolbar" +#~ msgstr "Įrankių juosta" + +#~ msgid "Switch table page" +#~ msgstr "Perjungti lentelės puslapį" + +#~ msgid "Global shortcuts" +#~ msgstr "Bendrieji spartieji klavišai" + +#~ msgid "Middle mouse button" +#~ msgstr "Vidurinis pelės mygtukas" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Automatiškai orientuoja pasirinktus objektus arba visus objektus. Jei yra pasirinkti objektai, orientuoja tik pasirinktus. Kitais atvejais orientuoja visus esamo projekto objektus." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Automatiškai orientuoja visus objektus aktyvioje plokštėje." + +#~ msgid "Any arrow" +#~ msgstr "Bet kuri rodyklė" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "SLA atramų taškų manipuliatorius" + +#~ msgid "Plater" +#~ msgstr "Plokštė" + +#~ msgid "Gizmo" +#~ msgstr "Manipuliatorius" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Ištrinti objektus, dalis, modifikatorius" + +#~ msgid "Objects List" +#~ msgstr "Objektų sąrašas" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-kodas, įrašomas pačiame išvesties failo viršuje, prieš bet kokį kitą turinį. Naudingas įterpti metaduomenims, kuriuos spausdintuvo aparatinė programinė įranga nuskaito iš pirmųjų failo eilučių (pvz., numatomą spausdinimo laiką, gijos sąnaudas). Palaiko kintamuosius (placeholders), tokius kaip {print_time_sec} ir {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Spausdinimo laikas (sekundėmis)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Atidaryti veiksmų greitosios prieigos meniu" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 685be64863..82486003ef 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -6454,12 +6454,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Rechts" -msgid "Add" -msgstr "Toevoegen" - msgid "Add plate" msgstr "Printbed toevoegen" +msgid "Split to objects" +msgstr "Opsplitsen in objecten" + +msgid "Add" +msgstr "Toevoegen" + msgid "Auto orient all/selected objects" msgstr "Automatisch oriënteren alle/geselecteerde objecten" @@ -6472,9 +6475,6 @@ msgstr "Alle objecten rangschikken" msgid "Arrange objects on selected plates" msgstr "Rangschikt de objecten op de gelecteerde printbedden" -msgid "Split to objects" -msgstr "Opsplitsen in objecten" - msgid "Assembly View" msgstr "Montageweergave" @@ -6533,6 +6533,9 @@ msgstr "Omtrek" msgid "Wireframe" msgstr "Draadmodel" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Realistische weergave" @@ -7119,9 +7122,6 @@ msgstr "Toon een omtrek rond het geselecteerde object in de 3D-scène." msgid "Preferences" msgstr "Voorkeuren" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -7130,6 +7130,9 @@ msgstr "Bewerken" msgid "View" msgstr "Weergave" +msgid "Open Speed Dial" +msgstr "" + # AI Translated msgid "Preset Bundle" msgstr "Voorinstellingenbundel" @@ -9088,10 +9091,6 @@ msgstr "Zijbalk uitklappen" msgid "Collapse sidebar" msgstr "Zijbalk inklappen" -# AI Translated -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Bestand laden: %s" @@ -10218,10 +10217,10 @@ msgstr "Beheer van meerdere apparaten" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Met deze optie ingeschakeld kunt u een taak tegelijkertijd naar meerdere apparaten sturen en meerdere apparaten beheren." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -10371,6 +10370,15 @@ msgstr "Slepen met rechtermuisknop" msgid "Set the action that dragging the right mouse button should perform." msgstr "Stel de actie in die het slepen met de rechtermuisknop moet uitvoeren." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + # AI Translated msgid "Clear my choice on..." msgstr "Mijn keuze wissen voor..." @@ -10500,13 +10508,40 @@ msgstr "" "Beperkt de framesnelheid van de viewport om de GPU-belasting en het stroomverbruik te verlagen.\n" "Stel in op 0 voor een onbeperkte framesnelheid." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "FPS-overlay tonen" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Toont de huidige FPS van de viewport in de rechterbovenhoek." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -11006,13 +11041,8 @@ msgstr "3MF publiceren..." msgid "Select which settings to be published in the 3MF file" msgstr "Selecteer welke instellingen in het 3MF-bestand worden gepubliceerd" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki over 3MF publiceren" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Videohandleiding over 3MF publiceren" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -11215,6 +11245,14 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +# AI Translated +msgid "Show details" +msgstr "Details tonen" + +# AI Translated +msgid "Hide details" +msgstr "Details verbergen" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -13238,71 +13276,39 @@ msgstr "Het configuratiebestand is aangepast in de vorige Config Guide" msgid "Configuration package changed" msgstr "Het configuratiepakket is gewijzigd" -msgid "Toolbar" -msgstr "Gereedschapsbalk" - -msgid "Objects list" -msgstr "Object lijst" - -# AI Translated -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importeer geometriegegevens uit STL-/STEP-/3MF-/OBJ-/AMF-bestanden" - -msgid "Paste from clipboard" -msgstr "Plakken vanuit klembord" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Dialoogvenster met instellingen voor 3Dconnexion-apparaten weergeven/verbergen" - -msgid "Switch table page" -msgstr "Schakeltabel pagina" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Spatie" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Toon lijst met sneltoetsen" - -msgid "Global shortcuts" -msgstr "Globale snelkoppelingen" - msgid "Pan View" msgstr "Panweergave" msgid "Rotate View" msgstr "Weergave roteren" -# AI Translated -msgid "Middle mouse button" -msgstr "Middelste muisknop" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Zoom weergave" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Oriënteert automatisch geselecteerde objecten of alle objecten. Als er geselecteerde objecten zijn, oriënteert het alleen de geselecteerde objecten. Anders worden alle objecten van het project georiënteerd." +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" # AI Translated -msgid "Auto orients all objects on the active plate." -msgstr "Oriënteert alle objecten op het actieve printbed automatisch." +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Collapse/Expand the sidebar" -msgstr "De menubalk in-/uitschuiven" +msgid "Switch to the next main tab" +msgstr "" -# AI Translated -msgid "Any arrow" -msgstr "Willekeurige pijltoets" - -msgid "Movement in camera space" -msgstr "Beweging in cameragebied" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Selecteer een onderdeel" @@ -13313,130 +13319,29 @@ msgstr "Selecteer meerdere objecten" msgid "Select objects by rectangle" msgstr "Objecten selecteren door rechthoek" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Pijl omhoog" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Verplaats de selectie 10mm in een positieve Y richting" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Pijl omlaag" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Verplaats de selectie 10mm in een negatieve Y richting" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Pijl links" - -msgid "Move selection 10mm in negative X direction" -msgstr "Verplaats de selectie 10mm in een negatieve X richting" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Pijl rechts" - -msgid "Move selection 10mm in positive X direction" -msgstr "Verplaats de selectie 10mm in een positieve X richting" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Toets 1-9: kies filament voor het object/onderdeel" msgid "Movement step set to 1mm" msgstr "Bewegingsinterval ingesteld op 1mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Toets 1-9: kies filament voor het object/onderdeel" +msgid "Movement in camera space" +msgstr "Beweging in cameragebied" -msgid "Camera view - Default" -msgstr "Camera hoek - Standaard" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Camera hoek - Bovenkant" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Camera hoek - Onderkant" +msgid "Zoom View" +msgstr "Zoom weergave" -msgid "Camera view - Front" -msgstr "Camera hoek - Voorkant" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Camera hoek - Achter" - -msgid "Camera Angle - Left side" -msgstr "Camera hoek - Linker zijde" - -msgid "Camera Angle - Right side" -msgstr "Camera hoek - Rechter zijde" - -msgid "Select all objects" -msgstr "Selecteer alle objecten" - -msgid "Gizmo move" -msgstr "Gizmo bewegen" - -msgid "Gizmo rotate" -msgstr "Gizmo roteren" - -msgid "Gizmo scale" -msgstr "Gizmo schalen" - -msgid "Gizmo place face on bed" -msgstr "Gizmo plaats gebied op het bed" - -msgid "Gizmo cut" -msgstr "Gizmo snijden" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo mesh booleaan" - -# AI Translated -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM vage buitenkant schilderen" - -msgid "Gizmo SLA support points" -msgstr "Gizmo SLA-ondersteuningspunten" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo FDM seam schilderen" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo tekst reliëf/graveren" - -msgid "Gizmo measure" -msgstr "Gizmo maatregel" - -msgid "Gizmo assemble" -msgstr "Gizmo monteren" - -msgid "Gizmo brim ears" -msgstr "Gizmo rand oren" - -# AI Translated -msgid "Zoom in" -msgstr "Inzoomen" - -msgid "Zoom out" -msgstr "Zoom uit" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "Printbaar in-/uitschakelen voor object/onderdeel" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -# AI Translated -msgid "Switch between Prepare/Preview" -msgstr "Wisselen tussen Voorbereiden/Voorvertoning" - -msgid "Plater" -msgstr "Plaat" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Verplaatsen: druk om 1 mm te verplaatsen" @@ -13447,15 +13352,19 @@ msgstr "Support/kleur intekenen: pas de pen diameter aan" msgid "Support/Color Painting: adjust section position" msgstr "Support/kleur intekenen: pas de sectie positie aan" -# AI Translated -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Object lijst" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Stel het extrudernnumer in voor de objecten en onderdelen" -msgid "Delete objects, parts, modifiers" -msgstr "Verwijder objecten, onderdelen, aanpassingen" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Spatie" msgid "Select the object/part and press space to change the name" msgstr "Selecteer het object/onderdeel en druk op de spatiebalk om de naam aan te passen" @@ -13466,48 +13375,48 @@ msgstr "Muisklik" msgid "Select the object/part and mouse click to change the name" msgstr "Selecteer het object/onderdeel en rechtermuisklik om de naam aan te passen" -msgid "Objects List" -msgstr "Objecten lijst" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Verticale schuifregelaar - Actieve thumb omhoog bewegen" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Verticale schuifregelaar - Actieve thumb omlaag bewegen" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Horizontale schuifbalk - Beweeg actieve duim naar links" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Horizontale schuifbalk - Beweeg actieve duim naar rechts" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Aan/uit één laagmodus van de verticale schuifregelaar" - -# AI Translated -msgid "On/Off G-code window" -msgstr "G-code-venster aan/uit" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Schuifregelaar 5x sneller verplaatsen" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -# AI Translated -msgid "Horizontal slider - Move to start position" -msgstr "Horizontale schuifregelaar - Naar de startpositie" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -# AI Translated -msgid "Horizontal slider - Move to last position" -msgstr "Horizontale schuifregelaar - Naar de laatste positie" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Release-opmerkingen" @@ -18992,9 +18901,8 @@ msgstr "Voorverwarmstappen" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Voeg meerdere voorverwarmopdrachten in (bijv. M104.1). Alleen nuttig voor de Prusa XL. Stel dit voor andere printers in op 1." -# AI Translated -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code die helemaal bovenaan het uitvoerbestand wordt geschreven, vóór alle andere inhoud. Nuttig voor het toevoegen van metagegevens die de printerfirmware uit de eerste regels van het bestand leest (bijv. geschatte printtijd, filamentverbruik). Ondersteunt plaatshouders zoals {print_time_sec} en {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" # AI Translated msgid "Start G-code" @@ -20730,14 +20638,37 @@ msgstr "Verbruikt filament" msgid "Total length of filament used in the print." msgstr "Totale lengte filament die in de print is gebruikt." -# AI Translated -msgid "Print time (seconds)" -msgstr "Printtijd (seconden)" +msgid "Print time (total seconds)" +msgstr "" # AI Translated msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Totale geschatte printtijd in seconden. Wordt tijdens de nabewerking vervangen door de werkelijke waarde." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + # AI Translated msgid "Filament length (meters)" msgstr "Filamentlengte (meters)" @@ -22761,6 +22692,9 @@ msgstr "Er is geen geldige sessie gedetecteerd. Doorgaan met inloggen op 3DPrint msgid "Success!" msgstr "Succes!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Weet u zeker dat u wilt uitloggen?" @@ -23943,14 +23877,6 @@ msgstr "De Bambu-netwerkplug-in is vereist voor cloudfuncties, het vinden van pr msgid "Error: %s" msgstr "Fout: %s" -# AI Translated -msgid "Show details" -msgstr "Details tonen" - -# AI Translated -msgid "Hide details" -msgstr "Details verbergen" - # AI Translated msgid "Version to install:" msgstr "Te installeren versie:" @@ -26633,6 +26559,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -26645,6 +26577,224 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Pijl links" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Pijl rechts" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Pijl omhoog" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Pijl omlaag" + +# AI Translated +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importeer geometriegegevens uit STL-/STEP-/3MF-/OBJ-/AMF-bestanden" + +msgid "Select all objects" +msgstr "Selecteer alle objecten" + +msgid "Paste from clipboard" +msgstr "Plakken vanuit klembord" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "Printbaar in-/uitschakelen voor object/onderdeel" + +msgid "Move selection 10mm in negative X direction" +msgstr "Verplaats de selectie 10mm in een negatieve X richting" + +msgid "Move selection 10mm in positive X direction" +msgstr "Verplaats de selectie 10mm in een positieve X richting" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Verplaats de selectie 10mm in een positieve Y richting" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Verplaats de selectie 10mm in een negatieve Y richting" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo bewegen" + +msgid "Gizmo rotate" +msgstr "Gizmo roteren" + +msgid "Gizmo scale" +msgstr "Gizmo schalen" + +msgid "Gizmo place face on bed" +msgstr "Gizmo plaats gebied op het bed" + +msgid "Gizmo cut" +msgstr "Gizmo snijden" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo mesh booleaan" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo FDM seam schilderen" + +# AI Translated +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM vage buitenkant schilderen" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo tekst reliëf/graveren" + +msgid "Gizmo measure" +msgstr "Gizmo maatregel" + +msgid "Gizmo assemble" +msgstr "Gizmo monteren" + +msgid "Gizmo brim ears" +msgstr "Gizmo rand oren" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Verticale schuifregelaar - Actieve thumb omhoog bewegen" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Verticale schuifregelaar - Actieve thumb omlaag bewegen" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Horizontale schuifbalk - Beweeg actieve duim naar links" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Horizontale schuifbalk - Beweeg actieve duim naar rechts" + +# AI Translated +msgid "Horizontal slider - Move to start position" +msgstr "Horizontale schuifregelaar - Naar de startpositie" + +# AI Translated +msgid "Horizontal slider - Move to last position" +msgstr "Horizontale schuifregelaar - Naar de laatste positie" + +msgid "Camera view - Default" +msgstr "Camera hoek - Standaard" + +msgid "Camera view - Top" +msgstr "Camera hoek - Bovenkant" + +msgid "Camera view - Bottom" +msgstr "Camera hoek - Onderkant" + +msgid "Camera view - Front" +msgstr "Camera hoek - Voorkant" + +msgid "Camera view - Behind" +msgstr "Camera hoek - Achter" + +msgid "Camera Angle - Left side" +msgstr "Camera hoek - Linker zijde" + +msgid "Camera Angle - Right side" +msgstr "Camera hoek - Rechter zijde" + +msgid "Camera view - Current plate" +msgstr "" + +# AI Translated +msgid "Zoom in" +msgstr "Inzoomen" + +msgid "Zoom out" +msgstr "Zoom uit" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Dialoogvenster met instellingen voor 3Dconnexion-apparaten weergeven/verbergen" + +msgid "Show/Hide wireframe" +msgstr "" + +# AI Translated +msgid "On/Off G-code window" +msgstr "G-code-venster aan/uit" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Aan/uit één laagmodus van de verticale schuifregelaar" + +# AI Translated +msgid "Switch between Prepare/Preview" +msgstr "Wisselen tussen Voorbereiden/Voorvertoning" + +msgid "Collapse/Expand the sidebar" +msgstr "De menubalk in-/uitschuiven" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Toon lijst met sneltoetsen" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -26946,6 +27096,70 @@ 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 "Tab" +#~ msgstr "Tab" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Toont de huidige FPS van de viewport in de rechterbovenhoek." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki over 3MF publiceren" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Videohandleiding over 3MF publiceren" + +#~ msgid "Toolbar" +#~ msgstr "Gereedschapsbalk" + +#~ msgid "Switch table page" +#~ msgstr "Schakeltabel pagina" + +#~ msgid "Global shortcuts" +#~ msgstr "Globale snelkoppelingen" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Middelste muisknop" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Oriënteert automatisch geselecteerde objecten of alle objecten. Als er geselecteerde objecten zijn, oriënteert het alleen de geselecteerde objecten. Anders worden alle objecten van het project georiënteerd." + +# AI Translated +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Oriënteert alle objecten op het actieve printbed automatisch." + +# AI Translated +#~ msgid "Any arrow" +#~ msgstr "Willekeurige pijltoets" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo SLA-ondersteuningspunten" + +#~ msgid "Plater" +#~ msgstr "Plaat" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Verwijder objecten, onderdelen, aanpassingen" + +#~ msgid "Objects List" +#~ msgstr "Objecten lijst" + +# AI Translated +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code die helemaal bovenaan het uitvoerbestand wordt geschreven, vóór alle andere inhoud. Nuttig voor het toevoegen van metagegevens die de printerfirmware uit de eerste regels van het bestand leest (bijv. geschatte printtijd, filamentverbruik). Ondersteunt plaatshouders zoals {print_time_sec} en {used_filament_length}." + +# AI Translated +#~ msgid "Print time (seconds)" +#~ msgstr "Printtijd (seconden)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Snelmenu met acties openen" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 25b5b664cf..f5097f1ef5 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -6047,12 +6047,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Prawy" -msgid "Add" -msgstr "Dodaj" - msgid "Add plate" msgstr "Dodaj płytę" +msgid "Split to objects" +msgstr "Podziel na obiekty" + +msgid "Add" +msgstr "Dodaj" + msgid "Auto orient all/selected objects" msgstr "Automatyczna orientacja wszystkie/wybrane obiekty" @@ -6065,9 +6068,6 @@ msgstr "Rozmieść wszystkie obiekty" msgid "Arrange objects on selected plates" msgstr "Rozmieść obiekty na wybranych płytach" -msgid "Split to objects" -msgstr "Podziel na obiekty" - msgid "Assembly View" msgstr "Widok montażu" @@ -6130,6 +6130,9 @@ msgstr "kontur" msgid "Wireframe" msgstr "Siatka" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Widok realistyczny" @@ -6686,9 +6689,6 @@ msgstr "Przełącza wyświetlanie konturu wokół zaznaczonego obiektu w scenie msgid "Preferences" msgstr "Preferencje" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6697,6 +6697,9 @@ msgstr "Edycja" msgid "View" msgstr "Widok" +msgid "Open Speed Dial" +msgstr "" + # AI Translated msgid "Preset Bundle" msgstr "Pakiet profili" @@ -8546,9 +8549,6 @@ msgstr "Rozwiń pasek boczny" msgid "Collapse sidebar" msgstr "Zwiń pasek boczny" -msgid "Tab" -msgstr "Karty" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Wczytywanie pliku: %s" @@ -9626,10 +9626,10 @@ msgstr "Obsługiwanie wielu urządzeń" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Umożliwia wysyłanie zadania do wielu urządzeń jednocześnie i zarządzanie nimi." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9777,6 +9777,15 @@ msgstr "Przeciąganie prawym przyciskiem myszy" msgid "Set the action that dragging the right mouse button should perform." msgstr "Ustaw akcję wykonywaną przy przeciąganiu prawym przyciskiem myszy." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + # AI Translated msgid "Clear my choice on..." msgstr "Wyczyść mój wybór dla..." @@ -9905,13 +9914,40 @@ msgstr "" "Ogranicza liczbę klatek w widoku, aby zmniejszyć obciążenie GPU i zużycie energii.\n" "Ustaw 0, aby nie ograniczać liczby klatek." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "Pokaż nakładkę FPS" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Wyświetla bieżącą wartość FPS widoku w prawym górnym rogu." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10403,13 +10439,8 @@ msgstr "Opublikuj 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Wybierz, które ustawienia zostaną opublikowane w pliku 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki publikowania 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Poradnik wideo publikowania 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10612,6 +10643,14 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +# AI Translated +msgid "Show details" +msgstr "Pokaż szczegóły" + +# AI Translated +msgid "Hide details" +msgstr "Ukryj szczegóły" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12518,68 +12557,39 @@ msgstr "Pakiet konfiguracyjny został zmieniony w poprzednim Przewodniku konfigu msgid "Configuration package changed" msgstr "Zmieniono pakiet konfiguracyjny" -msgid "Toolbar" -msgstr "Pasek narzędzi" - -msgid "Objects list" -msgstr "Lista obiektów" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Import danych geometrycznych z plików STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Wklej z schowka" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Pokaż/ukryj okno dialogowe ustawień urządzeń 3Dconnexion" - -msgid "Switch table page" -msgstr "Przełącz stronę tabeli" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Spacja" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Pokaż listę skrótów klawiszowych" - -msgid "Global shortcuts" -msgstr "Globalne skróty" - msgid "Pan View" msgstr "Przesuń widok" msgid "Rotate View" msgstr "Obróć widok" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + # AI Translated -msgid "Middle mouse button" -msgstr "Środkowy przycisk myszy" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Zoom View" -msgstr "Powiększ widok" +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Ta funkcja automatycznie ustawia orientację zaznaczonych lub wszystkich obiektów. Jeśli są wybrane obiekty, ustawi tylko te wybrane. W przeciwnym razie ustawi wszystkie obiekty bieżącego projektu." - -msgid "Auto orients all objects on the active plate." -msgstr "Ta funkcja automatycznie ustawia orientację wszystkie obiekty na aktualnej płycie roboczej." - -msgid "Collapse/Expand the sidebar" -msgstr "Zwiń/Rozwiń pasek boczny" - -msgid "Any arrow" -msgstr "Dowolna strzałka" - -msgid "Movement in camera space" -msgstr "Ruch w przestrzeni kamery" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Wybierz część" @@ -12590,127 +12600,29 @@ msgstr "Wybierz wiele obiektów" msgid "Select objects by rectangle" msgstr "Wybierz obiekty prostokątem" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Strzałka w górę" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Przesuń wybrane o 10 mm w kierunku dodatnim osi Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Strzałka w dół" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Przesuń wybrane o 10 mm w kierunku ujemnym osi Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Strzałka w lewo" - -msgid "Move selection 10mm in negative X direction" -msgstr "Przesuń wybrane o 10 mm w kierunku ujemnym osi X" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Strzałka w prawo" - -msgid "Move selection 10mm in positive X direction" -msgstr "Przesuń wybrane o 10 mm w kierunku dodatnim osi X" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "klawiatura 1-9: ustaw filament dla obiektu/części" msgid "Movement step set to 1mm" msgstr "Ustaw krok ruchu na 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "klawiatura 1-9: ustaw filament dla obiektu/części" +msgid "Movement in camera space" +msgstr "Ruch w przestrzeni kamery" -msgid "Camera view - Default" -msgstr "Widok kamery - Domyślny" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Widok kamery - Z góry" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Widok kamery - Z dołu" +msgid "Zoom View" +msgstr "Powiększ widok" -msgid "Camera view - Front" -msgstr "Widok kamery - Z przodu" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Widok kamery - Z tyłu" - -msgid "Camera Angle - Left side" -msgstr "Kąt kamery - Lewa strona" - -msgid "Camera Angle - Right side" -msgstr "Kąt kamery - Prawa strona" - -msgid "Select all objects" -msgstr "Wybierz wszystkie obiekty" - -msgid "Gizmo move" -msgstr "Przenoszenie za pomocą „uchwytów”" - -msgid "Gizmo rotate" -msgstr "Obracanie za pomocą „uchwytów”" - -msgid "Gizmo scale" -msgstr "Skalowanie za pomocą „uchwytów”" - -msgid "Gizmo place face on bed" -msgstr "Położenie na płaszczyźnie za pomocą „uchwytów”" - -msgid "Gizmo cut" -msgstr "Cięcie za pomocą „uchwytów”" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo operacje boolowskie na siatce" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Uchwyt malowania Fuzzy Skin FDM" - -msgid "Gizmo SLA support points" -msgstr "Punkty podpór SLA za pomocą „uchwytów”" - -msgid "Gizmo FDM paint-on seam" -msgstr "Uchwyt malowania szwu FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "Uchwyt wytłaczania/grawerowania tekstu" - -msgid "Gizmo measure" -msgstr "Gizmo mierzyć" - -msgid "Gizmo assemble" -msgstr "Gizmo montować" - -msgid "Gizmo brim ears" -msgstr "Gizmo uszy brim" - -msgid "Zoom in" -msgstr "Przybliżenie" - -msgid "Zoom out" -msgstr "Oddalenie" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "Przełącz drukowalność obiektu/części" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Przełączanie między przygotowaniem/podglądem" - -msgid "Plater" -msgstr "Płyta" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Przesuń: naciśnij, aby przyciągnąć co 1 mm" @@ -12721,14 +12633,19 @@ msgstr "Podpory/Kolorowanie: dostosuj promień pędzla" msgid "Support/Color Painting: adjust section position" msgstr "Podpory/Kolorowanie: dostosuj pozycję sekcji" -msgid "Gizmo" -msgstr "Uchwyt" +msgid "Objects list" +msgstr "Lista obiektów" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Ustaw numer extrudera dla obiektów i części" -msgid "Delete objects, parts, modifiers" -msgstr "Usuń obiekty, części, modyfikatory" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Spacja" msgid "Select the object/part and press space to change the name" msgstr "Wybierz obiekt/część i naciśnij spację, aby zmienić nazwę" @@ -12739,45 +12656,48 @@ msgstr "Kliknięcie myszą" msgid "Select the object/part and mouse click to change the name" msgstr "Wybierz obiekt/część i kliknij myszą, aby zmienić nazwę" -msgid "Objects List" -msgstr "Lista obiektów" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Pionowy suwak - Przesuń aktywny punkt w górę" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Pionowy suwak - Przesuń aktywny punkt w dół" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Poziomy suwak - Przesuń aktywny punkt w lewo" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Poziomy suwak - Przesuń aktywny punkt w prawo" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Włącz/wyłącz wyświetlanie jednej warstwy suwaka pionowego" - -msgid "On/Off G-code window" -msgstr "Włącz/Wyłącz okno G-code" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Przesuń suwak 5x szybciej" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Suwak poziomy - Przesuń do pozycji początkowej" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Suwak poziomy - Przesuń do ostatniej pozycji" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Informacje o wydaniu" @@ -17852,9 +17772,8 @@ msgstr "Kroki wstępnego podgrzewania" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Wprowadź wiele poleceń dotyczących podgrzewania (np. M104.1). Funkcja ta działa tylko w drukarce Prusa XL. Dla pozostałych drukarek ustaw wartość na 1." -# AI Translated -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code zapisywany na samej górze pliku wyjściowego, przed jakąkolwiek inną treścią. Przydatny do dodawania metadanych, które oprogramowanie sprzętowe drukarki odczytuje z pierwszych wierszy pliku (np. szacowany czas druku, zużycie filamentu). Obsługuje symbole zastępcze, takie jak {print_time_sec} i {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Początkowy G-code" @@ -19433,14 +19352,37 @@ msgstr "Użyty filament" msgid "Total length of filament used in the print." msgstr "Całkowita długość filamentu użytego w wydruku." -# AI Translated -msgid "Print time (seconds)" -msgstr "Czas druku (sekundy)" +msgid "Print time (total seconds)" +msgstr "" # AI Translated msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Całkowity szacowany czas druku w sekundach. Zastępowany rzeczywistą wartością podczas postprocessingu." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + # AI Translated msgid "Filament length (meters)" msgstr "Długość filamentu (metry)" @@ -21356,6 +21298,9 @@ msgstr "Nie wykryto prawidłowej sesji. Kontynuować logowaniem do 3DPrinterOS?" msgid "Success!" msgstr "Powodzenie!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Czy na pewno wylogować?" @@ -22427,14 +22372,6 @@ msgstr "Wtyczka Bambu Network jest wymagana do funkcji chmurowych, wykrywania dr msgid "Error: %s" msgstr "Błąd: %s" -# AI Translated -msgid "Show details" -msgstr "Pokaż szczegóły" - -# AI Translated -msgid "Hide details" -msgstr "Ukryj szczegóły" - # AI Translated msgid "Version to install:" msgstr "Wersja do zainstalowania:" @@ -25096,6 +25033,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -25108,6 +25051,217 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Strzałka w lewo" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Strzałka w prawo" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Strzałka w górę" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Strzałka w dół" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Import danych geometrycznych z plików STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Wybierz wszystkie obiekty" + +msgid "Paste from clipboard" +msgstr "Wklej z schowka" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "Przełącz drukowalność obiektu/części" + +msgid "Move selection 10mm in negative X direction" +msgstr "Przesuń wybrane o 10 mm w kierunku ujemnym osi X" + +msgid "Move selection 10mm in positive X direction" +msgstr "Przesuń wybrane o 10 mm w kierunku dodatnim osi X" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Przesuń wybrane o 10 mm w kierunku dodatnim osi Y" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Przesuń wybrane o 10 mm w kierunku ujemnym osi Y" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Przenoszenie za pomocą „uchwytów”" + +msgid "Gizmo rotate" +msgstr "Obracanie za pomocą „uchwytów”" + +msgid "Gizmo scale" +msgstr "Skalowanie za pomocą „uchwytów”" + +msgid "Gizmo place face on bed" +msgstr "Położenie na płaszczyźnie za pomocą „uchwytów”" + +msgid "Gizmo cut" +msgstr "Cięcie za pomocą „uchwytów”" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo operacje boolowskie na siatce" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Uchwyt malowania szwu FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Uchwyt malowania Fuzzy Skin FDM" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Uchwyt wytłaczania/grawerowania tekstu" + +msgid "Gizmo measure" +msgstr "Gizmo mierzyć" + +msgid "Gizmo assemble" +msgstr "Gizmo montować" + +msgid "Gizmo brim ears" +msgstr "Gizmo uszy brim" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Pionowy suwak - Przesuń aktywny punkt w górę" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Pionowy suwak - Przesuń aktywny punkt w dół" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Poziomy suwak - Przesuń aktywny punkt w lewo" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Poziomy suwak - Przesuń aktywny punkt w prawo" + +msgid "Horizontal slider - Move to start position" +msgstr "Suwak poziomy - Przesuń do pozycji początkowej" + +msgid "Horizontal slider - Move to last position" +msgstr "Suwak poziomy - Przesuń do ostatniej pozycji" + +msgid "Camera view - Default" +msgstr "Widok kamery - Domyślny" + +msgid "Camera view - Top" +msgstr "Widok kamery - Z góry" + +msgid "Camera view - Bottom" +msgstr "Widok kamery - Z dołu" + +msgid "Camera view - Front" +msgstr "Widok kamery - Z przodu" + +msgid "Camera view - Behind" +msgstr "Widok kamery - Z tyłu" + +msgid "Camera Angle - Left side" +msgstr "Kąt kamery - Lewa strona" + +msgid "Camera Angle - Right side" +msgstr "Kąt kamery - Prawa strona" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Przybliżenie" + +msgid "Zoom out" +msgstr "Oddalenie" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Pokaż/ukryj okno dialogowe ustawień urządzeń 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Włącz/Wyłącz okno G-code" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Włącz/wyłącz wyświetlanie jednej warstwy suwaka pionowego" + +msgid "Switch between Prepare/Preview" +msgstr "Przełączanie między przygotowaniem/podglądem" + +msgid "Collapse/Expand the sidebar" +msgstr "Zwiń/Rozwiń pasek boczny" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Pokaż listę skrótów klawiszowych" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -25409,6 +25563,66 @@ 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ń?" +#~ msgid "Tab" +#~ msgstr "Karty" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Wyświetla bieżącą wartość FPS widoku w prawym górnym rogu." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki publikowania 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Poradnik wideo publikowania 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Pasek narzędzi" + +#~ msgid "Switch table page" +#~ msgstr "Przełącz stronę tabeli" + +#~ msgid "Global shortcuts" +#~ msgstr "Globalne skróty" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Środkowy przycisk myszy" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Ta funkcja automatycznie ustawia orientację zaznaczonych lub wszystkich obiektów. Jeśli są wybrane obiekty, ustawi tylko te wybrane. W przeciwnym razie ustawi wszystkie obiekty bieżącego projektu." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Ta funkcja automatycznie ustawia orientację wszystkie obiekty na aktualnej płycie roboczej." + +#~ msgid "Any arrow" +#~ msgstr "Dowolna strzałka" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Punkty podpór SLA za pomocą „uchwytów”" + +#~ msgid "Plater" +#~ msgstr "Płyta" + +#~ msgid "Gizmo" +#~ msgstr "Uchwyt" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Usuń obiekty, części, modyfikatory" + +#~ msgid "Objects List" +#~ msgstr "Lista obiektów" + +# AI Translated +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code zapisywany na samej górze pliku wyjściowego, przed jakąkolwiek inną treścią. Przydatny do dodawania metadanych, które oprogramowanie sprzętowe drukarki odczytuje z pierwszych wierszy pliku (np. szacowany czas druku, zużycie filamentu). Obsługuje symbole zastępcze, takie jak {print_time_sec} i {used_filament_length}." + +# AI Translated +#~ msgid "Print time (seconds)" +#~ msgstr "Czas druku (sekundy)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Otwórz szybkie menu akcji" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index db28922786..67758b8b9d 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-07-26 11:14-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -5745,12 +5745,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Direita" -msgid "Add" -msgstr "Adicionar" - msgid "Add plate" msgstr "Adicionar placa" +msgid "Split to objects" +msgstr "Dividir em objetos" + +msgid "Add" +msgstr "Adicionar" + msgid "Auto orient all/selected objects" msgstr "Orientação automática todos/selecionados objetos" @@ -5763,9 +5766,6 @@ msgstr "Organizar todos os objetos" msgid "Arrange objects on selected plates" msgstr "Organizar objetos nas placas selecionadas" -msgid "Split to objects" -msgstr "Dividir em objetos" - msgid "Assembly View" msgstr "Vista de Montagem" @@ -5821,6 +5821,9 @@ msgstr "Contorno" msgid "Wireframe" msgstr "Malha" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Visualização Realista" @@ -6360,9 +6363,6 @@ msgstr "Mostrar contorno ao redor do objeto selecionado na cena 3D." msgid "Preferences" msgstr "Preferências" -msgid "Open speed dial..." -msgstr "" - msgctxt "Menu" msgid "Edit" msgstr "Editar" @@ -6370,6 +6370,9 @@ msgstr "Editar" msgid "View" msgstr "Visualizar" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Pacote de Predefinições" @@ -8142,9 +8145,6 @@ msgstr "Expandir barra lateral" msgid "Collapse sidebar" msgstr "Recolher barra lateral" -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Carregando arquivo: %s" @@ -9154,10 +9154,10 @@ msgstr "Gerenciamento de multi dispositivos" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Com esta opção habilitada, você pode enviar uma tarefa para vários dispositivos ao mesmo tempo e gerenciar vários dispositivos." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9289,6 +9289,15 @@ msgstr "Arrastar com Mouse Direito" msgid "Set the action that dragging the right mouse button should perform." msgstr "Defina a ação que arrastar com o botão direito do mouse deve executar." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Limpar minha escolha em…" @@ -9399,11 +9408,39 @@ msgstr "" "Limita a taxa de quadros da janela de visualização para reduzir a carga da GPU e o consumo de energia.\n" "Defina como 0 para taxa de quadros ilimitada." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "Mostrar painel de FPS" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Exibe o FPS atual da janela de visualização no canto superior direito." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" msgid "G-code Preview" msgstr "Pré-visualização de G-code" @@ -9859,13 +9896,8 @@ msgstr "Publicar 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Selecione quais configurações serão publicadas no arquivo 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Documentação de Publicar 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Guia em vídeo de Publicar 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10067,6 +10099,12 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Mostrar detalhes" + +msgid "Hide details" +msgstr "Esconder detalhes" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -11853,66 +11891,38 @@ msgstr "O pacote de configuração é alterado no Guia de Configuração anterio msgid "Configuration package changed" msgstr "Pacote de configuração alterado" -msgid "Toolbar" -msgstr "Barra de Ferramentas" - -msgid "Objects list" -msgstr "Lista de objetos" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importar dados de geometria de arquivos STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Colar da área de transferência" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Mostrar/Ocultar diálogo de configurações de dispositivos 3Dconnexion" - -msgid "Switch table page" -msgstr "Trocar página da tabela" - -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Espaço" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Mostrar lista de atalhos de teclado" - -msgid "Global shortcuts" -msgstr "Atalhos globais" - msgid "Pan View" msgstr "Mover Vista" msgid "Rotate View" msgstr "Rotacionar Vista" -msgid "Middle mouse button" -msgstr "Botão do meio do mouse" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Aproximar Vista" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Orienta automaticamente os objetos selecionados ou todos os objetos. Se houver objetos selecionados, ele apenas orientará os selecionados. Caso contrário, ele orientará todos os objetos do projeto atual." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Orienta automaticamente todos os objetos na placa atual." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Recolher/Expandir a barra lateral" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "Qualquer seta" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Movimento no espaço da câmera" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Selecionar uma peça" @@ -11923,121 +11933,29 @@ msgstr "Selecionar vários objetos" msgid "Select objects by rectangle" msgstr "Selecionar objetos por retângulo" -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Seta para Cima" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Mover seleção 10mm na direção Y positiva" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Seta para Baixo" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Mover seleção 10mm na direção Y negativa" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Seta para Esquerda" - -msgid "Move selection 10mm in negative X direction" -msgstr "Mover seleção 10mm na direção X negativa" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Seta para Direita" - -msgid "Move selection 10mm in positive X direction" -msgstr "Mover seleção 10mm na direção X positiva" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Teclado 1-9: ajustar filamento para objeto/peça" msgid "Movement step set to 1mm" msgstr "Passo de movimento definido para 1mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Teclado 1-9: ajustar filamento para objeto/peça" +msgid "Movement in camera space" +msgstr "Movimento no espaço da câmera" -msgid "Camera view - Default" -msgstr "Vista da câmera - Padrão" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Vista da câmera - Superior" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Vista da câmera - Inferior" +msgid "Zoom View" +msgstr "Aproximar Vista" -msgid "Camera view - Front" -msgstr "Vista da câmera - Frontal" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Vista da câmera - Posterior" - -msgid "Camera Angle - Left side" -msgstr "Ângulo da câmera - Lado esquerdo" - -msgid "Camera Angle - Right side" -msgstr "Ângulo da câmera - Lado direito" - -msgid "Select all objects" -msgstr "Selecionar todos os objetos" - -msgid "Gizmo move" -msgstr "Gizmo mover" - -msgid "Gizmo rotate" -msgstr "Gizmo rotacionar" - -msgid "Gizmo scale" -msgstr "Gizmo escala" - -msgid "Gizmo place face on bed" -msgstr "Gizmo posicionar face na mesa" - -msgid "Gizmo cut" -msgstr "Gizmo cortar" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo malha booleana" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo de pintura de textura difusa FDM" - -msgid "Gizmo SLA support points" -msgstr "Gizmo de pontos de suporte SLA" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo de pintura de costura FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo Texturizar/gravar texto" - -msgid "Gizmo measure" -msgstr "Gizmo medir" - -msgid "Gizmo assemble" -msgstr "Gizmo montar" - -msgid "Gizmo brim ears" -msgstr "Gizmo orelhas da borda" - -msgid "Zoom in" -msgstr "Aproximar zoom" - -msgid "Zoom out" -msgstr "Afastar zoom" - -msgid "Toggle printable for object/part" -msgstr "Alternar modo de impressão para objeto/peça" - -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Alternar entre Preparar/Pré-visualizar" - -msgid "Plater" -msgstr "Mesa" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Mover: pressione para ajustar em 1mm" @@ -12048,14 +11966,18 @@ msgstr "Suporte/Pintura em cores: ajustar o raio da caneta" msgid "Support/Color Painting: adjust section position" msgstr "Suporte/Pintura em cores: ajustar a posição da seção" -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Lista de objetos" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Definir o número da extrusora para os objetos e peças" -msgid "Delete objects, parts, modifiers" -msgstr "Excluir objetos, peças, modificadores" +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Espaço" msgid "Select the object/part and press space to change the name" msgstr "Selecione o objeto/peça e pressione espaço para mudar o nome" @@ -12066,43 +11988,48 @@ msgstr "Clique do mouse" msgid "Select the object/part and mouse click to change the name" msgstr "Selecione o objeto/peça e clique do mouse para mudar o nome" -msgid "Objects List" -msgstr "Lista de Objetos" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Controle deslizante vertical - Mover o polegar ativo para cima" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Controle deslizante vertical - Mover o polegar ativo para baixo" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Controle deslizante horizontal - Mover o polegar ativo para a esquerda" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Controle deslizante horizontal - Mover o polegar ativo para a direita" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Ativar/Desativar modo de uma camada do controle deslizante vertical" - -msgid "On/Off G-code window" -msgstr "Ativar/Desativar janela de G-code" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Mover o controle deslizante 5 vezes mais rápido" -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Barra deslizante horizontal — Mover para a posição inicial" +msgid "Not customizable" +msgstr "" -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Barra deslizante horizontal — Mover para a última posição" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Nota de lançamento" @@ -16888,8 +16815,8 @@ msgstr "Passos de pré-aquecimento" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Insire múltiplos comandos de pré-aquecimento (ex.: M104.1). Útil apenas para Prusa XL. Para outras impressoras, defina como 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "Código G escrito no início do arquivo de saída, antes de qualquer outro conteúdo. Útil para adicionar metadados que o firmware da impressora lê das primeiras linhas do arquivo (ex.: tempo estimado de impressão, consumo de filamento). Suporta marcadores como {print_time_sec} e {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "G-code Inicial" @@ -18389,12 +18316,36 @@ msgstr "Fil. usado" msgid "Total length of filament used in the print." msgstr "Comprimento total de filamento usado na impressão." -msgid "Print time (seconds)" -msgstr "Tempo de impressão (segundos)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Tempo total estimado de impressão em segundos. Substituído pelo valor real durante o pós-processamento." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Comprimento do filamento (metros)" @@ -20218,6 +20169,9 @@ msgstr "Sessão válida não detectada. Prosseguir com o login no 3DPrinterOS?" msgid "Success!" msgstr "Sucesso!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Tem certeza de que deseja sair?" @@ -21167,12 +21121,6 @@ msgstr "O Plug-in de Rede Bambu é necessário para recursos de nuvem, detecçã msgid "Error: %s" msgstr "Erro: %s" -msgid "Show details" -msgstr "Mostrar detalhes" - -msgid "Hide details" -msgstr "Esconder detalhes" - msgid "Version to install:" msgstr "Versão para instalar:" @@ -23756,6 +23704,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -23768,6 +23722,210 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Seta para Esquerda" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Seta para Direita" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Seta para Cima" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Seta para Baixo" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importar dados de geometria de arquivos STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Selecionar todos os objetos" + +msgid "Paste from clipboard" +msgstr "Colar da área de transferência" + +msgid "Toggle printable for object/part" +msgstr "Alternar modo de impressão para objeto/peça" + +msgid "Move selection 10mm in negative X direction" +msgstr "Mover seleção 10mm na direção X negativa" + +msgid "Move selection 10mm in positive X direction" +msgstr "Mover seleção 10mm na direção X positiva" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Mover seleção 10mm na direção Y positiva" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Mover seleção 10mm na direção Y negativa" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo mover" + +msgid "Gizmo rotate" +msgstr "Gizmo rotacionar" + +msgid "Gizmo scale" +msgstr "Gizmo escala" + +msgid "Gizmo place face on bed" +msgstr "Gizmo posicionar face na mesa" + +msgid "Gizmo cut" +msgstr "Gizmo cortar" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo malha booleana" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo de pintura de costura FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo de pintura de textura difusa FDM" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo Texturizar/gravar texto" + +msgid "Gizmo measure" +msgstr "Gizmo medir" + +msgid "Gizmo assemble" +msgstr "Gizmo montar" + +msgid "Gizmo brim ears" +msgstr "Gizmo orelhas da borda" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Controle deslizante vertical - Mover o polegar ativo para cima" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Controle deslizante vertical - Mover o polegar ativo para baixo" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Controle deslizante horizontal - Mover o polegar ativo para a esquerda" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Controle deslizante horizontal - Mover o polegar ativo para a direita" + +msgid "Horizontal slider - Move to start position" +msgstr "Barra deslizante horizontal — Mover para a posição inicial" + +msgid "Horizontal slider - Move to last position" +msgstr "Barra deslizante horizontal — Mover para a última posição" + +msgid "Camera view - Default" +msgstr "Vista da câmera - Padrão" + +msgid "Camera view - Top" +msgstr "Vista da câmera - Superior" + +msgid "Camera view - Bottom" +msgstr "Vista da câmera - Inferior" + +msgid "Camera view - Front" +msgstr "Vista da câmera - Frontal" + +msgid "Camera view - Behind" +msgstr "Vista da câmera - Posterior" + +msgid "Camera Angle - Left side" +msgstr "Ângulo da câmera - Lado esquerdo" + +msgid "Camera Angle - Right side" +msgstr "Ângulo da câmera - Lado direito" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Aproximar zoom" + +msgid "Zoom out" +msgstr "Afastar zoom" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Mostrar/Ocultar diálogo de configurações de dispositivos 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Ativar/Desativar janela de G-code" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Ativar/Desativar modo de uma camada do controle deslizante vertical" + +msgid "Switch between Prepare/Preview" +msgstr "Alternar entre Preparar/Pré-visualizar" + +msgid "Collapse/Expand the sidebar" +msgstr "Recolher/Expandir a barra lateral" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Mostrar lista de atalhos de teclado" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24068,6 +24226,62 @@ 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?" +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Exibe o FPS atual da janela de visualização no canto superior direito." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Documentação de Publicar 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Guia em vídeo de Publicar 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Barra de Ferramentas" + +#~ msgid "Switch table page" +#~ msgstr "Trocar página da tabela" + +#~ msgid "Global shortcuts" +#~ msgstr "Atalhos globais" + +#~ msgid "Middle mouse button" +#~ msgstr "Botão do meio do mouse" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Orienta automaticamente os objetos selecionados ou todos os objetos. Se houver objetos selecionados, ele apenas orientará os selecionados. Caso contrário, ele orientará todos os objetos do projeto atual." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Orienta automaticamente todos os objetos na placa atual." + +#~ msgid "Any arrow" +#~ msgstr "Qualquer seta" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo de pontos de suporte SLA" + +#~ msgid "Plater" +#~ msgstr "Mesa" + +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Excluir objetos, peças, modificadores" + +#~ msgid "Objects List" +#~ msgstr "Lista de Objetos" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "Código G escrito no início do arquivo de saída, antes de qualquer outro conteúdo. Útil para adicionar metadados que o firmware da impressora lê das primeiras linhas do arquivo (ex.: tempo estimado de impressão, consumo de filamento). Suporta marcadores como {print_time_sec} e {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Tempo de impressão (segundos)" + #~ msgid "Open actions speed dial" #~ msgstr "Abrir menu rápido de ações" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 6b28f87f7e..2d35c31a26 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+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 \n" @@ -5938,12 +5938,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Справа" -msgid "Add" -msgstr "Добавить" - msgid "Add plate" msgstr "Добавить стол" +msgid "Split to objects" +msgstr "Разделить на модели" + +msgid "Add" +msgstr "Добавить" + msgid "Auto orient all/selected objects" msgstr "Положить все/выбранные модели" @@ -5956,9 +5959,6 @@ msgstr "Расставить все модели" msgid "Arrange objects on selected plates" msgstr "Расставить модели на активном столе" -msgid "Split to objects" -msgstr "Разделить на модели" - msgid "Assembly View" msgstr "Сборочный вид" @@ -6018,6 +6018,9 @@ msgstr "Обводка выбранного" msgid "Wireframe" msgstr "Сетка модели" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Продвинутая графика" @@ -6594,9 +6597,6 @@ msgstr "Отображение контура вокруг выбранных м msgid "Preferences" msgstr "Настройки" -msgid "Open speed dial..." -msgstr "" - msgctxt "Menu" msgid "Edit" msgstr "Правка" @@ -6604,6 +6604,9 @@ msgstr "Правка" msgid "View" msgstr "Вид" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Пакет профилей" @@ -8405,11 +8408,6 @@ msgstr "Развернуть боковую панель" msgid "Collapse sidebar" msgstr "Свернуть боковую панель" -# Название кнопки на клавиатуре, на момент 2.3.2 используется в 5 местах в -# значении названия кнопки -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Загрузка файла: %s" @@ -9433,10 +9431,10 @@ msgstr "Управление несколькими устройствами Bam msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Если включено, вы сможете управлять несколькими устройствами и отправлять задания на печать на несколько устройств одновременно." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9571,6 +9569,15 @@ msgstr "Перетаскивание правой кнопкой мыши" msgid "Set the action that dragging the right mouse button should perform." msgstr "Действие при перемещении курсора с зажатой правой кнопкой мыши." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Сброс выбора по умолчанию" @@ -9685,11 +9692,39 @@ msgstr "" "Ограничить частоту отрисовки рабочего пространства для снижения энергопотребления и нагрузки на ГП.\n" "0 – не ограничивать частоту кадров." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "Отображать частоту кадров" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Выводить частоту кадров рабочего пространства в правом верхнем углу." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" msgid "G-code Preview" msgstr "Просмотр нарезки" @@ -10151,13 +10186,8 @@ msgstr "Опубликовать 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Выберите, какие настройки будут опубликованы в файле 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki по публикации 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Видеоруководство по публикации 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10363,6 +10393,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Подробнее" + +# В информации о сетевом плагине +msgid "Hide details" +msgstr "Скрыть подробности" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12206,66 +12243,38 @@ msgstr "Пакет профилей был изменён при предыду msgid "Configuration package changed" msgstr "Пакет профилей изменён" -msgid "Toolbar" -msgstr "Панель инструментов" - -msgid "Objects list" -msgstr "Список моделей" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Импорт геометрических данных из STL/STEP/3MF/OBJ/AMF файлов" - -msgid "Paste from clipboard" -msgstr "Вставить из буфера обмена" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Показать/скрыть диалоговое окно настроек и устройств 3Dconnexion" - -msgid "Switch table page" -msgstr "Переключение между вкладками" - -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Пробел" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Показать список сочетаний клавиш" - -msgid "Global shortcuts" -msgstr "Глобальные горячие клавиши" - msgid "Pan View" msgstr "Перемещение камеры" msgid "Rotate View" msgstr "Вращение камеры" -msgid "Middle mouse button" -msgstr "Средняя кнопка мыши" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Масштабирование вида" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Попытаться положить модели на стол. При выборе отдельных моделей операция применяется только к ним." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Положить все модели только на активном столе" +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Свернуть/развернуть боковую панель" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "Любая стрелка" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "Перемещение выбранного по отношению к камере" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Выбор части модели" @@ -12276,123 +12285,29 @@ msgstr "Выбор нескольких моделей" msgid "Select objects by rectangle" msgstr "Выбор прямоугольником" -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Стрелка вверх" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Перемещение выбранного на +10 мм по оси Y" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Стрелка вниз" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Перемещение выбранного на -10 мм по оси Y" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Стрелка влево" - -msgid "Move selection 10mm in negative X direction" -msgstr "Перемещение выбранного на -10 мм по оси X" - -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Стрелка вправо" - -msgid "Move selection 10mm in positive X direction" -msgstr "Перемещение выбранного на +10 мм по оси X" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Клавиши 1-9: задать материал для модели/части модели" msgid "Movement step set to 1mm" msgstr "Зафиксировать шаг перемещения на 1 мм" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Клавиши 1-9: задать материал для модели/части модели" +msgid "Movement in camera space" +msgstr "Перемещение выбранного по отношению к камере" -msgid "Camera view - Default" -msgstr "Камера по умолчанию" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Камера сверху" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Камера снизу" +msgid "Zoom View" +msgstr "Масштабирование вида" -msgid "Camera view - Front" -msgstr "Камера спереди" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Камера сзади" - -msgid "Camera Angle - Left side" -msgstr "Камера слева" - -msgid "Camera Angle - Right side" -msgstr "Камера справа" - -msgid "Select all objects" -msgstr "Выбрать все модели" - -msgid "Gizmo move" -msgstr "Инструмент перемещения" - -msgid "Gizmo rotate" -msgstr "Инструмент вращения" - -msgid "Gizmo scale" -msgstr "Инструмент масштабирования" - -msgid "Gizmo place face on bed" -msgstr "Выбор контактной поверхности" - -msgid "Gizmo cut" -msgstr "Инструмент разрезания" - -msgid "Gizmo mesh boolean" -msgstr "Булевы операции" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Рисование нечёткой оболочки" - -msgid "Gizmo SLA support points" -msgstr "Размещение поддержек (SLA)" - -msgid "Gizmo FDM paint-on seam" -msgstr "Рисование шва (FDM)" - -msgid "Gizmo text emboss/engrave" -msgstr "Инструмент размещения текста" - -msgid "Gizmo measure" -msgstr "Инструмент измерения" - -msgid "Gizmo assemble" -msgstr "Размещение частей сборки" - -msgid "Gizmo brim ears" -msgstr "Размещение «мышиных ушек»" - -msgid "Zoom in" -msgstr "Приблизить" - -msgid "Zoom out" -msgstr "Отдалить" - -# Ошибка в оригинале – переключить печать частей невозможно, функция работает только для всей сборки -msgid "Toggle printable for object/part" -msgstr "Переключить печать модели" - -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Переключение между подготовкой и просмотром нарезки" - -# Plater – это название библиотеки. Используется в меню горячих клавиш в качестве заголовка сочетаний клавиш, которые работают внутри пространства Plater. Как минимум на Windows не отображается. -msgid "Plater" -msgstr "Рабочая область" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Перемещение: Фиксация перемещения на 1 мм" @@ -12403,14 +12318,18 @@ msgstr "Рисование поддержек/Шва/Покраски: регу msgid "Support/Color Painting: adjust section position" msgstr "Рисование поддержек/Шва/Покраски: регулировка положения сечения" -msgid "Gizmo" -msgstr "Инструмент" +msgid "Objects list" +msgstr "Список моделей" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Задать номер экструдера для моделей/частей" -msgid "Delete objects, parts, modifiers" -msgstr "Удаление моделей, частей, модификаторов" +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Пробел" msgid "Select the object/part and press space to change the name" msgstr "Выберите модель/часть и нажмите пробел, чтобы изменить имя" @@ -12421,43 +12340,48 @@ msgstr "Левая кнопка мыши" msgid "Select the object/part and mouse click to change the name" msgstr "Выберите модель/часть и нажмите левую клавишу мыши, чтобы изменить имя" -msgid "Objects List" -msgstr "Список моделей" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Вертикальный ползунок - Сдвинуть активный ползунок вверх" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Вертикальный ползунок - Сдвинуть активный ползунок вниз" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Горизонтальный ползунок - Сдвинуть активный ползунок влево" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Горизонтальный ползунок - Сдвинуть активный ползунок вправо" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Включение/отключение функции «Режим одного слоя» у вертикального ползунка" - -msgid "On/Off G-code window" -msgstr "Показать/скрыть окно отображения G-кода" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Перемещение ползунка быстрее в 5 раз" -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Горизонтальный ползунок - перемещение в начальную позицию" +msgid "Not customizable" +msgstr "" -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Горизонтальный ползунок - перемещение в конечную позицию" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Информация о версии" @@ -17716,8 +17640,8 @@ msgstr "Шагов преднагрева" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Задание нескольких команд преднагрева (например, M104.1). Полезно только для Prusa XL. Для других принтеров установите значение 1." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "Код для вставки в первые строки файла (перед началом всего остального содержимого). Полезно для добавления метаданных для считывания прошивкой принтера, таких как время печати или расход материала. Можно использовать вставку переменных (например, {print_time_sec} и {used_filament_length} соответственно)." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Стартовый G-код" @@ -19394,8 +19318,8 @@ msgstr "Расход прутка" msgid "Total length of filament used in the print." msgstr "Общая длина прутка, затрачиваемая для печати." -msgid "Print time (seconds)" -msgstr "Время печати (в секундах)" +msgid "Print time (total seconds)" +msgstr "" # Пользователи даже не знают, что и как там слайсер у себя под капотом пост- # процессит после генерации кода до его парсинга и визуализации, не нужно этим @@ -19403,6 +19327,30 @@ msgstr "Время печати (в секундах)" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Оценка полного времени печати (в секундах). Заменяется числом при генерации G-кода." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Длина материала (в метрах)" @@ -21277,6 +21225,9 @@ msgstr "Недействительная сессия. Выполнить вхо msgid "Success!" msgstr "Успешно!" +msgid "Generate API Key" +msgstr "" + # ??? Вы уверены, что хотите разлогиниться, Вы уверены, что хотите выйти из # аккаунта?" msgid "Are you sure to log out?" @@ -22243,13 +22194,6 @@ msgstr "Для удалённой печати, облачных функций msgid "Error: %s" msgstr "Ошибка: %s" -msgid "Show details" -msgstr "Подробнее" - -# В информации о сетевом плагине -msgid "Hide details" -msgstr "Скрыть подробности" - msgid "Version to install:" msgstr "Версия для установки:" @@ -24855,6 +24799,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24867,6 +24817,211 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Стрелка влево" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Стрелка вправо" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Стрелка вверх" + +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Стрелка вниз" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Импорт геометрических данных из STL/STEP/3MF/OBJ/AMF файлов" + +msgid "Select all objects" +msgstr "Выбрать все модели" + +msgid "Paste from clipboard" +msgstr "Вставить из буфера обмена" + +# Ошибка в оригинале – переключить печать частей невозможно, функция работает только для всей сборки +msgid "Toggle printable for object/part" +msgstr "Переключить печать модели" + +msgid "Move selection 10mm in negative X direction" +msgstr "Перемещение выбранного на -10 мм по оси X" + +msgid "Move selection 10mm in positive X direction" +msgstr "Перемещение выбранного на +10 мм по оси X" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Перемещение выбранного на +10 мм по оси Y" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Перемещение выбранного на -10 мм по оси Y" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Инструмент перемещения" + +msgid "Gizmo rotate" +msgstr "Инструмент вращения" + +msgid "Gizmo scale" +msgstr "Инструмент масштабирования" + +msgid "Gizmo place face on bed" +msgstr "Выбор контактной поверхности" + +msgid "Gizmo cut" +msgstr "Инструмент разрезания" + +msgid "Gizmo mesh boolean" +msgstr "Булевы операции" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Рисование шва (FDM)" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Рисование нечёткой оболочки" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Инструмент размещения текста" + +msgid "Gizmo measure" +msgstr "Инструмент измерения" + +msgid "Gizmo assemble" +msgstr "Размещение частей сборки" + +msgid "Gizmo brim ears" +msgstr "Размещение «мышиных ушек»" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Вертикальный ползунок - Сдвинуть активный ползунок вверх" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Вертикальный ползунок - Сдвинуть активный ползунок вниз" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Горизонтальный ползунок - Сдвинуть активный ползунок влево" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Горизонтальный ползунок - Сдвинуть активный ползунок вправо" + +msgid "Horizontal slider - Move to start position" +msgstr "Горизонтальный ползунок - перемещение в начальную позицию" + +msgid "Horizontal slider - Move to last position" +msgstr "Горизонтальный ползунок - перемещение в конечную позицию" + +msgid "Camera view - Default" +msgstr "Камера по умолчанию" + +msgid "Camera view - Top" +msgstr "Камера сверху" + +msgid "Camera view - Bottom" +msgstr "Камера снизу" + +msgid "Camera view - Front" +msgstr "Камера спереди" + +msgid "Camera view - Behind" +msgstr "Камера сзади" + +msgid "Camera Angle - Left side" +msgstr "Камера слева" + +msgid "Camera Angle - Right side" +msgstr "Камера справа" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Приблизить" + +msgid "Zoom out" +msgstr "Отдалить" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Показать/скрыть диалоговое окно настроек и устройств 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Показать/скрыть окно отображения G-кода" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Включение/отключение функции «Режим одного слоя» у вертикального ползунка" + +msgid "Switch between Prepare/Preview" +msgstr "Переключение между подготовкой и просмотром нарезки" + +msgid "Collapse/Expand the sidebar" +msgstr "Свернуть/развернуть боковую панель" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Показать список сочетаний клавиш" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -25165,6 +25320,65 @@ msgstr "" "Предотвращение коробления материала\n" "Знаете ли вы, что при печати материалами, склонными к короблению, таких как ABS, повышение температуры подогреваемого стола может снизить эту вероятность?" +# Название кнопки на клавиатуре, на момент 2.3.2 используется в 5 местах в +# значении названия кнопки +#~ msgid "Tab" +#~ msgstr "Tab" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Выводить частоту кадров рабочего пространства в правом верхнем углу." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki по публикации 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Видеоруководство по публикации 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Панель инструментов" + +#~ msgid "Switch table page" +#~ msgstr "Переключение между вкладками" + +#~ msgid "Global shortcuts" +#~ msgstr "Глобальные горячие клавиши" + +#~ msgid "Middle mouse button" +#~ msgstr "Средняя кнопка мыши" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Попытаться положить модели на стол. При выборе отдельных моделей операция применяется только к ним." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Положить все модели только на активном столе" + +#~ msgid "Any arrow" +#~ msgstr "Любая стрелка" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Размещение поддержек (SLA)" + +# Plater – это название библиотеки. Используется в меню горячих клавиш в качестве заголовка сочетаний клавиш, которые работают внутри пространства Plater. Как минимум на Windows не отображается. +#~ msgid "Plater" +#~ msgstr "Рабочая область" + +#~ msgid "Gizmo" +#~ msgstr "Инструмент" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Удаление моделей, частей, модификаторов" + +#~ msgid "Objects List" +#~ msgstr "Список моделей" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "Код для вставки в первые строки файла (перед началом всего остального содержимого). Полезно для добавления метаданных для считывания прошивкой принтера, таких как время печати или расход материала. Можно использовать вставку переменных (например, {print_time_sec} и {used_filament_length} соответственно)." + +#~ msgid "Print time (seconds)" +#~ msgstr "Время печати (в секундах)" + #~ msgid "Open actions speed dial" #~ msgstr "Открыть строку быстрых действий" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index e4f3079704..e05a90846b 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -6535,12 +6535,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Höger" -msgid "Add" -msgstr "Lägg till" - msgid "Add plate" msgstr "Lägg till byggplata" +msgid "Split to objects" +msgstr "Dela upp till objekt" + +msgid "Add" +msgstr "Lägg till" + msgid "Auto orient all/selected objects" msgstr "Autoorientering alla/valda objekt" @@ -6553,9 +6556,6 @@ msgstr "Ordna alla objekt" msgid "Arrange objects on selected plates" msgstr "Ordna alla objekt på vald platta" -msgid "Split to objects" -msgstr "Dela upp till objekt" - msgid "Assembly View" msgstr "Monterings vy" @@ -6617,6 +6617,9 @@ msgstr "Kontur" msgid "Wireframe" msgstr "Trådram" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Realistisk vy" @@ -7202,9 +7205,6 @@ msgstr "Visa en kontur runt det markerade objektet i 3D-scenen." msgid "Preferences" msgstr "Inställningar" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -7213,6 +7213,9 @@ msgstr "Redigera" msgid "View" msgstr "Vy" +msgid "Open Speed Dial" +msgstr "" + # AI Translated msgid "Preset Bundle" msgstr "Förinställningspaket" @@ -9182,10 +9185,6 @@ msgstr "Expandera sidopanelen" msgid "Collapse sidebar" msgstr "Fäll ihop sidopanelen" -# AI Translated -msgid "Tab" -msgstr "Tabb" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Laddar fil: %s" @@ -10324,10 +10323,10 @@ msgstr "Hantering av flera enheter" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Med det här alternativet aktiverat kan du skicka en uppgift till flera enheter samtidigt och hantera flera enheter." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -10481,6 +10480,15 @@ msgstr "Dra med höger musknapp" msgid "Set the action that dragging the right mouse button should perform." msgstr "Ange vilken åtgärd som ska utföras när du drar med höger musknapp." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + # AI Translated msgid "Clear my choice on..." msgstr "Rensa mitt val för..." @@ -10611,13 +10619,40 @@ msgstr "" "Begränsar vyns bildfrekvens för att minska GPU-belastning och strömförbrukning.\n" "Sätt till 0 för obegränsad bildfrekvens." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "Visa FPS-överlägg" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Visar vyns aktuella FPS i det övre högra hörnet." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -11120,13 +11155,8 @@ msgstr "Publicera 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Välj vilka inställningar som ska publiceras i 3MF-filen" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki för Publicera 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Videoguide för Publicera 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -11329,6 +11359,14 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +# AI Translated +msgid "Show details" +msgstr "Visa detaljer" + +# AI Translated +msgid "Hide details" +msgstr "Dölj detaljer" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -13403,69 +13441,39 @@ msgstr "Konfigurations paketet är ändrat i föregående Kofigurations Guide" msgid "Configuration package changed" msgstr "Konfigurations paketet är ändrat" -msgid "Toolbar" -msgstr "Verktygsfält" - -msgid "Objects list" -msgstr "Objektlista" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Importera geometri data från STL/STEP/3MF/OBJ/AMF filer" - -msgid "Paste from clipboard" -msgstr "Klistra in ifrån urklipp" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Visa/Dölj 3Dconnexion enheternas inställnings dialogruta" - -msgid "Switch table page" -msgstr "Byt tabellsida" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Blanksteg" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Visa tangentbordets genvägs lista" - -msgid "Global shortcuts" -msgstr "Övergripande genvägar" - msgid "Pan View" msgstr "Panoreringsvy" msgid "Rotate View" msgstr "Rotera vy" -# AI Translated -msgid "Middle mouse button" -msgstr "Mittersta musknappen" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "Zoomvy" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Auto placera valda objekt eller alla objekt. Om det finns valda objekt så placeras endast dem. Annars kommer den att orientera alla objekt i det aktuella projektet." +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Placera alla föremål automatiskt på aktuell tallrik." +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "Dölj/Visa meny" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" # AI Translated -msgid "Any arrow" -msgstr "Valfri piltangent" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tabb" -msgid "Movement in camera space" -msgstr "Rörelse i kamera område" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Välj del" @@ -13476,129 +13484,29 @@ msgstr "Välj flera objekt" msgid "Select objects by rectangle" msgstr "Välj objekt efter rektangel" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Uppåtpil" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Flytta markeringen 10mm i positiv Y riktning" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Nedåtpil" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Flytta markeringen 10mm i negativ Y riktning" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Vänsterpil" - -msgid "Move selection 10mm in negative X direction" -msgstr "Flytta markeringen 10mm i negativ X riktning" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Högerpil" - -msgid "Move selection 10mm in positive X direction" -msgstr "Flytta markeringen 10mm i positiv X riktning" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "tangentbord 1-9: fastställer filament för objekt/del" msgid "Movement step set to 1mm" msgstr "Rörelse steg är vald till 1mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "tangentbord 1-9: fastställer filament för objekt/del" +msgid "Movement in camera space" +msgstr "Rörelse i kamera område" -msgid "Camera view - Default" -msgstr "Kamera vy - Standard" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Kamera vy - Topp" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Kamera vy - Botten" +msgid "Zoom View" +msgstr "Zoomvy" -msgid "Camera view - Front" -msgstr "Kamera vy - Fram" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Kamera vy - Bakom" - -msgid "Camera Angle - Left side" -msgstr "Kamera vy - Vänster sida" - -msgid "Camera Angle - Right side" -msgstr "Kamera vy - Höger sida" - -msgid "Select all objects" -msgstr "Välj alla objekt" - -msgid "Gizmo move" -msgstr "Gizmo flytta" - -msgid "Gizmo rotate" -msgstr "Gizmo rotera" - -msgid "Gizmo scale" -msgstr "Gizmo skala" - -msgid "Gizmo place face on bed" -msgstr "Gizmo placera ansiktet på byggytan" - -msgid "Gizmo cut" -msgstr "Gizmo skär" - -# AI Translated -msgid "Gizmo mesh boolean" -msgstr "Gizmo boolesk mesh-operation" - -# AI Translated -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM måla ojämn yta" - -msgid "Gizmo SLA support points" -msgstr "Gizmo SLA support punkter" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo FDM målad söm" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo textprägling/gravering" - -msgid "Gizmo measure" -msgstr "Gizmo mäta" - -msgid "Gizmo assemble" -msgstr "Gizmo montera" - -msgid "Gizmo brim ears" -msgstr "Gizmo brätte öron" - -msgid "Zoom in" -msgstr "Zooma in" - -msgid "Zoom out" -msgstr "Zooma ut" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "Växla utskrivbar för objekt/del" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tabb" - -msgid "Switch between Prepare/Preview" -msgstr "Växla mellan Förbered/Förhandsgranska" - -msgid "Plater" -msgstr "Plätering/Förgyllning" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Flytta: tryck för att låsa med 1mm" @@ -13609,15 +13517,19 @@ msgstr "Support/Färgläggning: justera penn radie" msgid "Support/Color Painting: adjust section position" msgstr "Support/Färgläggning:justera sektions positionen" -# AI Translated -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Objektlista" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Välj extruder nummer för objekten och delarna" -msgid "Delete objects, parts, modifiers" -msgstr "Radera objekten, delarna och anpassningar" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Blanksteg" msgid "Select the object/part and press space to change the name" msgstr "Välj objektet/delen och tryck space för att ändra namnet" @@ -13628,48 +13540,48 @@ msgstr "Mus klick" msgid "Select the object/part and mouse click to change the name" msgstr "Välj objektet/delen och mus klicka för att ändra namnet" -msgid "Objects List" -msgstr "Objekts lista" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Vertikal reglage - Flytta aktivt tryck Upp" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Vertikal reglage - Flytta aktivt tryck Ner" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Horisontell reglage - Flytta aktivt tryck Vänster" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Horisontell reglage - Flytta aktivt tryck Höger" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "På/Av 1 lager läge för det vertikala reglaget" - -# AI Translated -msgid "On/Off G-code window" -msgstr "På/av för G-code-fönstret" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Flytta reglage 5x snabbare" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -# AI Translated -msgid "Horizontal slider - Move to start position" -msgstr "Horisontellt reglage – flytta till startpositionen" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -# AI Translated -msgid "Horizontal slider - Move to last position" -msgstr "Horisontellt reglage – flytta till sista positionen" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Meddelande om utgåvan" @@ -19215,9 +19127,8 @@ msgstr "Förvärmningssteg" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Infoga flera förvärmningskommandon (t.ex. M104.1). Endast användbart för Prusa XL. Ställ in det på 1 för andra skrivare." -# AI Translated -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code som skrivs allra överst i utdatafilen, före allt annat innehåll. Användbart för att lägga till metadata som skrivarens fasta programvara läser från filens första rader (t.ex. beräknad utskriftstid, filamentåtgång). Stöder platshållare som {print_time_sec} och {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Starta G-kod" @@ -20963,14 +20874,37 @@ msgstr "Använt filament" msgid "Total length of filament used in the print." msgstr "Total längd filament som används i utskriften." -# AI Translated -msgid "Print time (seconds)" -msgstr "Utskriftstid (sekunder)" +msgid "Print time (total seconds)" +msgstr "" # AI Translated msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Total beräknad utskriftstid i sekunder. Ersätts med det faktiska värdet under efterbearbetningen." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + # AI Translated msgid "Filament length (meters)" msgstr "Filamentlängd (meter)" @@ -23000,6 +22934,9 @@ msgstr "Ingen giltig session upptäcktes. Vill du fortsätta med inloggning till msgid "Success!" msgstr "Lyckades!" +msgid "Generate API Key" +msgstr "" + # AI Translated msgid "Are you sure to log out?" msgstr "Är du säker på att du vill logga ut?" @@ -24215,14 +24152,6 @@ msgstr "Bambu Network Plug-in krävs för molnfunktioner, upptäckt av skrivare msgid "Error: %s" msgstr "Fel: %s" -# AI Translated -msgid "Show details" -msgstr "Visa detaljer" - -# AI Translated -msgid "Hide details" -msgstr "Dölj detaljer" - # AI Translated msgid "Version to install:" msgstr "Version att installera:" @@ -26906,6 +26835,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -26918,6 +26853,222 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Vänsterpil" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Högerpil" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Uppåtpil" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Nedåtpil" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Importera geometri data från STL/STEP/3MF/OBJ/AMF filer" + +msgid "Select all objects" +msgstr "Välj alla objekt" + +msgid "Paste from clipboard" +msgstr "Klistra in ifrån urklipp" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "Växla utskrivbar för objekt/del" + +msgid "Move selection 10mm in negative X direction" +msgstr "Flytta markeringen 10mm i negativ X riktning" + +msgid "Move selection 10mm in positive X direction" +msgstr "Flytta markeringen 10mm i positiv X riktning" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Flytta markeringen 10mm i positiv Y riktning" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Flytta markeringen 10mm i negativ Y riktning" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo flytta" + +msgid "Gizmo rotate" +msgstr "Gizmo rotera" + +msgid "Gizmo scale" +msgstr "Gizmo skala" + +msgid "Gizmo place face on bed" +msgstr "Gizmo placera ansiktet på byggytan" + +msgid "Gizmo cut" +msgstr "Gizmo skär" + +# AI Translated +msgid "Gizmo mesh boolean" +msgstr "Gizmo boolesk mesh-operation" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo FDM målad söm" + +# AI Translated +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM måla ojämn yta" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo textprägling/gravering" + +msgid "Gizmo measure" +msgstr "Gizmo mäta" + +msgid "Gizmo assemble" +msgstr "Gizmo montera" + +msgid "Gizmo brim ears" +msgstr "Gizmo brätte öron" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Vertikal reglage - Flytta aktivt tryck Upp" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Vertikal reglage - Flytta aktivt tryck Ner" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Horisontell reglage - Flytta aktivt tryck Vänster" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Horisontell reglage - Flytta aktivt tryck Höger" + +# AI Translated +msgid "Horizontal slider - Move to start position" +msgstr "Horisontellt reglage – flytta till startpositionen" + +# AI Translated +msgid "Horizontal slider - Move to last position" +msgstr "Horisontellt reglage – flytta till sista positionen" + +msgid "Camera view - Default" +msgstr "Kamera vy - Standard" + +msgid "Camera view - Top" +msgstr "Kamera vy - Topp" + +msgid "Camera view - Bottom" +msgstr "Kamera vy - Botten" + +msgid "Camera view - Front" +msgstr "Kamera vy - Fram" + +msgid "Camera view - Behind" +msgstr "Kamera vy - Bakom" + +msgid "Camera Angle - Left side" +msgstr "Kamera vy - Vänster sida" + +msgid "Camera Angle - Right side" +msgstr "Kamera vy - Höger sida" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Zooma in" + +msgid "Zoom out" +msgstr "Zooma ut" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Visa/Dölj 3Dconnexion enheternas inställnings dialogruta" + +msgid "Show/Hide wireframe" +msgstr "" + +# AI Translated +msgid "On/Off G-code window" +msgstr "På/av för G-code-fönstret" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "På/Av 1 lager läge för det vertikala reglaget" + +msgid "Switch between Prepare/Preview" +msgstr "Växla mellan Förbered/Förhandsgranska" + +msgid "Collapse/Expand the sidebar" +msgstr "Dölj/Visa meny" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Visa tangentbordets genvägs lista" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + # AI Translated #: resources/data/hints.ini: [hint:Precise wall] msgid "" @@ -27233,6 +27384,69 @@ 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 "Tab" +#~ msgstr "Tabb" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Visar vyns aktuella FPS i det övre högra hörnet." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki för Publicera 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Videoguide för Publicera 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Verktygsfält" + +#~ msgid "Switch table page" +#~ msgstr "Byt tabellsida" + +#~ msgid "Global shortcuts" +#~ msgstr "Övergripande genvägar" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Mittersta musknappen" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Auto placera valda objekt eller alla objekt. Om det finns valda objekt så placeras endast dem. Annars kommer den att orientera alla objekt i det aktuella projektet." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Placera alla föremål automatiskt på aktuell tallrik." + +# AI Translated +#~ msgid "Any arrow" +#~ msgstr "Valfri piltangent" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo SLA support punkter" + +#~ msgid "Plater" +#~ msgstr "Plätering/Förgyllning" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Radera objekten, delarna och anpassningar" + +#~ msgid "Objects List" +#~ msgstr "Objekts lista" + +# AI Translated +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code som skrivs allra överst i utdatafilen, före allt annat innehåll. Användbart för att lägga till metadata som skrivarens fasta programvara läser från filens första rader (t.ex. beräknad utskriftstid, filamentåtgång). Stöder platshållare som {print_time_sec} och {used_filament_length}." + +# AI Translated +#~ msgid "Print time (seconds)" +#~ msgstr "Utskriftstid (sekunder)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Öppna snabbvalsmenyn för åtgärder" diff --git a/localization/i18n/th/OrcaSlicer_th.po b/localization/i18n/th/OrcaSlicer_th.po index 47aa50fb13..e300799cbe 100644 --- a/localization/i18n/th/OrcaSlicer_th.po +++ b/localization/i18n/th/OrcaSlicer_th.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-06-19 13:40+0700\n" "Last-Translator: Icezaza\n" "Language-Team: Thai\n" @@ -5901,12 +5901,15 @@ msgctxt "Camera View" msgid "Right" msgstr "ขวา" -msgid "Add" -msgstr "เพิ่ม" - msgid "Add plate" msgstr "เพิ่มจาน" +msgid "Split to objects" +msgstr "แยกเป็นวัตถุ" + +msgid "Add" +msgstr "เพิ่ม" + msgid "Auto orient all/selected objects" msgstr "ปรับทิศทางวัตถุทั้งหมด/ที่เลือกโดยอัตโนมัติ" @@ -5919,9 +5922,6 @@ msgstr "จัดเรียงวัตถุทั้งหมด" msgid "Arrange objects on selected plates" msgstr "จัดเรียงวัตถุบนจานที่เลือก" -msgid "Split to objects" -msgstr "แยกเป็นวัตถุ" - msgid "Assembly View" msgstr "มุมมองการประกอบ" @@ -5978,6 +5978,9 @@ msgstr "เส้นขอบ" msgid "Wireframe" msgstr "โครงลวด" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "มุมมองสมจริง" @@ -6517,9 +6520,6 @@ msgstr "แสดงเค้าร่างรอบๆ วัตถุที msgid "Preferences" msgstr "การตั้งค่า" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6528,6 +6528,9 @@ msgstr "แก้ไข" msgid "View" msgstr "มุมมอง" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "ชุดที่ตั้งไว้ล่วงหน้า" @@ -8318,9 +8321,6 @@ msgstr "ขยายแถบด้านข้าง" msgid "Collapse sidebar" msgstr "ยุบแถบด้านข้าง" -msgid "Tab" -msgstr "แท็บ" - #, c-format, boost-format msgid "Loading file: %s" msgstr "กำลังโหลดไฟล์: %s" @@ -9338,10 +9338,10 @@ msgstr "การจัดการอุปกรณ์หลายเครื msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "เมื่อเปิดใช้งานตัวเลือกนี้ คุณสามารถส่งงานไปยังอุปกรณ์หลายเครื่องพร้อมกันและจัดการอุปกรณ์หลายเครื่องได้" -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9473,6 +9473,15 @@ msgstr "ลากเมาส์ขวา" msgid "Set the action that dragging the right mouse button should perform." msgstr "ตั้งค่าการดำเนินการที่ควรดำเนินการด้วยการลากปุ่มเมาส์ขวา" +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "ล้างตัวเลือกของฉันใน..." @@ -9583,11 +9592,39 @@ msgstr "" "จำกัดอัตราเฟรมวิวพอร์ตเพื่อลดภาระของ GPU และการใช้พลังงาน\n" "ตั้งค่าเป็น 0 สำหรับอัตราเฟรมไม่จำกัด" +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "แสดงการซ้อนทับ FPS" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "แสดงวิวพอร์ต FPS ปัจจุบันที่มุมขวาบน" +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10047,13 +10084,8 @@ msgstr "เผยแพร่ 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "เลือกว่าจะเผยแพร่การตั้งค่าใดในไฟล์ 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "วิกิการเผยแพร่ 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "คู่มือวีดีโอการเผยแพร่ 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10255,6 +10287,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "แสดงรายละเอียด" + +# AI Translated +msgid "Hide details" +msgstr "ซ่อนรายละเอียด" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12087,67 +12126,39 @@ msgstr "แพ็คเกจการกำหนดค่ามีการเ msgid "Configuration package changed" msgstr "แพ็คเกจการกำหนดค่ามีการเปลี่ยนแปลง" -msgid "Toolbar" -msgstr "แถบเครื่องมือ" - -msgid "Objects list" -msgstr "รายการวัตถุ" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "นำเข้าข้อมูลเรขาคณิตจากไฟล์ STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "วางจากคลิปบอร์ด" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "แสดง/ซ่อนกล่องโต้ตอบการตั้งค่าอุปกรณ์ 3Dconnexion" - -msgid "Switch table page" -msgstr "สลับหน้าตาราง" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Space" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "แสดงรายการแป้นพิมพ์ลัด" - -msgid "Global shortcuts" -msgstr "ทางลัดทั่วโลก" - msgid "Pan View" msgstr "แพนวิว" msgid "Rotate View" msgstr "หมุนมุมมอง" -msgid "Middle mouse button" -msgstr "ปุ่มกลางของเมาส์" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "ซูมดู" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "ปรับทิศทางวัตถุที่เลือกหรือวัตถุทั้งหมดโดยอัตโนมัติ หากมีวัตถุที่เลือกไว้ วัตถุนั้นจะปรับทิศทางวัตถุที่เลือกเท่านั้น มิฉะนั้นจะวางแนววัตถุทั้งหมดในโปรเจ็กต์ปัจจุบัน" +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "ปรับทิศทางวัตถุทั้งหมดบนเพลตที่ใช้งานอยู่โดยอัตโนมัติ" +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "ยุบ/ขยายแถบด้านข้าง" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "ลูกศรอะไรก็ได้" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "การเคลื่อนไหวในพื้นที่กล้อง" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "เลือกส่วนหนึ่ง" @@ -12158,126 +12169,29 @@ msgstr "เลือกหลายวัตถุ" msgid "Select objects by rectangle" msgstr "เลือกวัตถุตามสี่เหลี่ยม" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "ลูกศรขึ้น" - -msgid "Move selection 10mm in positive Y direction" -msgstr "เลื่อนส่วนที่เลือกไป 10 มม. ในทิศทางบวก Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "ลูกศรลง" - -msgid "Move selection 10mm in negative Y direction" -msgstr "ย้ายส่วนที่เลือกไป 10 มม. ในทิศทางลบ Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "ลูกศรซ้าย" - -msgid "Move selection 10mm in negative X direction" -msgstr "ย้ายส่วนที่เลือกไป 10 มม. ในทิศทาง X ลบ" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "ลูกศรขวา" - -msgid "Move selection 10mm in positive X direction" -msgstr "เลื่อนส่วนที่เลือกไป 10 มม. ในทิศทาง X บวก" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "แป้นพิมพ์ 1-9: ตั้งค่าเส้นพลาสติกสำหรับวัตถุ/ชิ้นส่วน" msgid "Movement step set to 1mm" msgstr "ตั้งระยะขยับเป็น 1 มม." -msgid "Keyboard 1-9: set filament for object/part" -msgstr "แป้นพิมพ์ 1-9: ตั้งค่าเส้นพลาสติกสำหรับวัตถุ/ชิ้นส่วน" +msgid "Movement in camera space" +msgstr "การเคลื่อนไหวในพื้นที่กล้อง" -msgid "Camera view - Default" -msgstr "มุมมองกล้อง - ค่าเริ่มต้น" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "มุมมองกล้อง - ด้านบน" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "มุมมองกล้อง - ด้านล่าง" +msgid "Zoom View" +msgstr "ซูมดู" -msgid "Camera view - Front" -msgstr "มุมมองกล้อง - ด้านหน้า" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "มุมมองกล้อง - ด้านหลัง" - -msgid "Camera Angle - Left side" -msgstr "มุมกล้อง - ด้านซ้าย" - -msgid "Camera Angle - Right side" -msgstr "มุมกล้อง - ด้านขวา" - -msgid "Select all objects" -msgstr "เลือกวัตถุทั้งหมด" - -msgid "Gizmo move" -msgstr "กิสโม่ย้าย" - -msgid "Gizmo rotate" -msgstr "กิสโม่หมุน" - -msgid "Gizmo scale" -msgstr "ขนาดกิสโม่" - -msgid "Gizmo place face on bed" -msgstr "กิสโมวางหน้าบนฐานพิมพ์" - -msgid "Gizmo cut" -msgstr "กิสโม่ตัด" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo mesh บูลีน" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM เพ้นท์ผิวฟัซซี" - -msgid "Gizmo SLA support points" -msgstr "จุดส่วนรองรับ Gizmo SLA" - -msgid "Gizmo FDM paint-on seam" -msgstr "รอยตะเข็บทาสี Gizmo FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "ข้อความ Gizmo นูน/แกะสลัก" - -msgid "Gizmo measure" -msgstr "เครื่องวัดกิสโม่" - -msgid "Gizmo assemble" -msgstr "กิสโมประกอบ" - -msgid "Gizmo brim ears" -msgstr "Gizmo หูขอบยึดชิ้นงาน (Brim Ears)" - -msgid "Zoom in" -msgstr "ซูมเข้า" - -msgid "Zoom out" -msgstr "ซูมออก" - -msgid "Toggle printable for object/part" -msgstr "สลับการพิมพ์สำหรับวัตถุ/ชิ้นส่วน" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "สลับระหว่างการเตรียม/ดูตัวอย่าง" - -msgid "Plater" -msgstr "เพลเตอร์" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "ย้าย: กดเพื่อสแน็ป 1 มม" @@ -12288,14 +12202,19 @@ msgstr "ส่วนรองรับ / การวาดภาพสี: ป msgid "Support/Color Painting: adjust section position" msgstr "ส่วนรองรับ / การวาดภาพสี: ปรับตำแหน่งส่วน" -msgid "Gizmo" -msgstr "กิสโม่" +msgid "Objects list" +msgstr "รายการวัตถุ" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "กำหนดหมายเลขชุดดันเส้นสำหรับวัตถุและชิ้นส่วน" -msgid "Delete objects, parts, modifiers" -msgstr "ลบวัตถุ ชิ้นส่วน ตัวดัดแปลง" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Space" msgid "Select the object/part and press space to change the name" msgstr "เลือกวัตถุ/ชิ้นส่วนแล้วกด Space เพื่อเปลี่ยนชื่อ" @@ -12306,45 +12225,48 @@ msgstr "คลิกเมาส์" msgid "Select the object/part and mouse click to change the name" msgstr "เลือกวัตถุ/ชิ้นส่วนแล้วคลิกเมาส์เพื่อเปลี่ยนชื่อ" -msgid "Objects List" -msgstr "รายการวัตถุ" - -msgid "Vertical slider - Move active thumb Up" -msgstr "แถบเลื่อนแนวตั้ง - เลื่อนนิ้วโป้งที่ใช้งานอยู่ขึ้น" - -msgid "Vertical slider - Move active thumb Down" -msgstr "แถบเลื่อนแนวตั้ง - เลื่อนนิ้วโป้งที่ใช้งานอยู่ลง" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "แถบเลื่อนแนวนอน - เลื่อนนิ้วหัวแม่มือที่ใช้งานไปทางซ้าย" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "แถบเลื่อนแนวนอน - เลื่อนนิ้วหัวแม่มือที่ใช้งานไปทางขวา" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "เปิด/ปิดโหมดเลเยอร์เดียวของแถบเลื่อนแนวตั้ง" - -msgid "On/Off G-code window" -msgstr "เปิด/ปิดหน้าต่างรหัส G" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "เลื่อนตัวเลื่อนเร็วขึ้น 5 เท่า" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "แถบเลื่อนแนวนอน - เลื่อนไปยังตำแหน่งเริ่มต้น" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "แถบเลื่อนแนวนอน - เลื่อนไปยังตำแหน่งสุดท้าย" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "บันทึกประจำรุ่น" @@ -17213,8 +17135,8 @@ msgstr "อุ่นเครื่องตามขั้นตอน" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "ใส่คำสั่งอุ่นล่วงหน้าหลายคำสั่ง (เช่น M104.1) มีประโยชน์สำหรับ Prusa XL เท่านั้น สำหรับเครื่องพิมพ์อื่นๆ โปรดตั้งค่าเป็น 1" -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code เขียนไว้ที่ด้านบนสุดของไฟล์เอาต์พุต ก่อนเนื้อหาอื่นๆ มีประโยชน์สำหรับการเพิ่มข้อมูลเมตาที่เฟิร์มแวร์เครื่องพิมพ์อ่านจากบรรทัดแรกของไฟล์ (เช่น เวลาในการพิมพ์โดยประมาณ การใช้เส้นพลาสติก) รองรับตัวยึดตำแหน่ง เช่น {print_time_sec} และ {used_filament_length}" +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "เริ่ม G-code" @@ -18753,12 +18675,36 @@ msgstr "เส้นพลาสติกที่ใช้แล้ว" msgid "Total length of filament used in the print." msgstr "ความยาวรวมของเส้นพลาสติกที่ใช้ในการพิมพ์" -msgid "Print time (seconds)" -msgstr "เวลาในการพิมพ์ (วินาที)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "เวลาพิมพ์ทั้งหมดโดยประมาณเป็นวินาที แทนที่ด้วยค่าจริงระหว่างการประมวลผลภายหลัง" +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "ความยาวเส้นพลาสติก (เมตร)" @@ -20592,6 +20538,9 @@ msgstr "ไม่พบเซสชันที่ถูกต้อง ดำ msgid "Success!" msgstr "สำเร็จ!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "คุณแน่ใจหรือว่าจะออกจากระบบ?" @@ -21591,13 +21540,6 @@ msgstr "ปลั๊กอินเครือข่าย Bambu จำเป msgid "Error: %s" msgstr "ข้อผิดพลาด: %s" -msgid "Show details" -msgstr "แสดงรายละเอียด" - -# AI Translated -msgid "Hide details" -msgstr "ซ่อนรายละเอียด" - msgid "Version to install:" msgstr "เวอร์ชันที่จะติดตั้ง:" @@ -24228,6 +24170,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24240,6 +24188,216 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "ลูกศรซ้าย" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "ลูกศรขวา" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "ลูกศรขึ้น" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "ลูกศรลง" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "นำเข้าข้อมูลเรขาคณิตจากไฟล์ STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "เลือกวัตถุทั้งหมด" + +msgid "Paste from clipboard" +msgstr "วางจากคลิปบอร์ด" + +msgid "Toggle printable for object/part" +msgstr "สลับการพิมพ์สำหรับวัตถุ/ชิ้นส่วน" + +msgid "Move selection 10mm in negative X direction" +msgstr "ย้ายส่วนที่เลือกไป 10 มม. ในทิศทาง X ลบ" + +msgid "Move selection 10mm in positive X direction" +msgstr "เลื่อนส่วนที่เลือกไป 10 มม. ในทิศทาง X บวก" + +msgid "Move selection 10mm in positive Y direction" +msgstr "เลื่อนส่วนที่เลือกไป 10 มม. ในทิศทางบวก Y" + +msgid "Move selection 10mm in negative Y direction" +msgstr "ย้ายส่วนที่เลือกไป 10 มม. ในทิศทางลบ Y" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "กิสโม่ย้าย" + +msgid "Gizmo rotate" +msgstr "กิสโม่หมุน" + +msgid "Gizmo scale" +msgstr "ขนาดกิสโม่" + +msgid "Gizmo place face on bed" +msgstr "กิสโมวางหน้าบนฐานพิมพ์" + +msgid "Gizmo cut" +msgstr "กิสโม่ตัด" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo mesh บูลีน" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "รอยตะเข็บทาสี Gizmo FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM เพ้นท์ผิวฟัซซี" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "ข้อความ Gizmo นูน/แกะสลัก" + +msgid "Gizmo measure" +msgstr "เครื่องวัดกิสโม่" + +msgid "Gizmo assemble" +msgstr "กิสโมประกอบ" + +msgid "Gizmo brim ears" +msgstr "Gizmo หูขอบยึดชิ้นงาน (Brim Ears)" + +msgid "Vertical slider - Move active thumb Up" +msgstr "แถบเลื่อนแนวตั้ง - เลื่อนนิ้วโป้งที่ใช้งานอยู่ขึ้น" + +msgid "Vertical slider - Move active thumb Down" +msgstr "แถบเลื่อนแนวตั้ง - เลื่อนนิ้วโป้งที่ใช้งานอยู่ลง" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "แถบเลื่อนแนวนอน - เลื่อนนิ้วหัวแม่มือที่ใช้งานไปทางซ้าย" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "แถบเลื่อนแนวนอน - เลื่อนนิ้วหัวแม่มือที่ใช้งานไปทางขวา" + +msgid "Horizontal slider - Move to start position" +msgstr "แถบเลื่อนแนวนอน - เลื่อนไปยังตำแหน่งเริ่มต้น" + +msgid "Horizontal slider - Move to last position" +msgstr "แถบเลื่อนแนวนอน - เลื่อนไปยังตำแหน่งสุดท้าย" + +msgid "Camera view - Default" +msgstr "มุมมองกล้อง - ค่าเริ่มต้น" + +msgid "Camera view - Top" +msgstr "มุมมองกล้อง - ด้านบน" + +msgid "Camera view - Bottom" +msgstr "มุมมองกล้อง - ด้านล่าง" + +msgid "Camera view - Front" +msgstr "มุมมองกล้อง - ด้านหน้า" + +msgid "Camera view - Behind" +msgstr "มุมมองกล้อง - ด้านหลัง" + +msgid "Camera Angle - Left side" +msgstr "มุมกล้อง - ด้านซ้าย" + +msgid "Camera Angle - Right side" +msgstr "มุมกล้อง - ด้านขวา" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "ซูมเข้า" + +msgid "Zoom out" +msgstr "ซูมออก" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "แสดง/ซ่อนกล่องโต้ตอบการตั้งค่าอุปกรณ์ 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "เปิด/ปิดหน้าต่างรหัส G" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "เปิด/ปิดโหมดเลเยอร์เดียวของแถบเลื่อนแนวตั้ง" + +msgid "Switch between Prepare/Preview" +msgstr "สลับระหว่างการเตรียม/ดูตัวอย่าง" + +msgid "Collapse/Expand the sidebar" +msgstr "ยุบ/ขยายแถบด้านข้าง" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "แสดงรายการแป้นพิมพ์ลัด" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24540,6 +24698,62 @@ msgstr "" "หลีกเลี่ยงการบิดเบี้ยว\n" "คุณรู้หรือไม่ว่าเมื่อพิมพ์วัสดุที่มีแนวโน้มที่จะเกิดการบิดเบี้ยว เช่น ABS การเพิ่มอุณหภูมิฐานพิมพ์อย่างเหมาะสมสามารถลดความน่าจะเป็นของการบิดเบี้ยวได้" +#~ msgid "Tab" +#~ msgstr "แท็บ" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "แสดงวิวพอร์ต FPS ปัจจุบันที่มุมขวาบน" + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "วิกิการเผยแพร่ 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "คู่มือวีดีโอการเผยแพร่ 3MF" + +#~ msgid "Toolbar" +#~ msgstr "แถบเครื่องมือ" + +#~ msgid "Switch table page" +#~ msgstr "สลับหน้าตาราง" + +#~ msgid "Global shortcuts" +#~ msgstr "ทางลัดทั่วโลก" + +#~ msgid "Middle mouse button" +#~ msgstr "ปุ่มกลางของเมาส์" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "ปรับทิศทางวัตถุที่เลือกหรือวัตถุทั้งหมดโดยอัตโนมัติ หากมีวัตถุที่เลือกไว้ วัตถุนั้นจะปรับทิศทางวัตถุที่เลือกเท่านั้น มิฉะนั้นจะวางแนววัตถุทั้งหมดในโปรเจ็กต์ปัจจุบัน" + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "ปรับทิศทางวัตถุทั้งหมดบนเพลตที่ใช้งานอยู่โดยอัตโนมัติ" + +#~ msgid "Any arrow" +#~ msgstr "ลูกศรอะไรก็ได้" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "จุดส่วนรองรับ Gizmo SLA" + +#~ msgid "Plater" +#~ msgstr "เพลเตอร์" + +#~ msgid "Gizmo" +#~ msgstr "กิสโม่" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "ลบวัตถุ ชิ้นส่วน ตัวดัดแปลง" + +#~ msgid "Objects List" +#~ msgstr "รายการวัตถุ" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code เขียนไว้ที่ด้านบนสุดของไฟล์เอาต์พุต ก่อนเนื้อหาอื่นๆ มีประโยชน์สำหรับการเพิ่มข้อมูลเมตาที่เฟิร์มแวร์เครื่องพิมพ์อ่านจากบรรทัดแรกของไฟล์ (เช่น เวลาในการพิมพ์โดยประมาณ การใช้เส้นพลาสติก) รองรับตัวยึดตำแหน่ง เช่น {print_time_sec} และ {used_filament_length}" + +#~ msgid "Print time (seconds)" +#~ msgstr "เวลาในการพิมพ์ (วินาที)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "เปิดสปีดไดอัลการดำเนินการ" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 91c5660328..1f56d37744 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-08-21 23:18+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -5967,12 +5967,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Sağ" -msgid "Add" -msgstr "Ekle" - msgid "Add plate" msgstr "Plaka ekle" +msgid "Split to objects" +msgstr "Nesnelere böl" + +msgid "Add" +msgstr "Ekle" + msgid "Auto orient all/selected objects" msgstr "Otomatik yönlendir tüm/seçili nesneler" @@ -5985,9 +5988,6 @@ msgstr "Tüm nesneleri hizala" msgid "Arrange objects on selected plates" msgstr "Seçilen plakalardaki nesneleri hizala" -msgid "Split to objects" -msgstr "Nesnelere böl" - msgid "Assembly View" msgstr "Montaj görünümü" @@ -6044,6 +6044,9 @@ msgstr "Taslak" msgid "Wireframe" msgstr "Wireframe" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Gerçekçi Görünüm" @@ -6585,9 +6588,6 @@ msgstr "3D sahnede seçilen nesnenin etrafındaki ana hatları göster." msgid "Preferences" msgstr "Tercihler" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6596,6 +6596,9 @@ msgstr "Düzen" msgid "View" msgstr "Görünüm" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Ön ayar paketi" @@ -8409,10 +8412,6 @@ msgstr "Kenar çubuğunu genişlet" msgid "Collapse sidebar" msgstr "Kenar çubuğunu daralt" -# AI Translated -msgid "Tab" -msgstr "Sekme" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Dosya yükleniyor: %s" @@ -9444,10 +9443,10 @@ msgstr "Çoklu cihaz yönetimi" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev gönderebilir ve birden fazla cihazı yönetebilirsiniz." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9586,6 +9585,15 @@ msgstr "Sağ fare sürükleme" msgid "Set the action that dragging the right mouse button should perform." msgstr "Sağ fare düğmesiyle sürüklemenin gerçekleştireceği eylemi ayarlayın." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "Seçimimi Temizle" @@ -9710,13 +9718,40 @@ msgstr "" "GPU yükünü ve güç tüketimini azaltmak için görünüm penceresinin kare hızını sınırlar.\n" "Sınırsız kare hızı için 0 olarak ayarlayın." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "FPS göstergesini göster" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Geçerli görünüm penceresinin FPS değerini sağ üst köşede gösterir." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10192,13 +10227,8 @@ msgstr "3MF Yayınla..." msgid "Select which settings to be published in the 3MF file" msgstr "3MF dosyasında hangi ayarların yayınlanacağını seçin" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "3MF Yayınlama Wiki" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "3MF Yayınlama Video Kılavuzu" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10400,6 +10430,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Ayrıntıları göster" + +# AI Translated +msgid "Hide details" +msgstr "Ayrıntıları gizle" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12274,68 +12311,39 @@ msgstr "Yapılandırma paketi önceki Yapılandırma Kılavuzu'nda değiştirild msgid "Configuration package changed" msgstr "Yapılandırma paketi değiştirildi" -msgid "Toolbar" -msgstr "Araç Çubuğu" - -msgid "Objects list" -msgstr "Nesne listesi" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" - -msgid "Paste from clipboard" -msgstr "Panodan yapıştır" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "3Dconnexion cihazları ayarları iletişim kutusunu Göster/Gizle" - -msgid "Switch table page" -msgstr "Tablo sayfasını değiştir" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Boşluk" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Klavye kısayolları listesini göster" - -msgid "Global shortcuts" -msgstr "Genel kısayollar" - msgid "Pan View" msgstr "Pan Görünümü" msgid "Rotate View" msgstr "Görüntüyü döndür" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + # AI Translated -msgid "Middle mouse button" -msgstr "Orta fare düğmesi" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Zoom View" -msgstr "Zoom Görünümü" +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Seçilen nesneleri veya tüm nesneleri otomatik olarak yönlendirir. Seçilen nesneler varsa, yalnızca seçilenleri yönlendirir. Aksi takdirde mevcut projedeki tüm nesneler yönlendirilecektir." - -msgid "Auto orients all objects on the active plate." -msgstr "Aktif plakadaki tüm nesneleri otomatik olarak yönlendirir." - -msgid "Collapse/Expand the sidebar" -msgstr "Kenar çubuğunu daralt/genişlet" - -msgid "Any arrow" -msgstr "Herhangi bir ok" - -msgid "Movement in camera space" -msgstr "Kamera alanında hareket" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Parça seçin" @@ -12346,127 +12354,29 @@ msgstr "Birden fazla nesne seç" msgid "Select objects by rectangle" msgstr "Nesneleri dikdörtgene göre seç" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Yukarı Ok" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Seçimi pozitif Y yönünde 10 mm taşı" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Aşağı Ok" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Seçimi negatif Y yönünde 10 mm taşı" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Sol Ok" - -msgid "Move selection 10mm in negative X direction" -msgstr "Seçimi negatif X yönünde 10 mm taşı" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Sağ Ok" - -msgid "Move selection 10mm in positive X direction" -msgstr "Seçimi pozitif X yönünde 10 mm taşı" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "Klavye 1-9: nesneye/parçaya filament ata" msgid "Movement step set to 1mm" msgstr "Hareket adımı 1 mm'ye ayarlandı" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "Klavye 1-9: nesneye/parçaya filament ata" +msgid "Movement in camera space" +msgstr "Kamera alanında hareket" -msgid "Camera view - Default" -msgstr "Kamera görünümü - Varsayılan" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Kamera görünümü - Üst" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Kamera görünümü - Alt" +msgid "Zoom View" +msgstr "Zoom Görünümü" -msgid "Camera view - Front" -msgstr "Kamera görünümü - Ön" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Kamera görünümü - Arka" - -msgid "Camera Angle - Left side" -msgstr "Kamera Açısı - Sol" - -msgid "Camera Angle - Right side" -msgstr "Kamera Açısı - Sağ" - -msgid "Select all objects" -msgstr "Tüm nesneleri seç" - -msgid "Gizmo move" -msgstr "Gizmo hareket" - -msgid "Gizmo rotate" -msgstr "Gizmo döndürme" - -msgid "Gizmo scale" -msgstr "Gizmo ölçek" - -msgid "Gizmo place face on bed" -msgstr "Gizmo yüzünüzü yatağa yerleştirin" - -msgid "Gizmo cut" -msgstr "Gizmo kesim" - -msgid "Gizmo mesh boolean" -msgstr "Gizmo mesh bölme" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM boyama ile uygulanan pütürlü yüzey" - -msgid "Gizmo SLA support points" -msgstr "Gizmo SLA destek noktaları" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo FDM boyalı dikiş" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo metin kabartma/kazıma" - -msgid "Gizmo measure" -msgstr "Gizmo ölçüm" - -msgid "Gizmo assemble" -msgstr "Gizmo birleştir" - -msgid "Gizmo brim ears" -msgstr "Gizmo lenarlık kulakları" - -msgid "Zoom in" -msgstr "Yakınlaştır" - -msgid "Zoom out" -msgstr "Uzaklaştır" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "Nesne/parça için yazdırılabilirliği aç/kapat" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Hazırlama/Önizleme arasında geçiş yap" - -msgid "Plater" -msgstr "Plakacı" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Hareket Ettir: 1 mm kadar yaslamak için basın" @@ -12477,15 +12387,19 @@ msgstr "Destek/Renkli Boyama: kalem yarıçapını ayarlayın" msgid "Support/Color Painting: adjust section position" msgstr "Destek/Renkli Boyama: bölüm konumunu ayarlayın" -# AI Translated -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Nesne listesi" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Nesneler ve parçalar için ekstruder numarasını ayarlayın" -msgid "Delete objects, parts, modifiers" -msgstr "Nesneleri, parçaları, değiştiricileri silin" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Boşluk" msgid "Select the object/part and press space to change the name" msgstr "Nesneyi/parçayı seçin ve adını değiştirmek için boşluk tuşuna basın" @@ -12496,45 +12410,48 @@ msgstr "Fare tıklaması" msgid "Select the object/part and mouse click to change the name" msgstr "Nesneyi/parçayı seçin ve adını değiştirmek için fareye tıklayın" -msgid "Objects List" -msgstr "Nesne Listesi" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Dikey kaydırıcı - Etkin başparmağı yukarı hareket ettir" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Dikey kaydırıcı - Etkin başparmağı Aşağı hareket ettir" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Yatay kaydırıcı - Etkin başparmağı sola taşı" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Yatay kaydırıcı - Etkin başparmağı sağa taşı" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Dikey kaydırıcının tek katman modunu açma/kapama" - -msgid "On/Off G-code window" -msgstr "G-code penceresini aç/kapat" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Kaydırıcıyı 5 kat daha hızlı hareket ettirin" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Yatay kaydırıcı - Başlangıç konumuna taşıyın" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Yatay kaydırıcı - Son konuma git" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Sürüm notu" @@ -17528,8 +17445,8 @@ msgstr "Ön ısıtma adımları" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Birden fazla ön ısıtma komutu ekleyin (örn. M104.1). Yalnızca Prusa XL için kullanışlıdır. Diğer yazıcılar için lütfen 1’e ayarlayın." -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code, çıktı dosyasının en üstünde, diğer içeriklerden önce yazılır. Yazıcı ürün yazılımının dosyanın ilk satırlarından okuduğu meta verileri (ör. tahmini yazdırma süresi, filament kullanımı) eklemek için kullanışlıdır. {print_time_sec} ve {used_filament_length} gibi yer tutucuları destekler." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Başlangıç G-code" @@ -19087,12 +19004,36 @@ msgstr "Kullanılan" msgid "Total length of filament used in the print." msgstr "Baskıda kullanılan filamentin toplam uzunluğu." -msgid "Print time (seconds)" -msgstr "Yazdırma süresi (saniye)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Saniye cinsinden toplam tahmini yazdırma süresi. Son işlem sırasında gerçek değerle değiştirilir." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Filament uzunluğu (metre)" @@ -20965,6 +20906,9 @@ msgstr "Geçerli oturum algılanmadı. 3DPrinterOS'a giriş yapılsın mı?" msgid "Success!" msgstr "Başarılı!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Çıkış yaptığınızdan emin misiniz?" @@ -22018,13 +21962,6 @@ msgstr "Bulut özellikleri, yazıcı keşfi ve uzaktan yazdırma için Bambu Ağ msgid "Error: %s" msgstr "Hata: %s" -msgid "Show details" -msgstr "Ayrıntıları göster" - -# AI Translated -msgid "Hide details" -msgstr "Ayrıntıları gizle" - msgid "Version to install:" msgstr "Yüklenecek sürüm:" @@ -24681,6 +24618,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24693,6 +24636,217 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Sol Ok" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Sağ Ok" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Yukarı Ok" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Aşağı Ok" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" + +msgid "Select all objects" +msgstr "Tüm nesneleri seç" + +msgid "Paste from clipboard" +msgstr "Panodan yapıştır" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "Nesne/parça için yazdırılabilirliği aç/kapat" + +msgid "Move selection 10mm in negative X direction" +msgstr "Seçimi negatif X yönünde 10 mm taşı" + +msgid "Move selection 10mm in positive X direction" +msgstr "Seçimi pozitif X yönünde 10 mm taşı" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Seçimi pozitif Y yönünde 10 mm taşı" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Seçimi negatif Y yönünde 10 mm taşı" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo hareket" + +msgid "Gizmo rotate" +msgstr "Gizmo döndürme" + +msgid "Gizmo scale" +msgstr "Gizmo ölçek" + +msgid "Gizmo place face on bed" +msgstr "Gizmo yüzünüzü yatağa yerleştirin" + +msgid "Gizmo cut" +msgstr "Gizmo kesim" + +msgid "Gizmo mesh boolean" +msgstr "Gizmo mesh bölme" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo FDM boyalı dikiş" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM boyama ile uygulanan pütürlü yüzey" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo metin kabartma/kazıma" + +msgid "Gizmo measure" +msgstr "Gizmo ölçüm" + +msgid "Gizmo assemble" +msgstr "Gizmo birleştir" + +msgid "Gizmo brim ears" +msgstr "Gizmo lenarlık kulakları" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Dikey kaydırıcı - Etkin başparmağı yukarı hareket ettir" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Dikey kaydırıcı - Etkin başparmağı Aşağı hareket ettir" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Yatay kaydırıcı - Etkin başparmağı sola taşı" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Yatay kaydırıcı - Etkin başparmağı sağa taşı" + +msgid "Horizontal slider - Move to start position" +msgstr "Yatay kaydırıcı - Başlangıç konumuna taşıyın" + +msgid "Horizontal slider - Move to last position" +msgstr "Yatay kaydırıcı - Son konuma git" + +msgid "Camera view - Default" +msgstr "Kamera görünümü - Varsayılan" + +msgid "Camera view - Top" +msgstr "Kamera görünümü - Üst" + +msgid "Camera view - Bottom" +msgstr "Kamera görünümü - Alt" + +msgid "Camera view - Front" +msgstr "Kamera görünümü - Ön" + +msgid "Camera view - Behind" +msgstr "Kamera görünümü - Arka" + +msgid "Camera Angle - Left side" +msgstr "Kamera Açısı - Sol" + +msgid "Camera Angle - Right side" +msgstr "Kamera Açısı - Sağ" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Yakınlaştır" + +msgid "Zoom out" +msgstr "Uzaklaştır" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "3Dconnexion cihazları ayarları iletişim kutusunu Göster/Gizle" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "G-code penceresini aç/kapat" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Dikey kaydırıcının tek katman modunu açma/kapama" + +msgid "Switch between Prepare/Preview" +msgstr "Hazırlama/Önizleme arasında geçiş yap" + +msgid "Collapse/Expand the sidebar" +msgstr "Kenar çubuğunu daralt/genişlet" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Klavye kısayolları listesini göster" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24995,6 +25149,66 @@ 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 "Tab" +#~ msgstr "Sekme" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Geçerli görünüm penceresinin FPS değerini sağ üst köşede gösterir." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "3MF Yayınlama Wiki" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "3MF Yayınlama Video Kılavuzu" + +#~ msgid "Toolbar" +#~ msgstr "Araç Çubuğu" + +#~ msgid "Switch table page" +#~ msgstr "Tablo sayfasını değiştir" + +#~ msgid "Global shortcuts" +#~ msgstr "Genel kısayollar" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Orta fare düğmesi" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Seçilen nesneleri veya tüm nesneleri otomatik olarak yönlendirir. Seçilen nesneler varsa, yalnızca seçilenleri yönlendirir. Aksi takdirde mevcut projedeki tüm nesneler yönlendirilecektir." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Aktif plakadaki tüm nesneleri otomatik olarak yönlendirir." + +#~ msgid "Any arrow" +#~ msgstr "Herhangi bir ok" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo SLA destek noktaları" + +#~ msgid "Plater" +#~ msgstr "Plakacı" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Nesneleri, parçaları, değiştiricileri silin" + +#~ msgid "Objects List" +#~ msgstr "Nesne Listesi" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code, çıktı dosyasının en üstünde, diğer içeriklerden önce yazılır. Yazıcı ürün yazılımının dosyanın ilk satırlarından okuduğu meta verileri (ör. tahmini yazdırma süresi, filament kullanımı) eklemek için kullanışlıdır. {print_time_sec} ve {used_filament_length} gibi yer tutucuları destekler." + +#~ msgid "Print time (seconds)" +#~ msgstr "Yazdırma süresi (saniye)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Eylem hızlı erişim menüsünü aç" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index ffa055a2ff..d173e6fa5c 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-07-17 16:25+0300\n" "Last-Translator: Andrij Mizyk \n" "Language-Team: Ukrainian\n" @@ -5926,12 +5926,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Право" -msgid "Add" -msgstr "Додати" - msgid "Add plate" msgstr "Додати пластину" +msgid "Split to objects" +msgstr "Розділити на обʼєкти" + +msgid "Add" +msgstr "Додати" + msgid "Auto orient all/selected objects" msgstr "Автоорієнтація всі/вибрані обʼєкти" @@ -5944,9 +5947,6 @@ msgstr "Впорядкувати всі обʼєкти" msgid "Arrange objects on selected plates" msgstr "Впорядкувати обʼєкти на вибраних пластинах" -msgid "Split to objects" -msgstr "Розділити на обʼєкти" - msgid "Assembly View" msgstr "Вигляд збирання" @@ -6002,6 +6002,9 @@ msgstr "Контур" msgid "Wireframe" msgstr "Каркас" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "Реалістичний вигляд" @@ -6554,9 +6557,6 @@ msgstr "Показувати контур навколо виділеного о msgid "Preferences" msgstr "Налаштування" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6565,6 +6565,9 @@ msgstr "Редагування" msgid "View" msgstr "Вигляд" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "Набір пресетів" @@ -8411,9 +8414,6 @@ msgstr "Розгорнути бічну панель" msgid "Collapse sidebar" msgstr "Згорнути бічну панель" -msgid "Tab" -msgstr "Табуляції" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Завантаження файлу: %s" @@ -9462,10 +9462,10 @@ msgstr "Керування кількома пристроями" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "З цією опцією ввімкненою, ви можете відправляти завдання на кілька пристроїв одночасно та керувати декількома пристроями." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9609,6 +9609,15 @@ msgstr "Перетягування правою кнопкою миші" msgid "Set the action that dragging the right mouse button should perform." msgstr "Задає дію, яку має виконувати перетягування правою кнопкою миші." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + # AI Translated msgid "Clear my choice on..." msgstr "Очистити мій вибір для..." @@ -9723,13 +9732,40 @@ msgstr "" "Обмежує частоту кадрів вікна перегляду, щоб зменшити навантаження на GPU та енергоспоживання.\n" "Встановіть 0 для необмеженої частоти кадрів." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "Показувати накладку FPS" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Показує поточний FPS вікна перегляду у верхньому правому куті." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10195,13 +10231,8 @@ msgstr "Публікувати 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Виберіть, які налаштування буде опубліковано у файлі 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Енциклопедія з публікації 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Відеопосібник з публікації 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10404,6 +10435,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "Показати подробиці" + +# AI Translated +msgid "Hide details" +msgstr "Сховати подробиці" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12338,68 +12376,39 @@ msgstr "Пакет конфігурації змінено в попереднь msgid "Configuration package changed" msgstr "Змінено пакет конфігурації" -msgid "Toolbar" -msgstr "Панель інструментів" - -msgid "Objects list" -msgstr "Список обʼєктів" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Імпорт геометричних даних із файлів STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Вставити з буфера обміну" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Показати/приховати діалог налаштувань пристроїв 3Dconnexion" - -msgid "Switch table page" -msgstr "Перемкнути сторінку таблиці" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Пробіл" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Показати список клавіш" - -msgid "Global shortcuts" -msgstr "Глобальні ярлики" - msgid "Pan View" msgstr "Панорамний вигляд" msgid "Rotate View" msgstr "Повернути вигляд" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + # AI Translated -msgid "Middle mouse button" -msgstr "Середня кнопка миші" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Zoom View" -msgstr "Перегляд масштабу" +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Автоматично орієнтує вибрані обʼєкти або всі обʼєкти. Якщо вибрано обʼєкти, він просто орієнтує обрані. В іншому випадку він будеОрієнтувати всі обʼєкти на поточному проєкт." - -msgid "Auto orients all objects on the active plate." -msgstr "Автоматично орієнтує всі обʼєкти на поточному диску." - -msgid "Collapse/Expand the sidebar" -msgstr "Згорнути/розгорнути бічну панель" - -msgid "Any arrow" -msgstr "Будь-яка стрілка" - -msgid "Movement in camera space" -msgstr "Рух у просторі камери" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Виберіть частину" @@ -12410,127 +12419,29 @@ msgstr "Вибрати кілька обʼєктів" msgid "Select objects by rectangle" msgstr "Виділити обʼєкти прямокутником" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Стрілка вгору" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Перемістити виділення на 10 мм у позитивному напрямку Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Стрілка вниз" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Перемістити виділення на 10 мм у негативному напрямку Y" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Стрілка вліво" - -msgid "Move selection 10mm in negative X direction" -msgstr "Перемістити виділення на 10 мм у негативному напрямку по осі X" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Стрілка вправо" - -msgid "Move selection 10mm in positive X direction" -msgstr "Перемістити виділення на 10 мм у позитивному напрямку X" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "клавіатура 1-9: встановити філамент для обʼєкта/деталі" msgid "Movement step set to 1mm" msgstr "Крок переміщення встановлено на 1 мм" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "клавіатура 1-9: встановити філамент для обʼєкта/деталі" +msgid "Movement in camera space" +msgstr "Рух у просторі камери" -msgid "Camera view - Default" -msgstr "Вигляд камери - Типовий" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Вигляд камери - Верх" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "Вигляд камери - Низ" +msgid "Zoom View" +msgstr "Перегляд масштабу" -msgid "Camera view - Front" -msgstr "Вигляд камери - Перед" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "Вигляд камери - Зад" - -msgid "Camera Angle - Left side" -msgstr "Кут камери – Лівий бік" - -msgid "Camera Angle - Right side" -msgstr "Кут камери - Правий бік" - -msgid "Select all objects" -msgstr "Вибрати всі обʼєкти" - -msgid "Gizmo move" -msgstr "Рух Gizmo" - -msgid "Gizmo rotate" -msgstr "Поворот Gizmo" - -msgid "Gizmo scale" -msgstr "Шкала Gizmo" - -msgid "Gizmo place face on bed" -msgstr "Покласти грань на стіл Gizmo" - -msgid "Gizmo cut" -msgstr "Виріз Gizmo" - -msgid "Gizmo mesh boolean" -msgstr "Булеві операції Gizmo" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo Малювання шорсткої поверхні" - -msgid "Gizmo SLA support points" -msgstr "Точки підтримки Gizmo SL" - -msgid "Gizmo FDM paint-on seam" -msgstr "Швид, що фарбується Gizmo FDM" - -msgid "Gizmo text emboss/engrave" -msgstr "Текстове тиснення/гравіювання Gizmo" - -msgid "Gizmo measure" -msgstr "виміряти Gizmo" - -msgid "Gizmo assemble" -msgstr "Зібрати Gizmo" - -msgid "Gizmo brim ears" -msgstr "Краєчки Gizmo" - -msgid "Zoom in" -msgstr "Приблизити" - -msgid "Zoom out" -msgstr "Віддалити" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "Перемкнути можливість друку для обʼєкта/частини" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Переключення між Підготовка/Попередній перегляд" - -msgid "Plater" -msgstr "Тарілка" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Переміщення: натисніть для переміщення на 1 мм" @@ -12541,14 +12452,19 @@ msgstr "Підтримка/Фарбування: регулювання раді msgid "Support/Color Painting: adjust section position" msgstr "Підтримка/Фарбування: регулювання положення секцій" -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Список обʼєктів" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Встановіть номер екструдера для обʼєктів та деталей" -msgid "Delete objects, parts, modifiers" -msgstr "Видалення обʼєктів, частин, модифікаторів" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Пробіл" msgid "Select the object/part and press space to change the name" msgstr "Виберіть обʼєкт/деталь і натисніть пробіл, щоб змінити назву" @@ -12559,45 +12475,48 @@ msgstr "Клацання миші" msgid "Select the object/part and mouse click to change the name" msgstr "Виберіть обʼєкт/деталь і клацніть, щоб змінити назву" -msgid "Objects List" -msgstr "Список обʼєктів" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Вертикальний повзунок - рух активного великого пальця вгору" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Вертикальний повзунок - Перемістити активний палець вниз" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Горизонтальний повзунок - Перемістити активний палець вліво" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Горизонтальний повзунок - Перемістити активний палець праворуч" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Увімкнення/вимкнення одношарового режиму вертикального повзунка" - -msgid "On/Off G-code window" -msgstr "Увімкнення/вимкнення вікна G-коду" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Переміщення повзунка в 5 разів швидше" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Горизонтальний повзунок - Перемістити в початкове положення" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Горизонтальний повзунок - Перемістити в останню позицію" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Примітка до випуску" @@ -17717,9 +17636,8 @@ msgstr "Кроки підігріву" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Вставляє кілька команд попереднього нагріву (наприклад, M104.1). Корисно лише для Prusa XL. Для інших принтерів слід встановити значення 1." -# AI Translated -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-код, що записується на самому початку вихідного файлу, перед будь-яким іншим вмістом. Корисно для додавання метаданих, які прошивка принтера читає з перших рядків файлу (наприклад, орієнтовний час друку, витрата філаменту). Підтримує підстановки на кшталт {print_time_sec} та {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "Початковий G-код" @@ -19307,13 +19225,37 @@ msgstr "Філамент, що використовується" msgid "Total length of filament used in the print." msgstr "Загальна довжина філаменту, використаної під час друку." -msgid "Print time (seconds)" -msgstr "Час друку (в секундах)" +msgid "Print time (total seconds)" +msgstr "" # AI Translated msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Загальний орієнтовний час друку в секундах. Замінюється фактичним значенням під час постобробки." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "Довжина філаменту (в метрах)" @@ -21216,6 +21158,9 @@ msgstr "Дійсний сеанс не виявлено. Продовжити в msgid "Success!" msgstr "Успішно!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Ви впевнені, що вийшли?" @@ -22197,13 +22142,6 @@ msgstr "Мережевий плагін Bambu потрібен для можли msgid "Error: %s" msgstr "Помилка: %s" -msgid "Show details" -msgstr "Показати подробиці" - -# AI Translated -msgid "Hide details" -msgstr "Сховати подробиці" - msgid "Version to install:" msgstr "Версія для встановлення:" @@ -24841,6 +24779,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24853,6 +24797,217 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Стрілка вліво" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Стрілка вправо" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Стрілка вгору" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Стрілка вниз" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Імпорт геометричних даних із файлів STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Вибрати всі обʼєкти" + +msgid "Paste from clipboard" +msgstr "Вставити з буфера обміну" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "Перемкнути можливість друку для обʼєкта/частини" + +msgid "Move selection 10mm in negative X direction" +msgstr "Перемістити виділення на 10 мм у негативному напрямку по осі X" + +msgid "Move selection 10mm in positive X direction" +msgstr "Перемістити виділення на 10 мм у позитивному напрямку X" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Перемістити виділення на 10 мм у позитивному напрямку Y" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Перемістити виділення на 10 мм у негативному напрямку Y" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Рух Gizmo" + +msgid "Gizmo rotate" +msgstr "Поворот Gizmo" + +msgid "Gizmo scale" +msgstr "Шкала Gizmo" + +msgid "Gizmo place face on bed" +msgstr "Покласти грань на стіл Gizmo" + +msgid "Gizmo cut" +msgstr "Виріз Gizmo" + +msgid "Gizmo mesh boolean" +msgstr "Булеві операції Gizmo" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Швид, що фарбується Gizmo FDM" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo Малювання шорсткої поверхні" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Текстове тиснення/гравіювання Gizmo" + +msgid "Gizmo measure" +msgstr "виміряти Gizmo" + +msgid "Gizmo assemble" +msgstr "Зібрати Gizmo" + +msgid "Gizmo brim ears" +msgstr "Краєчки Gizmo" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Вертикальний повзунок - рух активного великого пальця вгору" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Вертикальний повзунок - Перемістити активний палець вниз" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Горизонтальний повзунок - Перемістити активний палець вліво" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Горизонтальний повзунок - Перемістити активний палець праворуч" + +msgid "Horizontal slider - Move to start position" +msgstr "Горизонтальний повзунок - Перемістити в початкове положення" + +msgid "Horizontal slider - Move to last position" +msgstr "Горизонтальний повзунок - Перемістити в останню позицію" + +msgid "Camera view - Default" +msgstr "Вигляд камери - Типовий" + +msgid "Camera view - Top" +msgstr "Вигляд камери - Верх" + +msgid "Camera view - Bottom" +msgstr "Вигляд камери - Низ" + +msgid "Camera view - Front" +msgstr "Вигляд камери - Перед" + +msgid "Camera view - Behind" +msgstr "Вигляд камери - Зад" + +msgid "Camera Angle - Left side" +msgstr "Кут камери – Лівий бік" + +msgid "Camera Angle - Right side" +msgstr "Кут камери - Правий бік" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Приблизити" + +msgid "Zoom out" +msgstr "Віддалити" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Показати/приховати діалог налаштувань пристроїв 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Увімкнення/вимкнення вікна G-коду" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Увімкнення/вимкнення одношарового режиму вертикального повзунка" + +msgid "Switch between Prepare/Preview" +msgstr "Переключення між Підготовка/Попередній перегляд" + +msgid "Collapse/Expand the sidebar" +msgstr "Згорнути/розгорнути бічну панель" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Показати список клавіш" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -25158,6 +25313,65 @@ msgstr "" "Уникнення деформації\n" "Чи знаєте ви, що при друку матеріалами, схильними до деформації, такими як ABS, відповідне підвищення температури столу може зменшити ймовірність деформації?" +#~ msgid "Tab" +#~ msgstr "Табуляції" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Показує поточний FPS вікна перегляду у верхньому правому куті." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Енциклопедія з публікації 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Відеопосібник з публікації 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Панель інструментів" + +#~ msgid "Switch table page" +#~ msgstr "Перемкнути сторінку таблиці" + +#~ msgid "Global shortcuts" +#~ msgstr "Глобальні ярлики" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Середня кнопка миші" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Автоматично орієнтує вибрані обʼєкти або всі обʼєкти. Якщо вибрано обʼєкти, він просто орієнтує обрані. В іншому випадку він будеОрієнтувати всі обʼєкти на поточному проєкт." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Автоматично орієнтує всі обʼєкти на поточному диску." + +#~ msgid "Any arrow" +#~ msgstr "Будь-яка стрілка" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Точки підтримки Gizmo SL" + +#~ msgid "Plater" +#~ msgstr "Тарілка" + +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Видалення обʼєктів, частин, модифікаторів" + +#~ msgid "Objects List" +#~ msgstr "Список обʼєктів" + +# AI Translated +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-код, що записується на самому початку вихідного файлу, перед будь-яким іншим вмістом. Корисно для додавання метаданих, які прошивка принтера читає з перших рядків файлу (наприклад, орієнтовний час друку, витрата філаменту). Підтримує підстановки на кшталт {print_time_sec} та {used_filament_length}." + +#~ msgid "Print time (seconds)" +#~ msgstr "Час друку (в секундах)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Відкрити панель швидких дій" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 3263e575c5..8c6349c923 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -6253,12 +6253,15 @@ msgctxt "Camera View" msgid "Right" msgstr "Phải" -msgid "Add" -msgstr "Thêm" - msgid "Add plate" msgstr "Thêm plate" +msgid "Split to objects" +msgstr "Tách thành vật thể" + +msgid "Add" +msgstr "Thêm" + msgid "Auto orient all/selected objects" msgstr "Tự động định hướng tất cả/các vật thể đã chọn" @@ -6271,9 +6274,6 @@ msgstr "Sắp xếp tất cả vật thể" msgid "Arrange objects on selected plates" msgstr "Sắp xếp vật thể trên các plate đã chọn" -msgid "Split to objects" -msgstr "Tách thành vật thể" - msgid "Assembly View" msgstr "Chế độ xem lắp ráp" @@ -6336,6 +6336,9 @@ msgstr "Đường viền" msgid "Wireframe" msgstr "Khung dây" +msgid "X-Ray" +msgstr "" + # AI Translated msgid "Realistic View" msgstr "Chế độ xem thực tế" @@ -6904,9 +6907,6 @@ msgstr "Hiện đường viền xung quanh vật thể đã chọn trong cảnh msgid "Preferences" msgstr "Tùy chọn" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6915,6 +6915,9 @@ msgstr "Chỉnh sửa" msgid "View" msgstr "Xem" +msgid "Open Speed Dial" +msgstr "" + # AI Translated msgid "Preset Bundle" msgstr "Gói cài đặt sẵn" @@ -8820,10 +8823,6 @@ msgstr "Mở rộng thanh bên" msgid "Collapse sidebar" msgstr "Thu gọn thanh bên" -# AI Translated -msgid "Tab" -msgstr "Tab" - #, c-format, boost-format msgid "Loading file: %s" msgstr "Đang tải file: %s" @@ -9923,10 +9922,10 @@ msgstr "Quản lý nhiều thiết bị" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "Với tùy chọn này được bật, bạn có thể gửi tác vụ đến nhiều thiết bị cùng lúc và quản lý nhiều thiết bị." -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -10074,6 +10073,15 @@ msgstr "Kéo chuột phải" msgid "Set the action that dragging the right mouse button should perform." msgstr "Đặt hành động sẽ thực hiện khi kéo nút chuột phải." +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + # AI Translated msgid "Clear my choice on..." msgstr "Xóa lựa chọn của tôi về..." @@ -10203,13 +10211,40 @@ msgstr "" "Giới hạn tốc độ khung hình của khung nhìn để giảm tải GPU và mức tiêu thụ điện.\n" "Đặt 0 để không giới hạn tốc độ khung hình." +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + # AI Translated msgid "Show FPS overlay" msgstr "Hiện lớp phủ FPS" -# AI Translated -msgid "Displays current viewport FPS in the top-right corner." -msgstr "Hiển thị FPS hiện tại của khung nhìn ở góc trên bên phải." +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10706,13 +10741,8 @@ msgstr "Xuất bản 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "Chọn những cài đặt sẽ được xuất bản trong tệp 3MF" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "Wiki về Xuất bản 3MF" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "Hướng dẫn video về Xuất bản 3MF" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10915,6 +10945,14 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +# AI Translated +msgid "Show details" +msgstr "Hiện chi tiết" + +# AI Translated +msgid "Hide details" +msgstr "Ẩn chi tiết" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12886,41 +12924,6 @@ msgstr "Gói cấu hình đã được thay đổi trong hướng dẫn cấu h msgid "Configuration package changed" msgstr "Gói cấu hình đã thay đổi" -msgid "Toolbar" -msgstr "Thanh công cụ" - -msgid "Objects list" -msgstr "Danh sách đối tượng" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "Nhập dữ liệu hình học từ file STL/STEP/3MF/OBJ/AMF" - -msgid "Paste from clipboard" -msgstr "Dán từ clipboard" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "Hiển thị/Ẩn hộp thoại cài đặt thiết bị 3Dconnexion" - -msgid "Switch table page" -msgstr "Chuyển trang bảng" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Space" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "Hiển thị danh sách phím tắt" - -msgid "Global shortcuts" -msgstr "Phím tắt toàn cục" - # AI Translated msgid "Pan View" msgstr "Di chuyển khung nhìn" @@ -12929,28 +12932,33 @@ msgstr "Di chuyển khung nhìn" msgid "Rotate View" msgstr "Xoay khung nhìn" -# AI Translated -msgid "Middle mouse button" -msgstr "Nút chuột giữa" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" + +msgid "Left mouse" +msgstr "" + +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" + +msgid "Run a speed dial favorite while the dial is open" +msgstr "" # AI Translated -msgid "Zoom View" -msgstr "Thu phóng khung nhìn" +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "Tự động định hướng đối tượng đã chọn hoặc tất cả đối tượng. Nếu có đối tượng đã chọn, nó chỉ định hướng những đối tượng đã chọn. Nếu không, nó sẽ định hướng tất cả đối tượng trong dự án hiện tại." +msgid "Switch to the next main tab" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "Tự động định hướng tất cả đối tượng trên bản đang hoạt động." - -msgid "Collapse/Expand the sidebar" -msgstr "Thu gọn/Mở rộng thanh bên" - -msgid "Any arrow" -msgstr "Phím mũi tên bất kỳ" - -msgid "Movement in camera space" -msgstr "Di chuyển trong không gian camera" +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "Chọn một phần" @@ -12961,128 +12969,30 @@ msgstr "Chọn nhiều đối tượng" msgid "Select objects by rectangle" msgstr "Chọn đối tượng bằng hình chữ nhật" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Mũi tên lên" - -msgid "Move selection 10mm in positive Y direction" -msgstr "Di chuyển lựa chọn 10 mm theo hướng Y dương" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Mũi tên xuống" - -msgid "Move selection 10mm in negative Y direction" -msgstr "Di chuyển lựa chọn 10 mm theo hướng Y âm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Mũi tên trái" - -msgid "Move selection 10mm in negative X direction" -msgstr "Di chuyển lựa chọn 10 mm theo hướng X âm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Mũi tên phải" - -msgid "Move selection 10mm in positive X direction" -msgstr "Di chuyển lựa chọn 10 mm theo hướng X dương" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "bàn phím 1-9: đặt filament cho đối tượng/phần" msgid "Movement step set to 1mm" msgstr "Bước di chuyển được đặt thành 1 mm" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "bàn phím 1-9: đặt filament cho đối tượng/phần" +msgid "Movement in camera space" +msgstr "Di chuyển trong không gian camera" -msgid "Camera view - Default" -msgstr "Chế độ xem camera - Mặc định" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "Chế độ xem camera - Trên" - -msgid "Camera view - Bottom" -msgstr "Chế độ xem camera - Dưới" - -msgid "Camera view - Front" -msgstr "Chế độ xem camera - Trước" - -msgid "Camera view - Behind" -msgstr "Chế độ xem camera - Sau" - -msgid "Camera Angle - Left side" -msgstr "Góc camera - Bên trái" - -msgid "Camera Angle - Right side" -msgstr "Góc camera - Bên phải" - -msgid "Select all objects" -msgstr "Chọn tất cả đối tượng" - -msgid "Gizmo move" -msgstr "Gizmo di chuyển" - -msgid "Gizmo rotate" -msgstr "Gizmo xoay" - -msgid "Gizmo scale" -msgstr "Gizmo tỷ lệ" - -msgid "Gizmo place face on bed" -msgstr "Gizmo đặt mặt lên bàn" - -msgid "Gizmo cut" -msgstr "Gizmo cắt" +msgid "Right mouse" +msgstr "" # AI Translated -msgid "Gizmo mesh boolean" -msgstr "Gizmo boolean lưới" +msgid "Zoom View" +msgstr "Thu phóng khung nhìn" -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM tô fuzzy skin" +msgid "Painting" +msgstr "" -msgid "Gizmo SLA support points" -msgstr "Gizmo điểm support SLA" - -msgid "Gizmo FDM paint-on seam" -msgstr "Gizmo FDM tô seam" - -msgid "Gizmo text emboss/engrave" -msgstr "Gizmo văn bản emboss/khắc" - -msgid "Gizmo measure" -msgstr "Gizmo đo" - -msgid "Gizmo assemble" -msgstr "Gizmo lắp ráp" - -msgid "Gizmo brim ears" -msgstr "Gizmo tai viền" - -msgid "Zoom in" -msgstr "Phóng to" - -msgid "Zoom out" -msgstr "Thu nhỏ" - -# AI Translated -msgid "Toggle printable for object/part" -msgstr "Bật/tắt khả năng in cho vật thể/phần" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "Chuyển đổi giữa Chuẩn bị/Xem trước" - -msgid "Plater" -msgstr "Bàn in" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "Di chuyển: nhấn để bám theo 1mm" @@ -13093,15 +13003,19 @@ msgstr "Tô support/màu: điều chỉnh bán kính bút" msgid "Support/Color Painting: adjust section position" msgstr "Tô support/màu: điều chỉnh vị trí phần" -# AI Translated -msgid "Gizmo" -msgstr "Gizmo" +msgid "Objects list" +msgstr "Danh sách đối tượng" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "Đặt số extruder cho đối tượng và phần" -msgid "Delete objects, parts, modifiers" -msgstr "Xóa đối tượng, phần, modifier" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Space" msgid "Select the object/part and press space to change the name" msgstr "Chọn đối tượng/phần và nhấn phím cách để thay đổi tên" @@ -13112,45 +13026,48 @@ msgstr "Nhấp chuột" msgid "Select the object/part and mouse click to change the name" msgstr "Chọn đối tượng/phần và nhấp chuột để thay đổi tên" -msgid "Objects List" -msgstr "Danh sách đối tượng" - -msgid "Vertical slider - Move active thumb Up" -msgstr "Thanh trượt dọc - Di chuyển nút hoạt động lên" - -msgid "Vertical slider - Move active thumb Down" -msgstr "Thanh trượt dọc - Di chuyển nút hoạt động xuống" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "Thanh trượt ngang - Di chuyển nút hoạt động sang trái" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "Thanh trượt ngang - Di chuyển nút hoạt động sang phải" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "Bật/Tắt chế độ một lớp của thanh trượt dọc" - -msgid "On/Off G-code window" -msgstr "Bật/Tắt cửa sổ G-code" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "Di chuyển thanh trượt nhanh hơn 5 lần" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "Thanh trượt ngang - Di chuyển đến vị trí bắt đầu" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "Thanh trượt ngang - Di chuyển đến vị trí cuối cùng" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "Ghi chú phát hành" @@ -18243,9 +18160,8 @@ msgstr "Bước làm nóng trước" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "Chèn nhiều lệnh làm nóng trước (ví dụ M104.1). Chỉ hữu ích cho Prusa XL. Đối với các máy in khác, vui lòng đặt nó thành 1." -# AI Translated -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code được ghi ở ngay đầu file xuất, trước mọi nội dung khác. Hữu ích để thêm siêu dữ liệu mà firmware máy in đọc từ những dòng đầu tiên của file (ví dụ thời gian in ước tính, lượng filament sử dụng). Hỗ trợ các trình giữ chỗ như {print_time_sec} và {used_filament_length}." +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "G-code bắt đầu" @@ -19832,14 +19748,37 @@ msgstr "Filament đã dùng" msgid "Total length of filament used in the print." msgstr "Tổng độ dài filament dùng trong bản in." -# AI Translated -msgid "Print time (seconds)" -msgstr "Thời gian in (giây)" +msgid "Print time (total seconds)" +msgstr "" # AI Translated msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "Tổng thời gian in ước tính tính bằng giây. Được thay bằng giá trị thực tế trong quá trình hậu xử lý." +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + # AI Translated msgid "Filament length (meters)" msgstr "Độ dài filament (mét)" @@ -21758,6 +21697,9 @@ msgstr "Không phát hiện phiên hợp lệ. Tiếp tục đăng nhập vào 3 msgid "Success!" msgstr "Thành công!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "Bạn có chắc chắn đăng xuất không?" @@ -22871,14 +22813,6 @@ msgstr "Bambu Network Plug-in là bắt buộc cho các tính năng cloud, phát msgid "Error: %s" msgstr "Lỗi: %s" -# AI Translated -msgid "Show details" -msgstr "Hiện chi tiết" - -# AI Translated -msgid "Hide details" -msgstr "Ẩn chi tiết" - # AI Translated msgid "Version to install:" msgstr "Phiên bản sẽ cài đặt:" @@ -25562,6 +25496,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -25574,6 +25514,218 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Mũi tên trái" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Mũi tên phải" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Mũi tên lên" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Mũi tên xuống" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Nhập dữ liệu hình học từ file STL/STEP/3MF/OBJ/AMF" + +msgid "Select all objects" +msgstr "Chọn tất cả đối tượng" + +msgid "Paste from clipboard" +msgstr "Dán từ clipboard" + +# AI Translated +msgid "Toggle printable for object/part" +msgstr "Bật/tắt khả năng in cho vật thể/phần" + +msgid "Move selection 10mm in negative X direction" +msgstr "Di chuyển lựa chọn 10 mm theo hướng X âm" + +msgid "Move selection 10mm in positive X direction" +msgstr "Di chuyển lựa chọn 10 mm theo hướng X dương" + +msgid "Move selection 10mm in positive Y direction" +msgstr "Di chuyển lựa chọn 10 mm theo hướng Y dương" + +msgid "Move selection 10mm in negative Y direction" +msgstr "Di chuyển lựa chọn 10 mm theo hướng Y âm" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "Gizmo di chuyển" + +msgid "Gizmo rotate" +msgstr "Gizmo xoay" + +msgid "Gizmo scale" +msgstr "Gizmo tỷ lệ" + +msgid "Gizmo place face on bed" +msgstr "Gizmo đặt mặt lên bàn" + +msgid "Gizmo cut" +msgstr "Gizmo cắt" + +# AI Translated +msgid "Gizmo mesh boolean" +msgstr "Gizmo boolean lưới" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "Gizmo FDM tô seam" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM tô fuzzy skin" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "Gizmo văn bản emboss/khắc" + +msgid "Gizmo measure" +msgstr "Gizmo đo" + +msgid "Gizmo assemble" +msgstr "Gizmo lắp ráp" + +msgid "Gizmo brim ears" +msgstr "Gizmo tai viền" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Thanh trượt dọc - Di chuyển nút hoạt động lên" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Thanh trượt dọc - Di chuyển nút hoạt động xuống" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Thanh trượt ngang - Di chuyển nút hoạt động sang trái" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Thanh trượt ngang - Di chuyển nút hoạt động sang phải" + +msgid "Horizontal slider - Move to start position" +msgstr "Thanh trượt ngang - Di chuyển đến vị trí bắt đầu" + +msgid "Horizontal slider - Move to last position" +msgstr "Thanh trượt ngang - Di chuyển đến vị trí cuối cùng" + +msgid "Camera view - Default" +msgstr "Chế độ xem camera - Mặc định" + +msgid "Camera view - Top" +msgstr "Chế độ xem camera - Trên" + +msgid "Camera view - Bottom" +msgstr "Chế độ xem camera - Dưới" + +msgid "Camera view - Front" +msgstr "Chế độ xem camera - Trước" + +msgid "Camera view - Behind" +msgstr "Chế độ xem camera - Sau" + +msgid "Camera Angle - Left side" +msgstr "Góc camera - Bên trái" + +msgid "Camera Angle - Right side" +msgstr "Góc camera - Bên phải" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "Phóng to" + +msgid "Zoom out" +msgstr "Thu nhỏ" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Hiển thị/Ẩn hộp thoại cài đặt thiết bị 3Dconnexion" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "Bật/Tắt cửa sổ G-code" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Bật/Tắt chế độ một lớp của thanh trượt dọc" + +msgid "Switch between Prepare/Preview" +msgstr "Chuyển đổi giữa Chuẩn bị/Xem trước" + +msgid "Collapse/Expand the sidebar" +msgstr "Thu gọn/Mở rộng thanh bên" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "Hiển thị danh sách phím tắt" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -25875,6 +26027,68 @@ 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 "Tab" +#~ msgstr "Tab" + +# AI Translated +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "Hiển thị FPS hiện tại của khung nhìn ở góc trên bên phải." + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "Wiki về Xuất bản 3MF" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "Hướng dẫn video về Xuất bản 3MF" + +#~ msgid "Toolbar" +#~ msgstr "Thanh công cụ" + +#~ msgid "Switch table page" +#~ msgstr "Chuyển trang bảng" + +#~ msgid "Global shortcuts" +#~ msgstr "Phím tắt toàn cục" + +# AI Translated +#~ msgid "Middle mouse button" +#~ msgstr "Nút chuột giữa" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "Tự động định hướng đối tượng đã chọn hoặc tất cả đối tượng. Nếu có đối tượng đã chọn, nó chỉ định hướng những đối tượng đã chọn. Nếu không, nó sẽ định hướng tất cả đối tượng trong dự án hiện tại." + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "Tự động định hướng tất cả đối tượng trên bản đang hoạt động." + +#~ msgid "Any arrow" +#~ msgstr "Phím mũi tên bất kỳ" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "Gizmo điểm support SLA" + +#~ msgid "Plater" +#~ msgstr "Bàn in" + +# AI Translated +#~ msgid "Gizmo" +#~ msgstr "Gizmo" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "Xóa đối tượng, phần, modifier" + +#~ msgid "Objects List" +#~ msgstr "Danh sách đối tượng" + +# AI Translated +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code được ghi ở ngay đầu file xuất, trước mọi nội dung khác. Hữu ích để thêm siêu dữ liệu mà firmware máy in đọc từ những dòng đầu tiên của file (ví dụ thời gian in ước tính, lượng filament sử dụng). Hỗ trợ các trình giữ chỗ như {print_time_sec} và {used_filament_length}." + +# AI Translated +#~ msgid "Print time (seconds)" +#~ msgstr "Thời gian in (giây)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "Mở vòng quay thao tác nhanh" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index d3c0b03ec1..a86678a8c2 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+0800\n" "PO-Revision-Date: 2026-06-11 12:37-0300\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -5757,12 +5757,15 @@ msgctxt "Camera View" msgid "Right" msgstr "右" -msgid "Add" -msgstr "添加" - msgid "Add plate" msgstr "添加新盘" +msgid "Split to objects" +msgstr "拆分为对象" + +msgid "Add" +msgstr "添加" + msgid "Auto orient all/selected objects" msgstr "自动定位所有/选定的对象" @@ -5775,9 +5778,6 @@ msgstr "全局整理" msgid "Arrange objects on selected plates" msgstr "单盘整理" -msgid "Split to objects" -msgstr "拆分为对象" - msgid "Assembly View" msgstr "装配体视图" @@ -5833,6 +5833,9 @@ msgstr "轮廓线" msgid "Wireframe" msgstr "线框" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "写实渲染" @@ -6372,9 +6375,6 @@ msgstr "在3D场景中显示选中对象的轮廓" msgid "Preferences" msgstr "偏好设置" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6383,6 +6383,9 @@ msgstr "编辑" msgid "View" msgstr "视图" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "预设包" @@ -8147,9 +8150,6 @@ msgstr "展开侧边栏" msgid "Collapse sidebar" msgstr "折叠边栏" -msgid "Tab" -msgstr "标签" - #, c-format, boost-format msgid "Loading file: %s" msgstr "加载文件:%s" @@ -9160,10 +9160,10 @@ msgstr "多设备管理" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "启用此选项后,您可以同时向多个设备发送任务并管理多个设备。" -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9295,6 +9295,15 @@ msgstr "鼠标右键拖动" msgid "Set the action that dragging the right mouse button should perform." msgstr "设置拖动鼠标右键时应执行的操作。" +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "清除我的选择..." @@ -9405,11 +9414,39 @@ msgstr "" "限制视口帧率以降低 GPU 负载和功耗。\n" "设置为 0 表示不限制帧率。" +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "显示 FPS 叠加层" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "在右上角显示当前视口的 FPS。" +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -9869,13 +9906,8 @@ msgstr "发布 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "选择要在 3MF 文件中发布的设置" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "发布 3MF Wiki" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "发布 3MF 视频指南" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10077,6 +10109,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "显示详情" + +# AI Translated +msgid "Hide details" +msgstr "隐藏详情" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -11876,70 +11915,39 @@ msgstr "参数配置包在之前的配置向导中发生了变更" msgid "Configuration package changed" msgstr "参数配置包发生变更" -msgid "Toolbar" -msgstr "工具栏" - -msgid "Objects list" -msgstr "对象列表" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "从STL/STEP/3MF/OBJ/AMF文件中导入几何数据" - -msgid "Paste from clipboard" -msgstr "从剪切板粘贴" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "显示/隐藏 3Dconnexion设备的设置对话框" - -msgid "Switch table page" -msgstr "切换标签页" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Space" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "显示键盘快捷键列表" - -msgid "Global shortcuts" -msgstr "全局快捷键" - msgid "Pan View" msgstr "移动视角" msgid "Rotate View" msgstr "旋转视角" -msgid "Middle mouse button" -msgstr "鼠标中键" - -msgid "Zoom View" -msgstr "缩放视角" - -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." msgstr "" -"自动调整选定零件/所有零件的方向,\n" -"有选定零件时调整选定零件的朝向,\n" -"没有选择零件时调整当项目所有零件的朝向" -msgid "Auto orients all objects on the active plate." -msgstr "自动调整活动盘上的所有物体的方向。" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "收起/展开 侧边栏" +msgid "Left mouse" +msgstr "" -msgid "Any arrow" -msgstr "任意箭头" +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Movement in camera space" -msgstr "沿相机视角移动对象" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" + +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "选择单个零件" @@ -11950,130 +11958,29 @@ msgstr "选择多个对象" msgid "Select objects by rectangle" msgstr "框选多个零件" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "↑" - -# AI Translated -msgid "Move selection 10mm in positive Y direction" -msgstr "将所选项沿 Y 轴正方向移动 10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "↓" - -# AI Translated -msgid "Move selection 10mm in negative Y direction" -msgstr "将所选项沿 Y 轴负方向移动 10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "←" - -# AI Translated -msgid "Move selection 10mm in negative X direction" -msgstr "将所选项沿 X 轴负方向移动 10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "→" - -# AI Translated -msgid "Move selection 10mm in positive X direction" -msgstr "将所选项沿 X 轴正方向移动 10mm" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "按键1-9:设置对象/零件的耗材丝" msgid "Movement step set to 1mm" msgstr "沿X、Y轴以1mm为步进移动对象" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "按键1-9:设置对象/零件的耗材丝" +msgid "Movement in camera space" +msgstr "沿相机视角移动对象" -msgid "Camera view - Default" -msgstr "摄像机视角 - 默认" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "摄像机视角 - 顶部" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "摄像机视角 - 底部" +msgid "Zoom View" +msgstr "缩放视角" -msgid "Camera view - Front" -msgstr "摄像机视角 - 正面" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "摄像机视角 - 后面" - -msgid "Camera Angle - Left side" -msgstr "摄像机视角 - 左面" - -msgid "Camera Angle - Right side" -msgstr "摄像机视角 - 右面" - -msgid "Select all objects" -msgstr "选择所有对象" - -msgid "Gizmo move" -msgstr "线框移动" - -msgid "Gizmo rotate" -msgstr "旋转物件" - -msgid "Gizmo scale" -msgstr "线框缩放" - -msgid "Gizmo place face on bed" -msgstr "选择底面" - -msgid "Gizmo cut" -msgstr "剪切物件" - -msgid "Gizmo mesh boolean" -msgstr "线框网格布尔操作" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM手绘绒毛表面" - -msgid "Gizmo SLA support points" -msgstr "SLA支撑点" - -msgid "Gizmo FDM paint-on seam" -msgstr "FDM涂装接缝" - -msgid "Gizmo text emboss/engrave" -msgstr "线框文本浮雕/雕刻" - -msgid "Gizmo measure" -msgstr "线框测量" - -msgid "Gizmo assemble" -msgstr "线框组合" - -msgid "Gizmo brim ears" -msgstr "线框耳状帽檐" - -msgid "Zoom in" -msgstr "放大" - -msgid "Zoom out" -msgstr "缩小" - -msgid "Toggle printable for object/part" -msgstr "切换对象/零件的可打印状态" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "准备/预览之间的切换" - -msgid "Plater" -msgstr "准备" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "移动:以1mm为步进移动" @@ -12084,14 +11991,19 @@ msgstr "支撑/颜色绘制:调节画笔半径" msgid "Support/Color Painting: adjust section position" msgstr "支撑/色彩绘制:调节剖面位置" -msgid "Gizmo" -msgstr "小工具" +msgid "Objects list" +msgstr "对象列表" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "设置对象、零件使用的挤出机编号" -msgid "Delete objects, parts, modifiers" -msgstr "删除对象、零件、修改器" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Space" msgid "Select the object/part and press space to change the name" msgstr "选中对象、零件,按空格可修改名称" @@ -12102,45 +12014,48 @@ msgstr "鼠标点击" msgid "Select the object/part and mouse click to change the name" msgstr "选中对象、零件,双击零件名可修改名称" -msgid "Objects List" -msgstr "对象列表" - -msgid "Vertical slider - Move active thumb Up" -msgstr "垂直滑动条 - 向上移动一层" - -msgid "Vertical slider - Move active thumb Down" -msgstr "垂直滑动条 - 向下移动一层" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "水平滑动条 - 向左移动一步" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "水平滑动条 - 向右移动一步" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "开启/关闭垂直滑动条的单层模式" - -msgid "On/Off G-code window" -msgstr "开启/关闭G-code窗口" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "5倍速移动滑动条" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "水平滑块 - 移动到起始位置" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "水平滑块 - 移动到末尾位置" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "更新说明" @@ -16971,8 +16886,8 @@ msgstr "预热步骤" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "插入多个预热命令(例如 M104.1)。仅适用于 Prusa XL。对于其他打印机,请将其设置为 1。" -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code 写在输出文件的最顶部,位于任何其他内容之前。对于添加打印机固件从文件第一行读取的元数据(例如估计打印时间、耗材使用情况)很有用。支持 {print_time_sec} 和 {used_filament_length} 等占位符。" +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "起始G-code" @@ -18504,12 +18419,36 @@ msgstr "已用耗材" msgid "Total length of filament used in the print." msgstr "打印中使用的耗材的总长度。" -msgid "Print time (seconds)" -msgstr "打印耗时(秒)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "预计总打印耗时(以秒为单位)。在后处理时将替换为实际值。" +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "耗材长度(米)" @@ -20342,6 +20281,9 @@ msgstr "未检测到有效会话。是否继续登录 3DPrinterOS?" msgid "Success!" msgstr "成功!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "您确定要登出吗?" @@ -21339,13 +21281,6 @@ msgstr "Bambu 网络插件用于云功能、打印机发现和远程打印。" msgid "Error: %s" msgstr "错误:%s" -msgid "Show details" -msgstr "显示详情" - -# AI Translated -msgid "Hide details" -msgstr "隐藏详情" - msgid "Version to install:" msgstr "将安装的版本:" @@ -23976,6 +23911,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -23988,6 +23929,220 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "←" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "→" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "↑" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "↓" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "从STL/STEP/3MF/OBJ/AMF文件中导入几何数据" + +msgid "Select all objects" +msgstr "选择所有对象" + +msgid "Paste from clipboard" +msgstr "从剪切板粘贴" + +msgid "Toggle printable for object/part" +msgstr "切换对象/零件的可打印状态" + +# AI Translated +msgid "Move selection 10mm in negative X direction" +msgstr "将所选项沿 X 轴负方向移动 10mm" + +# AI Translated +msgid "Move selection 10mm in positive X direction" +msgstr "将所选项沿 X 轴正方向移动 10mm" + +# AI Translated +msgid "Move selection 10mm in positive Y direction" +msgstr "将所选项沿 Y 轴正方向移动 10mm" + +# AI Translated +msgid "Move selection 10mm in negative Y direction" +msgstr "将所选项沿 Y 轴负方向移动 10mm" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "线框移动" + +msgid "Gizmo rotate" +msgstr "旋转物件" + +msgid "Gizmo scale" +msgstr "线框缩放" + +msgid "Gizmo place face on bed" +msgstr "选择底面" + +msgid "Gizmo cut" +msgstr "剪切物件" + +msgid "Gizmo mesh boolean" +msgstr "线框网格布尔操作" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "FDM涂装接缝" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM手绘绒毛表面" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "线框文本浮雕/雕刻" + +msgid "Gizmo measure" +msgstr "线框测量" + +msgid "Gizmo assemble" +msgstr "线框组合" + +msgid "Gizmo brim ears" +msgstr "线框耳状帽檐" + +msgid "Vertical slider - Move active thumb Up" +msgstr "垂直滑动条 - 向上移动一层" + +msgid "Vertical slider - Move active thumb Down" +msgstr "垂直滑动条 - 向下移动一层" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "水平滑动条 - 向左移动一步" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "水平滑动条 - 向右移动一步" + +msgid "Horizontal slider - Move to start position" +msgstr "水平滑块 - 移动到起始位置" + +msgid "Horizontal slider - Move to last position" +msgstr "水平滑块 - 移动到末尾位置" + +msgid "Camera view - Default" +msgstr "摄像机视角 - 默认" + +msgid "Camera view - Top" +msgstr "摄像机视角 - 顶部" + +msgid "Camera view - Bottom" +msgstr "摄像机视角 - 底部" + +msgid "Camera view - Front" +msgstr "摄像机视角 - 正面" + +msgid "Camera view - Behind" +msgstr "摄像机视角 - 后面" + +msgid "Camera Angle - Left side" +msgstr "摄像机视角 - 左面" + +msgid "Camera Angle - Right side" +msgstr "摄像机视角 - 右面" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "放大" + +msgid "Zoom out" +msgstr "缩小" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "显示/隐藏 3Dconnexion设备的设置对话框" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "开启/关闭G-code窗口" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "开启/关闭垂直滑动条的单层模式" + +msgid "Switch between Prepare/Preview" +msgstr "准备/预览之间的切换" + +msgid "Collapse/Expand the sidebar" +msgstr "收起/展开 侧边栏" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "显示键盘快捷键列表" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24288,6 +24443,65 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "Tab" +#~ msgstr "标签" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "在右上角显示当前视口的 FPS。" + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "发布 3MF Wiki" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "发布 3MF 视频指南" + +#~ msgid "Toolbar" +#~ msgstr "工具栏" + +#~ msgid "Switch table page" +#~ msgstr "切换标签页" + +#~ msgid "Global shortcuts" +#~ msgstr "全局快捷键" + +#~ msgid "Middle mouse button" +#~ msgstr "鼠标中键" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "" +#~ "自动调整选定零件/所有零件的方向,\n" +#~ "有选定零件时调整选定零件的朝向,\n" +#~ "没有选择零件时调整当项目所有零件的朝向" + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "自动调整活动盘上的所有物体的方向。" + +#~ msgid "Any arrow" +#~ msgstr "任意箭头" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "SLA支撑点" + +#~ msgid "Plater" +#~ msgstr "准备" + +#~ msgid "Gizmo" +#~ msgstr "小工具" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "删除对象、零件、修改器" + +#~ msgid "Objects List" +#~ msgstr "对象列表" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code 写在输出文件的最顶部,位于任何其他内容之前。对于添加打印机固件从文件第一行读取的元数据(例如估计打印时间、耗材使用情况)很有用。支持 {print_time_sec} 和 {used_filament_length} 等占位符。" + +#~ msgid "Print time (seconds)" +#~ msgstr "打印耗时(秒)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "打开快捷操作盘" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index d50ec44d21..734d547ac9 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-18 15:50+0800\n" +"POT-Creation-Date: 2026-09-22 17:02+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" @@ -5886,12 +5886,15 @@ msgctxt "Camera View" msgid "Right" msgstr "右" -msgid "Add" -msgstr "新增" - msgid "Add plate" msgstr "新增列印板" +msgid "Split to objects" +msgstr "拆分為物件" + +msgid "Add" +msgstr "新增" + msgid "Auto orient all/selected objects" msgstr "自動旋轉所有/選取物件的方向" @@ -5904,9 +5907,6 @@ msgstr "全域整理" msgid "Arrange objects on selected plates" msgstr "在選定的列印板上排列物件" -msgid "Split to objects" -msgstr "拆分為物件" - msgid "Assembly View" msgstr "組裝視角" @@ -5962,6 +5962,9 @@ msgstr "輪廓線" msgid "Wireframe" msgstr "線框" +msgid "X-Ray" +msgstr "" + msgid "Realistic View" msgstr "擬真檢視" @@ -6502,9 +6505,6 @@ msgstr "在 3D 場景中顯示選定物件的輪廓" msgid "Preferences" msgstr "偏好設定" -msgid "Open speed dial..." -msgstr "" - # AI Translated msgctxt "Menu" msgid "Edit" @@ -6513,6 +6513,9 @@ msgstr "編輯" msgid "View" msgstr "視角" +msgid "Open Speed Dial" +msgstr "" + msgid "Preset Bundle" msgstr "設定檔組" @@ -8310,9 +8313,6 @@ msgstr "展開側邊欄" msgid "Collapse sidebar" msgstr "折疊側邊欄" -msgid "Tab" -msgstr "分頁" - #, c-format, boost-format msgid "Loading file: %s" msgstr "載入檔案:%s" @@ -9333,10 +9333,10 @@ msgstr "多臺裝置管理" msgid "With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices." msgstr "啟用時可以同時傳送到並管理多個機臺。" -msgid "Open the Speed Dial with the Space key" +msgid "Open the Speed Dial from the keyboard" msgstr "" -msgid "When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page." +msgid "When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page." msgstr "" msgid "Recent actions" @@ -9468,6 +9468,15 @@ msgstr "滑鼠右鍵拖曳" msgid "Set the action that dragging the right mouse button should perform." msgstr "設定拖曳滑鼠右鍵時應執行的動作。" +msgid "Keyboard" +msgstr "" + +msgid "Keyboard shortcuts" +msgstr "" + +msgid "Choose the key for each action." +msgstr "" + msgid "Clear my choice on..." msgstr "清除我的選擇於..." @@ -9578,11 +9587,39 @@ msgstr "" "限制視埠影格率以降低 GPU 負載與耗電量。\n" "設為 0 表示不限制影格率。" +msgid "Reuse the 3D scene while idle" +msgstr "" + +msgid "" +"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n" +"and reuses the previous frame's scene instead. Reduces GPU load.\n" +"Disable it if the viewport shows stale or missing contents.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "Skip unchanged frames" +msgstr "" + +msgid "" +"Skips drawing a frame altogether when it would be identical to the one already on screen.\n" +"Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n" +"Disable it if a hover highlight, tooltip or animation stops updating.\n" +"\n" +"Takes effect immediately." +msgstr "" + msgid "Show FPS overlay" msgstr "顯示 FPS 疊加層" -msgid "Displays current viewport FPS in the top-right corner." -msgstr "在右上角顯示目前視埠的 FPS。" +msgid "Displays rendering counts in the top-right corner of the viewport." +msgstr "" + +msgid "FPS: frames presented to the screen per second." +msgstr "" + +msgid "3D: frames per second that redrew the 3D scene." +msgstr "" # AI Translated msgid "G-code Preview" @@ -10042,13 +10079,8 @@ msgstr "發布 3MF..." msgid "Select which settings to be published in the 3MF file" msgstr "選擇要在 3MF 檔案中發布的設定" -# AI Translated -msgid "Publish 3MF Wiki" -msgstr "發布 3MF Wiki" - -# AI Translated -msgid "Publish 3MF Video Guide" -msgstr "發布 3MF 影片指南" +msgid "Video Guide" +msgstr "" # AI Translated msgid "Mixed filament - published as a whole when \"Enable\" above is selected" @@ -10250,6 +10282,13 @@ msgstr "" msgid "No wiki page for this action" msgstr "" +msgid "Show details" +msgstr "顯示詳細資訊" + +# AI Translated +msgid "Hide details" +msgstr "隱藏詳細資料" + #, c-format, boost-format msgid "\"%s\" is a Developer setting. Enable Developer mode to edit it?" msgstr "" @@ -12084,67 +12123,39 @@ msgstr "設定檔在之前的設定引導過程中已改變" msgid "Configuration package changed" msgstr "設定檔已改變" -msgid "Toolbar" -msgstr "工具欄" - -msgid "Objects list" -msgstr "物件清單" - -msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "從 STL/STEP/3MF/OBJ/AMF 檔案中匯入幾何模型" - -msgid "Paste from clipboard" -msgstr "從剪貼簿貼上" - -msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "顯示/隱藏 3Dconnexion 裝置的設定對話框" - -msgid "Switch table page" -msgstr "切換表單頁面" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Space" -msgstr "Space" - -msgid "Open speed dial" -msgstr "" - -msgid "Run a Speed Dial favourite (while the Speed Dial is open)" -msgstr "" - -msgid "Show keyboard shortcuts list" -msgstr "顯示鍵盤快速鍵清單" - -msgid "Global shortcuts" -msgstr "全域快速鍵" - msgid "Pan View" msgstr "移動視角" msgid "Rotate View" msgstr "旋轉視角" -msgid "Middle mouse button" -msgstr "滑鼠中鍵" +#, c-format, boost-format +msgid "Use %s or %s, or a key that does not type a character." +msgstr "" -msgid "Zoom View" -msgstr "縮放視角" +msgctxt "Keyboard Shortcut" +msgid "Key" +msgstr "" -msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." -msgstr "自動旋轉選取的物件或所有物件的方向。當有物件被選取時,僅自動旋轉選取的物件。無選取的物件時,會自動旋轉專案中的所有物件。" +msgid "Left mouse" +msgstr "" -msgid "Auto orients all objects on the active plate." -msgstr "自動旋轉目前板上所有物件的方向" +msgid "Available anywhere in the window, even while typing in a text field." +msgstr "" -msgid "Collapse/Expand the sidebar" -msgstr "摺疊/展開 側邊欄" +msgid "Run a speed dial favorite while the dial is open" +msgstr "" -msgid "Any arrow" -msgstr "任意方向鍵" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Tab" +msgstr "Tab" -msgid "Movement in camera space" -msgstr "沿相機視角移動物件" +msgid "Switch to the next main tab" +msgstr "" + +msgid "Available while the 3D view on the Prepare tab has focus." +msgstr "" msgid "Select a part" msgstr "選擇單一零件" @@ -12155,130 +12166,29 @@ msgstr "選擇多個物件" msgid "Select objects by rectangle" msgstr "框選多個零件" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Up" -msgstr "Arrow Up" - -# AI Translated -msgid "Move selection 10mm in positive Y direction" -msgstr "將選取物件沿 Y 軸正方向移動 10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Down" -msgstr "Arrow Down" - -# AI Translated -msgid "Move selection 10mm in negative Y direction" -msgstr "將選取物件沿 Y 軸負方向移動 10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Left" -msgstr "Arrow Left" - -# AI Translated -msgid "Move selection 10mm in negative X direction" -msgstr "將選取物件沿 X 軸負方向移動 10mm" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Arrow Right" -msgstr "Arrow Right" - -# AI Translated -msgid "Move selection 10mm in positive X direction" -msgstr "將選取物件沿 X 軸正方向移動 10mm" +msgid "Keyboard 1-9: set filament for object/part" +msgstr "按鍵 1~9:設定物件/零件的線材" msgid "Movement step set to 1mm" msgstr "沿 X、Y 軸以 1mm 為單位步進移動" -msgid "Keyboard 1-9: set filament for object/part" -msgstr "按鍵 1~9:設定物件/零件的線材" +msgid "Movement in camera space" +msgstr "沿相機視角移動物件" -msgid "Camera view - Default" -msgstr "攝影機視角 - 預設" +msgid "Middle mouse" +msgstr "" -msgid "Camera view - Top" -msgstr "攝影機視角 - 頂部" +msgid "Right mouse" +msgstr "" -msgid "Camera view - Bottom" -msgstr "攝影機視角 - 底部" +msgid "Zoom View" +msgstr "縮放視角" -msgid "Camera view - Front" -msgstr "攝影機視角 - 前面" +msgid "Painting" +msgstr "" -msgid "Camera view - Behind" -msgstr "攝影機視角 - 後面" - -msgid "Camera Angle - Left side" -msgstr "攝影機視角 - 左面" - -msgid "Camera Angle - Right side" -msgstr "攝影機視角 - 右面" - -msgid "Select all objects" -msgstr "選擇所有物件" - -msgid "Gizmo move" -msgstr "線框移動" - -msgid "Gizmo rotate" -msgstr "旋轉物件" - -msgid "Gizmo scale" -msgstr "線框縮放" - -msgid "Gizmo place face on bed" -msgstr "選擇底面" - -msgid "Gizmo cut" -msgstr "切割物件" - -msgid "Gizmo mesh boolean" -msgstr "線框網格布林運算" - -msgid "Gizmo FDM paint-on fuzzy skin" -msgstr "Gizmo FDM 塗刷絨毛表面效果" - -msgid "Gizmo SLA support points" -msgstr "SLA 支撐點" - -msgid "Gizmo FDM paint-on seam" -msgstr "FDM 塗裝接縫" - -msgid "Gizmo text emboss/engrave" -msgstr "浮雕/雕刻文字工具" - -msgid "Gizmo measure" -msgstr "測量" - -msgid "Gizmo assemble" -msgstr "組裝" - -msgid "Gizmo brim ears" -msgstr "擴邊耳工具" - -msgid "Zoom in" -msgstr "放大" - -msgid "Zoom out" -msgstr "縮小" - -msgid "Toggle printable for object/part" -msgstr "切換物件/零件的可列印屬性" - -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Tab" -msgstr "Tab" - -msgid "Switch between Prepare/Preview" -msgstr "在準備/預覽模式之中切換" - -msgid "Plater" -msgstr "準備" +msgid "Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting." +msgstr "" msgid "Move: press to snap by 1mm" msgstr "移動:以 1mm 為單位步進移動" @@ -12289,14 +12199,19 @@ msgstr "支撐/顏色繪製:調整筆刷半徑" msgid "Support/Color Painting: adjust section position" msgstr "支撐/色彩繪製:調整剖面位置" -msgid "Gizmo" -msgstr "浮雕" +msgid "Objects list" +msgstr "物件清單" + +msgid "Available while the object list has focus." +msgstr "" msgid "Set extruder number for the objects and parts" msgstr "設定物件、零件使用的擠出機編號" -msgid "Delete objects, parts, modifiers" -msgstr "刪除物件、零件、修改器" +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Space" +msgstr "Space" msgid "Select the object/part and press space to change the name" msgstr "選取物件、零件,按空格可修改名稱" @@ -12307,45 +12222,48 @@ msgstr "滑鼠點選" msgid "Select the object/part and mouse click to change the name" msgstr "選取物件或零件,雙擊可修改名稱" -msgid "Objects List" -msgstr "物件清單" - -msgid "Vertical slider - Move active thumb Up" -msgstr "垂直滑動條 - 向上移動一層" - -msgid "Vertical slider - Move active thumb Down" -msgstr "垂直滑動條 - 向下移動一層" - -msgid "Horizontal slider - Move active thumb Left" -msgstr "水平滑動條 - 向左移動一步" - -msgid "Horizontal slider - Move active thumb Right" -msgstr "水平滑動條 - 向右移動一步" - -msgid "On/Off one layer mode of the vertical slider" -msgstr "開啟/關閉垂直滑動條的單層模式" - -msgid "On/Off G-code window" -msgstr "開啟/關閉 G-code 視窗" +msgid "Available while the 3D view on the Preview tab has focus." +msgstr "" msgid "Move slider 5x faster" msgstr "5 倍速移動滑動條" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "Home" -msgstr "Home" +msgid "Scroll slider 5x faster" +msgstr "" -msgid "Horizontal slider - Move to start position" -msgstr "水平滑動條 - 移動到起始位置" +msgid "Not customizable" +msgstr "" -# AI Translated -msgctxt "Keyboard Shortcut" -msgid "End" -msgstr "End" +#, c-format, boost-format +msgid "%s is assigned to %s. Reassign it to %s?" +msgstr "" -msgid "Horizontal slider - Move to last position" -msgstr "水平滑動條 - 移動到最後位置" +#, c-format, boost-format +msgid "The default %s is assigned to %s. Reassign it to %s?" +msgstr "" + +msgid "Global shortcuts also apply while typing." +msgstr "" + +msgid "A key that types a character cannot be a global shortcut." +msgstr "" + +msgid "Esc cancels, Enter confirms." +msgstr "" + +#, c-format, boost-format +msgid "" +"Press the new shortcut for\n" +"\"%s\"" +msgstr "" + +#, c-format, boost-format +msgid "Already used as a step of %s." +msgstr "" + +#, c-format, boost-format +msgid "Already assigned to %s. Press OK to reassign it." +msgstr "" msgid "Release Note" msgstr "更新說明" @@ -17167,8 +17085,8 @@ msgstr "預熱階段" msgid "Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1." msgstr "插入多條預熱指令(例如:M104.1)。此功能僅適用於 Prusa XL。其他列印裝置請將其設為 1。" -msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." -msgstr "G-code 寫在輸出檔案的最頂部,位於任何其他內容之前。對於新增列印裝置韌體從檔案第一行讀取的中繼資料(例如估計列印時間、線材使用情況)很有用。支援 {print_time_sec} 和 {used_filament_length} 等預留位置。" +msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_total_sec}, {print_time_day}, {print_time_hour}, {print_time_minute}, {print_time_sec} and {used_filament_length}." +msgstr "" msgid "Start G-code" msgstr "起始 G-code" @@ -18691,12 +18609,36 @@ msgstr "使用的線材" msgid "Total length of filament used in the print." msgstr "列印所使用的線材總長度" -msgid "Print time (seconds)" -msgstr "列印時間(秒)" +msgid "Print time (total seconds)" +msgstr "" msgid "Total estimated print time in seconds. Replaced with actual value during post-processing." msgstr "預估列印總時間(秒)。後處理時將以實際值取代" +msgid "Print time (days component)" +msgstr "" + +msgid "Estimated print time day component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (hours component)" +msgstr "" + +msgid "Estimated print time hour component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (minutes component)" +msgstr "" + +msgid "Estimated print time minute component (normal mode). Replaced with actual value during post-processing." +msgstr "" + +msgid "Print time (seconds component)" +msgstr "" + +msgid "Estimated print time second component (normal mode). Replaced with actual value during post-processing." +msgstr "" + msgid "Filament length (meters)" msgstr "線材長度(公尺)" @@ -20532,6 +20474,9 @@ msgstr "未偵測到有效的工作階段。要繼續登入 3DPrinterOS 嗎?" msgid "Success!" msgstr "成功!" +msgid "Generate API Key" +msgstr "" + msgid "Are you sure to log out?" msgstr "確認要登出嗎?" @@ -21531,13 +21476,6 @@ msgstr "Bambu 網路外掛程式用於雲端功能、印表機探索和遠端列 msgid "Error: %s" msgstr "錯誤:%s" -msgid "Show details" -msgstr "顯示詳細資訊" - -# AI Translated -msgid "Hide details" -msgstr "隱藏詳細資料" - msgid "Version to install:" msgstr "將安裝的版本:" @@ -24168,6 +24106,12 @@ msgstr "" msgid "No binding for that field" msgstr "" +msgid "Enter a number" +msgstr "" + +msgid "Not a number" +msgstr "" + msgid "Primitive" msgstr "" @@ -24180,6 +24124,220 @@ msgstr "" msgid "Clear All" msgstr "" +msgctxt "Keyboard Shortcut" +msgid "Ins" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Home" +msgstr "Home" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "End" +msgstr "End" + +msgctxt "Keyboard Shortcut" +msgid "PgUp" +msgstr "" + +msgctxt "Keyboard Shortcut" +msgid "PgDn" +msgstr "" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Left" +msgstr "Arrow Left" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Right" +msgstr "Arrow Right" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Up" +msgstr "Arrow Up" + +# AI Translated +msgctxt "Keyboard Shortcut" +msgid "Arrow Down" +msgstr "Arrow Down" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "從 STL/STEP/3MF/OBJ/AMF 檔案中匯入幾何模型" + +msgid "Select all objects" +msgstr "選擇所有物件" + +msgid "Paste from clipboard" +msgstr "從剪貼簿貼上" + +msgid "Toggle printable for object/part" +msgstr "切換物件/零件的可列印屬性" + +# AI Translated +msgid "Move selection 10mm in negative X direction" +msgstr "將選取物件沿 X 軸負方向移動 10mm" + +# AI Translated +msgid "Move selection 10mm in positive X direction" +msgstr "將選取物件沿 X 軸正方向移動 10mm" + +# AI Translated +msgid "Move selection 10mm in positive Y direction" +msgstr "將選取物件沿 Y 軸正方向移動 10mm" + +# AI Translated +msgid "Move selection 10mm in negative Y direction" +msgstr "將選取物件沿 Y 軸負方向移動 10mm" + +msgid "Rotate selection 45 degrees counterclockwise" +msgstr "" + +msgid "Rotate selection 45 degrees clockwise" +msgstr "" + +msgid "Gizmo move" +msgstr "線框移動" + +msgid "Gizmo rotate" +msgstr "旋轉物件" + +msgid "Gizmo scale" +msgstr "線框縮放" + +msgid "Gizmo place face on bed" +msgstr "選擇底面" + +msgid "Gizmo cut" +msgstr "切割物件" + +msgid "Gizmo mesh boolean" +msgstr "線框網格布林運算" + +msgid "Gizmo FDM paint-on supports" +msgstr "" + +msgid "Gizmo FDM paint-on seam" +msgstr "FDM 塗裝接縫" + +msgid "Gizmo FDM paint-on fuzzy skin" +msgstr "Gizmo FDM 塗刷絨毛表面效果" + +msgid "Gizmo multi-material painting" +msgstr "" + +msgid "Gizmo text emboss/engrave" +msgstr "浮雕/雕刻文字工具" + +msgid "Gizmo measure" +msgstr "測量" + +msgid "Gizmo assemble" +msgstr "組裝" + +msgid "Gizmo brim ears" +msgstr "擴邊耳工具" + +msgid "Vertical slider - Move active thumb Up" +msgstr "垂直滑動條 - 向上移動一層" + +msgid "Vertical slider - Move active thumb Down" +msgstr "垂直滑動條 - 向下移動一層" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "水平滑動條 - 向左移動一步" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "水平滑動條 - 向右移動一步" + +msgid "Horizontal slider - Move to start position" +msgstr "水平滑動條 - 移動到起始位置" + +msgid "Horizontal slider - Move to last position" +msgstr "水平滑動條 - 移動到最後位置" + +msgid "Camera view - Default" +msgstr "攝影機視角 - 預設" + +msgid "Camera view - Top" +msgstr "攝影機視角 - 頂部" + +msgid "Camera view - Bottom" +msgstr "攝影機視角 - 底部" + +msgid "Camera view - Front" +msgstr "攝影機視角 - 前面" + +msgid "Camera view - Behind" +msgstr "攝影機視角 - 後面" + +msgid "Camera Angle - Left side" +msgstr "攝影機視角 - 左面" + +msgid "Camera Angle - Right side" +msgstr "攝影機視角 - 右面" + +msgid "Camera view - Current plate" +msgstr "" + +msgid "Zoom in" +msgstr "放大" + +msgid "Zoom out" +msgstr "縮小" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "顯示/隱藏 3Dconnexion 裝置的設定對話框" + +msgid "Show/Hide wireframe" +msgstr "" + +msgid "On/Off G-code window" +msgstr "開啟/關閉 G-code 視窗" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "開啟/關閉垂直滑動條的單層模式" + +msgid "Switch between Prepare/Preview" +msgstr "在準備/預覽模式之中切換" + +msgid "Collapse/Expand the sidebar" +msgstr "摺疊/展開 側邊欄" + +msgid "Open the speed dial" +msgstr "" + +msgid "Reload the device page" +msgstr "" + +msgid "Show keyboard shortcuts list" +msgstr "顯示鍵盤快速鍵清單" + +msgid "Slicing and printing" +msgstr "" + +msgid "Editing" +msgstr "" + +msgid "Placement" +msgstr "" + +msgid "Gizmos" +msgstr "" + +msgid "Sliders" +msgstr "" + +msgid "Painting tools" +msgstr "" + +msgid "Application" +msgstr "" + #: resources/data/hints.ini: [hint:Precise wall] msgid "" "Precise wall\n" @@ -24501,6 +24659,62 @@ msgstr "" "避免翹曲\n" "您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度可以降低翹曲的機率。" +#~ msgid "Tab" +#~ msgstr "分頁" + +#~ msgid "Displays current viewport FPS in the top-right corner." +#~ msgstr "在右上角顯示目前視埠的 FPS。" + +# AI Translated +#~ msgid "Publish 3MF Wiki" +#~ msgstr "發布 3MF Wiki" + +# AI Translated +#~ msgid "Publish 3MF Video Guide" +#~ msgstr "發布 3MF 影片指南" + +#~ msgid "Toolbar" +#~ msgstr "工具欄" + +#~ msgid "Switch table page" +#~ msgstr "切換表單頁面" + +#~ msgid "Global shortcuts" +#~ msgstr "全域快速鍵" + +#~ msgid "Middle mouse button" +#~ msgstr "滑鼠中鍵" + +#~ msgid "Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project." +#~ msgstr "自動旋轉選取的物件或所有物件的方向。當有物件被選取時,僅自動旋轉選取的物件。無選取的物件時,會自動旋轉專案中的所有物件。" + +#~ msgid "Auto orients all objects on the active plate." +#~ msgstr "自動旋轉目前板上所有物件的方向" + +#~ msgid "Any arrow" +#~ msgstr "任意方向鍵" + +#~ msgid "Gizmo SLA support points" +#~ msgstr "SLA 支撐點" + +#~ msgid "Plater" +#~ msgstr "準備" + +#~ msgid "Gizmo" +#~ msgstr "浮雕" + +#~ msgid "Delete objects, parts, modifiers" +#~ msgstr "刪除物件、零件、修改器" + +#~ msgid "Objects List" +#~ msgstr "物件清單" + +#~ msgid "G-code written at the very top of the output file, before any other content. Useful for adding metadata that printer firmware reads from the first lines of the file (e.g. estimated print time, filament usage). Supports placeholders like {print_time_sec} and {used_filament_length}." +#~ msgstr "G-code 寫在輸出檔案的最頂部,位於任何其他內容之前。對於新增列印裝置韌體從檔案第一行讀取的中繼資料(例如估計列印時間、線材使用情況)很有用。支援 {print_time_sec} 和 {used_filament_length} 等預留位置。" + +#~ msgid "Print time (seconds)" +#~ msgstr "列印時間(秒)" + # AI Translated #~ msgid "Open actions speed dial" #~ msgstr "開啟操作快捷選單" diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 2ba6a5aa62..b5d5b420bd 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -1,6 +1,6 @@ { "name": "Creality", - "version": "02.03.02.82", + "version": "02.03.02.84", "force_update": "0", "description": "Creality configurations", "machine_model_list": [ diff --git a/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json index a7c58188b0..4005f5c8b4 100644 --- a/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PETG @SPARKX i7-all.json @@ -55,7 +55,7 @@ "0" ], "filament_max_volumetric_speed": [ - "12" + "8" ], "filament_retract_before_wipe": [ "100" diff --git a/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json b/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json index bfa143866e..3a8af3548a 100644 --- a/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json +++ b/resources/profiles/Creality/filament/Generic PLA @SPARKX i7-all.json @@ -43,19 +43,19 @@ "1.75" ], "filament_flow_ratio": [ - "0.98" + "0.95" ], "filament_is_support": [ "0" ], "filament_max_volumetric_speed": [ - "16" + "14" ], "filament_minimal_purge_on_wipe_tower": [ "15" ], "filament_retract_before_wipe": [ - "nil" + "100%" ], "filament_retract_restart_extra": [ "nil" @@ -67,7 +67,7 @@ "nil" ], "filament_retraction_minimum_travel": [ - "nil" + "2" ], "filament_retraction_speed": [ "nil" @@ -106,7 +106,10 @@ "0" ], "slow_down_layer_time": [ - "8" + "14" + ], + "slow_down_min_speed": [ + "20" ], "temperature_vitrification": [ "110" @@ -118,7 +121,7 @@ "55" ], "filament_start_gcode": [ - "; Filament gcode\n" + ";filament start gcode\n" ], "filament_end_gcode": [ "; filament end gcode \n" @@ -153,7 +156,7 @@ "filament_unloading_speed_start": "100", "material_flow_dependent_temperature": "0", "material_flow_temp_graph": "[[0.2,210],[0.6,220]]", - "pressure_advance": "0.12", + "pressure_advance": "0.032", "support_material_interface_fan_speed": "-1", "compatible_printers": [ "Creality SPARKX i7 0.2 nozzle", diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json index 5829268d2e..ce5d13c8d9 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V4 0.4 nozzle.json @@ -54,7 +54,7 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "0", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM104 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 X20 Y-1 F30000\nG1 Z0.3 F1200\nG1 X100 E10 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X120 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X125 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG92 E0\nG1 Z1 F1200", + "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM109 S[nozzle_temperature_initial_layer]\nM204 S2000\nG1 Z3 F600\nM83\nG1 X20 Y-1 F30000\nG1 Z0.3 F1200\nG1 X100 E10 F{filament_max_volumetric_speed[initial_extruder]/0.3*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X120 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X125 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG92 E0\nG1 Z1 F1200", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json index 765e3b3125..11edd6f072 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.4 nozzle).json @@ -123,7 +123,7 @@ "default_filament_profile": [ "Generic PLA HF @Creality" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json index ac6c71187b..1c79748908 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.6 nozzle).json @@ -123,7 +123,7 @@ "default_filament_profile": [ "Generic PLA HF @Creality" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json index e2df1ba34c..64744dd2d5 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json @@ -123,7 +123,7 @@ "default_filament_profile": [ "Generic PLA HF @Creality" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json index 291affba77..037c48e64a 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.4 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Generic PLA HF @Creality" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json index 523abd4de4..097777db73 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.6 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Generic PLA HF @Creality" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json index c67622c90b..e2ae32cae4 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Generic PLA HF @Creality" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json index 6d382f4c09..2e96b092ab 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 Max_CFS-C 0.4 nozzle.json @@ -56,7 +56,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json index a8aaadeadb..71214d34a8 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json @@ -123,7 +123,7 @@ "default_filament_profile": [ "Generic PLA @Creality K1-all" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails_format": "PNG", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json index 59435515f5..e1212431e2 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.6 nozzle.json @@ -57,7 +57,7 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json index 0db81bbdec..e17cfbaee4 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE 0.8 nozzle.json @@ -57,7 +57,7 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json index 8fda2c9f43..aff5f6df86 100644 --- a/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 SE_CFS-C 0.4 nozzle.json @@ -55,7 +55,7 @@ "machine_min_travel_rate": "0,0", "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json index 9f355f391a..00e71f72c3 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Generic PLA @Creality K1-all" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json index 44c5147f58..755128ca67 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Generic PLA @Creality K1-all" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json index 9a271da17f..5aad49cdc1 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json @@ -124,7 +124,7 @@ "default_filament_profile": [ "Generic PLA @Creality K1-all" ], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", "scan_first_layer": "0", "thumbnails": [ diff --git a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json index a49967f597..3c21fddd9e 100644 --- a/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C_CFS-C 0.4 nozzle.json @@ -56,7 +56,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json index 375e0bc71b..c19ca981f8 100644 --- a/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1_CFS-C 0.4 nozzle.json @@ -57,7 +57,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "1", "machine_ptc_exist": "1", - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM104 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nM109 S[nozzle_temperature_initial_layer]\nG1 Z3 F600\nM83\nG92 E0\nG1 Z1 F600", "machine_unload_filament_time": "0", "manual_filament_change": "0", "nozzle_hrc": "0", diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json index 6a499942bf..146628aded 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.2 nozzle.json @@ -59,7 +59,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "0", "machine_ptc_exist": "0", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM104 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", + "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM109 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", "machine_tool_change_time": "0", "machine_unload_filament_time": "30", "manual_filament_change": "0", diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json index 68dedf568b..bf30a2ce49 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.4 nozzle.json @@ -59,7 +59,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "0", "machine_ptc_exist": "0", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM104 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", + "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM109 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", "machine_tool_change_time": "0", "machine_unload_filament_time": "30", "manual_filament_change": "0", diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json index f13761fa81..e327895da7 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.6 nozzle.json @@ -59,7 +59,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "0", "machine_ptc_exist": "0", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM104 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", + "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM109 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", "machine_tool_change_time": "0", "machine_unload_filament_time": "30", "manual_filament_change": "0", diff --git a/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json index 053f23fd77..a3fad94bab 100644 --- a/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality SPARKX i7 0.8 nozzle.json @@ -59,7 +59,7 @@ "machine_pause_gcode": "PAUSE", "machine_platform_motion_enable": "0", "machine_ptc_exist": "0", - "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM104 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", + "machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nM83 \nM8200 P S[initial_no_support_extruder]\nM220 S100\n\nSET_VELOCITY_LIMIT ACCEL=5000 ACCEL_TO_DECEL=5000\nG0 X267 F18000 \nG0 X278 F2400\nM109 S[nozzle_temperature_initial_layer]\nM106 S0\nT[initial_no_support_extruder]\n\nM8200 O\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y0 F12000\nG1 X150 F30000\nG1 Z0.2 F600\nG1 X120 Y0 E15 F{filament_max_volumetric_speed[initial_extruder]/0.3*60*0.1}\nG1 X115 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X110 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X105 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG1 X100 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)*60}\nG1 X95 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4*60}\nG91\nG1 X-1 Z-0.3\nG1 X-4\nG92 E0", "machine_tool_change_time": "0", "machine_unload_filament_time": "30", "manual_filament_change": "0", diff --git a/resources/profiles/Cubicon.json b/resources/profiles/Cubicon.json index f70517a0b1..57f9da37d6 100644 --- a/resources/profiles/Cubicon.json +++ b/resources/profiles/Cubicon.json @@ -1,6 +1,6 @@ { "name": "Cubicon", - "version": "02.04.00.05", + "version": "02.04.00.06", "force_update": "0", "description": "Cubicon configurations", "machine_model_list": [ diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS @base.json b/resources/profiles/Cubicon/filament/Cubicon ABS @base.json index 31efe73b11..42e6db95e7 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS @base.json @@ -15,7 +15,7 @@ "115" ], "hot_plate_temp_initial_layer": [ - "115" + "120" ], "close_fan_the_first_x_layers": [ "3" @@ -24,13 +24,13 @@ "30" ], "filament_density": [ - "1.24" + "1.04" ], "filament_flow_ratio": [ "0.99" ], "filament_max_volumetric_speed": [ - "23" + "14" ], "nozzle_temperature_initial_layer": [ "240" @@ -39,19 +39,19 @@ "80" ], "fan_min_speed": [ - "70" + "15" ], "slow_down_min_speed": [ - "30" + "20" ], "slow_down_layer_time": [ - "3" + "10" ], "nozzle_temperature": [ "245" ], "temperature_vitrification": [ - "78" + "105" ], "nozzle_temperature_range_low": [ "220" @@ -61,5 +61,14 @@ ], "additional_cooling_fan_speed": [ "0" + ], + "activate_air_filtration": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "255" ] } diff --git a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json index 5c64ed0fa5..52b06dbb80 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABS-A100 @base.json @@ -12,10 +12,10 @@ "Cubicon" ], "hot_plate_temp": [ - "100" + "105" ], "hot_plate_temp_initial_layer": [ - "100" + "115" ], "close_fan_the_first_x_layers": [ "3" @@ -24,13 +24,13 @@ "30" ], "filament_density": [ - "1.24" + "1.04" ], "filament_flow_ratio": [ - "0.99" + "1.04" ], "filament_max_volumetric_speed": [ - "23" + "8" ], "nozzle_temperature_initial_layer": [ "225" @@ -39,19 +39,19 @@ "80" ], "fan_min_speed": [ - "70" + "15" ], "slow_down_min_speed": [ - "30" + "20" ], "slow_down_layer_time": [ - "3" + "10" ], "nozzle_temperature": [ "230" ], "temperature_vitrification": [ - "78" + "105" ], "nozzle_temperature_range_low": [ "220" @@ -61,5 +61,32 @@ ], "additional_cooling_fan_speed": [ "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.04" + ], + "filament_retraction_length": [ + "1.2" + ], + "filament_z_hop": [ + "0" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_deretraction_speed": [ + "25" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_retract_before_wipe": [ + "70%" ] } diff --git a/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json b/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json index 46a8f2d48c..584ce663ad 100644 --- a/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon ABSk @base.json @@ -15,7 +15,7 @@ "115" ], "hot_plate_temp_initial_layer": [ - "115" + "120" ], "close_fan_the_first_x_layers": [ "3" @@ -24,13 +24,13 @@ "30" ], "filament_density": [ - "1.24" + "1.04" ], "filament_flow_ratio": [ "0.99" ], "filament_max_volumetric_speed": [ - "23" + "14" ], "nozzle_temperature_initial_layer": [ "240" @@ -39,19 +39,19 @@ "80" ], "fan_min_speed": [ - "70" + "15" ], "slow_down_min_speed": [ - "30" + "20" ], "slow_down_layer_time": [ - "3" + "10" ], "nozzle_temperature": [ "240" ], "temperature_vitrification": [ - "85" + "105" ], "nozzle_temperature_range_low": [ "220" diff --git a/resources/profiles/Cubicon/filament/Cubicon PC @base.json b/resources/profiles/Cubicon/filament/Cubicon PC @base.json index 001434a2b1..e5f12e1503 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PC @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PC @base.json @@ -10,5 +10,77 @@ ], "filament_vendor": [ "Cubicon" + ], + "fan_max_speed": [ + "25" + ], + "fan_min_speed": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.01" + ], + "close_fan_the_first_x_layers": [ + "5" + ], + "overhang_fan_threshold": [ + "50%" + ], + "overhang_fan_speed": [ + "25" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "filament_flow_ratio": [ + "0.94" + ], + "nozzle_temperature_initial_layer": [ + "245" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_z_hop": [ + "0" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_deretraction_speed": [ + "25" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_retract_before_wipe": [ + "70%" + ], + "activate_air_filtration": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "0" + ], + "complete_print_exhaust_fan_speed": [ + "255" ] } diff --git a/resources/profiles/Cubicon/filament/Cubicon PETG @base.json b/resources/profiles/Cubicon/filament/Cubicon PETG @base.json index 61fc5c647a..a1e38584a7 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PETG @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PETG @base.json @@ -15,7 +15,7 @@ "80" ], "hot_plate_temp_initial_layer": [ - "80" + "85" ], "close_fan_the_first_x_layers": [ "3" @@ -54,12 +54,45 @@ "70" ], "nozzle_temperature_range_low": [ - "230" + "220" ], "nozzle_temperature_range_high": [ "250" ], "additional_cooling_fan_speed": [ "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.08" + ], + "filament_retraction_length": [ + "2.0" + ], + "filament_z_hop": [ + "0" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_deretraction_speed": [ + "25" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_retract_before_wipe": [ + "70%" + ], + "activate_air_filtration": [ + "1" + ], + "complete_print_exhaust_fan_speed": [ + "255" ] } diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA @base.json b/resources/profiles/Cubicon/filament/Cubicon PLA @base.json index 53df18afc5..dae8e34bee 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA @base.json @@ -53,5 +53,38 @@ ], "additional_cooling_fan_speed": [ "80" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "filament_retraction_length": [ + "2.0" + ], + "filament_z_hop": [ + "0" + ], + "filament_retraction_speed": [ + "40" + ], + "filament_deretraction_speed": [ + "25" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "2" + ], + "filament_retract_before_wipe": [ + "70%" + ], + "activate_air_filtration": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "255" + ], + "complete_print_exhaust_fan_speed": [ + "255" ] } diff --git a/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json b/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json index 5e7c8dc10b..635f6483d1 100644 --- a/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json +++ b/resources/profiles/Cubicon/filament/Cubicon PLA+ @base.json @@ -18,5 +18,14 @@ ], "nozzle_temperature_range_high": [ "220" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.025" ] } diff --git a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json index 398f4e3457..616fa60297 100644 --- a/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json +++ b/resources/profiles/Cubicon/machine/Cubicon xCeler-Plus 0.4 nozzle.json @@ -73,12 +73,12 @@ "20000" ], "machine_max_acceleration_z": [ - "250", - "500" + "50", + "100" ], "machine_max_speed_z": [ - "25", - "12" + "5", + "10" ], "machine_max_acceleration_retracting": [ "5000", diff --git a/resources/profiles/Cubicon/process/cubicon common @base.json b/resources/profiles/Cubicon/process/cubicon common @base.json index 8de7c25078..a269d19529 100644 --- a/resources/profiles/Cubicon/process/cubicon common @base.json +++ b/resources/profiles/Cubicon/process/cubicon common @base.json @@ -5,7 +5,8 @@ "instantiation": "false", "compatible_printers": [ "Cubicon xCeler-I 0.4 nozzle", - "Cubicon xCeler-Plus 0.4 nozzle" + "Cubicon xCeler-Plus 0.4 nozzle", + "Cubicon xCeler-Mini 0.4 nozzle" ], "print_settings_id": "cubicon common @base", "accel_to_decel_enable": "1", @@ -14,26 +15,24 @@ "bridge_flow": "0.9", "internal_bridge_flow": "0.9", "brim_type": "no_brim", - "detect_overhang_wall": "1", + "detect_overhang_wall": "0", "resolution": "0.012", "elefant_foot_compensation": "0.15", - "percise_outer_wall": "1", - "percise_z_height": "0.2", "enable_overhang_speed": "1", - "enable_prime_tower": "1", + "enable_prime_tower": "0", "enable_support": "0", "exclude_object": "0", "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[initial_tool]}_{printer_model}_{print_time}.gcode", "gap_infill_speed": "250", - "infill_combination": "1", + "infill_combination": "0", "infill_direction": "45", "infill_wall_overlap": "15", "infill_anchor": "400%", "infill_anchor_max": "20", "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.25", - "initial_layer_speed": "60", - "initial_layer_infill_speed": "60", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "100", "initial_layer_travel_speed": "500", "slow_down_layers": "1", "only_one_wall_top": "1", @@ -47,9 +46,9 @@ "outer_wall_speed": "200", "print_sequence": "by layer", "raft_layers": "0", - "reduce_crossing_wall": "0", + "reduce_crossing_wall": "1", "reduce_infill_retraction": "1", - "seam_position": "back", + "seam_position": "aligned", "seam_gap": "10%", "enable_arc_fitting": "0", "staggered_inner_seams": "1", @@ -57,7 +56,7 @@ "skirt_distance": "2.5", "skirt_height": "1", "skirt_speed": "50", - "skirt_start_angle": "-45", + "skirt_start_angle": "-135", "sparse_infill_density": "15", "sparse_infill_speed": "270", "sparse_infill_pattern": "grid", @@ -84,7 +83,7 @@ "support_threshold_angle": "15", "wall_loops": "2", "thick_bridges": "0", - "extra_perimeters_on_overhangs": "1", + "extra_perimeters_on_overhangs": "0", "top_shell_layers": "5", "top_shell_thickness": "1", "slow_down_curled_perimeters": "0", @@ -93,18 +92,18 @@ "travel_jerk": "12", "infill_jerk": "12", "initial_layer_jerk": "9", - "inner_wall_jerk": "7", - "outer_wall_jerk": "7", - "default_acceleration": "13000", - "travel_acceleration": "13000", - "outer_wall_acceleration": "5000", - "inner_wall_acceleration": "5000", - "initial_layer_acceleration": "1000", + "inner_wall_jerk": "3.5", + "outer_wall_jerk": "3", + "default_acceleration": "10000", + "travel_acceleration": "10000", + "outer_wall_acceleration": "2000", + "inner_wall_acceleration": "6000", + "initial_layer_acceleration": "500", "top_surface_acceleration": "2000", "raft_first_layer_density": "90", "raft_first_layer_expansion": "2", "precise_outer_wall": "1", - "precise_z_height": "0", + "precise_z_height": "1", "slowdown_for_curled_perimeters": "0", "bridge_speed": "50", "internal_bridge_speed": "150%", @@ -112,5 +111,7 @@ "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", "overhang_4_4_speed": "10", - "independent_support_layer_height": "1" + "independent_support_layer_height": "1", + "solid_infill_direction": "90", + "max_travel_detour_distance": "80%" } diff --git a/resources/profiles/Cubicon/process/fdm_process_common.json b/resources/profiles/Cubicon/process/fdm_process_common.json index d7da41458a..7308a806fa 100644 --- a/resources/profiles/Cubicon/process/fdm_process_common.json +++ b/resources/profiles/Cubicon/process/fdm_process_common.json @@ -62,7 +62,7 @@ "top_surface_line_width": "0.4", "top_surface_speed": "30", "travel_speed": "400", - "enable_prime_tower": "1", + "enable_prime_tower": "0", "prime_tower_width": "60", "xy_hole_compensation": "0", "xy_contour_compensation": "0" diff --git a/resources/profiles/Cubicon/process/process template @base.json b/resources/profiles/Cubicon/process/process template @base.json index 073bf4ea23..1b9b4d2288 100644 --- a/resources/profiles/Cubicon/process/process template @base.json +++ b/resources/profiles/Cubicon/process/process template @base.json @@ -42,7 +42,7 @@ "enable_arc_fitting": "1", "enable_extra_bridge_layer": "disabled", "enable_overhang_speed": "1", - "enable_prime_tower": "1", + "enable_prime_tower": "0", "enable_support": "0", "enforce_support_layers": "0", "ensure_vertical_shell_thickness": "ensure_all", diff --git a/resources/profiles/Eryone.json b/resources/profiles/Eryone.json index 1ee1f88ed8..ea9ce20a44 100644 --- a/resources/profiles/Eryone.json +++ b/resources/profiles/Eryone.json @@ -1,6 +1,6 @@ { "name": "Eryone", - "version": "02.04.00.05", + "version": "02.04.00.06", "force_update": "0", "description": "Eryone configurations", "machine_model_list": [ @@ -432,10 +432,18 @@ "name": "Eryone ABS", "sub_path": "filament/Eryone ABS.json" }, + { + "name": "Eryone ABS+-HS @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone ABS+-HS @Thinker X400 0.4 nozzle.json" + }, { "name": "Eryone ABS-CF", "sub_path": "filament/Eryone ABS-CF.json" }, + { + "name": "Eryone ABS-GF @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone ABS-GF @Thinker X400 0.4 nozzle.json" + }, { "name": "Eryone ASA", "sub_path": "filament/Eryone ASA.json" @@ -444,6 +452,10 @@ "name": "Eryone ASA-CF", "sub_path": "filament/Eryone ASA-CF.json" }, + { + "name": "Eryone ASA-HS @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone ASA-HS @Thinker X400 0.4 nozzle.json" + }, { "name": "Eryone PA", "sub_path": "filament/Eryone PA.json" @@ -460,18 +472,50 @@ "name": "Eryone PETG", "sub_path": "filament/Eryone PETG.json" }, + { + "name": "Eryone PETG HS @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PETG HS @Thinker X400 0.4 nozzle.json" + }, { "name": "Eryone PETG-CF", "sub_path": "filament/Eryone PETG-CF.json" }, + { + "name": "Eryone PETG-GF @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PETG-GF @Thinker X400 0.4 nozzle.json" + }, + { + "name": "Eryone PETG-Lite @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PETG-Lite @Thinker X400 0.4 nozzle.json" + }, + { + "name": "Eryone PETG-Matte @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PETG-Matte @Thinker X400 0.4 nozzle.json" + }, + { + "name": "Eryone PETG-Translucent @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PETG-Translucent @Thinker X400 0.4 nozzle.json" + }, { "name": "Eryone PLA", "sub_path": "filament/Eryone PLA.json" }, + { + "name": "Eryone PLA+HS @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PLA+HS @Thinker X400 0.4 nozzle.json" + }, { "name": "Eryone PLA-CF", "sub_path": "filament/Eryone PLA-CF.json" }, + { + "name": "Eryone PLA-Matte @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PLA-Matte @Thinker X400 0.4 nozzle.json" + }, + { + "name": "Eryone PLA-Matte HS @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone PLA-Matte HS @Thinker X400 0.4 nozzle.json" + }, { "name": "Eryone PP", "sub_path": "filament/Eryone PP.json" @@ -488,6 +532,14 @@ "name": "Eryone TPU", "sub_path": "filament/Eryone TPU.json" }, + { + "name": "Eryone petg-Galaxy @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone petg-Galaxy @Thinker X400 0.4 nozzle.json" + }, + { + "name": "Eryone pla-Ultra Silk @Thinker X400 0.4 nozzle", + "sub_path": "filament/Eryone pla-Ultra Silk @Thinker X400 0.4 nozzle.json" + }, { "name": "fdm_filament_pla", "sub_path": "filament/fdm_filament_pla.json" diff --git a/resources/profiles/Eryone/filament/Eryone ABS+-HS @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone ABS+-HS @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..fb0f39861c --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone ABS+-HS @Thinker X400 0.4 nozzle.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "name": "Eryone ABS+-HS @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "aUH1I90BFXa0C84r", + "filament_id": "OFRgjTRp", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone ABS+-HS @Thinker X400 0.4 nozzle" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "0" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "ABS" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "255" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone ABS-GF @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone ABS-GF @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..f3ff63ea2d --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone ABS-GF @Thinker X400 0.4 nozzle.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "name": "Eryone ABS-GF @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "WnsZC7HYi5Z1MOcn", + "filament_id": "OFenMm2Y", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone ABS-GF @Thinker X400 0.4 nozzle" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "0" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "ABS" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_initial_layer": [ + "265" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone ASA-HS @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone ASA-HS @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..40b5d6da1b --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone ASA-HS @Thinker X400 0.4 nozzle.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "name": "Eryone ASA-HS @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "xw8zqUsFb2WVaSo1", + "filament_id": "OFIzY5sP", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone ASA-HS @Thinker X400 0.4 nozzle" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "0" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "ASA" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PETG HS @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PETG HS @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..d0716a6d94 --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PETG HS @Thinker X400 0.4 nozzle.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "name": "Eryone PETG HS @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "GtPiiNgHAnxrR9Tj", + "filament_id": "OFtqfvcE", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PETG HS @Thinker X400 0.4 nozzle" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "PETG" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PETG-CF.json b/resources/profiles/Eryone/filament/Eryone PETG-CF.json index 3dc02ddf00..c0823b73fe 100644 --- a/resources/profiles/Eryone/filament/Eryone PETG-CF.json +++ b/resources/profiles/Eryone/filament/Eryone PETG-CF.json @@ -40,7 +40,7 @@ "14" ], "filament_settings_id": [ - "Eryone PETG" + "Eryone PETG-CF" ], "filament_type": [ "PETG-CF" diff --git a/resources/profiles/Eryone/filament/Eryone PETG-GF @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PETG-GF @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..0bdb2eacd3 --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PETG-GF @Thinker X400 0.4 nozzle.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "name": "Eryone PETG-GF @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "S1FBfw93PzYJMhCa", + "filament_id": "OFbzOkXX", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PETG-GF @Thinker X400 0.4 nozzle" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "13" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "PETG" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PETG-Lite @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PETG-Lite @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..d23aeae081 --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PETG-Lite @Thinker X400 0.4 nozzle.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "name": "Eryone PETG-Lite @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "CWHhUswq3j9XHAuC", + "filament_id": "OFyWb8AA", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PETG-Lite @Thinker X400 0.4 nozzle" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.9796" + ], + "filament_max_volumetric_speed": [ + "13" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "PETG" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "245" + ], + "nozzle_temperature_initial_layer": [ + "245" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PETG-Matte @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PETG-Matte @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..5d7793b549 --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PETG-Matte @Thinker X400 0.4 nozzle.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "name": "Eryone PETG-Matte @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "pzceBG5k2u3X9TLO", + "filament_id": "OFSvr7Aj", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PETG-Matte @Thinker X400 0.4 nozzle" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "1" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "PETG" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PETG-Translucent @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PETG-Translucent @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..f195328495 --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PETG-Translucent @Thinker X400 0.4 nozzle.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "name": "Eryone PETG-Translucent @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "jN64L5SUnQB5dG1x", + "filament_id": "OFY2E8cd", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PETG-Translucent @Thinker X400 0.4 nozzle" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "24" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "PETG" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "215" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PLA+HS @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PLA+HS @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..13708aa4c4 --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PLA+HS @Thinker X400 0.4 nozzle.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "name": "Eryone PLA+HS @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "AfUEns6VhCXsj9Ft", + "filament_id": "OFeRoHy3", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PLA+HS @Thinker X400 0.4 nozzle" + ], + "fan_min_speed": [ + "80" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PLA-Matte @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PLA-Matte @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..f4d0667f5f --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PLA-Matte @Thinker X400 0.4 nozzle.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "name": "Eryone PLA-Matte @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "Ho1nQYsweqTTte0g", + "filament_id": "OFFMWFWL", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PLA-Matte @Thinker X400 0.4 nozzle" + ], + "fan_min_speed": [ + "80" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.99" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature": [ + "215" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone PLA-Matte HS @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone PLA-Matte HS @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..4a705e04bd --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone PLA-Matte HS @Thinker X400 0.4 nozzle.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "name": "Eryone PLA-Matte HS @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "8W0yhuRu7OBJkSOS", + "filament_id": "OF9mNFSM", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone PLA-Matte HS @Thinker X400 0.4 nozzle" + ], + "fan_min_speed": [ + "80" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "1.1" + ], + "filament_max_volumetric_speed": [ + "28" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature": [ + "225" + ], + "nozzle_temperature_initial_layer": [ + "225" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone petg-Galaxy @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone petg-Galaxy @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..e0cbb34d8e --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone petg-Galaxy @Thinker X400 0.4 nozzle.json @@ -0,0 +1,60 @@ +{ + "type": "filament", + "name": "Eryone petg-Galaxy @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "R4BPYs8aAc9DFf0n", + "filament_id": "OFWDDu8u", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone petg-Galaxy @Thinker X400 0.4 nozzle" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "30" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "filament_type": [ + "PETG" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "245" + ], + "nozzle_temperature_initial_layer": [ + "245" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Eryone/filament/Eryone pla-Ultra Silk @Thinker X400 0.4 nozzle.json b/resources/profiles/Eryone/filament/Eryone pla-Ultra Silk @Thinker X400 0.4 nozzle.json new file mode 100644 index 0000000000..0801863e0e --- /dev/null +++ b/resources/profiles/Eryone/filament/Eryone pla-Ultra Silk @Thinker X400 0.4 nozzle.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "name": "Eryone pla-Ultra Silk @Thinker X400 0.4 nozzle", + "inherits": "Eryone Standard PLA", + "from": "system", + "setting_id": "jCbto64oaAKrDaN0", + "filament_id": "OF99Cc22", + "instantiation": "true", + "compatible_printers": [ + "Thinker X400 0.4 nozzle" + ], + "filament_settings_id": [ + "Eryone pla-Ultra Silk @Thinker X400 0.4 nozzle" + ], + "fan_min_speed": [ + "80" + ], + "filament_end_gcode": [ + "; filament end gcode \nSET_FAN_SPEED FAN=filter_fan SPEED=0" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_start_gcode": [ + "; filament start gcode\nSET_FAN_SPEED FAN=filter_fan SPEED=1" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "15" + ] +} diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 5bccaf9dfb..cda2215a33 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,7 +1,7 @@ { "name": "Flashforge", "url": "", - "version": "02.04.00.08", + "version": "02.04.00.09", "force_update": "0", "description": "Flashforge configurations", "machine_model_list": [ @@ -25,6 +25,10 @@ "name": "Flashforge Adventurer 5M Pro", "sub_path": "machine/Flashforge Adventurer 5M Pro.json" }, + { + "name": "Flashforge Adventurer A5", + "sub_path": "machine/Flashforge Adventurer A5.json" + }, { "name": "Flashforge Artemis", "sub_path": "machine/Flashforge Artemis.json" @@ -199,6 +203,10 @@ "name": "0.20mm Standard @FF AD5X", "sub_path": "process/0.20mm Standard @FF AD5X.json" }, + { + "name": "0.20mm Standard @FF Adventurer A5 0.4 nozzle", + "sub_path": "process/0.20mm Standard @FF Adventurer A5 0.4 nozzle.json" + }, { "name": "0.20mm Standard @FF C5", "sub_path": "process/0.20mm Standard @FF C5.json" @@ -311,6 +319,10 @@ "name": "0.30mm Standard @FF AD5X 0.6 nozzle", "sub_path": "process/0.30mm Standard @FF AD5X 0.6 nozzle.json" }, + { + "name": "0.30mm Standard @FF Adventurer A5 0.6 nozzle", + "sub_path": "process/0.30mm Standard @FF Adventurer A5 0.6 nozzle.json" + }, { "name": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", "sub_path": "process/0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle.json" @@ -443,6 +455,10 @@ "name": "0.14mm Standard @Flashforge AD5M 0.25 Nozzle", "sub_path": "process/0.14mm Standard @Flashforge AD5M 0.25 Nozzle.json" }, + { + "name": "0.12mm Fine @FF Adventurer A5 0.4 nozzle", + "sub_path": "process/0.12mm Fine @FF Adventurer A5 0.4 nozzle.json" + }, { "name": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "sub_path": "process/0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" @@ -463,6 +479,10 @@ "name": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "sub_path": "process/0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" }, + { + "name": "0.12mm Standard @FF Adventurer A5 0.25 nozzle", + "sub_path": "process/0.12mm Standard @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "0.12mm Standard @FF G4 0.25 nozzle", "sub_path": "process/0.12mm Standard @FF G4 0.25 nozzle.json" @@ -483,6 +503,10 @@ "name": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", "sub_path": "process/0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle.json" }, + { + "name": "0.24mm Draft @FF Adventurer A5 0.4 nozzle", + "sub_path": "process/0.24mm Draft @FF Adventurer A5 0.4 nozzle.json" + }, { "name": "0.24mm Fine @Flashforge AD5M 0.8 Nozzle", "sub_path": "process/0.24mm Fine @Flashforge AD5M 0.8 Nozzle.json" @@ -495,6 +519,10 @@ "name": "0.18mm Fine @FF AD5X 0.6 nozzle", "sub_path": "process/0.18mm Fine @FF AD5X 0.6 nozzle.json" }, + { + "name": "0.18mm Fine @FF Adventurer A5 0.6 nozzle", + "sub_path": "process/0.18mm Fine @FF Adventurer A5 0.6 nozzle.json" + }, { "name": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", "sub_path": "process/0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle.json" @@ -503,6 +531,10 @@ "name": "0.40mm Standard @FF AD5X 0.8 nozzle", "sub_path": "process/0.40mm Standard @FF AD5X 0.8 nozzle.json" }, + { + "name": "0.40mm Standard @FF Adventurer A5 0.8 nozzle", + "sub_path": "process/0.40mm Standard @FF Adventurer A5 0.8 nozzle.json" + }, { "name": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", "sub_path": "process/0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle.json" @@ -511,6 +543,10 @@ "name": "0.42mm Draft @FF AD5X 0.6 nozzle", "sub_path": "process/0.42mm Draft @FF AD5X 0.6 nozzle.json" }, + { + "name": "0.42mm Draft @FF Adventurer A5 0.6 nozzle", + "sub_path": "process/0.42mm Draft @FF Adventurer A5 0.6 nozzle.json" + }, { "name": "0.08mm Standard @FF C5 0.25 nozzle", "sub_path": "process/0.08mm Standard @FF C5 0.25 nozzle.json" @@ -527,13 +563,37 @@ "name": "0.14mm Standard @FF C5 0.25 nozzle", "sub_path": "process/0.14mm Standard @FF C5 0.25 nozzle.json" }, + { + "name": "0.06mm Standard @FF Adventurer A5 0.25 nozzle", + "sub_path": "process/0.06mm Standard @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "0.08mm Standard @FF Adventurer A5 0.25 nozzle", + "sub_path": "process/0.08mm Standard @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "0.10mm Standard @FF Adventurer A5 0.25 nozzle", + "sub_path": "process/0.10mm Standard @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "0.14mm Standard @FF Adventurer A5 0.25 nozzle", + "sub_path": "process/0.14mm Standard @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "0.24mm Fine @FF AD5X 0.8 nozzle", "sub_path": "process/0.24mm Fine @FF AD5X 0.8 nozzle.json" }, + { + "name": "0.24mm Fine @FF Adventurer A5 0.8 nozzle", + "sub_path": "process/0.24mm Fine @FF Adventurer A5 0.8 nozzle.json" + }, { "name": "0.56mm Draft @FF AD5X 0.8 nozzle", "sub_path": "process/0.56mm Draft @FF AD5X 0.8 nozzle.json" + }, + { + "name": "0.56mm Draft @FF Adventurer A5 0.8 nozzle", + "sub_path": "process/0.56mm Draft @FF Adventurer A5 0.8 nozzle.json" } ], "filament_list": [ @@ -661,6 +721,10 @@ "name": "Flashforge ABS Basic @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge ABS Basic @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge ABS Basic @FF Adventurer A5", + "sub_path": "filament/Flashforge ABS Basic @FF Adventurer A5.json" + }, { "name": "Flashforge ABS Basic @FF G4", "sub_path": "filament/Flashforge ABS Basic @FF G4.json" @@ -741,6 +805,10 @@ "name": "Flashforge ASA Basic", "sub_path": "filament/Flashforge ASA Basic.json" }, + { + "name": "Flashforge ASA Basic @FF Adventurer A5", + "sub_path": "filament/Flashforge ASA Basic @FF Adventurer A5.json" + }, { "name": "Generic ASA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Generic ASA @FF AD5M 0.25 Nozzle.json" @@ -769,6 +837,10 @@ "name": "Flashforge HS PETG @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge HS PETG @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge HS PETG @FF Adventurer A5", + "sub_path": "filament/Flashforge HS PETG @FF Adventurer A5.json" + }, { "name": "Flashforge HS PETG @FF G4", "sub_path": "filament/Flashforge HS PETG @FF G4.json" @@ -801,6 +873,10 @@ "name": "Flashforge PETG Pro @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PETG Pro @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PETG Pro @FF Adventurer A5", + "sub_path": "filament/Flashforge PETG Pro @FF Adventurer A5.json" + }, { "name": "Flashforge PETG Pro @FF G4", "sub_path": "filament/Flashforge PETG Pro @FF G4.json" @@ -825,6 +901,10 @@ "name": "Flashforge PETG Transparent @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PETG Transparent @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PETG Transparent @FF Adventurer A5", + "sub_path": "filament/Flashforge PETG Transparent @FF Adventurer A5.json" + }, { "name": "Flashforge PETG Transparent @FF G4", "sub_path": "filament/Flashforge PETG Transparent @FF G4.json" @@ -925,6 +1005,10 @@ "name": "Flashforge PETG-CF @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PETG-CF @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PETG-CF @FF Adventurer A5", + "sub_path": "filament/Flashforge PETG-CF @FF Adventurer A5.json" + }, { "name": "Generic PETG-CF10 @Flashforge AD4", "sub_path": "filament/Generic PETG-CF10 @Flashforge AD4.json" @@ -1069,6 +1153,14 @@ "name": "Flashforge HS PLA @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge HS PLA @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge HS PLA @FF Adventurer A5", + "sub_path": "filament/Flashforge HS PLA @FF Adventurer A5.json" + }, + { + "name": "Flashforge HS PLA+ @FF Adventurer A5", + "sub_path": "filament/Flashforge HS PLA+ @FF Adventurer A5.json" + }, { "name": "Flashforge PLA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge PLA @FF AD5M 0.25 Nozzle.json" @@ -1089,6 +1181,10 @@ "name": "Flashforge PLA Basic @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Basic @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Basic @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Basic @FF Adventurer A5.json" + }, { "name": "Flashforge PLA Color Change", "sub_path": "filament/Flashforge PLA Color Change.json" @@ -1105,6 +1201,10 @@ "name": "Flashforge PLA Color Change @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Color Change @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Color Change @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Color Change @FF Adventurer A5.json" + }, { "name": "Flashforge PLA Galaxy", "sub_path": "filament/Flashforge PLA Galaxy.json" @@ -1121,6 +1221,14 @@ "name": "Flashforge PLA Galaxy @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Galaxy @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Galaxy @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Galaxy @FF Adventurer A5.json" + }, + { + "name": "Flashforge PLA LITE @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA LITE @FF Adventurer A5.json" + }, { "name": "Flashforge PLA Luminous", "sub_path": "filament/Flashforge PLA Luminous.json" @@ -1137,6 +1245,10 @@ "name": "Flashforge PLA Luminous @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Luminous @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Luminous @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Luminous @FF Adventurer A5.json" + }, { "name": "Flashforge PLA Matte", "sub_path": "filament/Flashforge PLA Matte.json" @@ -1153,6 +1265,10 @@ "name": "Flashforge PLA Matte @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Matte @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Matte @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Matte @FF Adventurer A5.json" + }, { "name": "Flashforge PLA Metal", "sub_path": "filament/Flashforge PLA Metal.json" @@ -1169,6 +1285,10 @@ "name": "Flashforge PLA Metal @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Metal @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Metal @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Metal @FF Adventurer A5.json" + }, { "name": "Flashforge PLA Pro", "sub_path": "filament/Flashforge PLA Pro.json" @@ -1185,6 +1305,10 @@ "name": "Flashforge PLA Pro @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Pro @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Pro @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Pro @FF Adventurer A5.json" + }, { "name": "Flashforge PLA Sparkle", "sub_path": "filament/Flashforge PLA Sparkle.json" @@ -1201,6 +1325,14 @@ "name": "Flashforge PLA Sparkle @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Sparkle @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Sparkle @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Sparkle @FF Adventurer A5.json" + }, + { + "name": "Flashforge R PLA @FF Adventurer A5", + "sub_path": "filament/Flashforge R PLA @FF Adventurer A5.json" + }, { "name": "Generic PLA @FF AD5M 0.25 Nozzle", "sub_path": "filament/Generic PLA @FF AD5M 0.25 Nozzle.json" @@ -1269,6 +1401,10 @@ "name": "Flashforge PLA-CF @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA-CF @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA-CF @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA-CF @FF Adventurer A5.json" + }, { "name": "Flashforge PPS @FF G4", "sub_path": "filament/Flashforge PPS @FF G4.json" @@ -1313,6 +1449,10 @@ "name": "Flashforge PLA Silk @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge PLA Silk @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge PLA Silk @FF Adventurer A5", + "sub_path": "filament/Flashforge PLA Silk @FF Adventurer A5.json" + }, { "name": "Flashforge PLA-SILK @FF AD5M 0.25 Nozzle", "sub_path": "filament/Flashforge PLA-SILK @FF AD5M 0.25 Nozzle.json" @@ -1413,6 +1553,10 @@ "name": "Flashforge TPU 95A @FF AD5X 0.8 nozzle", "sub_path": "filament/Flashforge TPU 95A @FF AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge TPU 95A @FF Adventurer A5", + "sub_path": "filament/Flashforge TPU 95A @FF Adventurer A5.json" + }, { "name": "Flashforge TPU 95A @FF G4", "sub_path": "filament/Flashforge TPU 95A @FF G4.json" @@ -1453,6 +1597,10 @@ "name": "Generic TPU @Flashforge AD4", "sub_path": "filament/Generic TPU @Flashforge AD4.json" }, + { + "name": "Kexcelled TPU 64D @FF Adventurer A5", + "sub_path": "filament/Kexcelled TPU 64D @FF Adventurer A5.json" + }, { "name": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", "sub_path": "filament/Flashforge ABS Basic @FF AD5M 0.25 nozzle.json" @@ -1949,6 +2097,10 @@ "name": "Polymaker CoPA @FF G4P 0.8 HF nozzle", "sub_path": "filament/Polymaker CoPA @FF G4P 0.8 HF nozzle.json" }, + { + "name": "Generic PETG @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Generic PETG @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "Flashforge HS PETG @FF G4 0.6 HF nozzle", "sub_path": "filament/Flashforge HS PETG @FF G4 0.6 HF nozzle.json" @@ -2045,6 +2197,10 @@ "name": "Flashforge PETG-CF @FF G4P 0.6 nozzle", "sub_path": "filament/Flashforge PETG-CF @FF G4P 0.6 nozzle.json" }, + { + "name": "Flashforge HS PLA @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge HS PLA @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "Flashforge HS PLA @FF AD5X 0.25 nozzle", "sub_path": "filament/Flashforge HS PLA @FF AD5X 0.25 nozzle.json" @@ -2057,6 +2213,10 @@ "name": "Flashforge HS PLA @FF G4P 0.25 nozzle", "sub_path": "filament/Flashforge HS PLA @FF G4P 0.25 nozzle.json" }, + { + "name": "Flashforge HS PLA+ @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge HS PLA+ @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", "sub_path": "filament/Flashforge PLA Basic @FF AD5M 0.25 nozzle.json" @@ -2105,6 +2265,10 @@ "name": "Flashforge PLA Galaxy @FF G4P 0.25 nozzle", "sub_path": "filament/Flashforge PLA Galaxy @FF G4P 0.25 nozzle.json" }, + { + "name": "Flashforge PLA LITE @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA LITE @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", "sub_path": "filament/Flashforge PLA Luminous @FF AD5M 0.25 nozzle.json" @@ -2197,6 +2361,14 @@ "name": "Flashforge PLA Sparkle @FF G4P 0.25 nozzle", "sub_path": "filament/Flashforge PLA Sparkle @FF G4P 0.25 nozzle.json" }, + { + "name": "Flashforge R PLA @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge R PLA @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Generic PLA @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Generic PLA @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "Flashforge HS PLA @FF G4 0.6 HF nozzle", "sub_path": "filament/Flashforge HS PLA @FF G4 0.6 HF nozzle.json" @@ -2497,6 +2669,66 @@ "name": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", "sub_path": "filament/Flashforge PLA Silk @FF AD5M 0.25 nozzle.json" }, + { + "name": "Flashforge ABS Basic @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge ABS Basic @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge ASA Basic @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge ASA Basic @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge HS PETG @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge HS PETG @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Basic @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PETG Basic @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Pro @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PETG Pro @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PETG Transparent @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PETG Transparent @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Basic @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Basic @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Color Change @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Color Change @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Galaxy @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Galaxy @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Luminous @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Luminous @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Matte @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Matte @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Metal @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Metal @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Pro @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Pro @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Sparkle @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Sparkle @FF Adventurer A5 0.25 nozzle.json" + }, + { + "name": "Flashforge PLA Silk @FF Adventurer A5 0.25 nozzle", + "sub_path": "filament/Flashforge PLA Silk @FF Adventurer A5 0.25 nozzle.json" + }, { "name": "Flashforge ABS Basic @FF C5", "sub_path": "filament/Flashforge ABS Basic @FF C5.json" @@ -2907,6 +3139,10 @@ "name": "Flashforge AD5X 0.25 nozzle", "sub_path": "machine/FlashForge AD5X 0.25 nozzle.json" }, + { + "name": "Flashforge Adventurer A5 0.25 nozzle", + "sub_path": "machine/Flashforge Adventurer A5 0.25 nozzle.json" + }, { "name": "Flashforge Guider4 0.25 nozzle", "sub_path": "machine/Flashforge Guider4 0.25 nozzle.json" @@ -2919,6 +3155,10 @@ "name": "Flashforge AD5X 0.4 nozzle", "sub_path": "machine/Flashforge AD5X 0.4 nozzle.json" }, + { + "name": "Flashforge Adventurer A5 0.4 nozzle", + "sub_path": "machine/Flashforge Adventurer A5 0.4 nozzle.json" + }, { "name": "Flashforge Creator 5 0.25 nozzle", "sub_path": "machine/Flashforge Creator 5 0.25 nozzle.json" @@ -2963,10 +3203,18 @@ "name": "Flashforge AD5X 0.6 nozzle", "sub_path": "machine/Flashforge AD5X 0.6 nozzle.json" }, + { + "name": "Flashforge Adventurer A5 0.6 nozzle", + "sub_path": "machine/Flashforge Adventurer A5 0.6 nozzle.json" + }, { "name": "Flashforge AD5X 0.8 nozzle", "sub_path": "machine/Flashforge AD5X 0.8 nozzle.json" }, + { + "name": "Flashforge Adventurer A5 0.8 nozzle", + "sub_path": "machine/Flashforge Adventurer A5 0.8 nozzle.json" + }, { "name": "Flashforge Guider4 0.4 HF nozzle", "sub_path": "machine/Flashforge Guider4 0.4 HF nozzle.json" diff --git a/resources/profiles/Flashforge/Flashforge Adventurer A5_cover.png b/resources/profiles/Flashforge/Flashforge Adventurer A5_cover.png new file mode 100644 index 0000000000..70966ac685 Binary files /dev/null and b/resources/profiles/Flashforge/Flashforge Adventurer A5_cover.png differ diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..08b228c11a --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Flashforge ABS Basic @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge ABS Basic @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "jRIJ0cO4GhaMg2By", + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "filament_settings_id": [ + "Flashforge ABS Basic @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], + "textured_cool_plate_temp": [ + "0" + ], + "textured_cool_plate_temp_initial_layer": [ + "0" + ], + "textured_plate_temp": [ + "105" + ], + "textured_plate_temp_initial_layer": [ + "105" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF Adventurer A5.json new file mode 100644 index 0000000000..0ea70e0bf4 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge ABS Basic @FF Adventurer A5.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "name": "Flashforge ABS Basic @FF Adventurer A5", + "inherits": "Generic ABS @Flashforge", + "from": "system", + "setting_id": "rDW4AwKc7SD7WIxN", + "filament_id": "OFibWuBd", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "filament_settings_id": [ + "Flashforge ABS Basic @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], + "textured_cool_plate_temp": [ + "0" + ], + "textured_cool_plate_temp_initial_layer": [ + "0" + ], + "textured_plate_temp": [ + "105" + ], + "textured_plate_temp_initial_layer": [ + "105" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..7d65841413 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Flashforge ASA Basic @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge ASA Basic @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "OIUW8rw2VhNpeVpF", + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "filament_settings_id": [ + "Flashforge ASA Basic @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], + "textured_cool_plate_temp": [ + "0" + ], + "textured_cool_plate_temp_initial_layer": [ + "0" + ], + "textured_plate_temp": [ + "105" + ], + "textured_plate_temp_initial_layer": [ + "105" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF Adventurer A5.json new file mode 100644 index 0000000000..80943c015a --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge ASA Basic @FF Adventurer A5.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "name": "Flashforge ASA Basic @FF Adventurer A5", + "inherits": "Generic ASA @Flashforge", + "from": "system", + "setting_id": "FY9mcqOyuu1Gqq1m", + "filament_id": "OFFFg2Pf", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "105" + ], + "eng_plate_temp_initial_layer": [ + "105" + ], + "filament_settings_id": [ + "Flashforge ASA Basic @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], + "textured_cool_plate_temp": [ + "0" + ], + "textured_cool_plate_temp_initial_layer": [ + "0" + ], + "textured_plate_temp": [ + "105" + ], + "textured_plate_temp_initial_layer": [ + "105" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..609de4b870 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Flashforge HS PETG @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge HS PETG @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "UFal5gkMUJpoiOWP", + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "filament_settings_id": [ + "Flashforge HS PETG @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF Adventurer A5.json new file mode 100644 index 0000000000..5825f17141 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge HS PETG @FF Adventurer A5.json @@ -0,0 +1,59 @@ +{ + "type": "filament", + "name": "Flashforge HS PETG @FF Adventurer A5", + "inherits": "Generic PETG @Flashforge", + "from": "system", + "setting_id": "ZpNEEHTtvhMJS8Kv", + "filament_id": "OFDxxTpW", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "close_fan_the_first_x_layers": [ + "2" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "filament_settings_id": [ + "Flashforge HS PETG @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..797c72be19 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "filament", + "name": "Flashforge HS PLA @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge HS PLA @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "Ewx6vNp0sDLDczPc", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "filament_settings_id": [ + "Flashforge HS PLA @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF Adventurer A5.json new file mode 100644 index 0000000000..9f34aa44af --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge HS PLA @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "2L7FS5JeAyPb3y0s", + "filament_id": "OFIK2H3G", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge HS PLA @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA+ @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA+ @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..1d6ac25b9f --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA+ @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "name": "Flashforge HS PLA+ @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "DeiDOP4VfKSyMtjw", + "filament_id": "OFXB8ZI7", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_settings_id": [ + "Flashforge HS PLA+ @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge HS PLA+ @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge HS PLA+ @FF Adventurer A5.json new file mode 100644 index 0000000000..22c1c9870f --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge HS PLA+ @FF Adventurer A5.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "name": "Flashforge HS PLA+ @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "V4jIUQzxoZkK50mn", + "filament_id": "OFXB8ZI7", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge HS PLA+ @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..ec9f63af46 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Basic @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Flashforge PETG Basic @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PETG Basic @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "0sotIYsGkpQpcq6Y", + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "filament_settings_id": [ + "Flashforge PETG Basic @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..7ebc60dc50 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Flashforge PETG Pro @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PETG Pro @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "SZmG7gbmfOCGc8Fa", + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "filament_settings_id": [ + "Flashforge PETG Pro @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF Adventurer A5.json new file mode 100644 index 0000000000..b1a6a9f7e5 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Pro @FF Adventurer A5.json @@ -0,0 +1,92 @@ +{ + "type": "filament", + "name": "Flashforge PETG Pro @FF Adventurer A5", + "inherits": "Generic PETG @Flashforge", + "from": "system", + "setting_id": "rPy6e6kaIt2tI34j", + "filament_id": "OFXiArjA", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "additional_cooling_fan_speed": [ + "60" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "75" + ], + "eng_plate_temp_initial_layer": [ + "75" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_settings_id": [ + "Flashforge PETG Pro @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "75" + ], + "supertack_plate_temp_initial_layer": [ + "75" + ], + "support_material_interface_fan_speed": [ + "100" + ], + "textured_cool_plate_temp": [ + "75" + ], + "textured_cool_plate_temp_initial_layer": [ + "75" + ], + "textured_plate_temp": [ + "75" + ], + "textured_plate_temp_initial_layer": [ + "75" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..1c116250c6 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Flashforge PETG Transparent @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PETG Transparent @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "PJ1sXWRB5uQa7TAJ", + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "filament_settings_id": [ + "Flashforge PETG Transparent @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF Adventurer A5.json new file mode 100644 index 0000000000..15ccd1d0ac --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PETG Transparent @FF Adventurer A5.json @@ -0,0 +1,92 @@ +{ + "type": "filament", + "name": "Flashforge PETG Transparent @FF Adventurer A5", + "inherits": "Generic PETG @Flashforge", + "from": "system", + "setting_id": "axOWrjnN5lofH9qM", + "filament_id": "OFwjMiKL", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "additional_cooling_fan_speed": [ + "60" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "75" + ], + "eng_plate_temp_initial_layer": [ + "75" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_settings_id": [ + "Flashforge PETG Transparent @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "75" + ], + "hot_plate_temp_initial_layer": [ + "75" + ], + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "20" + ], + "supertack_plate_temp": [ + "75" + ], + "supertack_plate_temp_initial_layer": [ + "75" + ], + "support_material_interface_fan_speed": [ + "100" + ], + "textured_cool_plate_temp": [ + "75" + ], + "textured_cool_plate_temp_initial_layer": [ + "75" + ], + "textured_plate_temp": [ + "75" + ], + "textured_plate_temp_initial_layer": [ + "75" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF Adventurer A5.json new file mode 100644 index 0000000000..c4001061f2 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PETG-CF @FF Adventurer A5.json @@ -0,0 +1,53 @@ +{ + "type": "filament", + "name": "Flashforge PETG-CF @FF Adventurer A5", + "inherits": "Generic PETG-CF10 @Flashforge", + "from": "system", + "setting_id": "aDSOS4PWssYHk8Fh", + "filament_id": "OFuFEtKX", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_settings_id": [ + "Flashforge PETG-CF @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..f94dbbd8c4 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Basic @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Basic @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "e8JkrQPgHO1ekM7Q", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Basic @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF Adventurer A5.json new file mode 100644 index 0000000000..6fdc1bdb17 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Basic @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Basic @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "HCpI817HAWckXBtk", + "filament_id": "OFJ3F2jm", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Basic @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..7cd3bae5bd --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Color Change @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Color Change @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "8ifsgreK3DQhMfeh", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Color Change @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF Adventurer A5.json new file mode 100644 index 0000000000..2eeb85526c --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Color Change @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Color Change @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "o1Fl6t8nFCKZoj3Q", + "filament_id": "OFMkAW6r", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Color Change @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.035" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..c75415adf9 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Galaxy @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Galaxy @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "WViVLfSsNolVB55w", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Galaxy @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF Adventurer A5.json new file mode 100644 index 0000000000..a833b55331 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Galaxy @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Galaxy @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "4rpfTTgZrsVDwxI9", + "filament_id": "OFJJ0Ar3", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Galaxy @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA LITE @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA LITE @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..85f661e98f --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA LITE @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "name": "Flashforge PLA LITE @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "FpqRF3Gw0ftvpvay", + "filament_id": "OFDDdgHM", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_flow_ratio": [ + "1.04" + ], + "filament_settings_id": [ + "Flashforge PLA LITE @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA LITE @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA LITE @FF Adventurer A5.json new file mode 100644 index 0000000000..36e0a64d69 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA LITE @FF Adventurer A5.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "name": "Flashforge PLA LITE @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "2QZaQyg66IJPbsSc", + "filament_id": "OFDDdgHM", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_flow_ratio": [ + "1.02" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA LITE @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..53a0749e1d --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Luminous @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Luminous @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "e3Yir3COUY9MyFdE", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Luminous @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF Adventurer A5.json new file mode 100644 index 0000000000..0be02b85f5 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Luminous @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Luminous @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "GqNeJoH4M1IVAXrZ", + "filament_id": "OFdqkWtz", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Luminous @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..cc011b9336 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Matte @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Matte @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "o2Ttw4qaxOTgEWtp", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Matte @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF Adventurer A5.json new file mode 100644 index 0000000000..33a2228f8d --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Matte @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Matte @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "Jk7PRQkF2lFEtI8Q", + "filament_id": "OF6qAuyi", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Matte @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..92a8d1c8db --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Metal @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Metal @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "eg4osx9bpk61uXvT", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Metal @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF Adventurer A5.json new file mode 100644 index 0000000000..1ef06a756b --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Metal @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Metal @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "Gs8hS5CpV3W62pjs", + "filament_id": "OFAebKg8", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Metal @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..15f7813b78 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Pro @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Pro @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "sD9IWFJxvKTDfpXm", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Pro @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF Adventurer A5.json new file mode 100644 index 0000000000..416c8bf207 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Pro @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Pro @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "vTVCr1id0cTtMzuE", + "filament_id": "OFm4SivL", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Pro @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..0a63c055a3 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Flashforge PLA Silk @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Silk @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "ipe3qzXePPZ9pMmY", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Silk @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "220" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF Adventurer A5.json new file mode 100644 index 0000000000..e157b16c6d --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Silk @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Silk @FF Adventurer A5", + "inherits": "Generic PLA-Silk @Flashforge", + "from": "system", + "setting_id": "XXmeUWaLyVCTDS6G", + "filament_id": "OFgjgN35", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_settings_id": [ + "Flashforge PLA Silk @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.035" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..ebf72e7fb1 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "name": "Flashforge PLA Sparkle @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA Sparkle @FF AD5M 0.25 nozzle", + "from": "system", + "setting_id": "VV75FchmjnPjnDE8", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge PLA Sparkle @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF Adventurer A5.json new file mode 100644 index 0000000000..b7954c6677 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA Sparkle @FF Adventurer A5.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "name": "Flashforge PLA Sparkle @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "dscnwSfbrGWiS4Um", + "filament_id": "OFV5c8hG", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge PLA Sparkle @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF Adventurer A5.json new file mode 100644 index 0000000000..542045cdeb --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge PLA-CF @FF Adventurer A5.json @@ -0,0 +1,56 @@ +{ + "type": "filament", + "name": "Flashforge PLA-CF @FF Adventurer A5", + "inherits": "Generic PLA-CF10 @Flashforge", + "from": "system", + "setting_id": "EpC2ItdGUxFV7x1y", + "filament_id": "OF9cAwMK", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_settings_id": [ + "Flashforge PLA-CF @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge R PLA @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Flashforge R PLA @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..e898843db9 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge R PLA @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,33 @@ +{ + "type": "filament", + "name": "Flashforge R PLA @FF Adventurer A5 0.25 nozzle", + "inherits": "Flashforge PLA @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "G0qAKoO8Dyo0hO6G", + "filament_id": "OFT02Lz9", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_settings_id": [ + "Flashforge R PLA @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge R PLA @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge R PLA @FF Adventurer A5.json new file mode 100644 index 0000000000..e5511d5622 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge R PLA @FF Adventurer A5.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "name": "Flashforge R PLA @FF Adventurer A5", + "inherits": "Generic PLA @Flashforge", + "from": "system", + "setting_id": "sN7eGcbuGZxGrbR5", + "filament_id": "OFT02Lz9", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_settings_id": [ + "Flashforge R PLA @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "hot_plate_temp": [ + "55" + ], + "pressure_advance": [ + "0.0325" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp": [ + "55" + ] +} diff --git a/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF Adventurer A5.json new file mode 100644 index 0000000000..19b0981798 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Flashforge TPU 95A @FF Adventurer A5.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Flashforge TPU 95A @FF Adventurer A5", + "inherits": "Generic TPU @Flashforge", + "from": "system", + "setting_id": "2MT9C2rvvQ3uU1lG", + "filament_id": "OFSqIcJC", + "filament_vendor": [ + "Flashforge" + ], + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_settings_id": [ + "Flashforge TPU 95A @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "textured_plate_temp": [ + "45" + ], + "textured_plate_temp_initial_layer": [ + "45" + ] +} diff --git a/resources/profiles/Flashforge/filament/Generic PETG @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Generic PETG @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..764b31e9c4 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Generic PETG @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PETG @FF Adventurer A5 0.25 nozzle", + "inherits": "Generic PETG @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "KSKX6BHNQgmOEShO", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1.2" + ], + "filament_settings_id": [ + "Generic PETG @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ] +} diff --git a/resources/profiles/Flashforge/filament/Generic PLA @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/filament/Generic PLA @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..416e42006f --- /dev/null +++ b/resources/profiles/Flashforge/filament/Generic PLA @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Generic PLA @FF Adventurer A5 0.25 nozzle", + "inherits": "Generic PLA @FF AD5M 0.25 Nozzle", + "from": "system", + "setting_id": "kHdLzX8Auwz9tFvw", + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2.2" + ], + "filament_settings_id": [ + "Generic PLA @FF Adventurer A5 0.25 nozzle" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/Flashforge/filament/Kexcelled TPU 64D @FF Adventurer A5.json b/resources/profiles/Flashforge/filament/Kexcelled TPU 64D @FF Adventurer A5.json new file mode 100644 index 0000000000..285af63564 --- /dev/null +++ b/resources/profiles/Flashforge/filament/Kexcelled TPU 64D @FF Adventurer A5.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Kexcelled TPU 64D @FF Adventurer A5", + "inherits": "Generic TPU @Flashforge", + "from": "system", + "setting_id": "OB4I8nwZn8sCcCcF", + "filament_id": "OF20zavY", + "filament_vendor": [ + "Kexcelled" + ], + "instantiation": "true", + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "eng_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "45" + ], + "filament_settings_id": [ + "Kexcelled TPU 64D @FF Adventurer A5" + ], + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle", + "Flashforge Adventurer A5 0.6 nozzle", + "Flashforge Adventurer A5 0.8 nozzle" + ], + "textured_plate_temp": [ + "45" + ], + "textured_plate_temp_initial_layer": [ + "45" + ] +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..d9665ff0bb --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.25 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge Adventurer A5 0.25 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.25 Nozzle", + "from": "system", + "setting_id": "TZyRxvTiJNKNJWCD", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Generic PLA @Flashforge" + ], + "default_print_profile": "0.12mm Standard @FF Adventurer A5 0.25 nozzle", + "deretraction_speed": [ + "35" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "150", + "extruder_clearance_height_to_rod": "27", + "extruder_clearance_radius": "76", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG90 E0\nM83\nG1 E-1 F600\nG1 E8 F300\nG1 X85 Y110 Z0.2 F1200\nG1 X-110 E15 F2400\nG1 Y0 E4 F2400\nG1 X-109.6 F2400\nG1 Y110 E5 F2400\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.25" + ], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "stainless_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "-110x-110", + "110x-110", + "110x110", + "-110x110" + ], + "printable_height": "220", + "printer_model": "Flashforge Adventurer A5", + "printer_notes": "", + "printer_settings_id": "Flashforge Adventurer A5 0.25 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.25", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "1", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "2" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "35" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "0", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.3" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.4 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.4 nozzle.json new file mode 100644 index 0000000000..04de9fb9ec --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.4 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge Adventurer A5 0.4 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "EOhWyVbRzFtAc33v", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Generic PLA @Flashforge" + ], + "default_print_profile": "0.20mm Standard @FF Adventurer A5 0.4 nozzle", + "deretraction_speed": [ + "35" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "150", + "extruder_clearance_height_to_rod": "27", + "extruder_clearance_radius": "76", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4" + ], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "-110x-110", + "110x-110", + "110x110", + "-110x110" + ], + "printable_height": "220", + "printer_model": "Flashforge Adventurer A5", + "printer_notes": "", + "printer_settings_id": "Flashforge Adventurer A5 0.4 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.4", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "1", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "2" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "0.8" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "35" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "0", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.6 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.6 nozzle.json new file mode 100644 index 0000000000..0ac8ffe783 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.6 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge Adventurer A5 0.6 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.6 Nozzle", + "from": "system", + "setting_id": "gu3ZxlImr6zK3yb6", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Generic PLA @Flashforge" + ], + "default_print_profile": "0.30mm Standard @FF Adventurer A5 0.6 nozzle", + "deretraction_speed": [ + "35" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "150", + "extruder_clearance_height_to_rod": "27", + "extruder_clearance_radius": "76", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG90\nM83\nG1 Z5 F6000\nG1 E-0.2 F800\nG1 X110 Y-110 F6000\nG1 E2 F800\nG1 Y-110 X55 Z0.25 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG1 Y-110 X55 Z0.45 F4800\nG1 X-55 E8 F2400\nG1 Y-109.6 F2400\nG1 X55 E5 F2400\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.15" + ], + "nozzle_diameter": [ + "0.6" + ], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "-110x-110", + "110x-110", + "110x110", + "-110x110" + ], + "printable_height": "220", + "printer_model": "Flashforge Adventurer A5", + "printer_notes": "", + "printer_settings_id": "Flashforge Adventurer A5 0.6 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.6", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "1", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "2" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1.2" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "35" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "0", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.8 nozzle.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.8 nozzle.json new file mode 100644 index 0000000000..e982ec00a9 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5 0.8 nozzle.json @@ -0,0 +1,233 @@ +{ + "type": "machine", + "name": "Flashforge Adventurer A5 0.8 nozzle", + "inherits": "Flashforge Adventurer 5M Pro 0.8 Nozzle", + "from": "system", + "setting_id": "tKE8SP6KOhIupWbU", + "instantiation": "true", + "adaptive_bed_mesh_margin": "0", + "auxiliary_fan": "1", + "bbl_use_printhost": "0", + "bed_custom_model": "", + "bed_custom_texture": "", + "bed_exclude_area": [ + "0x0" + ], + "bed_mesh_max": "99999,99999", + "bed_mesh_min": "-99999,-99999", + "bed_mesh_probe_distance": "50,50", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]", + "best_object_pos": "0.5,0.5", + "change_extrusion_role_gcode": "", + "change_filament_gcode": "", + "cooling_tube_length": "0", + "cooling_tube_retraction": "0", + "default_filament_profile": [ + "Generic PLA @Flashforge" + ], + "default_print_profile": "0.40mm Standard @FF Adventurer A5 0.8 nozzle", + "deretraction_speed": [ + "35" + ], + "disable_m73": "0", + "emit_machine_limits_to_gcode": "1", + "enable_filament_ramming": "0", + "enable_long_retraction_when_cut": "0", + "extra_loading_move": "0", + "extruder_clearance_height_to_lid": "150", + "extruder_clearance_height_to_rod": "27", + "extruder_clearance_radius": "76", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "fan_kickstart": "0", + "fan_speedup_overhangs": "1", + "fan_speedup_time": "0", + "gcode_flavor": "klipper", + "head_wrap_detect_zone": [], + "high_current_on_filament_swap": "0", + "host_type": "octoprint", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "long_retractions_when_cut": [ + "0" + ], + "machine_end_gcode": "G1 E-3 F3600\nG0 X50 Y50 F30000\nM104 S0 ; turn off temperature", + "machine_load_filament_time": "0", + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "500" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "600", + "600" + ], + "machine_max_speed_y": [ + "600", + "600" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "M190 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG1 Z5 F6000\nG1 E-1.5 F600\nG1 E12 F800\nG1 X85 Y110 Z0.3 F1200\nG1 X-110 E30 F2400\nG1 Y0 E8 F2400\nG1 X-109.6 F2400\nG1 Y110 E10 F2400\nG92 E0", + "machine_tool_change_time": "0", + "machine_unload_filament_time": "0", + "manual_filament_change": "0", + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8" + ], + "nozzle_height": "2.5", + "nozzle_hrc": "0", + "nozzle_type": "hardened_steel", + "nozzle_volume": "0", + "parking_pos_retraction": "0", + "pellet_modded_printer": "0", + "preferred_orientation": "0", + "printable_area": [ + "-110x-110", + "110x-110", + "110x110", + "-110x110" + ], + "printable_height": "220", + "printer_model": "Flashforge Adventurer A5", + "printer_notes": "", + "printer_settings_id": "Flashforge Adventurer A5 0.8 nozzle", + "printer_structure": "undefine", + "printer_technology": "FFF", + "printer_variant": "0.8", + "printhost_authorization_type": "key", + "printhost_ssl_ignore_revoke": "0", + "printing_by_object_gcode": "", + "purge_in_prime_tower": "1", + "retract_before_wipe": [ + "100%" + ], + "retract_length_toolchange": [ + "2" + ], + "retract_lift_above": [ + "0" + ], + "retract_lift_below": [ + "0" + ], + "retract_lift_enforce": [ + "All Surfaces" + ], + "retract_on_top_layer": [ + "1" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_distances_when_cut": [ + "18" + ], + "retraction_length": [ + "1.5" + ], + "retraction_minimum_travel": [ + "1" + ], + "retraction_speed": [ + "35" + ], + "scan_first_layer": "0", + "single_extruder_multi_material": "0", + "support_air_filtration": "1", + "support_chamber_temp_control": "1", + "support_multi_bed_types": "1", + "template_custom_gcode": "", + "thumbnails": "140x110/PNG", + "thumbnails_format": "PNG", + "time_cost": "0", + "time_lapse_gcode": "", + "travel_slope": [ + "3" + ], + "upward_compatible_machine": [], + "use_firmware_retraction": "0", + "use_relative_e_distances": "1", + "wipe": [ + "1" + ], + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0" + ], + "z_hop_types": [ + "Auto Lift" + ], + "z_offset": "0" +} diff --git a/resources/profiles/Flashforge/machine/Flashforge Adventurer A5.json b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5.json new file mode 100644 index 0000000000..8b7c579ca4 --- /dev/null +++ b/resources/profiles/Flashforge/machine/Flashforge Adventurer A5.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Flashforge Adventurer A5", + "model_id": "Flashforge-Adventurer-A5", + "nozzle_diameter": "0.25;0.4;0.6;0.8", + "machine_tech": "FFF", + "family": "Flashforge", + "bed_model": "flashforge_adventurer5m_series_buildplate_model.STL", + "bed_texture": "flashforge_adventurer5m_buildplate_texture.svg", + "hotend_model": "flashforge_adventurer_5m_series_hotend.STL", + "default_materials": "Generic ABS @Flashforge;Generic PETG @Flashforge;Generic PLA @Flashforge;Flashforge PLA Basic @FF Adventurer A5;Generic PLA @FF Adventurer A5 0.25 nozzle" +} diff --git a/resources/profiles/Flashforge/process/0.06mm Standard @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.06mm Standard @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..62a2cbd3d1 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.06mm Standard @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.06mm Standard @FF Adventurer A5 0.25 nozzle", + "inherits": "0.06mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "from": "system", + "setting_id": "426xS3MFF3smfdDE", + "instantiation": "true", + "elefant_foot_compensation": "0.15", + "enable_arc_fitting": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "infill_wall_overlap": "15%", + "only_one_wall_top": "1", + "print_settings_id": "0.06mm Standard @FF Adventurer A5 0.25 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "sparse_infill_pattern": "grid", + "wipe_speed": "200" +} diff --git a/resources/profiles/Flashforge/process/0.08mm Standard @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.08mm Standard @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..21c8dd069b --- /dev/null +++ b/resources/profiles/Flashforge/process/0.08mm Standard @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.08mm Standard @FF Adventurer A5 0.25 nozzle", + "inherits": "0.08mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "from": "system", + "setting_id": "2N8NG8IpxxCPXZlq", + "instantiation": "true", + "elefant_foot_compensation": "0.15", + "enable_arc_fitting": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "infill_wall_overlap": "15%", + "only_one_wall_top": "1", + "print_settings_id": "0.08mm Standard @FF Adventurer A5 0.25 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "sparse_infill_pattern": "grid", + "wipe_speed": "200" +} diff --git a/resources/profiles/Flashforge/process/0.10mm Standard @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.10mm Standard @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..a53d6c235f --- /dev/null +++ b/resources/profiles/Flashforge/process/0.10mm Standard @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.10mm Standard @FF Adventurer A5 0.25 nozzle", + "inherits": "0.10mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "from": "system", + "setting_id": "H74U0yaiNgyQpdbc", + "instantiation": "true", + "elefant_foot_compensation": "0.15", + "enable_arc_fitting": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "infill_wall_overlap": "15%", + "only_one_wall_top": "1", + "print_settings_id": "0.10mm Standard @FF Adventurer A5 0.25 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "sparse_infill_pattern": "grid", + "wipe_speed": "200" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Fine @FF Adventurer A5 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Fine @FF Adventurer A5 0.4 nozzle.json new file mode 100644 index 0000000000..58b5bc5c5d --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Fine @FF Adventurer A5 0.4 nozzle.json @@ -0,0 +1,24 @@ +{ + "type": "process", + "name": "0.12mm Fine @FF Adventurer A5 0.4 nozzle", + "inherits": "0.12mm Fine @Flashforge AD5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "G5AhxHk95GfXw6ec", + "instantiation": "true", + "bridge_flow": "1", + "enable_arc_fitting": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle" + ], + "infill_wall_overlap": "15%", + "initial_layer_print_height": "0.2", + "only_one_wall_top": "1", + "print_settings_id": "0.12mm Fine @FF Adventurer A5 0.4 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "sparse_infill_pattern": "grid", + "support_line_width": "0.42" +} diff --git a/resources/profiles/Flashforge/process/0.12mm Standard @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.12mm Standard @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..ddd5449889 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.12mm Standard @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "process", + "name": "0.12mm Standard @FF Adventurer A5 0.25 nozzle", + "inherits": "0.12mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "from": "system", + "setting_id": "x28lWqpQxkirzYXm", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "infill_wall_overlap": "15%", + "only_one_wall_top": "1", + "slowdown_for_curled_perimeters": "0", + "print_settings_id": "0.12mm Standard @FF Adventurer A5 0.25 nozzle", + "sparse_infill_pattern": "grid" +} diff --git a/resources/profiles/Flashforge/process/0.14mm Standard @FF Adventurer A5 0.25 nozzle.json b/resources/profiles/Flashforge/process/0.14mm Standard @FF Adventurer A5 0.25 nozzle.json new file mode 100644 index 0000000000..09cf76fb60 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.14mm Standard @FF Adventurer A5 0.25 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.14mm Standard @FF Adventurer A5 0.25 nozzle", + "inherits": "0.14mm Standard @Flashforge AD5M Pro 0.25 Nozzle", + "from": "system", + "setting_id": "Xx4fcIZ3esI4IXbl", + "instantiation": "true", + "elefant_foot_compensation": "0.15", + "enable_arc_fitting": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.25 nozzle" + ], + "infill_wall_overlap": "15%", + "only_one_wall_top": "1", + "print_settings_id": "0.14mm Standard @FF Adventurer A5 0.25 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "sparse_infill_pattern": "grid", + "wipe_speed": "200" +} diff --git a/resources/profiles/Flashforge/process/0.18mm Fine @FF Adventurer A5 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.18mm Fine @FF Adventurer A5 0.6 nozzle.json new file mode 100644 index 0000000000..6213e93574 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.18mm Fine @FF Adventurer A5 0.6 nozzle.json @@ -0,0 +1,24 @@ +{ + "type": "process", + "name": "0.18mm Fine @FF Adventurer A5 0.6 nozzle", + "inherits": "0.18mm Fine @Flashforge AD5M Pro 0.6 Nozzle", + "from": "system", + "setting_id": "USICCgjHQ4aHkqMM", + "instantiation": "true", + "enable_arc_fitting": "1", + "enable_support": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.6 nozzle" + ], + "infill_wall_overlap": "15%", + "initial_layer_print_height": "0.25", + "only_one_wall_top": "1", + "print_settings_id": "0.18mm Fine @FF Adventurer A5 0.6 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "support_bottom_z_distance": "0.2", + "support_top_z_distance": "0.2" +} diff --git a/resources/profiles/Flashforge/process/0.20mm Standard @FF Adventurer A5 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.20mm Standard @FF Adventurer A5 0.4 nozzle.json new file mode 100644 index 0000000000..4f1e8cba7c --- /dev/null +++ b/resources/profiles/Flashforge/process/0.20mm Standard @FF Adventurer A5 0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "process", + "name": "0.20mm Standard @FF Adventurer A5 0.4 nozzle", + "inherits": "0.20mm Standard @Flashforge AD5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "ZrWC7sW8I5eH0nI0", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle" + ], + "infill_wall_overlap": "15%", + "only_one_wall_top": "1", + "print_settings_id": "0.20mm Standard @FF Adventurer A5 0.4 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "support_bottom_z_distance": "0.2", + "support_top_z_distance": "0.2" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Draft @FF Adventurer A5 0.4 nozzle.json b/resources/profiles/Flashforge/process/0.24mm Draft @FF Adventurer A5 0.4 nozzle.json new file mode 100644 index 0000000000..7cbac2a836 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Draft @FF Adventurer A5 0.4 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.24mm Draft @FF Adventurer A5 0.4 nozzle", + "inherits": "0.24mm Draft @Flashforge AD5M Pro 0.4 Nozzle", + "from": "system", + "setting_id": "nniAHPVQxmVlEZqp", + "instantiation": "true", + "enable_arc_fitting": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.4 nozzle" + ], + "infill_wall_overlap": "15%", + "initial_layer_print_height": "0.25", + "only_one_wall_top": "1", + "print_settings_id": "0.24mm Draft @FF Adventurer A5 0.4 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "support_bottom_z_distance": "0.2", + "support_top_z_distance": "0.2" +} diff --git a/resources/profiles/Flashforge/process/0.24mm Fine @FF Adventurer A5 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.24mm Fine @FF Adventurer A5 0.8 nozzle.json new file mode 100644 index 0000000000..8ff452ef10 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.24mm Fine @FF Adventurer A5 0.8 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.24mm Fine @FF Adventurer A5 0.8 nozzle", + "inherits": "0.24mm Fine @Flashforge AD5M Pro 0.8 Nozzle", + "from": "system", + "setting_id": "INfUgOlQBMZLYrfu", + "instantiation": "true", + "bridge_flow": "1", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Flashforge Adventurer A5 0.8 nozzle" + ], + "infill_wall_overlap": "15%", + "initial_layer_print_height": "0.3", + "only_one_wall_top": "1", + "print_settings_id": "0.24mm Fine @FF Adventurer A5 0.8 nozzle", + "slowdown_for_curled_perimeters": "0", + "sparse_infill_pattern": "grid" +} diff --git a/resources/profiles/Flashforge/process/0.30mm Standard @FF Adventurer A5 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.30mm Standard @FF Adventurer A5 0.6 nozzle.json new file mode 100644 index 0000000000..d8376dad80 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.30mm Standard @FF Adventurer A5 0.6 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.30mm Standard @FF Adventurer A5 0.6 nozzle", + "inherits": "0.30mm Standard @Flashforge AD5M Pro 0.6 Nozzle", + "from": "system", + "setting_id": "zNxUHo9HvYPlL2KP", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Flashforge Adventurer A5 0.6 nozzle" + ], + "infill_wall_overlap": "15%", + "only_one_wall_top": "1", + "print_settings_id": "0.30mm Standard @FF Adventurer A5 0.6 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "sparse_infill_pattern": "grid", + "support_bottom_z_distance": "0.2", + "support_top_z_distance": "0.2" +} diff --git a/resources/profiles/Flashforge/process/0.40mm Standard @FF Adventurer A5 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.40mm Standard @FF Adventurer A5 0.8 nozzle.json new file mode 100644 index 0000000000..4a0300bccc --- /dev/null +++ b/resources/profiles/Flashforge/process/0.40mm Standard @FF Adventurer A5 0.8 nozzle.json @@ -0,0 +1,18 @@ +{ + "type": "process", + "name": "0.40mm Standard @FF Adventurer A5 0.8 nozzle", + "inherits": "0.40mm Standard @Flashforge AD5M Pro 0.8 Nozzle", + "from": "system", + "setting_id": "Davfy2YyV2b7ofhd", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Flashforge Adventurer A5 0.8 nozzle" + ], + "infill_wall_overlap": "15%", + "print_settings_id": "0.40mm Standard @FF Adventurer A5 0.8 nozzle", + "slowdown_for_curled_perimeters": "0", + "sparse_infill_pattern": "grid", + "support_bottom_z_distance": "0.25", + "support_top_z_distance": "0.25" +} diff --git a/resources/profiles/Flashforge/process/0.42mm Draft @FF Adventurer A5 0.6 nozzle.json b/resources/profiles/Flashforge/process/0.42mm Draft @FF Adventurer A5 0.6 nozzle.json new file mode 100644 index 0000000000..de9c64ea11 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.42mm Draft @FF Adventurer A5 0.6 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.42mm Draft @FF Adventurer A5 0.6 nozzle", + "inherits": "0.42mm Draft @Flashforge AD5M Pro 0.6 Nozzle", + "from": "system", + "setting_id": "k35K2zIeyVhqNVC1", + "instantiation": "true", + "bridge_flow": "1", + "enable_arc_fitting": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "compatible_printers": [ + "Flashforge Adventurer A5 0.6 nozzle" + ], + "infill_wall_overlap": "15%", + "initial_layer_print_height": "0.3", + "only_one_wall_top": "1", + "print_settings_id": "0.42mm Draft @FF Adventurer A5 0.6 nozzle", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "slowdown_for_curled_perimeters": "0", + "small_perimeter_speed": "25", + "sparse_infill_pattern": "grid" +} diff --git a/resources/profiles/Flashforge/process/0.56mm Draft @FF Adventurer A5 0.8 nozzle.json b/resources/profiles/Flashforge/process/0.56mm Draft @FF Adventurer A5 0.8 nozzle.json new file mode 100644 index 0000000000..b95c9c1895 --- /dev/null +++ b/resources/profiles/Flashforge/process/0.56mm Draft @FF Adventurer A5 0.8 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.56mm Draft @FF Adventurer A5 0.8 nozzle", + "inherits": "0.56mm Draft @Flashforge AD5M Pro 0.8 Nozzle", + "from": "system", + "setting_id": "AMe67pwFNPpsDJ9B", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Flashforge Adventurer A5 0.8 nozzle" + ], + "infill_wall_overlap": "25%", + "print_settings_id": "0.56mm Draft @FF Adventurer A5 0.8 nozzle", + "slowdown_for_curled_perimeters": "0", + "sparse_infill_pattern": "grid" +} diff --git a/resources/profiles/Meltingplot.json b/resources/profiles/Meltingplot.json new file mode 100644 index 0000000000..654d955380 --- /dev/null +++ b/resources/profiles/Meltingplot.json @@ -0,0 +1,434 @@ +{ + "name": "Meltingplot", + "version": "02.04.00.00", + "force_update": "0", + "description": "Meltingplot configurations", + "machine_model_list": [ + { + "name": "Meltingplot CHX 350", + "sub_path": "machine/Meltingplot CHX 350.json" + }, + { + "name": "Meltingplot MBL 133", + "sub_path": "machine/Meltingplot MBL 133.json" + }, + { + "name": "Meltingplot MBL 136", + "sub_path": "machine/Meltingplot MBL 136.json" + }, + { + "name": "Meltingplot MBL 308", + "sub_path": "machine/Meltingplot MBL 308.json" + }, + { + "name": "Meltingplot MBL 480", + "sub_path": "machine/Meltingplot MBL 480.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "fdm_process_meltingplot_chx_common", + "sub_path": "process/fdm_process_meltingplot_chx_common.json" + }, + { + "name": "fdm_process_meltingplot_mbl_common", + "sub_path": "process/fdm_process_meltingplot_mbl_common.json" + }, + { + "name": "fdm_process_meltingplot_chx_large_nozzle", + "sub_path": "process/fdm_process_meltingplot_chx_large_nozzle.json" + }, + { + "name": "fdm_process_meltingplot_chx_small_nozzle", + "sub_path": "process/fdm_process_meltingplot_chx_small_nozzle.json" + }, + { + "name": "fdm_process_meltingplot_mbl_04_nozzle", + "sub_path": "process/fdm_process_meltingplot_mbl_04_nozzle.json" + }, + { + "name": "fdm_process_meltingplot_mbl_06_nozzle", + "sub_path": "process/fdm_process_meltingplot_mbl_06_nozzle.json" + }, + { + "name": "fdm_process_meltingplot_mbl_08_nozzle", + "sub_path": "process/fdm_process_meltingplot_mbl_08_nozzle.json" + }, + { + "name": "fdm_process_meltingplot_mbl_10_nozzle", + "sub_path": "process/fdm_process_meltingplot_mbl_10_nozzle.json" + }, + { + "name": "fdm_process_meltingplot_mbl_12_nozzle", + "sub_path": "process/fdm_process_meltingplot_mbl_12_nozzle.json" + }, + { + "name": "0.32mm Fine 0.8 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.32mm Fine 0.8 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.36mm Optimal 0.8 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.36mm Optimal 0.8 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.38mm Standard 0.8 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.38mm Standard 0.8 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.44mm Fine 1.0 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.44mm Fine 1.0 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.48mm Fine 1.2 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.48mm Fine 1.2 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.48mm Optimal 1.0 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.48mm Optimal 1.0 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.56mm Optimal 1.2 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.56mm Optimal 1.2 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.18mm Fine 0.4 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.18mm Fine 0.4 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.24mm Fine 0.6 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.24mm Fine 0.6 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.28mm Optimal 0.6 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.28mm Optimal 0.6 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.30mm Standard 0.6 nozzle @Meltingplot CHX 350", + "sub_path": "process/0.30mm Standard 0.6 nozzle @Meltingplot CHX 350.json" + }, + { + "name": "0.18mm Fine 0.4 nozzle @Meltingplot MBL", + "sub_path": "process/0.18mm Fine 0.4 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.24mm Fine 0.6 nozzle @Meltingplot MBL", + "sub_path": "process/0.24mm Fine 0.6 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.28mm Optimal 0.6 nozzle @Meltingplot MBL", + "sub_path": "process/0.28mm Optimal 0.6 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.30mm Standard 0.6 nozzle @Meltingplot MBL", + "sub_path": "process/0.30mm Standard 0.6 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.34mm Fine 0.8 nozzle @Meltingplot MBL", + "sub_path": "process/0.34mm Fine 0.8 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.36mm Optimal 0.8 nozzle @Meltingplot MBL", + "sub_path": "process/0.36mm Optimal 0.8 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.38mm Standard 0.8 nozzle @Meltingplot MBL", + "sub_path": "process/0.38mm Standard 0.8 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.44mm Fine 1.0 nozzle @Meltingplot MBL", + "sub_path": "process/0.44mm Fine 1.0 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.48mm Optimal 1.0 nozzle @Meltingplot MBL", + "sub_path": "process/0.48mm Optimal 1.0 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.48mm Fine 1.2 nozzle @Meltingplot MBL", + "sub_path": "process/0.48mm Fine 1.2 nozzle @Meltingplot MBL.json" + }, + { + "name": "0.56mm Optimal 1.2 nozzle @Meltingplot MBL", + "sub_path": "process/0.56mm Optimal 1.2 nozzle @Meltingplot MBL.json" + } + ], + "filament_list": [ + { + "name": "Extrudr PLA NX2 Matt", + "sub_path": "filament/Extrudr PLA NX2 Matt.json" + }, + { + "name": "Meltingplot ABS", + "sub_path": "filament/Meltingplot ABS.json" + }, + { + "name": "Meltingplot ASA", + "sub_path": "filament/Meltingplot ASA.json" + }, + { + "name": "Meltingplot PA6 CF HT", + "sub_path": "filament/Meltingplot PA6 CF HT.json" + }, + { + "name": "Meltingplot PET-CF15", + "sub_path": "filament/Meltingplot PET-CF15.json" + }, + { + "name": "Meltingplot PETG", + "sub_path": "filament/Meltingplot PETG.json" + }, + { + "name": "Meltingplot PLA", + "sub_path": "filament/Meltingplot PLA.json" + }, + { + "name": "Meltingplot TitanX", + "sub_path": "filament/Meltingplot TitanX.json" + }, + { + "name": "Extrudr PLA NX2 Matt @0.4 nozzle", + "sub_path": "filament/Extrudr PLA NX2 Matt @0.4 nozzle.json" + }, + { + "name": "Extrudr PLA NX2 Matt @0.6 nozzle", + "sub_path": "filament/Extrudr PLA NX2 Matt @0.6 nozzle.json" + }, + { + "name": "Extrudr PLA NX2 Matt @0.8 nozzle", + "sub_path": "filament/Extrudr PLA NX2 Matt @0.8 nozzle.json" + }, + { + "name": "Extrudr PLA NX2 Matt @1.0 nozzle", + "sub_path": "filament/Extrudr PLA NX2 Matt @1.0 nozzle.json" + }, + { + "name": "Meltingplot ABS @0.4 nozzle", + "sub_path": "filament/Meltingplot ABS @0.4 nozzle.json" + }, + { + "name": "Meltingplot ABS @0.6 nozzle", + "sub_path": "filament/Meltingplot ABS @0.6 nozzle.json" + }, + { + "name": "Meltingplot ABS @0.8 nozzle", + "sub_path": "filament/Meltingplot ABS @0.8 nozzle.json" + }, + { + "name": "Meltingplot ABS @1.0 nozzle", + "sub_path": "filament/Meltingplot ABS @1.0 nozzle.json" + }, + { + "name": "Meltingplot ASA @0.4 nozzle", + "sub_path": "filament/Meltingplot ASA @0.4 nozzle.json" + }, + { + "name": "Meltingplot ASA @0.6 nozzle", + "sub_path": "filament/Meltingplot ASA @0.6 nozzle.json" + }, + { + "name": "Meltingplot ASA @0.8 nozzle", + "sub_path": "filament/Meltingplot ASA @0.8 nozzle.json" + }, + { + "name": "Meltingplot ASA @1.0 nozzle", + "sub_path": "filament/Meltingplot ASA @1.0 nozzle.json" + }, + { + "name": "Meltingplot PA6 CF HT @0.4 nozzle", + "sub_path": "filament/Meltingplot PA6 CF HT @0.4 nozzle.json" + }, + { + "name": "Meltingplot PA6 CF HT @0.6 nozzle", + "sub_path": "filament/Meltingplot PA6 CF HT @0.6 nozzle.json" + }, + { + "name": "Meltingplot PA6 CF HT @0.8 nozzle", + "sub_path": "filament/Meltingplot PA6 CF HT @0.8 nozzle.json" + }, + { + "name": "Meltingplot PA6 CF HT @1.0 nozzle", + "sub_path": "filament/Meltingplot PA6 CF HT @1.0 nozzle.json" + }, + { + "name": "Meltingplot PET-CF15 @0.4 nozzle", + "sub_path": "filament/Meltingplot PET-CF15 @0.4 nozzle.json" + }, + { + "name": "Meltingplot PET-CF15 @0.6 nozzle", + "sub_path": "filament/Meltingplot PET-CF15 @0.6 nozzle.json" + }, + { + "name": "Meltingplot PET-CF15 @0.8 nozzle", + "sub_path": "filament/Meltingplot PET-CF15 @0.8 nozzle.json" + }, + { + "name": "Meltingplot PET-CF15 @1.0 nozzle", + "sub_path": "filament/Meltingplot PET-CF15 @1.0 nozzle.json" + }, + { + "name": "Meltingplot PETG @0.4 nozzle", + "sub_path": "filament/Meltingplot PETG @0.4 nozzle.json" + }, + { + "name": "Meltingplot PETG @0.6 nozzle", + "sub_path": "filament/Meltingplot PETG @0.6 nozzle.json" + }, + { + "name": "Meltingplot PETG @0.8 nozzle", + "sub_path": "filament/Meltingplot PETG @0.8 nozzle.json" + }, + { + "name": "Meltingplot PETG @1.0 nozzle", + "sub_path": "filament/Meltingplot PETG @1.0 nozzle.json" + }, + { + "name": "Meltingplot PLA @0.4 nozzle", + "sub_path": "filament/Meltingplot PLA @0.4 nozzle.json" + }, + { + "name": "Meltingplot PLA @0.6 nozzle", + "sub_path": "filament/Meltingplot PLA @0.6 nozzle.json" + }, + { + "name": "Meltingplot PLA @0.8 nozzle", + "sub_path": "filament/Meltingplot PLA @0.8 nozzle.json" + }, + { + "name": "Meltingplot PLA @1.0 nozzle", + "sub_path": "filament/Meltingplot PLA @1.0 nozzle.json" + }, + { + "name": "Meltingplot TitanX @0.4 nozzle", + "sub_path": "filament/Meltingplot TitanX @0.4 nozzle.json" + }, + { + "name": "Meltingplot TitanX @0.6 nozzle", + "sub_path": "filament/Meltingplot TitanX @0.6 nozzle.json" + }, + { + "name": "Meltingplot TitanX @0.8 nozzle", + "sub_path": "filament/Meltingplot TitanX @0.8 nozzle.json" + }, + { + "name": "Meltingplot TitanX @1.0 nozzle", + "sub_path": "filament/Meltingplot TitanX @1.0 nozzle.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "fdm_machine_meltingplot_chx", + "sub_path": "machine/fdm_machine_meltingplot_chx.json" + }, + { + "name": "fdm_machine_meltingplot_mbl", + "sub_path": "machine/fdm_machine_meltingplot_mbl.json" + }, + { + "name": "Meltingplot CHX 350 0.4 nozzle", + "sub_path": "machine/Meltingplot CHX 350 0.4 nozzle.json" + }, + { + "name": "Meltingplot CHX 350 0.6 nozzle", + "sub_path": "machine/Meltingplot CHX 350 0.6 nozzle.json" + }, + { + "name": "Meltingplot CHX 350 0.8 nozzle", + "sub_path": "machine/Meltingplot CHX 350 0.8 nozzle.json" + }, + { + "name": "Meltingplot CHX 350 1.0 nozzle", + "sub_path": "machine/Meltingplot CHX 350 1.0 nozzle.json" + }, + { + "name": "Meltingplot CHX 350 1.2 nozzle", + "sub_path": "machine/Meltingplot CHX 350 1.2 nozzle.json" + }, + { + "name": "Meltingplot MBL 133 0.4 nozzle", + "sub_path": "machine/Meltingplot MBL 133 0.4 nozzle.json" + }, + { + "name": "Meltingplot MBL 133 0.6 nozzle", + "sub_path": "machine/Meltingplot MBL 133 0.6 nozzle.json" + }, + { + "name": "Meltingplot MBL 133 0.8 nozzle", + "sub_path": "machine/Meltingplot MBL 133 0.8 nozzle.json" + }, + { + "name": "Meltingplot MBL 133 1.0 nozzle", + "sub_path": "machine/Meltingplot MBL 133 1.0 nozzle.json" + }, + { + "name": "Meltingplot MBL 133 1.2 nozzle", + "sub_path": "machine/Meltingplot MBL 133 1.2 nozzle.json" + }, + { + "name": "Meltingplot MBL 136 0.4 nozzle", + "sub_path": "machine/Meltingplot MBL 136 0.4 nozzle.json" + }, + { + "name": "Meltingplot MBL 136 0.6 nozzle", + "sub_path": "machine/Meltingplot MBL 136 0.6 nozzle.json" + }, + { + "name": "Meltingplot MBL 136 0.8 nozzle", + "sub_path": "machine/Meltingplot MBL 136 0.8 nozzle.json" + }, + { + "name": "Meltingplot MBL 136 1.0 nozzle", + "sub_path": "machine/Meltingplot MBL 136 1.0 nozzle.json" + }, + { + "name": "Meltingplot MBL 136 1.2 nozzle", + "sub_path": "machine/Meltingplot MBL 136 1.2 nozzle.json" + }, + { + "name": "Meltingplot MBL 308 0.4 nozzle", + "sub_path": "machine/Meltingplot MBL 308 0.4 nozzle.json" + }, + { + "name": "Meltingplot MBL 308 0.6 nozzle", + "sub_path": "machine/Meltingplot MBL 308 0.6 nozzle.json" + }, + { + "name": "Meltingplot MBL 308 0.8 nozzle", + "sub_path": "machine/Meltingplot MBL 308 0.8 nozzle.json" + }, + { + "name": "Meltingplot MBL 308 1.0 nozzle", + "sub_path": "machine/Meltingplot MBL 308 1.0 nozzle.json" + }, + { + "name": "Meltingplot MBL 308 1.2 nozzle", + "sub_path": "machine/Meltingplot MBL 308 1.2 nozzle.json" + }, + { + "name": "Meltingplot MBL 480 0.4 nozzle", + "sub_path": "machine/Meltingplot MBL 480 0.4 nozzle.json" + }, + { + "name": "Meltingplot MBL 480 0.6 nozzle", + "sub_path": "machine/Meltingplot MBL 480 0.6 nozzle.json" + }, + { + "name": "Meltingplot MBL 480 0.8 nozzle", + "sub_path": "machine/Meltingplot MBL 480 0.8 nozzle.json" + }, + { + "name": "Meltingplot MBL 480 1.0 nozzle", + "sub_path": "machine/Meltingplot MBL 480 1.0 nozzle.json" + }, + { + "name": "Meltingplot MBL 480 1.2 nozzle", + "sub_path": "machine/Meltingplot MBL 480 1.2 nozzle.json" + } + ] +} diff --git a/resources/profiles/Meltingplot/Meltingplot CHX 350_cover.png b/resources/profiles/Meltingplot/Meltingplot CHX 350_cover.png new file mode 100644 index 0000000000..2f625aedc4 Binary files /dev/null and b/resources/profiles/Meltingplot/Meltingplot CHX 350_cover.png differ diff --git a/resources/profiles/Meltingplot/Meltingplot MBL 133_cover.png b/resources/profiles/Meltingplot/Meltingplot MBL 133_cover.png new file mode 100644 index 0000000000..eb9865c0cb Binary files /dev/null and b/resources/profiles/Meltingplot/Meltingplot MBL 133_cover.png differ diff --git a/resources/profiles/Meltingplot/Meltingplot MBL 136_cover.png b/resources/profiles/Meltingplot/Meltingplot MBL 136_cover.png new file mode 100644 index 0000000000..746dfb1fbb Binary files /dev/null and b/resources/profiles/Meltingplot/Meltingplot MBL 136_cover.png differ diff --git a/resources/profiles/Meltingplot/Meltingplot MBL 308_cover.png b/resources/profiles/Meltingplot/Meltingplot MBL 308_cover.png new file mode 100644 index 0000000000..cb4df7250e Binary files /dev/null and b/resources/profiles/Meltingplot/Meltingplot MBL 308_cover.png differ diff --git a/resources/profiles/Meltingplot/Meltingplot MBL 480_cover.png b/resources/profiles/Meltingplot/Meltingplot MBL 480_cover.png new file mode 100644 index 0000000000..fb7e11d5b2 Binary files /dev/null and b/resources/profiles/Meltingplot/Meltingplot MBL 480_cover.png differ diff --git a/resources/profiles/Meltingplot/chx350-printbed.stl b/resources/profiles/Meltingplot/chx350-printbed.stl new file mode 100644 index 0000000000..34255a2d73 Binary files /dev/null and b/resources/profiles/Meltingplot/chx350-printbed.stl differ diff --git a/resources/profiles/Meltingplot/chx350-texture.svg b/resources/profiles/Meltingplot/chx350-texture.svg new file mode 100644 index 0000000000..130afe556e --- /dev/null +++ b/resources/profiles/Meltingplot/chx350-texture.svg @@ -0,0 +1,5 @@ + + +Meltingplot CHX350 build plate — 1C Navy HUD (outlined) + + \ No newline at end of file diff --git a/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.4 nozzle.json new file mode 100644 index 0000000000..1f759767fa --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Extrudr PLA NX2 Matt @0.4 nozzle", + "inherits": "Extrudr PLA NX2 Matt", + "from": "system", + "setting_id": "AL4mb7soA7L0FKTb", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "10" + ], + "slow_down_layer_time": [ + "9" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.6 nozzle.json new file mode 100644 index 0000000000..c7984aa06d --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Extrudr PLA NX2 Matt @0.6 nozzle", + "inherits": "Extrudr PLA NX2 Matt", + "from": "system", + "setting_id": "OCnoqOQbcfgikNmA", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "15" + ], + "slow_down_layer_time": [ + "20" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.8 nozzle.json new file mode 100644 index 0000000000..a28a1feca0 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Extrudr PLA NX2 Matt @0.8 nozzle", + "inherits": "Extrudr PLA NX2 Matt", + "from": "system", + "setting_id": "HO2NCV1i1l21mokh", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "slow_down_layer_time": [ + "38" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @1.0 nozzle.json new file mode 100644 index 0000000000..545acdf113 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Extrudr PLA NX2 Matt @1.0 nozzle", + "inherits": "Extrudr PLA NX2 Matt", + "from": "system", + "setting_id": "dRH4HfWHQPwo33cP", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "25" + ], + "slow_down_layer_time": [ + "56" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt.json b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt.json new file mode 100644 index 0000000000..b9f864f79f --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Extrudr PLA NX2 Matt.json @@ -0,0 +1,79 @@ +{ + "type": "filament", + "name": "Extrudr PLA NX2 Matt", + "inherits": "Generic PLA Matte @System", + "from": "system", + "setting_id": "qmPRaTcPlmtk6zB2", + "filament_id": "OF1PznHI", + "instantiation": "true", + "filament_vendor": [ + "Extrudr" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "filament_max_volumetric_speed": [ + "30" + ], + "filament_adaptive_volumetric_speed": [ + "1" + ], + "filament_density": [ + "1.3" + ], + "filament_cost": [ + "13" + ], + "temperature_vitrification": [ + "50" + ], + "full_fan_speed_layer": [ + "1" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_cooling_layer_time": [ + "100" + ], + "slow_down_layer_time": [ + "83" + ], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_diameter": [ + "2.85" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.4 nozzle.json new file mode 100644 index 0000000000..837e55a36f --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ABS @0.4 nozzle", + "inherits": "Meltingplot ABS", + "from": "system", + "setting_id": "NjuuWYHSc7IlwWAy", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "11" + ], + "slow_down_layer_time": [ + "5" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.6 nozzle.json new file mode 100644 index 0000000000..d73964b709 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ABS @0.6 nozzle", + "inherits": "Meltingplot ABS", + "from": "system", + "setting_id": "md24RPsRyxBhGRoW", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "slow_down_layer_time": [ + "11" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.8 nozzle.json new file mode 100644 index 0000000000..82c5ed8935 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ABS @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ABS @0.8 nozzle", + "inherits": "Meltingplot ABS", + "from": "system", + "setting_id": "Y2LYeWL7Zxel3m0c", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "22" + ], + "slow_down_layer_time": [ + "20" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ABS @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ABS @1.0 nozzle.json new file mode 100644 index 0000000000..a74a3a1925 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ABS @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ABS @1.0 nozzle", + "inherits": "Meltingplot ABS", + "from": "system", + "setting_id": "G2UYPHTEWjun65jj", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "27" + ], + "slow_down_layer_time": [ + "30" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ABS.json b/resources/profiles/Meltingplot/filament/Meltingplot ABS.json new file mode 100644 index 0000000000..c947cd55e9 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ABS.json @@ -0,0 +1,70 @@ +{ + "type": "filament", + "name": "Meltingplot ABS", + "inherits": "Generic ABS @System", + "from": "system", + "setting_id": "zVQixgSSn1jm1c7n", + "filament_id": "OFVIMei2", + "instantiation": "true", + "filament_vendor": [ + "Meltingplot" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_shrink": [ + "99%" + ], + "filament_shrinkage_compensation_z": [ + "99%" + ], + "filament_density": [ + "1.1" + ], + "filament_cost": [ + "30" + ], + "default_filament_colour": [ + "#F8F8F8" + ], + "slow_down_layer_time": [ + "44" + ], + "cool_plate_temp": [ + "110" + ], + "eng_plate_temp": [ + "110" + ], + "hot_plate_temp": [ + "110" + ], + "textured_plate_temp": [ + "110" + ], + "cool_plate_temp_initial_layer": [ + "110" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "110" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "filament_diameter": [ + "2.85" + ], + "filament_max_volumetric_speed": [ + "33" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.4 nozzle.json new file mode 100644 index 0000000000..f567231b8d --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ASA @0.4 nozzle", + "inherits": "Meltingplot ASA", + "from": "system", + "setting_id": "4EBXMyiXoLrw5rLC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "11" + ], + "slow_down_layer_time": [ + "2" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.6 nozzle.json new file mode 100644 index 0000000000..96553662a8 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ASA @0.6 nozzle", + "inherits": "Meltingplot ASA", + "from": "system", + "setting_id": "2UdzXwYGT5nqtcdK", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "slow_down_layer_time": [ + "5" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.8 nozzle.json new file mode 100644 index 0000000000..9e6d846c7f --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ASA @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ASA @0.8 nozzle", + "inherits": "Meltingplot ASA", + "from": "system", + "setting_id": "4hk1aKrMkppVYH4z", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "22" + ], + "slow_down_layer_time": [ + "10" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ASA @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot ASA @1.0 nozzle.json new file mode 100644 index 0000000000..e8bc7d7a32 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ASA @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot ASA @1.0 nozzle", + "inherits": "Meltingplot ASA", + "from": "system", + "setting_id": "JRSnSdwkvrQx8uH8", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "27" + ], + "slow_down_layer_time": [ + "15" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot ASA.json b/resources/profiles/Meltingplot/filament/Meltingplot ASA.json new file mode 100644 index 0000000000..180ef14e39 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot ASA.json @@ -0,0 +1,70 @@ +{ + "type": "filament", + "name": "Meltingplot ASA", + "inherits": "Generic ASA @System", + "from": "system", + "setting_id": "5VuPxdOXfTIidM4X", + "filament_id": "OFRdywGp", + "instantiation": "true", + "filament_vendor": [ + "Meltingplot" + ], + "nozzle_temperature": [ + "255" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "filament_max_volumetric_speed": [ + "33" + ], + "filament_density": [ + "1.11" + ], + "filament_cost": [ + "46.65" + ], + "default_filament_colour": [ + "#123123" + ], + "slow_down_layer_time": [ + "22" + ], + "slow_down_min_speed": [ + "15" + ], + "cool_plate_temp": [ + "90" + ], + "eng_plate_temp": [ + "90" + ], + "hot_plate_temp": [ + "90" + ], + "textured_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_diameter": [ + "2.85" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.4 nozzle.json new file mode 100644 index 0000000000..5fd012ed93 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PA6 CF HT @0.4 nozzle", + "inherits": "Meltingplot PA6 CF HT", + "from": "system", + "setting_id": "yUlzU6KMVx8bpxj1", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "7" + ], + "slow_down_layer_time": [ + "4" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.6 nozzle.json new file mode 100644 index 0000000000..4ece916d20 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PA6 CF HT @0.6 nozzle", + "inherits": "Meltingplot PA6 CF HT", + "from": "system", + "setting_id": "9XzYyYbJ4jnO4nhJ", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "11" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.8 nozzle.json new file mode 100644 index 0000000000..b1b4d489f8 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PA6 CF HT @0.8 nozzle", + "inherits": "Meltingplot PA6 CF HT", + "from": "system", + "setting_id": "BMbLehqxegpSvMci", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "15" + ], + "slow_down_layer_time": [ + "15" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @1.0 nozzle.json new file mode 100644 index 0000000000..b2ab6f3cf5 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PA6 CF HT @1.0 nozzle", + "inherits": "Meltingplot PA6 CF HT", + "from": "system", + "setting_id": "7R3XuQlzD8IHq4PZ", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "18" + ], + "slow_down_layer_time": [ + "22" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT.json b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT.json new file mode 100644 index 0000000000..6b2852b4b2 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PA6 CF HT.json @@ -0,0 +1,94 @@ +{ + "type": "filament", + "name": "Meltingplot PA6 CF HT", + "inherits": "Generic PA-CF @System", + "from": "system", + "setting_id": "kzlYLTM6H5CgpQ8y", + "filament_id": "OFdPevOo", + "instantiation": "true", + "filament_vendor": [ + "Meltingplot" + ], + "nozzle_temperature": [ + "275" + ], + "nozzle_temperature_initial_layer": [ + "275" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "filament_density": [ + "1.25" + ], + "filament_cost": [ + "89" + ], + "default_filament_colour": [ + "#858078" + ], + "filament_shrink": [ + "99.9%" + ], + "filament_shrinkage_compensation_z": [ + "99.9%" + ], + "fan_min_speed": [ + "40" + ], + "fan_max_speed": [ + "100" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "95%" + ], + "additional_cooling_fan_speed": [ + "40" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "slow_down_layer_time": [ + "33" + ], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "hot_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_diameter": [ + "2.85" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.4 nozzle.json new file mode 100644 index 0000000000..f828906a7c --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PET-CF15 @0.4 nozzle", + "inherits": "Meltingplot PET-CF15", + "from": "system", + "setting_id": "2fkQa1BwTGZbSi2z", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "10" + ], + "slow_down_layer_time": [ + "1" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.6 nozzle.json new file mode 100644 index 0000000000..11b9bb2550 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PET-CF15 @0.6 nozzle", + "inherits": "Meltingplot PET-CF15", + "from": "system", + "setting_id": "PcNAj2kwuUNBAjQE", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "slow_down_layer_time": [ + "3" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.8 nozzle.json new file mode 100644 index 0000000000..20039024ce --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PET-CF15 @0.8 nozzle", + "inherits": "Meltingplot PET-CF15", + "from": "system", + "setting_id": "70EwKatuncZBKgoD", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "21" + ], + "slow_down_layer_time": [ + "5" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @1.0 nozzle.json new file mode 100644 index 0000000000..9913b5f812 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15 @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PET-CF15 @1.0 nozzle", + "inherits": "Meltingplot PET-CF15", + "from": "system", + "setting_id": "X2yhWBjK4j46bUYW", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "26" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15.json b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15.json new file mode 100644 index 0000000000..f932be9d05 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PET-CF15.json @@ -0,0 +1,91 @@ +{ + "type": "filament", + "name": "Meltingplot PET-CF15", + "inherits": "Generic PETG-CF @System", + "from": "system", + "setting_id": "IdqfEh7xRXKTYmV3", + "filament_id": "OFJdf5nt", + "instantiation": "true", + "filament_vendor": [ + "Meltingplot" + ], + "filament_type": [ + "PET-CF" + ], + "nozzle_temperature": [ + "280" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "filament_max_volumetric_speed": [ + "31" + ], + "filament_density": [ + "1.4" + ], + "filament_cost": [ + "77.5" + ], + "filament_shrink": [ + "99.9%" + ], + "filament_shrinkage_compensation_z": [ + "99.9%" + ], + "temperature_vitrification": [ + "125" + ], + "fan_min_speed": [ + "100" + ], + "fan_max_speed": [ + "100" + ], + "slow_down_layer_time": [ + "11" + ], + "cool_plate_temp": [ + "90" + ], + "eng_plate_temp": [ + "90" + ], + "hot_plate_temp": [ + "90" + ], + "textured_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_diameter": [ + "2.85" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.4 nozzle.json new file mode 100644 index 0000000000..55df65bb99 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PETG @0.4 nozzle", + "inherits": "Meltingplot PETG", + "from": "system", + "setting_id": "2ohDGd34awK2DVbV", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "9" + ], + "slow_down_layer_time": [ + "4" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.6 nozzle.json new file mode 100644 index 0000000000..5d77c69c8f --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PETG @0.6 nozzle", + "inherits": "Meltingplot PETG", + "from": "system", + "setting_id": "DZe1WokuOM5byttU", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "14" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.8 nozzle.json new file mode 100644 index 0000000000..4e5f16b411 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PETG @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PETG @0.8 nozzle", + "inherits": "Meltingplot PETG", + "from": "system", + "setting_id": "LwFY7N8Uisy6ivOV", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "18" + ], + "slow_down_layer_time": [ + "15" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PETG @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PETG @1.0 nozzle.json new file mode 100644 index 0000000000..cdc4620078 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PETG @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PETG @1.0 nozzle", + "inherits": "Meltingplot PETG", + "from": "system", + "setting_id": "kR8Vbizk0CPciCbD", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "23" + ], + "slow_down_layer_time": [ + "22" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PETG.json b/resources/profiles/Meltingplot/filament/Meltingplot PETG.json new file mode 100644 index 0000000000..d6ed4e25cb --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PETG.json @@ -0,0 +1,70 @@ +{ + "type": "filament", + "name": "Meltingplot PETG", + "inherits": "Generic PETG @System", + "from": "system", + "setting_id": "dsW7JrzWhKAY1fey", + "filament_id": "OFvlreVF", + "instantiation": "true", + "filament_vendor": [ + "Meltingplot" + ], + "nozzle_temperature": [ + "245" + ], + "nozzle_temperature_initial_layer": [ + "245" + ], + "filament_max_volumetric_speed": [ + "27" + ], + "filament_cost": [ + "35" + ], + "default_filament_colour": [ + "#123123" + ], + "fan_min_speed": [ + "50" + ], + "fan_cooling_layer_time": [ + "60" + ], + "slow_down_layer_time": [ + "33" + ], + "cool_plate_temp": [ + "90" + ], + "eng_plate_temp": [ + "90" + ], + "hot_plate_temp": [ + "90" + ], + "textured_plate_temp": [ + "90" + ], + "cool_plate_temp_initial_layer": [ + "90" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "filament_diameter": [ + "2.85" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.4 nozzle.json new file mode 100644 index 0000000000..4ec8bc1fb5 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PLA @0.4 nozzle", + "inherits": "Meltingplot PLA", + "from": "system", + "setting_id": "T3OEfrhyZ6ISyv20", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "11" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.6 nozzle.json new file mode 100644 index 0000000000..054bc03ab6 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PLA @0.6 nozzle", + "inherits": "Meltingplot PLA", + "from": "system", + "setting_id": "hsgzwjPc26BJ4sQu", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "slow_down_layer_time": [ + "17" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.8 nozzle.json new file mode 100644 index 0000000000..7fa45fc182 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PLA @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PLA @0.8 nozzle", + "inherits": "Meltingplot PLA", + "from": "system", + "setting_id": "cz6RkfsQ0hJE0hYG", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "22" + ], + "slow_down_layer_time": [ + "30" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PLA @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot PLA @1.0 nozzle.json new file mode 100644 index 0000000000..bbb19233db --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PLA @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot PLA @1.0 nozzle", + "inherits": "Meltingplot PLA", + "from": "system", + "setting_id": "H3n0VPl3CymiK9VN", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "27" + ], + "slow_down_layer_time": [ + "45" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot PLA.json b/resources/profiles/Meltingplot/filament/Meltingplot PLA.json new file mode 100644 index 0000000000..60575e7aa6 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot PLA.json @@ -0,0 +1,67 @@ +{ + "type": "filament", + "name": "Meltingplot PLA", + "inherits": "Generic PLA @System", + "from": "system", + "setting_id": "ONpaHlfJVJyh7Shb", + "filament_id": "OFwXRVbB", + "instantiation": "true", + "filament_vendor": [ + "Meltingplot" + ], + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "filament_cost": [ + "34.9" + ], + "default_filament_colour": [ + "#F8F8F8" + ], + "slow_down_layer_time": [ + "66" + ], + "slow_down_min_speed": [ + "15" + ], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "65" + ], + "eng_plate_temp_initial_layer": [ + "65" + ], + "hot_plate_temp_initial_layer": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "filament_diameter": [ + "2.85" + ], + "filament_max_volumetric_speed": [ + "33" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.4 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.4 nozzle.json new file mode 100644 index 0000000000..6804806002 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.4 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot TitanX @0.4 nozzle", + "inherits": "Meltingplot TitanX", + "from": "system", + "setting_id": "i5ttRpqpqF3Kg8IF", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "11" + ], + "slow_down_layer_time": [ + "4" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle", + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.6 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.6 nozzle.json new file mode 100644 index 0000000000..a80febac3f --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.6 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot TitanX @0.6 nozzle", + "inherits": "Meltingplot TitanX", + "from": "system", + "setting_id": "Vbm6NJb4il6QAU6v", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle", + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.8 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.8 nozzle.json new file mode 100644 index 0000000000..3815b36da9 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @0.8 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot TitanX @0.8 nozzle", + "inherits": "Meltingplot TitanX", + "from": "system", + "setting_id": "jYrElhVPtK2Dpb9K", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "22" + ], + "slow_down_layer_time": [ + "15" + ], + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle", + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot TitanX @1.0 nozzle.json b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @1.0 nozzle.json new file mode 100644 index 0000000000..51ccd444e2 --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot TitanX @1.0 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Meltingplot TitanX @1.0 nozzle", + "inherits": "Meltingplot TitanX", + "from": "system", + "setting_id": "lQDEFxTsxFsT5A4n", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "27" + ], + "slow_down_layer_time": [ + "22" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle", + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/filament/Meltingplot TitanX.json b/resources/profiles/Meltingplot/filament/Meltingplot TitanX.json new file mode 100644 index 0000000000..5082e6e19e --- /dev/null +++ b/resources/profiles/Meltingplot/filament/Meltingplot TitanX.json @@ -0,0 +1,61 @@ +{ + "type": "filament", + "name": "Meltingplot TitanX", + "inherits": "Generic ABS @System", + "from": "system", + "setting_id": "LDPRmxlvX97NXF0F", + "filament_id": "OFyYfgDM", + "instantiation": "true", + "filament_vendor": [ + "Meltingplot" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_shrink": [ + "99.75%" + ], + "filament_density": [ + "1.07" + ], + "slow_down_layer_time": [ + "33" + ], + "cool_plate_temp": [ + "110" + ], + "eng_plate_temp": [ + "110" + ], + "hot_plate_temp": [ + "110" + ], + "textured_plate_temp": [ + "110" + ], + "cool_plate_temp_initial_layer": [ + "110" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "110" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "filament_diameter": [ + "2.85" + ], + "filament_max_volumetric_speed": [ + "33" + ], + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle", + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.4 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.4 nozzle.json new file mode 100644 index 0000000000..c59db36162 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.4 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot CHX 350 0.4 nozzle", + "inherits": "fdm_machine_meltingplot_chx", + "from": "system", + "setting_id": "gyTKYZ8qKgen4dOM", + "instantiation": "true", + "printer_model": "Meltingplot CHX 350", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "min_layer_height": [ + "0.16" + ], + "max_layer_height": [ + "0.24" + ], + "printable_area": [ + "0x0", + "880x0", + "880x422", + "0x422" + ], + "printable_height": "943", + "default_print_profile": "0.18mm Fine 0.4 nozzle @Meltingplot CHX 350", + "default_filament_profile": [ + "Meltingplot PLA @0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.6 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.6 nozzle.json new file mode 100644 index 0000000000..bddf34e56a --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.6 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot CHX 350 0.6 nozzle", + "inherits": "fdm_machine_meltingplot_chx", + "from": "system", + "setting_id": "OeqLbNEMEImXnJBz", + "instantiation": "true", + "printer_model": "Meltingplot CHX 350", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "min_layer_height": [ + "0.24" + ], + "max_layer_height": [ + "0.36" + ], + "printable_area": [ + "0x0", + "880x0", + "880x422", + "0x422" + ], + "printable_height": "943", + "default_print_profile": "0.30mm Standard 0.6 nozzle @Meltingplot CHX 350", + "default_filament_profile": [ + "Meltingplot PLA @0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.8 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.8 nozzle.json new file mode 100644 index 0000000000..bb3a56b5ce --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 0.8 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Meltingplot CHX 350 0.8 nozzle", + "inherits": "fdm_machine_meltingplot_chx", + "from": "system", + "setting_id": "IlK23KWfTD7BLPpZ", + "instantiation": "true", + "printer_model": "Meltingplot CHX 350", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "min_layer_height": [ + "0.32" + ], + "max_layer_height": [ + "0.48" + ], + "printable_area": [ + "0x0", + "880x0", + "880x422", + "0x422" + ], + "printable_height": "943", + "default_print_profile": "0.38mm Standard 0.8 nozzle @Meltingplot CHX 350", + "default_filament_profile": [ + "Meltingplot PLA @0.8 nozzle" + ], + "min_resonance_avoidance_speed": "55", + "max_resonance_avoidance_speed": "115" +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 1.0 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 1.0 nozzle.json new file mode 100644 index 0000000000..0c2f656c94 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 1.0 nozzle.json @@ -0,0 +1,33 @@ +{ + "type": "machine", + "name": "Meltingplot CHX 350 1.0 nozzle", + "inherits": "fdm_machine_meltingplot_chx", + "from": "system", + "setting_id": "AGIxh7arXUPLFcnj", + "instantiation": "true", + "printer_model": "Meltingplot CHX 350", + "printer_variant": "1.0", + "nozzle_diameter": [ + "1.0" + ], + "min_layer_height": [ + "0.40" + ], + "max_layer_height": [ + "0.60" + ], + "printable_area": [ + "0x0", + "880x0", + "880x422", + "0x422" + ], + "printable_height": "943", + "default_print_profile": "0.48mm Optimal 1.0 nozzle @Meltingplot CHX 350", + "default_filament_profile": [ + "Meltingplot PLA @1.0 nozzle" + ], + "nozzle_type": [ + "hardened_steel" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 1.2 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 1.2 nozzle.json new file mode 100644 index 0000000000..fa511ee85a --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350 1.2 nozzle.json @@ -0,0 +1,33 @@ +{ + "type": "machine", + "name": "Meltingplot CHX 350 1.2 nozzle", + "inherits": "fdm_machine_meltingplot_chx", + "from": "system", + "setting_id": "xcwkp9Kdund0y4Zh", + "instantiation": "true", + "printer_model": "Meltingplot CHX 350", + "printer_variant": "1.2", + "nozzle_diameter": [ + "1.2" + ], + "min_layer_height": [ + "0.48" + ], + "max_layer_height": [ + "0.72" + ], + "printable_area": [ + "0x0", + "880x0", + "880x422", + "0x422" + ], + "printable_height": "943", + "default_print_profile": "0.56mm Optimal 1.2 nozzle @Meltingplot CHX 350", + "default_filament_profile": [ + "Meltingplot PLA" + ], + "nozzle_type": [ + "hardened_steel" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot CHX 350.json b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350.json new file mode 100644 index 0000000000..22d9b57d30 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Meltingplot CHX 350", + "model_id": "Meltingplot-CHX-350", + "nozzle_diameter": "0.4;0.6;0.8;1.0;1.2", + "machine_tech": "FFF", + "family": "Meltingplot", + "bed_model": "chx350-printbed.stl", + "bed_texture": "chx350-texture.svg", + "hotend_model": "", + "default_materials": "Meltingplot PLA @0.4 nozzle;Meltingplot PLA @0.6 nozzle;Meltingplot PLA @0.8 nozzle;Meltingplot PLA @1.0 nozzle;Meltingplot PLA;Meltingplot PETG @0.4 nozzle;Meltingplot PETG @0.6 nozzle;Meltingplot PETG @0.8 nozzle;Meltingplot PETG @1.0 nozzle;Meltingplot PETG;Meltingplot ABS @0.4 nozzle;Meltingplot ABS @0.6 nozzle;Meltingplot ABS @0.8 nozzle;Meltingplot ABS @1.0 nozzle;Meltingplot ABS;Meltingplot ASA @0.4 nozzle;Meltingplot ASA @0.6 nozzle;Meltingplot ASA @0.8 nozzle;Meltingplot ASA @1.0 nozzle;Meltingplot ASA" +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.4 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.4 nozzle.json new file mode 100644 index 0000000000..413b86a245 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.4 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 133 0.4 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "wyroTvO4uFQPS3Se", + "instantiation": "true", + "printer_model": "Meltingplot MBL 133", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "min_layer_height": [ + "0.16" + ], + "max_layer_height": [ + "0.24" + ], + "printable_area": [ + "0x0", + "835x0", + "835x405", + "0x405" + ], + "printable_height": "394", + "default_print_profile": "0.18mm Fine 0.4 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.6 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.6 nozzle.json new file mode 100644 index 0000000000..1f6e02ec96 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.6 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 133 0.6 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "QbxTZqa4I7jaXUzw", + "instantiation": "true", + "printer_model": "Meltingplot MBL 133", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "min_layer_height": [ + "0.24" + ], + "max_layer_height": [ + "0.36" + ], + "printable_area": [ + "0x0", + "835x0", + "835x405", + "0x405" + ], + "printable_height": "394", + "default_print_profile": "0.30mm Standard 0.6 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.8 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.8 nozzle.json new file mode 100644 index 0000000000..506acfdf6f --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 0.8 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 133 0.8 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "VXumP32DSNKwddyS", + "instantiation": "true", + "printer_model": "Meltingplot MBL 133", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "min_layer_height": [ + "0.32" + ], + "max_layer_height": [ + "0.48" + ], + "printable_area": [ + "0x0", + "835x0", + "835x405", + "0x405" + ], + "printable_height": "394", + "default_print_profile": "0.38mm Standard 0.8 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 1.0 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 1.0 nozzle.json new file mode 100644 index 0000000000..d4943d8642 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 1.0 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 133 1.0 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "A2a4j8nclQxokoHn", + "instantiation": "true", + "printer_model": "Meltingplot MBL 133", + "printer_variant": "1.0", + "nozzle_diameter": [ + "1.0" + ], + "min_layer_height": [ + "0.40" + ], + "max_layer_height": [ + "0.60" + ], + "printable_area": [ + "0x0", + "835x0", + "835x405", + "0x405" + ], + "printable_height": "394", + "default_print_profile": "0.48mm Optimal 1.0 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 1.2 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 1.2 nozzle.json new file mode 100644 index 0000000000..6107f64728 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133 1.2 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 133 1.2 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "wn8Ez4ZM1ubuftLv", + "instantiation": "true", + "printer_model": "Meltingplot MBL 133", + "printer_variant": "1.2", + "nozzle_diameter": [ + "1.2" + ], + "min_layer_height": [ + "0.48" + ], + "max_layer_height": [ + "0.72" + ], + "printable_area": [ + "0x0", + "835x0", + "835x405", + "0x405" + ], + "printable_height": "394", + "default_print_profile": "0.56mm Optimal 1.2 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 133.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133.json new file mode 100644 index 0000000000..5a8d76e344 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 133.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Meltingplot MBL 133", + "model_id": "Meltingplot-MBL-133", + "nozzle_diameter": "0.8;0.4;0.6;1.0;1.2", + "machine_tech": "FFF", + "family": "Meltingplot", + "bed_model": "mbl133-printbed.stl", + "bed_texture": "mbl-133-texture.svg", + "hotend_model": "", + "default_materials": "Meltingplot PLA @0.4 nozzle;Meltingplot PLA @0.6 nozzle;Meltingplot PLA @0.8 nozzle;Meltingplot PLA @1.0 nozzle;Meltingplot PLA;Meltingplot PETG @0.4 nozzle;Meltingplot PETG @0.6 nozzle;Meltingplot PETG @0.8 nozzle;Meltingplot PETG @1.0 nozzle;Meltingplot PETG;Meltingplot ABS @0.4 nozzle;Meltingplot ABS @0.6 nozzle;Meltingplot ABS @0.8 nozzle;Meltingplot ABS @1.0 nozzle;Meltingplot ABS;Meltingplot ASA @0.4 nozzle;Meltingplot ASA @0.6 nozzle;Meltingplot ASA @0.8 nozzle;Meltingplot ASA @1.0 nozzle;Meltingplot ASA" +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.4 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.4 nozzle.json new file mode 100644 index 0000000000..efcd27c2ec --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.4 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 136 0.4 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "Wv2F2INNahYnIP2n", + "instantiation": "true", + "printer_model": "Meltingplot MBL 136", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "min_layer_height": [ + "0.16" + ], + "max_layer_height": [ + "0.24" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "396", + "default_print_profile": "0.18mm Fine 0.4 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.6 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.6 nozzle.json new file mode 100644 index 0000000000..2bf1e00ae6 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.6 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 136 0.6 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "bmYfNrpRLtITsguf", + "instantiation": "true", + "printer_model": "Meltingplot MBL 136", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "min_layer_height": [ + "0.24" + ], + "max_layer_height": [ + "0.36" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "396", + "default_print_profile": "0.30mm Standard 0.6 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.8 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.8 nozzle.json new file mode 100644 index 0000000000..922ec96fce --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 0.8 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 136 0.8 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "9fv3aEc4tAsdeaPI", + "instantiation": "true", + "printer_model": "Meltingplot MBL 136", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "min_layer_height": [ + "0.32" + ], + "max_layer_height": [ + "0.48" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "396", + "default_print_profile": "0.38mm Standard 0.8 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 1.0 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 1.0 nozzle.json new file mode 100644 index 0000000000..0e1e6dadb7 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 1.0 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 136 1.0 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "l45hlHUCFi1UcGpM", + "instantiation": "true", + "printer_model": "Meltingplot MBL 136", + "printer_variant": "1.0", + "nozzle_diameter": [ + "1.0" + ], + "min_layer_height": [ + "0.40" + ], + "max_layer_height": [ + "0.60" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "396", + "default_print_profile": "0.48mm Optimal 1.0 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 1.2 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 1.2 nozzle.json new file mode 100644 index 0000000000..1fb6101070 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136 1.2 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 136 1.2 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "LAAqt3v5IkT75PMJ", + "instantiation": "true", + "printer_model": "Meltingplot MBL 136", + "printer_variant": "1.2", + "nozzle_diameter": [ + "1.2" + ], + "min_layer_height": [ + "0.48" + ], + "max_layer_height": [ + "0.72" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "396", + "default_print_profile": "0.56mm Optimal 1.2 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 136.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136.json new file mode 100644 index 0000000000..1afe141a6b --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 136.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Meltingplot MBL 136", + "model_id": "Meltingplot-MBL-136", + "nozzle_diameter": "0.8;0.4;0.6;1.0;1.2", + "machine_tech": "FFF", + "family": "Meltingplot", + "bed_model": "mbl136-printbed.stl", + "bed_texture": "mbl-136-texture.svg", + "hotend_model": "", + "default_materials": "Meltingplot PLA @0.4 nozzle;Meltingplot PLA @0.6 nozzle;Meltingplot PLA @0.8 nozzle;Meltingplot PLA @1.0 nozzle;Meltingplot PLA;Meltingplot PETG @0.4 nozzle;Meltingplot PETG @0.6 nozzle;Meltingplot PETG @0.8 nozzle;Meltingplot PETG @1.0 nozzle;Meltingplot PETG;Meltingplot ABS @0.4 nozzle;Meltingplot ABS @0.6 nozzle;Meltingplot ABS @0.8 nozzle;Meltingplot ABS @1.0 nozzle;Meltingplot ABS;Meltingplot ASA @0.4 nozzle;Meltingplot ASA @0.6 nozzle;Meltingplot ASA @0.8 nozzle;Meltingplot ASA @1.0 nozzle;Meltingplot ASA" +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.4 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.4 nozzle.json new file mode 100644 index 0000000000..2e3f428374 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.4 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 308 0.4 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "AbxDaZCTmysg7JTf", + "instantiation": "true", + "printer_model": "Meltingplot MBL 308", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "min_layer_height": [ + "0.16" + ], + "max_layer_height": [ + "0.24" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "896", + "default_print_profile": "0.18mm Fine 0.4 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.6 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.6 nozzle.json new file mode 100644 index 0000000000..d21e5b08df --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.6 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 308 0.6 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "YRQhtucLD6iZRcY0", + "instantiation": "true", + "printer_model": "Meltingplot MBL 308", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "min_layer_height": [ + "0.24" + ], + "max_layer_height": [ + "0.36" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "896", + "default_print_profile": "0.30mm Standard 0.6 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.8 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.8 nozzle.json new file mode 100644 index 0000000000..2feb7f2162 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 0.8 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 308 0.8 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "3scvx4P2vXtmoMmI", + "instantiation": "true", + "printer_model": "Meltingplot MBL 308", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "min_layer_height": [ + "0.32" + ], + "max_layer_height": [ + "0.48" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "896", + "default_print_profile": "0.38mm Standard 0.8 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 1.0 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 1.0 nozzle.json new file mode 100644 index 0000000000..dd54275283 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 1.0 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 308 1.0 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "VpAHWQ6v3aZLUIs1", + "instantiation": "true", + "printer_model": "Meltingplot MBL 308", + "printer_variant": "1.0", + "nozzle_diameter": [ + "1.0" + ], + "min_layer_height": [ + "0.40" + ], + "max_layer_height": [ + "0.60" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "896", + "default_print_profile": "0.48mm Optimal 1.0 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 1.2 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 1.2 nozzle.json new file mode 100644 index 0000000000..eb56bc5da6 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308 1.2 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 308 1.2 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "WuT3Qj2xyAPfDsXW", + "instantiation": "true", + "printer_model": "Meltingplot MBL 308", + "printer_variant": "1.2", + "nozzle_diameter": [ + "1.2" + ], + "min_layer_height": [ + "0.48" + ], + "max_layer_height": [ + "0.72" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "896", + "default_print_profile": "0.56mm Optimal 1.2 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 308.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308.json new file mode 100644 index 0000000000..7d43a425a7 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 308.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Meltingplot MBL 308", + "model_id": "Meltingplot-MBL-308", + "nozzle_diameter": "0.8;0.4;0.6;1.0;1.2", + "machine_tech": "FFF", + "family": "Meltingplot", + "bed_model": "mbl308-printbed.stl", + "bed_texture": "mbl-308-texture.svg", + "hotend_model": "", + "default_materials": "Meltingplot PLA @0.4 nozzle;Meltingplot PLA @0.6 nozzle;Meltingplot PLA @0.8 nozzle;Meltingplot PLA @1.0 nozzle;Meltingplot PLA;Meltingplot PETG @0.4 nozzle;Meltingplot PETG @0.6 nozzle;Meltingplot PETG @0.8 nozzle;Meltingplot PETG @1.0 nozzle;Meltingplot PETG;Meltingplot ABS @0.4 nozzle;Meltingplot ABS @0.6 nozzle;Meltingplot ABS @0.8 nozzle;Meltingplot ABS @1.0 nozzle;Meltingplot ABS;Meltingplot ASA @0.4 nozzle;Meltingplot ASA @0.6 nozzle;Meltingplot ASA @0.8 nozzle;Meltingplot ASA @1.0 nozzle;Meltingplot ASA" +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.4 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.4 nozzle.json new file mode 100644 index 0000000000..1638cf61e5 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.4 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 480 0.4 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "14E0ywGwPgPzuR7q", + "instantiation": "true", + "printer_model": "Meltingplot MBL 480", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "min_layer_height": [ + "0.16" + ], + "max_layer_height": [ + "0.24" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "1396", + "default_print_profile": "0.18mm Fine 0.4 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.6 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.6 nozzle.json new file mode 100644 index 0000000000..d727e6e540 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.6 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 480 0.6 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "RntAZ9kYe1JiK9qL", + "instantiation": "true", + "printer_model": "Meltingplot MBL 480", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "min_layer_height": [ + "0.24" + ], + "max_layer_height": [ + "0.36" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "1396", + "default_print_profile": "0.30mm Standard 0.6 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.8 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.8 nozzle.json new file mode 100644 index 0000000000..2ca80661af --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 0.8 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 480 0.8 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "3wnBTip16mjzuNaR", + "instantiation": "true", + "printer_model": "Meltingplot MBL 480", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "min_layer_height": [ + "0.32" + ], + "max_layer_height": [ + "0.48" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "1396", + "default_print_profile": "0.38mm Standard 0.8 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 1.0 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 1.0 nozzle.json new file mode 100644 index 0000000000..95a2b7a7da --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 1.0 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 480 1.0 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "KXzVlZQpxRpoYCZC", + "instantiation": "true", + "printer_model": "Meltingplot MBL 480", + "printer_variant": "1.0", + "nozzle_diameter": [ + "1.0" + ], + "min_layer_height": [ + "0.40" + ], + "max_layer_height": [ + "0.60" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "1396", + "default_print_profile": "0.48mm Optimal 1.0 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA @1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 1.2 nozzle.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 1.2 nozzle.json new file mode 100644 index 0000000000..2a992dc643 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480 1.2 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Meltingplot MBL 480 1.2 nozzle", + "inherits": "fdm_machine_meltingplot_mbl", + "from": "system", + "setting_id": "FhIoFCxemK2Miw2J", + "instantiation": "true", + "printer_model": "Meltingplot MBL 480", + "printer_variant": "1.2", + "nozzle_diameter": [ + "1.2" + ], + "min_layer_height": [ + "0.48" + ], + "max_layer_height": [ + "0.72" + ], + "printable_area": [ + "0x0", + "850x0", + "850x405", + "0x405" + ], + "printable_height": "1396", + "default_print_profile": "0.56mm Optimal 1.2 nozzle @Meltingplot MBL", + "default_filament_profile": [ + "Meltingplot PLA" + ] +} diff --git a/resources/profiles/Meltingplot/machine/Meltingplot MBL 480.json b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480.json new file mode 100644 index 0000000000..0360c5bcee --- /dev/null +++ b/resources/profiles/Meltingplot/machine/Meltingplot MBL 480.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Meltingplot MBL 480", + "model_id": "Meltingplot-MBL-480", + "nozzle_diameter": "0.8;0.4;0.6;1.0;1.2", + "machine_tech": "FFF", + "family": "Meltingplot", + "bed_model": "mbl480-printbed.stl", + "bed_texture": "mbl-480-texture.svg", + "hotend_model": "", + "default_materials": "Meltingplot PLA @0.4 nozzle;Meltingplot PLA @0.6 nozzle;Meltingplot PLA @0.8 nozzle;Meltingplot PLA @1.0 nozzle;Meltingplot PLA;Meltingplot PETG @0.4 nozzle;Meltingplot PETG @0.6 nozzle;Meltingplot PETG @0.8 nozzle;Meltingplot PETG @1.0 nozzle;Meltingplot PETG;Meltingplot ABS @0.4 nozzle;Meltingplot ABS @0.6 nozzle;Meltingplot ABS @0.8 nozzle;Meltingplot ABS @1.0 nozzle;Meltingplot ABS;Meltingplot ASA @0.4 nozzle;Meltingplot ASA @0.6 nozzle;Meltingplot ASA @0.8 nozzle;Meltingplot ASA @1.0 nozzle;Meltingplot ASA" +} diff --git a/resources/profiles/Meltingplot/machine/fdm_machine_common.json b/resources/profiles/Meltingplot/machine/fdm_machine_common.json new file mode 100644 index 0000000000..a27cc95405 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/fdm_machine_common.json @@ -0,0 +1,68 @@ +{ + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "printer_technology": "FFF", + "gcode_flavor": "reprapfirmware", + "host_type": "duet", + "disable_m73": "1", + "emit_machine_limits_to_gcode": "0", + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "machine_min_extruding_rate": [ + "0" + ], + "machine_min_travel_rate": [ + "0" + ], + "machine_max_speed_e": [ + "60" + ], + "printer_settings_id": "", + "resonance_avoidance": "0", + "retraction_length": [ + "0" + ], + "use_firmware_retraction": "1", + "retract_when_changing_layer": [ + "1" + ], + "retract_before_wipe": [ + "0%" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "wipe": [ + "0" + ], + "z_hop": [ + "0" + ], + "z_hop_types": [ + "Normal Lift" + ], + "travel_slope": [ + "1" + ], + "single_extruder_multi_material": "0", + "purge_in_prime_tower": "0", + "time_cost": "2", + "default_print_profile": "", + "change_filament_gcode": "", + "machine_pause_gcode": "M226", + "machine_end_gcode": "G90\nG1 Z{min(max_layer_z + 5, printable_height)} F600\nM98 P\"0:/sys/meltingplot/print_end\"", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\n" +} diff --git a/resources/profiles/Meltingplot/machine/fdm_machine_meltingplot_chx.json b/resources/profiles/Meltingplot/machine/fdm_machine_meltingplot_chx.json new file mode 100644 index 0000000000..f68678716e --- /dev/null +++ b/resources/profiles/Meltingplot/machine/fdm_machine_meltingplot_chx.json @@ -0,0 +1,71 @@ +{ + "type": "machine", + "name": "fdm_machine_meltingplot_chx", + "inherits": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "fan_kickstart": "0.5", + "fan_speedup_time": "1", + "machine_max_acceleration_e": [ + "3000" + ], + "machine_max_acceleration_extruding": [ + "6000" + ], + "machine_max_acceleration_retracting": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "6000" + ], + "machine_max_acceleration_x": [ + "6000" + ], + "machine_max_acceleration_y": [ + "6000" + ], + "machine_max_acceleration_z": [ + "400" + ], + "machine_max_jerk_e": [ + "33.33" + ], + "machine_max_jerk_x": [ + "12" + ], + "machine_max_jerk_y": [ + "12" + ], + "machine_max_jerk_z": [ + "1.2" + ], + "machine_max_speed_x": [ + "833.33" + ], + "machine_max_speed_y": [ + "1000" + ], + "machine_max_speed_z": [ + "30" + ], + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "20", + "extruder_clearance_height_to_lid": "150", + "nozzle_type": [ + "stainless_steel" + ], + "min_resonance_avoidance_speed": "40", + "max_resonance_avoidance_speed": "105", + "time_cost": "5", + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "60" + ], + "deretraction_speed": [ + "40" + ], + "printable_height": "943", + "machine_start_gcode": "M140 P0 S{first_layer_bed_temperature[0]} ; set bed temp\nG10 P0 S{first_layer_temperature[0]}\nM568 P0 R{first_layer_temperature[0] + standby_temperature_delta} S{first_layer_temperature[0]} A2\n\nM83 ; use relative distances for extrusion\nG90 ; use absolute coordinates\n\nM98 P\"0:/sys/meltingplot/print_start\"" +} diff --git a/resources/profiles/Meltingplot/machine/fdm_machine_meltingplot_mbl.json b/resources/profiles/Meltingplot/machine/fdm_machine_meltingplot_mbl.json new file mode 100644 index 0000000000..6d8f974073 --- /dev/null +++ b/resources/profiles/Meltingplot/machine/fdm_machine_meltingplot_mbl.json @@ -0,0 +1,69 @@ +{ + "type": "machine", + "name": "fdm_machine_meltingplot_mbl", + "inherits": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "fan_kickstart": "0.5", + "fan_speedup_time": "0.5", + "machine_max_acceleration_e": [ + "2500" + ], + "machine_max_acceleration_extruding": [ + "800" + ], + "machine_max_acceleration_retracting": [ + "1250" + ], + "machine_max_acceleration_travel": [ + "1500" + ], + "machine_max_acceleration_x": [ + "1500" + ], + "machine_max_acceleration_y": [ + "1500" + ], + "machine_max_acceleration_z": [ + "72" + ], + "machine_max_jerk_e": [ + "3" + ], + "machine_max_jerk_x": [ + "9" + ], + "machine_max_jerk_y": [ + "9" + ], + "machine_max_jerk_z": [ + "0.3" + ], + "machine_max_speed_x": [ + "240" + ], + "machine_max_speed_y": [ + "240" + ], + "machine_max_speed_z": [ + "12" + ], + "extruder_clearance_radius": "75", + "extruder_clearance_height_to_rod": "30", + "extruder_clearance_height_to_lid": "30", + "retraction_minimum_travel": [ + "4" + ], + "retraction_speed": [ + "35" + ], + "deretraction_speed": [ + "0" + ], + "thumbnails": [ + "64x64", + "400x300" + ], + "thumbnails_format": "PNG", + "machine_start_gcode": "M140 P0 S{first_layer_bed_temperature[0]} ; set bed temp\nG10 P0 R{first_layer_temperature[0] + standby_temperature_delta} S{first_layer_temperature[0]}\n\nM83 ; use relative distances for extrusion\nG90 ; use absolute coordinates\n\nM98 P\"0:/sys/meltingplot/print_start\"" +} diff --git a/resources/profiles/Meltingplot/mbl-133-texture.svg b/resources/profiles/Meltingplot/mbl-133-texture.svg new file mode 100644 index 0000000000..d7572a5a2e --- /dev/null +++ b/resources/profiles/Meltingplot/mbl-133-texture.svg @@ -0,0 +1,158 @@ + + + + + + image/svg+xml + + MBL133 + + + + + + MBL133 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/profiles/Meltingplot/mbl-136-texture.svg b/resources/profiles/Meltingplot/mbl-136-texture.svg new file mode 100644 index 0000000000..415bd0fdc0 --- /dev/null +++ b/resources/profiles/Meltingplot/mbl-136-texture.svg @@ -0,0 +1,158 @@ + + + + + + image/svg+xml + + MBL133 + + + + + + MBL133 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/profiles/Meltingplot/mbl-308-texture.svg b/resources/profiles/Meltingplot/mbl-308-texture.svg new file mode 100644 index 0000000000..96ee77c84d --- /dev/null +++ b/resources/profiles/Meltingplot/mbl-308-texture.svg @@ -0,0 +1,158 @@ + + + + + + image/svg+xml + + MBL133 + + + + + + MBL133 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/profiles/Meltingplot/mbl-480-texture.svg b/resources/profiles/Meltingplot/mbl-480-texture.svg new file mode 100644 index 0000000000..e76d969d72 --- /dev/null +++ b/resources/profiles/Meltingplot/mbl-480-texture.svg @@ -0,0 +1,158 @@ + + + + + + image/svg+xml + + MBL133 + + + + + + MBL133 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/profiles/Meltingplot/mbl133-printbed.stl b/resources/profiles/Meltingplot/mbl133-printbed.stl new file mode 100644 index 0000000000..888491edea Binary files /dev/null and b/resources/profiles/Meltingplot/mbl133-printbed.stl differ diff --git a/resources/profiles/Meltingplot/mbl136-printbed.stl b/resources/profiles/Meltingplot/mbl136-printbed.stl new file mode 100644 index 0000000000..ab25288591 Binary files /dev/null and b/resources/profiles/Meltingplot/mbl136-printbed.stl differ diff --git a/resources/profiles/Meltingplot/mbl308-printbed.stl b/resources/profiles/Meltingplot/mbl308-printbed.stl new file mode 100644 index 0000000000..ab25288591 Binary files /dev/null and b/resources/profiles/Meltingplot/mbl308-printbed.stl differ diff --git a/resources/profiles/Meltingplot/mbl480-printbed.stl b/resources/profiles/Meltingplot/mbl480-printbed.stl new file mode 100644 index 0000000000..ab25288591 Binary files /dev/null and b/resources/profiles/Meltingplot/mbl480-printbed.stl differ diff --git a/resources/profiles/Meltingplot/process/0.18mm Fine 0.4 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.18mm Fine 0.4 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..29b161150e --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.18mm Fine 0.4 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.18mm Fine 0.4 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_small_nozzle", + "from": "system", + "setting_id": "AbSOyKLL1fGceKJM", + "instantiation": "true", + "layer_height": "0.18", + "compatible_printers": [ + "Meltingplot CHX 350 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.18mm Fine 0.4 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.18mm Fine 0.4 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..09624e8d1d --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.18mm Fine 0.4 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.18mm Fine 0.4 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_04_nozzle", + "from": "system", + "setting_id": "WF0wYUMc1HUHPyVQ", + "instantiation": "true", + "layer_height": "0.18", + "compatible_printers": [ + "Meltingplot MBL 133 0.4 nozzle", + "Meltingplot MBL 136 0.4 nozzle", + "Meltingplot MBL 308 0.4 nozzle", + "Meltingplot MBL 480 0.4 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.24mm Fine 0.6 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.24mm Fine 0.6 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..b5114e1fee --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.24mm Fine 0.6 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.24mm Fine 0.6 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_small_nozzle", + "from": "system", + "setting_id": "KrZSDq4Tsnlnu0Dm", + "instantiation": "true", + "layer_height": "0.24", + "compatible_printers": [ + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.24mm Fine 0.6 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.24mm Fine 0.6 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..c6ff710938 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.24mm Fine 0.6 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.24mm Fine 0.6 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_06_nozzle", + "from": "system", + "setting_id": "9PDbCLSnBEocONzB", + "instantiation": "true", + "layer_height": "0.24", + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.28mm Optimal 0.6 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.28mm Optimal 0.6 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..476156be3a --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.28mm Optimal 0.6 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.28mm Optimal 0.6 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_small_nozzle", + "from": "system", + "setting_id": "RrsJ1yXD61T1Sk2u", + "instantiation": "true", + "layer_height": "0.28", + "compatible_printers": [ + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.28mm Optimal 0.6 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.28mm Optimal 0.6 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..4187f5f899 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.28mm Optimal 0.6 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.28mm Optimal 0.6 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_06_nozzle", + "from": "system", + "setting_id": "ewObaiyN5k5Jl17T", + "instantiation": "true", + "layer_height": "0.28", + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.30mm Standard 0.6 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.30mm Standard 0.6 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..90de66ee6e --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.30mm Standard 0.6 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.30mm Standard 0.6 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_small_nozzle", + "from": "system", + "setting_id": "nHe2gihvCHahJ4Pw", + "instantiation": "true", + "layer_height": "0.30", + "compatible_printers": [ + "Meltingplot CHX 350 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.30mm Standard 0.6 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.30mm Standard 0.6 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..6ef66db3bc --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.30mm Standard 0.6 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.30mm Standard 0.6 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_06_nozzle", + "from": "system", + "setting_id": "6exgbZxVLHjH3Bhd", + "instantiation": "true", + "layer_height": "0.30", + "compatible_printers": [ + "Meltingplot MBL 133 0.6 nozzle", + "Meltingplot MBL 136 0.6 nozzle", + "Meltingplot MBL 308 0.6 nozzle", + "Meltingplot MBL 480 0.6 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.32mm Fine 0.8 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.32mm Fine 0.8 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..285d6594aa --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.32mm Fine 0.8 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.32mm Fine 0.8 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_large_nozzle", + "from": "system", + "setting_id": "HSqTmgZq9mxKpWzq", + "instantiation": "true", + "layer_height": "0.32", + "compatible_printers": [ + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.34mm Fine 0.8 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.34mm Fine 0.8 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..1acc2ebb64 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.34mm Fine 0.8 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.34mm Fine 0.8 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_08_nozzle", + "from": "system", + "setting_id": "XVRHVR0F8UrpWAeP", + "instantiation": "true", + "layer_height": "0.34", + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.36mm Optimal 0.8 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.36mm Optimal 0.8 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..fc6c41bd75 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.36mm Optimal 0.8 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.36mm Optimal 0.8 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_large_nozzle", + "from": "system", + "setting_id": "KLnV7sCKomrmvKxU", + "instantiation": "true", + "layer_height": "0.36", + "compatible_printers": [ + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.36mm Optimal 0.8 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.36mm Optimal 0.8 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..9694cff7d9 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.36mm Optimal 0.8 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.36mm Optimal 0.8 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_08_nozzle", + "from": "system", + "setting_id": "WpPpQuf0jWaXQaPU", + "instantiation": "true", + "layer_height": "0.36", + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.38mm Standard 0.8 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.38mm Standard 0.8 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..40d74e2bb3 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.38mm Standard 0.8 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.38mm Standard 0.8 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_large_nozzle", + "from": "system", + "setting_id": "pKcgDKQM9IVmXiym", + "instantiation": "true", + "layer_height": "0.38", + "compatible_printers": [ + "Meltingplot CHX 350 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.38mm Standard 0.8 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.38mm Standard 0.8 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..c555721f40 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.38mm Standard 0.8 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.38mm Standard 0.8 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_08_nozzle", + "from": "system", + "setting_id": "IMZxMsLnd5IfiDFQ", + "instantiation": "true", + "layer_height": "0.38", + "compatible_printers": [ + "Meltingplot MBL 133 0.8 nozzle", + "Meltingplot MBL 136 0.8 nozzle", + "Meltingplot MBL 308 0.8 nozzle", + "Meltingplot MBL 480 0.8 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.44mm Fine 1.0 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.44mm Fine 1.0 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..4f8e9487d5 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.44mm Fine 1.0 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.44mm Fine 1.0 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_large_nozzle", + "from": "system", + "setting_id": "QLMHgE0vHGQWiuz7", + "instantiation": "true", + "layer_height": "0.44", + "compatible_printers": [ + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.44mm Fine 1.0 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.44mm Fine 1.0 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..4f321f0192 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.44mm Fine 1.0 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.44mm Fine 1.0 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_10_nozzle", + "from": "system", + "setting_id": "tjLfITsaMySQV6OC", + "instantiation": "true", + "layer_height": "0.44", + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.48mm Fine 1.2 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.48mm Fine 1.2 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..2df947e174 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.48mm Fine 1.2 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.48mm Fine 1.2 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_large_nozzle", + "from": "system", + "setting_id": "yzaZIGtEhvf2GGbl", + "instantiation": "true", + "layer_height": "0.48", + "compatible_printers": [ + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.48mm Fine 1.2 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.48mm Fine 1.2 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..7702399184 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.48mm Fine 1.2 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.48mm Fine 1.2 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_12_nozzle", + "from": "system", + "setting_id": "erJDLPP5pRQnGwoJ", + "instantiation": "true", + "layer_height": "0.48", + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.48mm Optimal 1.0 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.48mm Optimal 1.0 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..d88e9a538c --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.48mm Optimal 1.0 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.48mm Optimal 1.0 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_large_nozzle", + "from": "system", + "setting_id": "dZw2B5t8nN5lhyXI", + "instantiation": "true", + "layer_height": "0.48", + "compatible_printers": [ + "Meltingplot CHX 350 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.48mm Optimal 1.0 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.48mm Optimal 1.0 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..2b20bba856 --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.48mm Optimal 1.0 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.48mm Optimal 1.0 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_10_nozzle", + "from": "system", + "setting_id": "5wtjDWniGYAAtn79", + "instantiation": "true", + "layer_height": "0.48", + "compatible_printers": [ + "Meltingplot MBL 133 1.0 nozzle", + "Meltingplot MBL 136 1.0 nozzle", + "Meltingplot MBL 308 1.0 nozzle", + "Meltingplot MBL 480 1.0 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.56mm Optimal 1.2 nozzle @Meltingplot CHX 350.json b/resources/profiles/Meltingplot/process/0.56mm Optimal 1.2 nozzle @Meltingplot CHX 350.json new file mode 100644 index 0000000000..c29d827b2e --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.56mm Optimal 1.2 nozzle @Meltingplot CHX 350.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.56mm Optimal 1.2 nozzle @Meltingplot CHX 350", + "inherits": "fdm_process_meltingplot_chx_large_nozzle", + "from": "system", + "setting_id": "l6wYSAIFuyQFgT5X", + "instantiation": "true", + "layer_height": "0.56", + "compatible_printers": [ + "Meltingplot CHX 350 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/0.56mm Optimal 1.2 nozzle @Meltingplot MBL.json b/resources/profiles/Meltingplot/process/0.56mm Optimal 1.2 nozzle @Meltingplot MBL.json new file mode 100644 index 0000000000..f33064051a --- /dev/null +++ b/resources/profiles/Meltingplot/process/0.56mm Optimal 1.2 nozzle @Meltingplot MBL.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.56mm Optimal 1.2 nozzle @Meltingplot MBL", + "inherits": "fdm_process_meltingplot_mbl_12_nozzle", + "from": "system", + "setting_id": "i2aDrQXA45e6DpzC", + "instantiation": "true", + "layer_height": "0.56", + "compatible_printers": [ + "Meltingplot MBL 133 1.2 nozzle", + "Meltingplot MBL 136 1.2 nozzle", + "Meltingplot MBL 308 1.2 nozzle", + "Meltingplot MBL 480 1.2 nozzle" + ] +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_common.json b/resources/profiles/Meltingplot/process/fdm_process_common.json new file mode 100644 index 0000000000..ae3651d8fd --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_common.json @@ -0,0 +1,107 @@ +{ + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "reduce_crossing_wall": "0", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_thickness": "0", + "bridge_speed": "50", + "brim_width": "5", + "brim_object_gap": "0.1", + "compatible_printers": [], + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "1000", + "initial_layer_acceleration": "500", + "top_surface_acceleration": "1000", + "travel_acceleration": "1000", + "inner_wall_acceleration": "1000", + "outer_wall_acceleration": "700", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + "enable_arc_fitting": "0", + "wall_infill_order": "inner wall/outer wall/infill", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[initial_tool]}_{printer_model}_{print_time}.gcode", + "detect_overhang_wall": "1", + "slowdown_for_curled_perimeters": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "line_width": "110%", + "inner_wall_line_width": "110%", + "outer_wall_line_width": "100%", + "precise_outer_wall": "0", + "top_surface_line_width": "93.75%", + "sparse_infill_line_width": "110%", + "initial_layer_line_width": "120%", + "internal_solid_infill_line_width": "120%", + "support_line_width": "96%", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "3", + "min_skirt_length": "4", + "skirt_loops": "0", + "minimum_sparse_infill_area": "15", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_angle": "30", + "tree_support_wall_count": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_shell_thickness": "0.8", + "enable_prime_tower": "1", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "layer_height": "0.2", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "bridge_flow": "1", + "initial_layer_speed": "45", + "initial_layer_infill_speed": "45", + "outer_wall_speed": "45", + "inner_wall_speed": "80", + "sparse_infill_speed": "150", + "internal_solid_infill_speed": "150", + "top_surface_speed": "50", + "gap_infill_speed": "30", + "travel_speed": "200" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_common.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_common.json new file mode 100644 index 0000000000..2a27efcb54 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_common.json @@ -0,0 +1,39 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_chx_common", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "filename_format": "{input_filename_base}_L{layer_height}mm_N{nozzle_diameter[0]}_{filament_type[initial_tool]}_{printer_model}_{print_time}.gcode", + "brim_object_gap": "0", + "brim_type": "outer_only", + "default_acceleration": "6000", + "slowdown_for_curled_perimeters": "0", + "enable_support": "1", + "extrusion_rate_smoothing_external_perimeter_only": "1", + "gap_infill_speed": "250", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "500", + "initial_layer_infill_speed": "30", + "initial_layer_line_width": "120%", + "initial_layer_speed": "20", + "inner_wall_line_width": "110%", + "inner_wall_speed": "300", + "internal_solid_infill_line_width": "115%", + "internal_solid_infill_speed": "250", + "line_width": "120%", + "reduce_infill_retraction": "0", + "seam_gap": "0", + "skirt_speed": "20", + "skirt_type": "perobject", + "slow_down_layers": "3", + "sparse_infill_line_width": "110%", + "support_line_width": "110%", + "support_type": "tree(auto)", + "top_shell_layers": "5", + "top_surface_acceleration": "2000", + "top_surface_line_width": "110%", + "top_surface_speed": "200", + "travel_speed": "1000", + "wall_generator": "classic" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_large_nozzle.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_large_nozzle.json new file mode 100644 index 0000000000..63bf9517b0 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_large_nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_chx_large_nozzle", + "inherits": "fdm_process_meltingplot_chx_common", + "from": "system", + "instantiation": "false", + "bottom_shell_layers": "4", + "initial_layer_print_height": "0.5", + "inner_wall_acceleration": "6000", + "max_volumetric_extrusion_rate_slope": "300", + "outer_wall_acceleration": "2000", + "outer_wall_line_width": "110%", + "outer_wall_speed": "80", + "sparse_infill_pattern": "cubic", + "sparse_infill_speed": "300", + "support_base_pattern_spacing": "7.5", + "support_interface_speed": "80", + "support_object_first_layer_gap": "0.5", + "support_object_xy_distance": "0.45", + "support_speed": "200", + "support_style": "tree_slim", + "support_threshold_angle": "22", + "top_shell_thickness": "0.6", + "travel_acceleration": "6000", + "tree_support_tip_diameter": "1.2" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_small_nozzle.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_small_nozzle.json new file mode 100644 index 0000000000..95506dcd70 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_chx_small_nozzle.json @@ -0,0 +1,24 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_chx_small_nozzle", + "inherits": "fdm_process_meltingplot_chx_common", + "from": "system", + "instantiation": "false", + "bottom_shell_thickness": "2", + "default_jerk": "12", + "infill_jerk": "12", + "initial_layer_jerk": "5", + "initial_layer_print_height": "0.4", + "inner_wall_acceleration": "6000", + "outer_wall_acceleration": "3000", + "outer_wall_jerk": "6", + "outer_wall_line_width": "115%", + "outer_wall_speed": "220", + "sparse_infill_speed": "270", + "support_top_z_distance": "0.3", + "top_shell_thickness": "2", + "top_surface_jerk": "6", + "travel_acceleration": "6000", + "wall_sequence": "inner-outer-inner wall", + "wipe_before_external_loop": "1" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_04_nozzle.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_04_nozzle.json new file mode 100644 index 0000000000..bef0abf7e6 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_04_nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_mbl_04_nozzle", + "inherits": "fdm_process_meltingplot_mbl_common", + "from": "system", + "instantiation": "false", + "bridge_flow": "0.85", + "initial_layer_print_height": "0.3", + "line_width": "115%", + "inner_wall_line_width": "115%", + "outer_wall_line_width": "115%", + "sparse_infill_line_width": "115%", + "internal_solid_infill_line_width": "115%" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_06_nozzle.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_06_nozzle.json new file mode 100644 index 0000000000..e35d4446c1 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_06_nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_mbl_06_nozzle", + "inherits": "fdm_process_meltingplot_mbl_common", + "from": "system", + "instantiation": "false", + "bridge_flow": "0.65", + "initial_layer_print_height": "0.4", + "line_width": "120%", + "inner_wall_line_width": "120%", + "outer_wall_line_width": "110%", + "sparse_infill_line_width": "120%", + "internal_solid_infill_line_width": "120%" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_08_nozzle.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_08_nozzle.json new file mode 100644 index 0000000000..7548418e1f --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_08_nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_mbl_08_nozzle", + "inherits": "fdm_process_meltingplot_mbl_common", + "from": "system", + "instantiation": "false", + "bridge_flow": "0.5", + "initial_layer_print_height": "0.5", + "line_width": "120%", + "inner_wall_line_width": "120%", + "outer_wall_line_width": "115%", + "sparse_infill_line_width": "115%", + "internal_solid_infill_line_width": "120%" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_10_nozzle.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_10_nozzle.json new file mode 100644 index 0000000000..811916f197 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_10_nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_mbl_10_nozzle", + "inherits": "fdm_process_meltingplot_mbl_common", + "from": "system", + "instantiation": "false", + "bridge_flow": "0.4", + "initial_layer_print_height": "0.5", + "infill_wall_overlap": "15%", + "line_width": "120%", + "inner_wall_line_width": "120%", + "outer_wall_line_width": "110%", + "sparse_infill_line_width": "120%", + "internal_solid_infill_line_width": "120%" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_12_nozzle.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_12_nozzle.json new file mode 100644 index 0000000000..02f4221eb9 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_12_nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_mbl_12_nozzle", + "inherits": "fdm_process_meltingplot_mbl_common", + "from": "system", + "instantiation": "false", + "bridge_flow": "0.4", + "initial_layer_print_height": "0.5", + "infill_wall_overlap": "15%", + "line_width": "120%", + "inner_wall_line_width": "120%", + "outer_wall_line_width": "110%", + "sparse_infill_line_width": "120%", + "internal_solid_infill_line_width": "120%" +} diff --git a/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_common.json b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_common.json new file mode 100644 index 0000000000..0e94be6513 --- /dev/null +++ b/resources/profiles/Meltingplot/process/fdm_process_meltingplot_mbl_common.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "name": "fdm_process_meltingplot_mbl_common", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "filename_format": "{input_filename_base}_L{layer_height}mm_N{nozzle_diameter[0]}_{filament_type[initial_tool]}_{printer_model}_{print_time}.gcode", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0.8", + "bridge_speed": "20", + "slowdown_for_curled_perimeters": "0", + "default_acceleration": "0", + "initial_layer_acceleration": "0", + "inner_wall_acceleration": "0", + "outer_wall_acceleration": "0", + "top_surface_acceleration": "0", + "travel_acceleration": "0", + "detect_thin_wall": "1", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "0", + "enable_support": "0", + "gap_infill_speed": "42", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "30", + "initial_layer_line_width": "120%", + "initial_layer_speed": "20", + "inner_wall_speed": "45", + "internal_solid_infill_speed": "80", + "outer_wall_speed": "42", + "prime_tower_width": "60", + "resolution": "0.01", + "seam_position": "aligned", + "skirt_distance": "5", + "skirt_height": "1", + "skirt_loops": "3", + "small_perimeter_speed": "42", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "cubic", + "sparse_infill_speed": "80", + "standby_temperature_delta": "-100", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "5", + "support_interface_spacing": "0.2", + "support_interface_speed": "40", + "support_interface_top_layers": "4", + "support_interface_bottom_layers": "4", + "support_line_width": "100%", + "support_object_xy_distance": "0.2", + "support_on_build_plate_only": "1", + "support_speed": "50", + "support_style": "snug", + "support_threshold_angle": "55", + "support_top_z_distance": "0.1", + "top_shell_layers": "5", + "top_shell_thickness": "1", + "top_surface_line_width": "110%", + "top_surface_speed": "42", + "travel_speed": "350", + "wall_loops": "2" +} diff --git a/resources/profiles/OrcaArena.json b/resources/profiles/OrcaArena.json index dd5f307a95..9bb97fb232 100644 --- a/resources/profiles/OrcaArena.json +++ b/resources/profiles/OrcaArena.json @@ -1,7 +1,7 @@ { "name": "Orca Arena Printer", "url": "", - "version": "02.04.00.05", + "version": "02.04.00.07", "force_update": "0", "description": "Orca Arena configuration files", "machine_model_list": [ diff --git a/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json b/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json index aa166a4c90..8d543bac21 100644 --- a/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json +++ b/resources/profiles/OrcaArena/machine/Orca Arena X1 Carbon.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Orca Arena X1 Carbon", "model_id": "orca_arena_x1c", - "url": "", + "url": "https://www.orcaslicer.com", "nozzle_diameter": "0.4;0.2;0.6;0.8", "machine_tech": "FFF", "family": "ARENA-3DP", diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 68212a1d5e..fa97f3492f 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -1,6 +1,6 @@ { "name": "OrcaFilamentLibrary", - "version": "02.04.00.08", + "version": "02.04.00.10", "force_update": "0", "description": "Orca Filament Library", "filament_list": [ @@ -156,6 +156,10 @@ "name": "PolyLite ABS @base", "sub_path": "filament/Polymaker/PolyLite ABS @base.json" }, + { + "name": "Printalot ABS @base", + "sub_path": "filament/Printalot/Printalot ABS @base.json" + }, { "name": "Bambu ASA @base", "sub_path": "filament/Bambu/Bambu ASA @base.json" @@ -764,6 +768,10 @@ "name": "Panchroma PLA UV Shift @base", "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @base.json" }, + { + "name": "PlastAR PLA @base", + "sub_path": "filament/Printalot/PlastAR PLA @base.json" + }, { "name": "PolyLite PLA @base", "sub_path": "filament/Polymaker/PolyLite PLA @base.json" @@ -784,6 +792,10 @@ "name": "Polymaker HT-PLA-GF @base", "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @base.json" }, + { + "name": "Polymaker PLA Pro @base", + "sub_path": "filament/Polymaker/Polymaker PLA Pro @base.json" + }, { "name": "SUNLU PLA Marble @base", "sub_path": "filament/SUNLU/SUNLU Marble PLA @base.json" @@ -1016,6 +1028,10 @@ "name": "PolyLite ABS @System", "sub_path": "filament/Polymaker/PolyLite ABS @System.json" }, + { + "name": "Printalot ABS @System", + "sub_path": "filament/Printalot/Printalot ABS @System.json" + }, { "name": "Bambu ASA @System", "sub_path": "filament/Bambu/Bambu ASA @System.json" @@ -1900,6 +1916,10 @@ "name": "Panchroma PLA UV Shift @System", "sub_path": "filament/Polymaker/Panchroma PLA UV Shift @System.json" }, + { + "name": "PlastAR PLA @System", + "sub_path": "filament/Printalot/PlastAR PLA @System.json" + }, { "name": "PolyLite Dual PLA @base", "sub_path": "filament/Polymaker/PolyLite Dual PLA @base.json" @@ -1928,6 +1948,10 @@ "name": "Polymaker HT-PLA-GF @System", "sub_path": "filament/Polymaker/Polymaker HT-PLA-GF @System.json" }, + { + "name": "Polymaker PLA Pro @System", + "sub_path": "filament/Polymaker/Polymaker PLA Pro @System.json" + }, { "name": "SUNLU PLA Marble @System", "sub_path": "filament/SUNLU/SUNLU Marble PLA @System.json" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @System.json index 6f46fb74dd..5fac752fcf 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @System.json @@ -3,6 +3,7 @@ "name": "DREMC ABS @System", "inherits": "DREMC ABS @base", "from": "system", - "instantiation": "false", + "setting_id": "gNjISMxTLwQzDrV9", + "instantiation": "true", "compatible_printers": [] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @System.json index e9279cc5ba..0d0345828e 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @System.json @@ -3,6 +3,7 @@ "name": "DREMC ABS+ @System", "inherits": "DREMC ABS+ @base", "from": "system", - "instantiation": "false", + "setting_id": "M73sIwcpWv6zpFrb", + "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @System.json index 6a11bbe8ce..10d6626540 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @System.json @@ -3,6 +3,7 @@ "name": "DREMC ASA @System", "inherits": "DREMC ASA @base", "from": "system", - "instantiation": "false", + "setting_id": "PMulSQ0tYbNyvOYw", + "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @System.json index 6814312593..0e10750d78 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @System.json @@ -3,6 +3,7 @@ "name": "DREMC ASA CF @System", "inherits": "DREMC ASA CF @base", "from": "system", - "instantiation": "false", + "setting_id": "ZcipEKAqtBcAm6vR", + "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @System.json index e40cd71479..2d0f99fa1e 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @System.json @@ -3,6 +3,7 @@ "name": "DREMC ASA GF @System", "inherits": "DREMC ASA GF @base", "from": "system", - "instantiation": "false", + "setting_id": "8J3lt7KlQWcx0VUS", + "instantiation": "true", "compatible_printers": [] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @System.json index 0cecab4c3c..b126651441 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @System.json @@ -3,6 +3,7 @@ "name": "DREMC PA12-CF @System", "inherits": "DREMC PA12-CF @base", "from": "system", - "instantiation": "false", + "setting_id": "jVlZ1KPsA5i8RIED", + "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @System.json index 80100b072f..85efd31920 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @System.json @@ -3,6 +3,7 @@ "name": "DREMC PET-CF @System", "inherits": "DREMC PET-CF @base", "from": "system", - "instantiation": "false", + "setting_id": "hal1nPyBF13UL9qB", + "instantiation": "true", "compatible_printers": [] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @System.json index 04cfb22339..46f2cb9b20 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @System.json @@ -3,7 +3,8 @@ "name": "DREMC PETG @System", "inherits": "DREMC PETG @base", "from": "system", - "instantiation": "false", + "setting_id": "gTGiaBYfymmtlyfG", + "instantiation": "true", "filament_max_volumetric_speed": [ "20" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @System.json index a2b96c1862..8e98be30b8 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @System.json @@ -1,9 +1,10 @@ { "type": "filament", "name": "DREMC PLA+ HS @System", - "inherits": "DREMC PLA+ @base", + "inherits": "DREMC PLA+ HS @base", "from": "system", - "instantiation": "false", + "setting_id": "I0HWhYAZ3ppq91Gx", + "instantiation": "true", "filament_max_volumetric_speed": [ "22" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @System.json index 71ff24bb1b..869633969a 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @System.json @@ -3,7 +3,8 @@ "name": "DREMC PLA+ @System", "inherits": "DREMC PLA+ @base", "from": "system", - "instantiation": "false", + "setting_id": "fIjHIsFmdDWIM1bf", + "instantiation": "true", "filament_max_volumetric_speed": [ "18" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @System.json index 3b58f57d25..86d5d02151 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @System.json @@ -3,7 +3,8 @@ "name": "DREMC TPU 95A @System", "inherits": "DREMC TPU 95A @base", "from": "system", - "instantiation": "false", + "setting_id": "AfnFh14wKZsNEaZ1", + "instantiation": "true", "filament_max_volumetric_speed": [ "6" ], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json index 729e9d7b9c..972f5a4220 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/FilAr/FilAr PLA-mate @base.json @@ -33,15 +33,15 @@ "210" ], "hot_plate_temp": [ - "60" + "50" ], "hot_plate_temp_initial_layer": [ - "60" + "50" ], "textured_plate_temp": [ - "60" + "50" ], "textured_plate_temp_initial_layer": [ - "60" + "50" ] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker PLA Pro @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker PLA Pro @System.json new file mode 100644 index 0000000000..db1a73238a --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker PLA Pro @System.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Polymaker PLA Pro @System", + "inherits": "Polymaker PLA Pro @base", + "from": "system", + "setting_id": "i5Fvxdl7AAJcErsv", + "instantiation": "true", + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "15" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker PLA Pro @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker PLA Pro @base.json new file mode 100644 index 0000000000..b3878553fe --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Polymaker/Polymaker PLA Pro @base.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Polymaker PLA Pro @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OF5oXk4M", + "instantiation": "false", + "filament_density": [ + "1.23" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_vendor": [ + "Polymaker" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "temperature_vitrification": [ + "55" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Printalot/PlastAR PLA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/PlastAR PLA @System.json new file mode 100644 index 0000000000..3eb8940374 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/PlastAR PLA @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "PlastAR PLA @System", + "inherits": "PlastAR PLA @base", + "from": "system", + "setting_id": "BuWjJYav1gbWZacL", + "instantiation": "true", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Printalot/PlastAR PLA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/PlastAR PLA @base.json new file mode 100644 index 0000000000..6179da8788 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/PlastAR PLA @base.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "name": "PlastAR PLA @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "OFCTqYGM", + "instantiation": "false", + "filament_vendor": [ + "PlastAR" + ], + "filament_type": [ + "PLA" + ], + "filament_notes": "PlastAR PLA (Printalot budget line). Product page: https://printalot.com.ar/productos/filamentos/pla/plast-ar-pla-1-kg/ Community-contributed profile; not affiliated with or endorsed by Printalot.", + "filament_diameter": [ + "1.75" + ], + "filament_density": [ + "1.24" + ], + "filament_flow_ratio": [ + "0.98" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Printalot/Printalot ABS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/Printalot ABS @System.json new file mode 100644 index 0000000000..28dcf49bd2 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/Printalot ABS @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "Printalot ABS @System", + "inherits": "Printalot ABS @base", + "from": "system", + "setting_id": "yIAtpMcQarjl45T7", + "instantiation": "true", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Printalot/Printalot ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/Printalot ABS @base.json new file mode 100644 index 0000000000..073dc5c47d --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Printalot/Printalot ABS @base.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "name": "Printalot ABS @base", + "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "OFgq39c2", + "instantiation": "false", + "filament_vendor": [ + "Printalot" + ], + "filament_type": [ + "ABS" + ], + "filament_notes": "Printalot ABS. Product page: https://printalot.com.ar/productos/filamentos/abs/abs-1-kg/ Community-contributed profile; not affiliated with or endorsed by Printalot.", + "filament_diameter": [ + "1.75" + ], + "filament_density": [ + "1.05" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_retraction_length": [ + "0.2" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ] +} diff --git a/resources/profiles/RH3D.json b/resources/profiles/RH3D.json index dbf9500ca0..3e177c5efd 100644 --- a/resources/profiles/RH3D.json +++ b/resources/profiles/RH3D.json @@ -1,12 +1,16 @@ { "name": "RH3D", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "RH3D - printer profiles", "machine_model_list": [ { "name": "E3NG v1.2S", "sub_path": "machine/E3NG v1.2S.json" + }, + { + "name": "VIRTU E3", + "sub_path": "machine/VIRTU E3.json" } ], "machine_list": [ @@ -18,6 +22,10 @@ "name": "fdm_common_E3NG v1.2S", "sub_path": "machine/fdm_common_E3NG v1.2S.json" }, + { + "name": "fdm_common_VIRTU E3", + "sub_path": "machine/fdm_common_VIRTU E3.json" + }, { "name": "E3NG v1.2S - 0.2 nozzle", "sub_path": "machine/E3NG v1.2S - 0.2 nozzle.json" @@ -37,6 +45,26 @@ { "name": "E3NG v1.2S - 0.6 nozzle", "sub_path": "machine/E3NG v1.2S - 0.6 nozzle.json" + }, + { + "name": "VIRTU E3 - 0.2 nozzle", + "sub_path": "machine/VIRTU E3 - 0.2 nozzle.json" + }, + { + "name": "VIRTU E3 - 0.3 nozzle", + "sub_path": "machine/VIRTU E3 - 0.3 nozzle.json" + }, + { + "name": "VIRTU E3 - 0.4 nozzle", + "sub_path": "machine/VIRTU E3 - 0.4 nozzle.json" + }, + { + "name": "VIRTU E3 - 0.5 nozzle", + "sub_path": "machine/VIRTU E3 - 0.5 nozzle.json" + }, + { + "name": "VIRTU E3 - 0.6 nozzle", + "sub_path": "machine/VIRTU E3 - 0.6 nozzle.json" } ], "process_list": [ @@ -45,8 +73,92 @@ "sub_path": "process/fdm_process_common.json" }, { - "name": "process_common_E3NG v1.2S", - "sub_path": "process/process_common_E3NG v1.2S.json" + "name": "process_Fast_E3NG v1.2S", + "sub_path": "process/process_Fast_E3NG v1.2S.json" + }, + { + "name": "process_Fast_VIRTU E3", + "sub_path": "process/process_Fast_VIRTU E3.json" + }, + { + "name": "process_Slow_E3NG v1.2S", + "sub_path": "process/process_Slow_E3NG v1.2S.json" + }, + { + "name": "process_Slow_VIRTU E3", + "sub_path": "process/process_Slow_VIRTU E3.json" + }, + { + "name": "process_Standard_E3NG v1.2S", + "sub_path": "process/process_Standard_E3NG v1.2S.json" + }, + { + "name": "process_Standard_VIRTU E3", + "sub_path": "process/process_Standard_VIRTU E3.json" + }, + { + "name": "0.10mm Fast @E3NG v1.2S", + "sub_path": "process/0.10mm Fast @E3NG v1.2S.json" + }, + { + "name": "0.15mm Fast @E3NG v1.2S", + "sub_path": "process/0.15mm Fast @E3NG v1.2S.json" + }, + { + "name": "0.20mm Fast @E3NG v1.2S", + "sub_path": "process/0.20mm Fast @E3NG v1.2S.json" + }, + { + "name": "0.25mm Fast @E3NG v1.2S", + "sub_path": "process/0.25mm Fast @E3NG v1.2S.json" + }, + { + "name": "0.10mm Fast @VIRTU E3", + "sub_path": "process/0.10mm Fast @VIRTU E3.json" + }, + { + "name": "0.15mm Fast @VIRTU E3", + "sub_path": "process/0.15mm Fast @VIRTU E3.json" + }, + { + "name": "0.20mm Fast @VIRTU E3", + "sub_path": "process/0.20mm Fast @VIRTU E3.json" + }, + { + "name": "0.25mm Fast @VIRTU E3", + "sub_path": "process/0.25mm Fast @VIRTU E3.json" + }, + { + "name": "0.10mm Slow @E3NG v1.2S", + "sub_path": "process/0.10mm Slow @E3NG v1.2S.json" + }, + { + "name": "0.15mm Slow @E3NG v1.2S", + "sub_path": "process/0.15mm Slow @E3NG v1.2S.json" + }, + { + "name": "0.20mm Slow @E3NG v1.2S", + "sub_path": "process/0.20mm Slow @E3NG v1.2S.json" + }, + { + "name": "0.25mm Slow @E3NG v1.2S", + "sub_path": "process/0.25mm Slow @E3NG v1.2S.json" + }, + { + "name": "0.10mm Slow @VIRTU E3", + "sub_path": "process/0.10mm Slow @VIRTU E3.json" + }, + { + "name": "0.15mm Slow @VIRTU E3", + "sub_path": "process/0.15mm Slow @VIRTU E3.json" + }, + { + "name": "0.20mm Slow @VIRTU E3", + "sub_path": "process/0.20mm Slow @VIRTU E3.json" + }, + { + "name": "0.25mm Slow @VIRTU E3", + "sub_path": "process/0.25mm Slow @VIRTU E3.json" }, { "name": "0.10mm Standard @E3NG v1.2S", @@ -56,25 +168,29 @@ "name": "0.15mm Standard @E3NG v1.2S", "sub_path": "process/0.15mm Standard @E3NG v1.2S.json" }, - { - "name": "0.20mm Fast @E3NG v1.2S", - "sub_path": "process/0.20mm Fast @E3NG v1.2S.json" - }, - { - "name": "0.20mm Slow @E3NG v1.2S", - "sub_path": "process/0.20mm Slow @E3NG v1.2S.json" - }, { "name": "0.20mm Standard @E3NG v1.2S", "sub_path": "process/0.20mm Standard @E3NG v1.2S.json" }, - { - "name": "0.25mm Fast @E3NG v1.2S", - "sub_path": "process/0.25mm Fast @E3NG v1.2S.json" - }, { "name": "0.25mm Standard @E3NG v1.2S", "sub_path": "process/0.25mm Standard @E3NG v1.2S.json" + }, + { + "name": "0.10mm Standard @VIRTU E3", + "sub_path": "process/0.10mm Standard @VIRTU E3.json" + }, + { + "name": "0.15mm Standard @VIRTU E3", + "sub_path": "process/0.15mm Standard @VIRTU E3.json" + }, + { + "name": "0.20mm Standard @VIRTU E3", + "sub_path": "process/0.20mm Standard @VIRTU E3.json" + }, + { + "name": "0.25mm Standard @VIRTU E3", + "sub_path": "process/0.25mm Standard @VIRTU E3.json" } ], "filament_list": [ @@ -110,25 +226,49 @@ "name": "Generic ABS @E3NG v1.2S", "sub_path": "filament/Generic ABS @E3NG v1.2S.json" }, + { + "name": "Generic ABS @VIRTU E3", + "sub_path": "filament/Generic ABS @VIRTU E3.json" + }, { "name": "Generic ASA @E3NG v1.2S", "sub_path": "filament/Generic ASA @E3NG v1.2S.json" }, + { + "name": "Generic ASA @VIRTU E3", + "sub_path": "filament/Generic ASA @VIRTU E3.json" + }, { "name": "Generic PCCF @E3NG v1.2S", "sub_path": "filament/Generic PCCF @E3NG v1.2S.json" }, + { + "name": "Generic PCCF @VIRTU E3", + "sub_path": "filament/Generic PCCF @VIRTU E3.json" + }, { "name": "Generic PETG @E3NG v1.2S", "sub_path": "filament/Generic PETG @E3NG v1.2S.json" }, + { + "name": "Generic PETG @VIRTU E3", + "sub_path": "filament/Generic PETG @VIRTU E3.json" + }, { "name": "Generic PLA @E3NG v1.2S", "sub_path": "filament/Generic PLA @E3NG v1.2S.json" }, + { + "name": "Generic PLA @VIRTU E3", + "sub_path": "filament/Generic PLA @VIRTU E3.json" + }, { "name": "Generic TPU @E3NG v1.2S", "sub_path": "filament/Generic TPU @E3NG v1.2S.json" + }, + { + "name": "Generic TPU @VIRTU E3", + "sub_path": "filament/Generic TPU @VIRTU E3.json" } ] } diff --git a/resources/profiles/RH3D/E3NG v1.2S_cover.png b/resources/profiles/RH3D/E3NG v1.2S_cover.png index 03bb5a9e42..f70e2ed35f 100644 Binary files a/resources/profiles/RH3D/E3NG v1.2S_cover.png and b/resources/profiles/RH3D/E3NG v1.2S_cover.png differ diff --git a/resources/profiles/RH3D/E3NG-bed-texture.svg b/resources/profiles/RH3D/E3NG-bed-texture.svg index 2cc13e29ad..93e944d534 100644 --- a/resources/profiles/RH3D/E3NG-bed-texture.svg +++ b/resources/profiles/RH3D/E3NG-bed-texture.svg @@ -1 +1,443 @@ - \ No newline at end of file + + diff --git a/resources/profiles/RH3D/VIRTU E3_cover.png b/resources/profiles/RH3D/VIRTU E3_cover.png new file mode 100644 index 0000000000..085b853cc0 Binary files /dev/null and b/resources/profiles/RH3D/VIRTU E3_cover.png differ diff --git a/resources/profiles/RH3D/VIRTU-bed-texture.svg b/resources/profiles/RH3D/VIRTU-bed-texture.svg new file mode 100644 index 0000000000..802310f8d5 --- /dev/null +++ b/resources/profiles/RH3D/VIRTU-bed-texture.svg @@ -0,0 +1,460 @@ + + diff --git a/resources/profiles/RH3D/VIRTU-bed.stl b/resources/profiles/RH3D/VIRTU-bed.stl new file mode 100644 index 0000000000..c26e99e419 Binary files /dev/null and b/resources/profiles/RH3D/VIRTU-bed.stl differ diff --git a/resources/profiles/RH3D/filament/Generic ABS @VIRTU E3.json b/resources/profiles/RH3D/filament/Generic ABS @VIRTU E3.json new file mode 100644 index 0000000000..be6f94b304 --- /dev/null +++ b/resources/profiles/RH3D/filament/Generic ABS @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic ABS @VIRTU E3", + "inherits": "fdm_filament_abs", + "from": "system", + "setting_id": "AULhQhVApTASqF2p", + "filament_id": "OFY9muEs", + "instantiation": "true", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/filament/Generic ASA @VIRTU E3.json b/resources/profiles/RH3D/filament/Generic ASA @VIRTU E3.json new file mode 100644 index 0000000000..c2626f57c6 --- /dev/null +++ b/resources/profiles/RH3D/filament/Generic ASA @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic ASA @VIRTU E3", + "inherits": "fdm_filament_asa", + "from": "system", + "setting_id": "yJa8PC5f8c4uYgny", + "filament_id": "OFLPAxz3", + "instantiation": "true", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/filament/Generic PCCF @VIRTU E3.json b/resources/profiles/RH3D/filament/Generic PCCF @VIRTU E3.json new file mode 100644 index 0000000000..c8a7f3f800 --- /dev/null +++ b/resources/profiles/RH3D/filament/Generic PCCF @VIRTU E3.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic PCCF @VIRTU E3", + "inherits": "fdm_filament_pccf", + "from": "system", + "setting_id": "5byL7KQPKyybDAgQ", + "filament_id": "OFC5f4Ay", + "instantiation": "true", + "compatible_printers": [ + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/filament/Generic PETG @VIRTU E3.json b/resources/profiles/RH3D/filament/Generic PETG @VIRTU E3.json new file mode 100644 index 0000000000..2e39f9e1d9 --- /dev/null +++ b/resources/profiles/RH3D/filament/Generic PETG @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PETG @VIRTU E3", + "inherits": "fdm_filament_petg", + "from": "system", + "setting_id": "OAN1Ozk75r0ODvVw", + "filament_id": "OFYPdQJh", + "instantiation": "true", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/filament/Generic PLA @VIRTU E3.json b/resources/profiles/RH3D/filament/Generic PLA @VIRTU E3.json new file mode 100644 index 0000000000..394a92f0c8 --- /dev/null +++ b/resources/profiles/RH3D/filament/Generic PLA @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Generic PLA @VIRTU E3", + "inherits": "fdm_filament_pla", + "from": "system", + "setting_id": "DgSFTqNWfJEp0w9f", + "filament_id": "OFDSrzZ8", + "instantiation": "true", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/filament/Generic TPU @VIRTU E3.json b/resources/profiles/RH3D/filament/Generic TPU @VIRTU E3.json new file mode 100644 index 0000000000..ff816313da --- /dev/null +++ b/resources/profiles/RH3D/filament/Generic TPU @VIRTU E3.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic TPU @VIRTU E3", + "inherits": "fdm_filament_tpu", + "from": "system", + "setting_id": "ifG0f5hgJ7L9zw34", + "filament_id": "OFgbpcy9", + "instantiation": "true", + "compatible_printers": [ + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/filament/fdm_filament_abs.json b/resources/profiles/RH3D/filament/fdm_filament_abs.json index f4ab005733..2aab3d25ba 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_abs.json +++ b/resources/profiles/RH3D/filament/fdm_filament_abs.json @@ -26,10 +26,10 @@ "55" ], "fan_cooling_layer_time": [ - "10" + "12" ], "filament_max_volumetric_speed": [ - "32" + "24" ], "filament_type": [ "ABS" @@ -75,9 +75,9 @@ "275" ], "slow_down_min_speed": [ - "10" + "20" ], "slow_down_layer_time": [ - "2" + "4" ] } diff --git a/resources/profiles/RH3D/filament/fdm_filament_asa.json b/resources/profiles/RH3D/filament/fdm_filament_asa.json index ac03beef13..cbf4f5dc36 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_asa.json +++ b/resources/profiles/RH3D/filament/fdm_filament_asa.json @@ -26,10 +26,10 @@ "55" ], "fan_cooling_layer_time": [ - "10" + "12" ], "filament_max_volumetric_speed": [ - "32" + "24" ], "filament_type": [ "ASA" @@ -54,7 +54,7 @@ "50" ], "fan_min_speed": [ - "10" + "15" ], "overhang_fan_threshold": [ "25%" @@ -75,9 +75,9 @@ "275" ], "slow_down_min_speed": [ - "10" + "20" ], "slow_down_layer_time": [ - "2" + "4" ] } diff --git a/resources/profiles/RH3D/filament/fdm_filament_common.json b/resources/profiles/RH3D/filament/fdm_filament_common.json index 576ae24a48..fe143ce05b 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_common.json +++ b/resources/profiles/RH3D/filament/fdm_filament_common.json @@ -22,7 +22,7 @@ "60" ], "overhang_fan_threshold": [ - "95%" + "25%" ], "overhang_fan_speed": [ "100" @@ -40,10 +40,10 @@ "1" ], "reduce_fan_stop_start_freq": [ - "0" + "1" ], "fan_cooling_layer_time": [ - "15" + "20" ], "filament_cost": [ "0" @@ -51,6 +51,9 @@ "filament_density": [ "0" ], + "filament_change_length": [ + "0" + ], "filament_deretraction_speed": [ "nil" ], @@ -61,7 +64,7 @@ "10" ], "filament_minimal_purge_on_wipe_tower": [ - "40" + "50" ], "filament_retraction_minimum_travel": [ "nil" @@ -115,13 +118,13 @@ "100" ], "fan_min_speed": [ - "10" + "20" ], "slow_down_min_speed": [ - "10" + "20" ], "slow_down_layer_time": [ - "3" + "7" ], "filament_start_gcode": [ "; Filament gcode\n" diff --git a/resources/profiles/RH3D/filament/fdm_filament_pccf.json b/resources/profiles/RH3D/filament/fdm_filament_pccf.json index 4296da76c5..401ab2eb23 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_pccf.json +++ b/resources/profiles/RH3D/filament/fdm_filament_pccf.json @@ -26,7 +26,7 @@ "55" ], "fan_cooling_layer_time": [ - "10" + "12" ], "filament_max_volumetric_speed": [ "8" @@ -75,9 +75,9 @@ "330" ], "slow_down_min_speed": [ - "10" + "20" ], "slow_down_layer_time": [ - "2" + "4" ] } diff --git a/resources/profiles/RH3D/filament/fdm_filament_petg.json b/resources/profiles/RH3D/filament/fdm_filament_petg.json index aaa0f62357..8a69c94f7d 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_petg.json +++ b/resources/profiles/RH3D/filament/fdm_filament_petg.json @@ -23,10 +23,10 @@ "90" ], "fan_cooling_layer_time": [ - "10" + "15" ], "filament_max_volumetric_speed": [ - "26" + "18" ], "filament_type": [ "PETG" @@ -72,9 +72,9 @@ "260" ], "slow_down_min_speed": [ - "12" + "20" ], "slow_down_layer_time": [ - "3" + "6" ] } diff --git a/resources/profiles/RH3D/filament/fdm_filament_pla.json b/resources/profiles/RH3D/filament/fdm_filament_pla.json index 873a78461b..770af83296 100644 --- a/resources/profiles/RH3D/filament/fdm_filament_pla.json +++ b/resources/profiles/RH3D/filament/fdm_filament_pla.json @@ -72,9 +72,9 @@ "250" ], "slow_down_min_speed": [ - "10" + "20" ], "slow_down_layer_time": [ - "6" + "8" ] } diff --git a/resources/profiles/RH3D/machine/VIRTU E3 - 0.2 nozzle.json b/resources/profiles/RH3D/machine/VIRTU E3 - 0.2 nozzle.json new file mode 100644 index 0000000000..8814f25e0c --- /dev/null +++ b/resources/profiles/RH3D/machine/VIRTU E3 - 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "machine", + "name": "VIRTU E3 - 0.2 nozzle", + "printer_model": "VIRTU E3", + "inherits": "fdm_common_VIRTU E3", + "from": "system", + "setting_id": "NEqwtUJ9txtcf1vY", + "instantiation": "true", + "default_print_profile": "0.10mm Standard @VIRTU E3", + "nozzle_diameter": [ + "0.2" + ], + "printer_variant": "0.2" +} diff --git a/resources/profiles/RH3D/machine/VIRTU E3 - 0.3 nozzle.json b/resources/profiles/RH3D/machine/VIRTU E3 - 0.3 nozzle.json new file mode 100644 index 0000000000..4c27b80bb8 --- /dev/null +++ b/resources/profiles/RH3D/machine/VIRTU E3 - 0.3 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "machine", + "name": "VIRTU E3 - 0.3 nozzle", + "printer_model": "VIRTU E3", + "inherits": "fdm_common_VIRTU E3", + "from": "system", + "setting_id": "3PjlEiZxmdLJjoGw", + "instantiation": "true", + "default_print_profile": "0.15mm Standard @VIRTU E3", + "nozzle_diameter": [ + "0.3" + ], + "printer_variant": "0.3" +} diff --git a/resources/profiles/RH3D/machine/VIRTU E3 - 0.4 nozzle.json b/resources/profiles/RH3D/machine/VIRTU E3 - 0.4 nozzle.json new file mode 100644 index 0000000000..7b02993a2b --- /dev/null +++ b/resources/profiles/RH3D/machine/VIRTU E3 - 0.4 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "machine", + "name": "VIRTU E3 - 0.4 nozzle", + "printer_model": "VIRTU E3", + "inherits": "fdm_common_VIRTU E3", + "from": "system", + "setting_id": "mYCTx4ovF6z0STDL", + "instantiation": "true", + "default_print_profile": "0.20mm Standard @VIRTU E3", + "nozzle_diameter": [ + "0.4" + ], + "printer_variant": "0.4" +} diff --git a/resources/profiles/RH3D/machine/VIRTU E3 - 0.5 nozzle.json b/resources/profiles/RH3D/machine/VIRTU E3 - 0.5 nozzle.json new file mode 100644 index 0000000000..660dd35305 --- /dev/null +++ b/resources/profiles/RH3D/machine/VIRTU E3 - 0.5 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "machine", + "name": "VIRTU E3 - 0.5 nozzle", + "printer_model": "VIRTU E3", + "inherits": "fdm_common_VIRTU E3", + "from": "system", + "setting_id": "iMnENFt2zw6UTcbM", + "instantiation": "true", + "default_print_profile": "0.20mm Standard @VIRTU E3", + "nozzle_diameter": [ + "0.5" + ], + "printer_variant": "0.5" +} diff --git a/resources/profiles/RH3D/machine/VIRTU E3 - 0.6 nozzle.json b/resources/profiles/RH3D/machine/VIRTU E3 - 0.6 nozzle.json new file mode 100644 index 0000000000..bce4e91736 --- /dev/null +++ b/resources/profiles/RH3D/machine/VIRTU E3 - 0.6 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "machine", + "name": "VIRTU E3 - 0.6 nozzle", + "printer_model": "VIRTU E3", + "inherits": "fdm_common_VIRTU E3", + "from": "system", + "setting_id": "T1RuDWhyFkI1GH1h", + "instantiation": "true", + "default_print_profile": "0.25mm Standard @VIRTU E3", + "nozzle_diameter": [ + "0.6" + ], + "printer_variant": "0.6" +} diff --git a/resources/profiles/RH3D/machine/VIRTU E3.json b/resources/profiles/RH3D/machine/VIRTU E3.json new file mode 100644 index 0000000000..f34fa3aefe --- /dev/null +++ b/resources/profiles/RH3D/machine/VIRTU E3.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "VIRTU E3", + "nozzle_diameter": "0.2;0.3;0.4;0.5;0.6", + "bed_model": "VIRTU-bed.stl", + "bed_texture": "VIRTU-bed-texture.svg", + "model_id": "VIRTUE3", + "family": "RH3D", + "hotend_model": "", + "machine_tech": "FFF", + "default_materials": "Generic ABS @VIRTU E3;Generic ASA @VIRTU E3;Generic PCCF @VIRTU E3;Generic PETG @VIRTU E3;Generic PLA @VIRTU E3;Generic TPU @VIRTU E3" +} diff --git a/resources/profiles/RH3D/machine/fdm_common_E3NG v1.2S.json b/resources/profiles/RH3D/machine/fdm_common_E3NG v1.2S.json index 0b952c73f3..8479a4e451 100644 --- a/resources/profiles/RH3D/machine/fdm_common_E3NG v1.2S.json +++ b/resources/profiles/RH3D/machine/fdm_common_E3NG v1.2S.json @@ -7,6 +7,7 @@ "extruder_clearance_height_to_lid": "140", "extruder_clearance_height_to_rod": "36", "extruder_clearance_radius": "65", + "default_filament_profile": "Generic PLA @E3NG v1.2S", "machine_max_acceleration_e": [ "7500", "7500" @@ -40,12 +41,12 @@ "25" ], "machine_max_speed_x": [ - "400", - "400" + "600", + "600" ], "machine_max_speed_y": [ - "400", - "400" + "600", + "600" ], "machine_max_speed_z": [ "12", diff --git a/resources/profiles/RH3D/machine/fdm_common_VIRTU E3.json b/resources/profiles/RH3D/machine/fdm_common_VIRTU E3.json new file mode 100644 index 0000000000..e825838811 --- /dev/null +++ b/resources/profiles/RH3D/machine/fdm_common_VIRTU E3.json @@ -0,0 +1,71 @@ +{ + "type": "machine", + "name": "fdm_common_VIRTU E3", + "inherits": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "default_filament_profile": "Generic PLA @VIRTU E3", + "machine_max_acceleration_e": [ + "7500", + "7500" + ], + "machine_max_acceleration_extruding": [ + "35000", + "35000" + ], + "machine_max_acceleration_retracting": [ + "35000", + "35000" + ], + "machine_max_acceleration_travel": [ + "10000", + "10000" + ], + "machine_max_acceleration_x": [ + "35000", + "35000" + ], + "machine_max_acceleration_y": [ + "35000", + "35000" + ], + "machine_max_acceleration_z": [ + "2000", + "2000" + ], + "machine_max_speed_e": [ + "25", + "25" + ], + "machine_max_speed_x": [ + "900", + "900" + ], + "machine_max_speed_y": [ + "900", + "900" + ], + "machine_max_speed_z": [ + "400", + "400" + ], + "printable_area": [ + "0x0", + "230x0", + "230x232", + "0x232" + ], + "printable_height": "232", + "printer_model": "VIRTU E3", + "printer_notes": [ + "Design by RH3D" + ], + "retract_before_wipe": "80%", + "retract_length_toolchange": "0", + "retract_lift_below": "230", + "retraction_minimum_travel": "1.5", + "travel_slope": "1" +} diff --git a/resources/profiles/RH3D/machine/fdm_machine_common.json b/resources/profiles/RH3D/machine/fdm_machine_common.json index 4a3245b701..0f23916d97 100644 --- a/resources/profiles/RH3D/machine/fdm_machine_common.json +++ b/resources/profiles/RH3D/machine/fdm_machine_common.json @@ -5,12 +5,11 @@ "instantiation": "false", "printer_structure": "corexy", "gcode_flavor": "klipper", - "machine_start_gcode": "M104 S0 ; Stops OrcaSlicer from sending temp waits separately\nM140 S0\nPRINT_START EXTRUDER=[first_layer_temperature] BED=[first_layer_bed_temperature]\n; Start of actual GCode for the print", + "machine_start_gcode": "M104 S0 ; Stops OrcaSlicer from sending temp waits separately\nM140 S0\nPRINT_START EXTRUDER=[first_layer_temperature] BED=[first_layer_bed_temperature] CHAMBER=[chamber_temperature] PROFILE=[notes]\n; Start of actual GCode for the print", "machine_end_gcode": "PRINT_END", "extruder_colour": "#02aba2", "extruder_offset": "0x0", "emit_machine_limits_to_gcode": "0", - "default_filament_profile": "Generic PLA @E3NG v1.2S", "machine_min_extruding_rate": [ "0", "0" @@ -47,7 +46,7 @@ "320x240/PNG", "640x480/PNG" ], - "change_filament_gcode": "PAUSE\nG1 E1.0 F300 ; prime after color change", + "change_filament_gcode": "G1 E1.0 F300 ; prime after color change", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\nG92 E0", "layer_change_gcode": ";AFTER_LAYER_CHANGE", "machine_pause_gcode": "PAUSE\n", diff --git a/resources/profiles/RH3D/process/0.10mm Fast @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.10mm Fast @E3NG v1.2S.json new file mode 100644 index 0000000000..f8103a4582 --- /dev/null +++ b/resources/profiles/RH3D/process/0.10mm Fast @E3NG v1.2S.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.10mm Fast @E3NG v1.2S", + "inherits": "process_Fast_E3NG v1.2S", + "from": "system", + "setting_id": "zaYFBkbfYXxSz5eU", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.15", + "compatible_printers": [ + "E3NG v1.2S - 0.2 nozzle", + "E3NG v1.2S - 0.3 nozzle", + "E3NG v1.2S - 0.4 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.10mm Fast @VIRTU E3.json b/resources/profiles/RH3D/process/0.10mm Fast @VIRTU E3.json new file mode 100644 index 0000000000..a72467ecfd --- /dev/null +++ b/resources/profiles/RH3D/process/0.10mm Fast @VIRTU E3.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.10mm Fast @VIRTU E3", + "inherits": "process_Fast_VIRTU E3", + "from": "system", + "setting_id": "nWpKy9NYLGggsHlM", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.15", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.10mm Slow @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.10mm Slow @E3NG v1.2S.json new file mode 100644 index 0000000000..c853471ef9 --- /dev/null +++ b/resources/profiles/RH3D/process/0.10mm Slow @E3NG v1.2S.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.10mm Slow @E3NG v1.2S", + "inherits": "process_Slow_E3NG v1.2S", + "from": "system", + "setting_id": "W35S1kwfonBFrHAy", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.15", + "compatible_printers": [ + "E3NG v1.2S - 0.2 nozzle", + "E3NG v1.2S - 0.3 nozzle", + "E3NG v1.2S - 0.4 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.10mm Slow @VIRTU E3.json b/resources/profiles/RH3D/process/0.10mm Slow @VIRTU E3.json new file mode 100644 index 0000000000..5c33e2e8f8 --- /dev/null +++ b/resources/profiles/RH3D/process/0.10mm Slow @VIRTU E3.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.10mm Slow @VIRTU E3", + "inherits": "process_Slow_VIRTU E3", + "from": "system", + "setting_id": "br9ISgiSBZTgKEqn", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.15", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.10mm Standard @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.10mm Standard @E3NG v1.2S.json index dcaecb6b0b..86e7415897 100644 --- a/resources/profiles/RH3D/process/0.10mm Standard @E3NG v1.2S.json +++ b/resources/profiles/RH3D/process/0.10mm Standard @E3NG v1.2S.json @@ -1,7 +1,7 @@ { "type": "process", "name": "0.10mm Standard @E3NG v1.2S", - "inherits": "process_common_E3NG v1.2S", + "inherits": "process_Standard_E3NG v1.2S", "from": "system", "setting_id": "YhKounYUzB4FB9Em", "instantiation": "true", diff --git a/resources/profiles/RH3D/process/0.10mm Standard @VIRTU E3.json b/resources/profiles/RH3D/process/0.10mm Standard @VIRTU E3.json new file mode 100644 index 0000000000..675d8b3646 --- /dev/null +++ b/resources/profiles/RH3D/process/0.10mm Standard @VIRTU E3.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.10mm Standard @VIRTU E3", + "inherits": "process_Standard_VIRTU E3", + "from": "system", + "setting_id": "qf2uqEsVBJLb87TW", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.15", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.15mm Fast @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.15mm Fast @E3NG v1.2S.json new file mode 100644 index 0000000000..8a301ed822 --- /dev/null +++ b/resources/profiles/RH3D/process/0.15mm Fast @E3NG v1.2S.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.15mm Fast @E3NG v1.2S", + "inherits": "process_Fast_E3NG v1.2S", + "from": "system", + "setting_id": "O4zDtFKxom68L07o", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "E3NG v1.2S - 0.2 nozzle", + "E3NG v1.2S - 0.3 nozzle", + "E3NG v1.2S - 0.4 nozzle", + "E3NG v1.2S - 0.5 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.15mm Fast @VIRTU E3.json b/resources/profiles/RH3D/process/0.15mm Fast @VIRTU E3.json new file mode 100644 index 0000000000..8c4040d1bb --- /dev/null +++ b/resources/profiles/RH3D/process/0.15mm Fast @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.15mm Fast @VIRTU E3", + "inherits": "process_Fast_VIRTU E3", + "from": "system", + "setting_id": "G0HkboSFDavmOAU4", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.15mm Slow @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.15mm Slow @E3NG v1.2S.json new file mode 100644 index 0000000000..f3693f8cbb --- /dev/null +++ b/resources/profiles/RH3D/process/0.15mm Slow @E3NG v1.2S.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.15mm Slow @E3NG v1.2S", + "inherits": "process_Slow_E3NG v1.2S", + "from": "system", + "setting_id": "zfmqi9qahym79w71", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "E3NG v1.2S - 0.2 nozzle", + "E3NG v1.2S - 0.3 nozzle", + "E3NG v1.2S - 0.4 nozzle", + "E3NG v1.2S - 0.5 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.15mm Slow @VIRTU E3.json b/resources/profiles/RH3D/process/0.15mm Slow @VIRTU E3.json new file mode 100644 index 0000000000..bac33744bb --- /dev/null +++ b/resources/profiles/RH3D/process/0.15mm Slow @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.15mm Slow @VIRTU E3", + "inherits": "process_Slow_VIRTU E3", + "from": "system", + "setting_id": "6RvsW4p0AVsAXYlf", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.15mm Standard @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.15mm Standard @E3NG v1.2S.json index deaded91ab..0c1a8367a8 100644 --- a/resources/profiles/RH3D/process/0.15mm Standard @E3NG v1.2S.json +++ b/resources/profiles/RH3D/process/0.15mm Standard @E3NG v1.2S.json @@ -1,7 +1,7 @@ { "type": "process", "name": "0.15mm Standard @E3NG v1.2S", - "inherits": "process_common_E3NG v1.2S", + "inherits": "process_Standard_E3NG v1.2S", "from": "system", "setting_id": "jYPd3BedSG1oG6S3", "instantiation": "true", diff --git a/resources/profiles/RH3D/process/0.15mm Standard @VIRTU E3.json b/resources/profiles/RH3D/process/0.15mm Standard @VIRTU E3.json new file mode 100644 index 0000000000..de6a3e1ddf --- /dev/null +++ b/resources/profiles/RH3D/process/0.15mm Standard @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.15mm Standard @VIRTU E3", + "inherits": "process_Standard_VIRTU E3", + "from": "system", + "setting_id": "NFY8TFxasqh2wUvX", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "VIRTU E3 - 0.2 nozzle", + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.20mm Fast @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.20mm Fast @E3NG v1.2S.json index bca60006c4..61fd819a39 100644 --- a/resources/profiles/RH3D/process/0.20mm Fast @E3NG v1.2S.json +++ b/resources/profiles/RH3D/process/0.20mm Fast @E3NG v1.2S.json @@ -1,49 +1,16 @@ { "type": "process", "name": "0.20mm Fast @E3NG v1.2S", - "inherits": "process_common_E3NG v1.2S", + "inherits": "process_Fast_E3NG v1.2S", "from": "system", "setting_id": "S7z7EwSYYbjVWRK0", "instantiation": "true", "layer_height": "0.2", "initial_layer_print_height": "0.2", "compatible_printers": [ + "E3NG v1.2S - 0.3 nozzle", "E3NG v1.2S - 0.4 nozzle", "E3NG v1.2S - 0.5 nozzle", "E3NG v1.2S - 0.6 nozzle" - ], - "reduce_crossing_wall": "0", - "bridge_speed": "75", - "default_acceleration": "10000", - "initial_layer_acceleration": "7500", - "top_surface_acceleration": "7500", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "7500", - "bridge_acceleration": "5000", - "sparse_infill_acceleration": "12500", - "internal_solid_infill_acceleration": "10000", - "infill_combination": "1", - "ironing_speed": "150", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "15", - "support_interface_speed": "120", - "top_surface_line_width": "100%", - "sparse_infill_line_width": "125%", - "internal_solid_infill_line_width": "125%", - "seam_position": "nearest", - "initial_layer_speed": "100", - "initial_layer_infill_speed": "150", - "outer_wall_speed": "300", - "inner_wall_speed": "340", - "small_perimeter_speed": "300", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "340", - "top_surface_speed": "300", - "gap_infill_speed": "300", - "travel_speed": "400", - "only_one_wall_top": "0", - "only_one_wall_first_layer": "0" + ] } diff --git a/resources/profiles/RH3D/process/0.20mm Fast @VIRTU E3.json b/resources/profiles/RH3D/process/0.20mm Fast @VIRTU E3.json new file mode 100644 index 0000000000..1c182fd117 --- /dev/null +++ b/resources/profiles/RH3D/process/0.20mm Fast @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.20mm Fast @VIRTU E3", + "inherits": "process_Fast_VIRTU E3", + "from": "system", + "setting_id": "cSol8x6vF51GUloq", + "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.20mm Slow @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.20mm Slow @E3NG v1.2S.json index 45be150670..4894fc3637 100644 --- a/resources/profiles/RH3D/process/0.20mm Slow @E3NG v1.2S.json +++ b/resources/profiles/RH3D/process/0.20mm Slow @E3NG v1.2S.json @@ -1,49 +1,16 @@ { "type": "process", "name": "0.20mm Slow @E3NG v1.2S", - "inherits": "process_common_E3NG v1.2S", + "inherits": "process_Slow_E3NG v1.2S", "from": "system", "setting_id": "JH4jITLGT8tbtnu1", "instantiation": "true", "layer_height": "0.2", "initial_layer_print_height": "0.2", "compatible_printers": [ + "E3NG v1.2S - 0.3 nozzle", "E3NG v1.2S - 0.4 nozzle", "E3NG v1.2S - 0.5 nozzle", "E3NG v1.2S - 0.6 nozzle" - ], - "reduce_crossing_wall": "1", - "bridge_speed": "40", - "default_acceleration": "3000", - "initial_layer_acceleration": "3000", - "top_surface_acceleration": "2000", - "travel_acceleration": "3000", - "inner_wall_acceleration": "3000", - "outer_wall_acceleration": "3000", - "bridge_acceleration": "2000", - "sparse_infill_acceleration": "4000", - "internal_solid_infill_acceleration": "3000", - "infill_combination": "0", - "ironing_speed": "80", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "35", - "overhang_3_4_speed": "20", - "overhang_4_4_speed": "8", - "support_interface_speed": "60", - "top_surface_line_width": "100%", - "sparse_infill_line_width": "125%", - "internal_solid_infill_line_width": "125%", - "seam_position": "aligned", - "initial_layer_speed": "60", - "initial_layer_infill_speed": "75", - "outer_wall_speed": "140", - "inner_wall_speed": "140", - "small_perimeter_speed": "140", - "sparse_infill_speed": "140", - "internal_solid_infill_speed": "140", - "top_surface_speed": "140", - "gap_infill_speed": "140", - "travel_speed": "400", - "only_one_wall_top": "1", - "only_one_wall_first_layer": "1" + ] } diff --git a/resources/profiles/RH3D/process/0.20mm Slow @VIRTU E3.json b/resources/profiles/RH3D/process/0.20mm Slow @VIRTU E3.json new file mode 100644 index 0000000000..1ee87921aa --- /dev/null +++ b/resources/profiles/RH3D/process/0.20mm Slow @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.20mm Slow @VIRTU E3", + "inherits": "process_Slow_VIRTU E3", + "from": "system", + "setting_id": "NlGjHdIRQnp9PCfc", + "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.20mm Standard @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.20mm Standard @E3NG v1.2S.json index 92ddcd9109..95b149cfba 100644 --- a/resources/profiles/RH3D/process/0.20mm Standard @E3NG v1.2S.json +++ b/resources/profiles/RH3D/process/0.20mm Standard @E3NG v1.2S.json @@ -1,10 +1,12 @@ { "type": "process", "name": "0.20mm Standard @E3NG v1.2S", - "inherits": "process_common_E3NG v1.2S", + "inherits": "process_Standard_E3NG v1.2S", "from": "system", "setting_id": "XgaEHNWBsBQoPjbP", "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", "compatible_printers": [ "E3NG v1.2S - 0.3 nozzle", "E3NG v1.2S - 0.4 nozzle", diff --git a/resources/profiles/RH3D/process/0.20mm Standard @VIRTU E3.json b/resources/profiles/RH3D/process/0.20mm Standard @VIRTU E3.json new file mode 100644 index 0000000000..ad7ac64a0b --- /dev/null +++ b/resources/profiles/RH3D/process/0.20mm Standard @VIRTU E3.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.20mm Standard @VIRTU E3", + "inherits": "process_Standard_VIRTU E3", + "from": "system", + "setting_id": "F0hx03mNji9yec5G", + "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", + "compatible_printers": [ + "VIRTU E3 - 0.3 nozzle", + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.25mm Fast @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.25mm Fast @E3NG v1.2S.json index bf910f676a..f9442067d1 100644 --- a/resources/profiles/RH3D/process/0.25mm Fast @E3NG v1.2S.json +++ b/resources/profiles/RH3D/process/0.25mm Fast @E3NG v1.2S.json @@ -1,7 +1,7 @@ { "type": "process", "name": "0.25mm Fast @E3NG v1.2S", - "inherits": "process_common_E3NG v1.2S", + "inherits": "process_Fast_E3NG v1.2S", "from": "system", "setting_id": "QqkHiZPjk3QWyKKN", "instantiation": "true", @@ -11,39 +11,5 @@ "E3NG v1.2S - 0.4 nozzle", "E3NG v1.2S - 0.5 nozzle", "E3NG v1.2S - 0.6 nozzle" - ], - "reduce_crossing_wall": "0", - "bridge_speed": "75", - "default_acceleration": "10000", - "initial_layer_acceleration": "7500", - "top_surface_acceleration": "7500", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "7500", - "bridge_acceleration": "5000", - "sparse_infill_acceleration": "12500", - "internal_solid_infill_acceleration": "10000", - "infill_combination": "1", - "ironing_speed": "150", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "15", - "support_interface_speed": "120", - "top_surface_line_width": "100%", - "sparse_infill_line_width": "125%", - "internal_solid_infill_line_width": "125%", - "seam_position": "nearest", - "initial_layer_speed": "100", - "initial_layer_infill_speed": "150", - "outer_wall_speed": "300", - "inner_wall_speed": "340", - "small_perimeter_speed": "300", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "340", - "top_surface_speed": "300", - "gap_infill_speed": "300", - "travel_speed": "400", - "only_one_wall_top": "0", - "only_one_wall_first_layer": "0" + ] } diff --git a/resources/profiles/RH3D/process/0.25mm Fast @VIRTU E3.json b/resources/profiles/RH3D/process/0.25mm Fast @VIRTU E3.json new file mode 100644 index 0000000000..0e6c3ef6eb --- /dev/null +++ b/resources/profiles/RH3D/process/0.25mm Fast @VIRTU E3.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.25mm Fast @VIRTU E3", + "inherits": "process_Fast_VIRTU E3", + "from": "system", + "setting_id": "MyqBOD8a6YOpgm8h", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "compatible_printers": [ + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.25mm Slow @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.25mm Slow @E3NG v1.2S.json new file mode 100644 index 0000000000..65de472eec --- /dev/null +++ b/resources/profiles/RH3D/process/0.25mm Slow @E3NG v1.2S.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.25mm Slow @E3NG v1.2S", + "inherits": "process_Slow_E3NG v1.2S", + "from": "system", + "setting_id": "7sr967Tgq1J3qxTG", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "compatible_printers": [ + "E3NG v1.2S - 0.4 nozzle", + "E3NG v1.2S - 0.5 nozzle", + "E3NG v1.2S - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.25mm Slow @VIRTU E3.json b/resources/profiles/RH3D/process/0.25mm Slow @VIRTU E3.json new file mode 100644 index 0000000000..36ef0d460f --- /dev/null +++ b/resources/profiles/RH3D/process/0.25mm Slow @VIRTU E3.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.25mm Slow @VIRTU E3", + "inherits": "process_Slow_VIRTU E3", + "from": "system", + "setting_id": "BqoOYOcFMFNbkpAb", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "compatible_printers": [ + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/0.25mm Standard @E3NG v1.2S.json b/resources/profiles/RH3D/process/0.25mm Standard @E3NG v1.2S.json index 5ebe88f3fe..4234924db2 100644 --- a/resources/profiles/RH3D/process/0.25mm Standard @E3NG v1.2S.json +++ b/resources/profiles/RH3D/process/0.25mm Standard @E3NG v1.2S.json @@ -1,7 +1,7 @@ { "type": "process", "name": "0.25mm Standard @E3NG v1.2S", - "inherits": "process_common_E3NG v1.2S", + "inherits": "process_Standard_E3NG v1.2S", "from": "system", "setting_id": "2dPD9ljxZ8hknXZu", "instantiation": "true", diff --git a/resources/profiles/RH3D/process/0.25mm Standard @VIRTU E3.json b/resources/profiles/RH3D/process/0.25mm Standard @VIRTU E3.json new file mode 100644 index 0000000000..3aa8db5be4 --- /dev/null +++ b/resources/profiles/RH3D/process/0.25mm Standard @VIRTU E3.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.25mm Standard @VIRTU E3", + "inherits": "process_Standard_VIRTU E3", + "from": "system", + "setting_id": "uKXPx0hfphTLXfmI", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "compatible_printers": [ + "VIRTU E3 - 0.4 nozzle", + "VIRTU E3 - 0.5 nozzle", + "VIRTU E3 - 0.6 nozzle" + ] +} diff --git a/resources/profiles/RH3D/process/fdm_process_common.json b/resources/profiles/RH3D/process/fdm_process_common.json index 4f02e37fa6..0f5087af8c 100644 --- a/resources/profiles/RH3D/process/fdm_process_common.json +++ b/resources/profiles/RH3D/process/fdm_process_common.json @@ -8,6 +8,7 @@ "bottom_surface_pattern": "monotonicline", "bottom_shell_thickness": "0", "bridge_speed": "50", + "brim_type": "no_brim", "brim_width": "0", "brim_object_gap": "0.1", "compatible_printers": [], @@ -22,6 +23,8 @@ "bridge_acceleration": "2500", "sparse_infill_acceleration": "8000", "internal_solid_infill_acceleration": "5000", + "accel_to_decel_enable": "0", + "accel_to_decel_factor": "100%", "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0.1", @@ -41,8 +44,8 @@ "reduce_infill_retraction": "1", "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}_{printer_model}.gcode", "detect_overhang_wall": "1", - "slowdown_for_curled_perimeters": "1", - "overhang_1_4_speed": "70", + "slowdown_for_curled_perimeters": "0", + "overhang_1_4_speed": "0", "overhang_2_4_speed": "40", "overhang_3_4_speed": "25", "overhang_4_4_speed": "10", @@ -102,7 +105,7 @@ "initial_layer_infill_speed": "100", "outer_wall_speed": "220", "inner_wall_speed": "220", - "small_perimeter_speed": "220", + "small_perimeter_speed": "50%", "sparse_infill_speed": "300", "internal_solid_infill_speed": "220", "top_surface_speed": "180", diff --git a/resources/profiles/RH3D/process/process_Fast_E3NG v1.2S.json b/resources/profiles/RH3D/process/process_Fast_E3NG v1.2S.json new file mode 100644 index 0000000000..73d0ae5202 --- /dev/null +++ b/resources/profiles/RH3D/process/process_Fast_E3NG v1.2S.json @@ -0,0 +1,42 @@ +{ + "type": "process", + "name": "process_Fast_E3NG v1.2S", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "reduce_crossing_wall": "0", + "bridge_speed": "75", + "default_acceleration": "10000", + "initial_layer_acceleration": "7500", + "top_surface_acceleration": "7500", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "7500", + "bridge_acceleration": "5000", + "sparse_infill_acceleration": "12500", + "internal_solid_infill_acceleration": "10000", + "infill_combination": "0", + "ironing_speed": "150", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "15", + "support_interface_speed": "120", + "top_surface_line_width": "100%", + "sparse_infill_line_width": "125%", + "internal_solid_infill_line_width": "125%", + "seam_position": "nearest", + "initial_layer_speed": "100", + "initial_layer_infill_speed": "150", + "outer_wall_speed": "300", + "inner_wall_speed": "340", + "small_perimeter_speed": "300", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "340", + "top_surface_speed": "300", + "gap_infill_speed": "300", + "travel_speed": "400", + "only_one_wall_top": "0", + "only_one_wall_first_layer": "0", + "notes": "fast" +} diff --git a/resources/profiles/RH3D/process/process_Fast_VIRTU E3.json b/resources/profiles/RH3D/process/process_Fast_VIRTU E3.json new file mode 100644 index 0000000000..b981150596 --- /dev/null +++ b/resources/profiles/RH3D/process/process_Fast_VIRTU E3.json @@ -0,0 +1,42 @@ +{ + "type": "process", + "name": "process_Fast_VIRTU E3", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "reduce_crossing_wall": "0", + "bridge_speed": "75", + "default_acceleration": "20000", + "initial_layer_acceleration": "15000", + "top_surface_acceleration": "15000", + "travel_acceleration": "15000", + "inner_wall_acceleration": "25000", + "outer_wall_acceleration": "15000", + "bridge_acceleration": "10000", + "sparse_infill_acceleration": "30000", + "internal_solid_infill_acceleration": "25000", + "infill_combination": "0", + "ironing_speed": "150", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "15", + "support_interface_speed": "120", + "top_surface_line_width": "90%", + "sparse_infill_line_width": "125%", + "internal_solid_infill_line_width": "125%", + "seam_position": "nearest", + "initial_layer_speed": "100", + "initial_layer_infill_speed": "150", + "outer_wall_speed": "300", + "inner_wall_speed": "600", + "small_perimeter_speed": "300", + "sparse_infill_speed": "600", + "internal_solid_infill_speed": "500", + "top_surface_speed": "300", + "gap_infill_speed": "300", + "travel_speed": "800", + "only_one_wall_top": "0", + "only_one_wall_first_layer": "0", + "notes": "fast" +} diff --git a/resources/profiles/RH3D/process/process_Slow_E3NG v1.2S.json b/resources/profiles/RH3D/process/process_Slow_E3NG v1.2S.json new file mode 100644 index 0000000000..5cf259e378 --- /dev/null +++ b/resources/profiles/RH3D/process/process_Slow_E3NG v1.2S.json @@ -0,0 +1,42 @@ +{ + "type": "process", + "name": "process_Slow_E3NG v1.2S", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "reduce_crossing_wall": "1", + "bridge_speed": "40", + "default_acceleration": "3000", + "initial_layer_acceleration": "3000", + "top_surface_acceleration": "2000", + "travel_acceleration": "3000", + "inner_wall_acceleration": "3000", + "outer_wall_acceleration": "3000", + "bridge_acceleration": "2000", + "sparse_infill_acceleration": "4000", + "internal_solid_infill_acceleration": "3000", + "infill_combination": "0", + "ironing_speed": "80", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "35", + "overhang_3_4_speed": "20", + "overhang_4_4_speed": "8", + "support_interface_speed": "60", + "top_surface_line_width": "90%", + "sparse_infill_line_width": "125%", + "internal_solid_infill_line_width": "125%", + "seam_position": "aligned", + "initial_layer_speed": "60", + "initial_layer_infill_speed": "75", + "outer_wall_speed": "120", + "inner_wall_speed": "120", + "small_perimeter_speed": "120", + "sparse_infill_speed": "160", + "internal_solid_infill_speed": "160", + "top_surface_speed": "120", + "gap_infill_speed": "120", + "travel_speed": "400", + "only_one_wall_top": "1", + "only_one_wall_first_layer": "1", + "notes": "quiet" +} diff --git a/resources/profiles/RH3D/process/process_Slow_VIRTU E3.json b/resources/profiles/RH3D/process/process_Slow_VIRTU E3.json new file mode 100644 index 0000000000..4f7f41e5eb --- /dev/null +++ b/resources/profiles/RH3D/process/process_Slow_VIRTU E3.json @@ -0,0 +1,42 @@ +{ + "type": "process", + "name": "process_Slow_VIRTU E3", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "reduce_crossing_wall": "1", + "bridge_speed": "40", + "default_acceleration": "3000", + "initial_layer_acceleration": "3000", + "top_surface_acceleration": "2000", + "travel_acceleration": "3000", + "inner_wall_acceleration": "3000", + "outer_wall_acceleration": "3000", + "bridge_acceleration": "2000", + "sparse_infill_acceleration": "4000", + "internal_solid_infill_acceleration": "3000", + "infill_combination": "0", + "ironing_speed": "80", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "35", + "overhang_3_4_speed": "20", + "overhang_4_4_speed": "8", + "support_interface_speed": "60", + "top_surface_line_width": "90%", + "sparse_infill_line_width": "125%", + "internal_solid_infill_line_width": "125%", + "seam_position": "aligned", + "initial_layer_speed": "60", + "initial_layer_infill_speed": "75", + "outer_wall_speed": "140", + "inner_wall_speed": "140", + "small_perimeter_speed": "140", + "sparse_infill_speed": "140", + "internal_solid_infill_speed": "140", + "top_surface_speed": "140", + "gap_infill_speed": "140", + "travel_speed": "400", + "only_one_wall_top": "1", + "only_one_wall_first_layer": "1", + "notes": "quiet" +} diff --git a/resources/profiles/RH3D/process/process_Standard_E3NG v1.2S.json b/resources/profiles/RH3D/process/process_Standard_E3NG v1.2S.json new file mode 100644 index 0000000000..55828f200a --- /dev/null +++ b/resources/profiles/RH3D/process/process_Standard_E3NG v1.2S.json @@ -0,0 +1,33 @@ +{ + "type": "process", + "name": "process_Standard_E3NG v1.2S", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "default_acceleration": "10000", + "initial_layer_acceleration": "5000", + "top_surface_acceleration": "5000", + "travel_acceleration": "7500", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "10000", + "bridge_acceleration": "3500", + "sparse_infill_acceleration": "12500", + "internal_solid_infill_acceleration": "12500", + "overhang_1_4_speed": "70", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "10", + "support_interface_speed": "100", + "support_speed": "180", + "initial_layer_speed": "90", + "initial_layer_infill_speed": "120", + "outer_wall_speed": "180", + "inner_wall_speed": "220", + "small_perimeter_speed": "180", + "sparse_infill_speed": "220", + "internal_solid_infill_speed": "220", + "top_surface_speed": "180", + "gap_infill_speed": "180", + "travel_speed": "500", + "notes": "normal" +} diff --git a/resources/profiles/RH3D/process/process_Standard_VIRTU E3.json b/resources/profiles/RH3D/process/process_Standard_VIRTU E3.json new file mode 100644 index 0000000000..d312218844 --- /dev/null +++ b/resources/profiles/RH3D/process/process_Standard_VIRTU E3.json @@ -0,0 +1,33 @@ +{ + "type": "process", + "name": "process_Standard_VIRTU E3", + "inherits": "fdm_process_common", + "from": "system", + "instantiation": "false", + "default_acceleration": "15000", + "initial_layer_acceleration": "7500", + "top_surface_acceleration": "7500", + "travel_acceleration": "10000", + "inner_wall_acceleration": "15000", + "outer_wall_acceleration": "15000", + "bridge_acceleration": "5000", + "sparse_infill_acceleration": "20000", + "internal_solid_infill_acceleration": "20000", + "overhang_1_4_speed": "70", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "25", + "overhang_4_4_speed": "10", + "support_interface_speed": "100", + "support_speed": "250", + "initial_layer_speed": "100", + "initial_layer_infill_speed": "150", + "outer_wall_speed": "260", + "inner_wall_speed": "350", + "small_perimeter_speed": "260", + "sparse_infill_speed": "350", + "internal_solid_infill_speed": "350", + "top_surface_speed": "260", + "gap_infill_speed": "260", + "travel_speed": "600", + "notes": "normal" +} diff --git a/resources/profiles/RH3D/process/process_common_E3NG v1.2S.json b/resources/profiles/RH3D/process/process_common_E3NG v1.2S.json deleted file mode 100644 index b43952fb89..0000000000 --- a/resources/profiles/RH3D/process/process_common_E3NG v1.2S.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "process", - "name": "process_common_E3NG v1.2S", - "inherits": "fdm_process_common", - "from": "system", - "instantiation": "false" -} diff --git a/resources/profiles/WonderMaker.json b/resources/profiles/WonderMaker.json index 35a1b5c8fa..2a23096162 100755 --- a/resources/profiles/WonderMaker.json +++ b/resources/profiles/WonderMaker.json @@ -1,7 +1,7 @@ { "name": "WonderMaker", "url": "", - "version": "02.04.00.03", + "version": "02.04.00.04", "force_update": "0", "description": "WonderMaker configurations", "machine_model_list": [ @@ -432,12 +432,8 @@ "sub_path": "machine/WonderMaker ZR 0.4 nozzle.json" }, { - "name": "WonderMaker ZR Ultra 0.4 nozzle", - "sub_path": "machine/WonderMaker ZR Ultra 0.4 nozzle.json" - }, - { - "name": "WonderMaker ZR Ultra S 0.4 nozzle", - "sub_path": "machine/WonderMaker ZR Ultra S 0.4 nozzle.json" + "name": "fdm_ultra_common", + "sub_path": "machine/fdm_ultra_common.json" }, { "name": "WonderMaker ZR 0.2 nozzle", @@ -455,6 +451,10 @@ "name": "WonderMaker ZR Ultra 0.2 nozzle", "sub_path": "machine/WonderMaker ZR Ultra 0.2 nozzle.json" }, + { + "name": "WonderMaker ZR Ultra 0.4 nozzle", + "sub_path": "machine/WonderMaker ZR Ultra 0.4 nozzle.json" + }, { "name": "WonderMaker ZR Ultra 0.6 nozzle", "sub_path": "machine/WonderMaker ZR Ultra 0.6 nozzle.json" @@ -467,6 +467,10 @@ "name": "WonderMaker ZR Ultra S 0.2 nozzle", "sub_path": "machine/WonderMaker ZR Ultra S 0.2 nozzle.json" }, + { + "name": "WonderMaker ZR Ultra S 0.4 nozzle", + "sub_path": "machine/WonderMaker ZR Ultra S 0.4 nozzle.json" + }, { "name": "WonderMaker ZR Ultra S 0.6 nozzle", "sub_path": "machine/WonderMaker ZR Ultra S 0.6 nozzle.json" diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.2 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.2 nozzle.json old mode 100755 new mode 100644 index 927ab9d44b..e05b975115 --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.2 nozzle.json @@ -1,22 +1,23 @@ { "type": "machine", "name": "WonderMaker ZR Ultra 0.2 nozzle", - "inherits": "WonderMaker ZR Ultra 0.4 nozzle", + "inherits": "fdm_ultra_common", "from": "system", "setting_id": "AX42zNj8YsJ94ilv", "instantiation": "true", + "printer_model": "WonderMaker ZR Ultra", + "printer_variant": "0.2", + "default_print_profile": "0.10mm Standard @WonderMaker ZR Ultra 0.2 nozzle", + "default_bed_type": "4", + "max_layer_height": [ + "0.14" + ], "nozzle_diameter": [ "0.2", "0.2", "0.2", "0.2" ], - "printer_model": "WonderMaker ZR Ultra", - "printer_variant": "0.2", - "default_print_profile": "0.10mm Standard @WonderMaker ZR Ultra 0.2 nozzle", - "max_layer_height": [ - "0.14" - ], "min_layer_height": [ "0.04" ], diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.4 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.4 nozzle.json old mode 100755 new mode 100644 index 0a30108052..67e507516a --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.4 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.4 nozzle.json @@ -1,65 +1,17 @@ { "type": "machine", "name": "WonderMaker ZR Ultra 0.4 nozzle", - "inherits": "fdm_klipper_common", + "inherits": "fdm_ultra_common", "from": "system", "setting_id": "xJBdCljSZVDINXnP", "instantiation": "true", "printer_model": "WonderMaker ZR Ultra", "default_print_profile": "0.20mm Standard @WonderMaker ZR Ultra", "default_bed_type": "4", - "default_filament_profile": [ - "WonderMaker PLA Basic" - ], - "single_extruder_multi_material": "0", "nozzle_diameter": [ "0.4", "0.4", "0.4", "0.4" - ], - "printable_area": [ - "0x0", - "300x0", - "300x270", - "0x270" - ], - "bed_exclude_area": [], - "printable_height": "290", - "extruder_clearance_radius": "134", - "bed_mesh_min": [ - "10", - "10" - ], - "bed_mesh_max": [ - "290", - "260" - ], - "bed_mesh_probe_distance": [ - "50", - "50" - ], - "support_air_filtration": "0", - "support_chamber_temp_control": "0", - "machine_tool_change_time": "10", - "machine_load_filament_time": "0", - "machine_unload_filament_time": "0", - "retract_lift_below": [ - "279", - "279", - "279", - "279" - ], - "enable_long_retraction_when_cut": [ - "0", - "0", - "0", - "0" - ], - "long_retractions_when_cut": [ - "0", - "0", - "0", - "0" ] } diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.6 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.6 nozzle.json old mode 100755 new mode 100644 index fc851ff348..d98ab10954 --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.6 nozzle.json @@ -1,22 +1,23 @@ { "type": "machine", "name": "WonderMaker ZR Ultra 0.6 nozzle", - "inherits": "WonderMaker ZR Ultra 0.4 nozzle", + "inherits": "fdm_ultra_common", "from": "system", "setting_id": "6OWxZLFn3RD54QfX", "instantiation": "true", + "printer_model": "WonderMaker ZR Ultra", + "printer_variant": "0.6", + "default_print_profile": "0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle", + "default_bed_type": "4", + "max_layer_height": [ + "0.42" + ], "nozzle_diameter": [ "0.6", "0.6", "0.6", "0.6" ], - "printer_model": "WonderMaker ZR Ultra", - "printer_variant": "0.6", - "default_print_profile": "0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle", - "max_layer_height": [ - "0.42" - ], "min_layer_height": [ "0.12" ], diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.8 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.8 nozzle.json old mode 100755 new mode 100644 index eefaab3431..2b5929a862 --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra 0.8 nozzle.json @@ -1,22 +1,23 @@ { "type": "machine", "name": "WonderMaker ZR Ultra 0.8 nozzle", - "inherits": "WonderMaker ZR Ultra 0.4 nozzle", + "inherits": "fdm_ultra_common", "from": "system", "setting_id": "SY9snlsMkurhEYWP", "instantiation": "true", + "printer_model": "WonderMaker ZR Ultra", + "printer_variant": "0.8", + "default_print_profile": "0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle", + "default_bed_type": "4", + "max_layer_height": [ + "0.56" + ], "nozzle_diameter": [ "0.8", "0.8", "0.8", "0.8" ], - "printer_model": "WonderMaker ZR Ultra", - "printer_variant": "0.8", - "default_print_profile": "0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle", - "max_layer_height": [ - "0.56" - ], "min_layer_height": [ "0.16" ], diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.2 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.2 nozzle.json old mode 100755 new mode 100644 index 26ad5e21d7..5d67c1fe5e --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.2 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.2 nozzle.json @@ -1,29 +1,19 @@ { "type": "machine", "name": "WonderMaker ZR Ultra S 0.2 nozzle", - "inherits": "WonderMaker ZR Ultra S 0.4 nozzle", + "inherits": "WonderMaker ZR Ultra 0.2 nozzle", "from": "system", "setting_id": "ZNAx3f7tX3DatiK1", "instantiation": "true", + "printer_model": "WonderMaker ZR Ultra S", "nozzle_diameter": [ "0.2", "0.2", "0.2", "0.2" ], - "printer_model": "WonderMaker ZR Ultra S", - "printer_variant": "0.2", "default_print_profile": "0.10mm Standard @WonderMaker ZR Ultra 0.2 nozzle", - "max_layer_height": [ - "0.14" - ], - "min_layer_height": [ - "0.04" - ], - "retraction_length": [ - "0.4", - "0.4", - "0.4", - "0.4" - ] + "printer_variant": "0.2", + "support_air_filtration": "1", + "support_chamber_temp_control": "1" } diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.4 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.4 nozzle.json old mode 100755 new mode 100644 index df1dbbb9a8..3ae0673f79 --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.4 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.4 nozzle.json @@ -1,65 +1,18 @@ { "type": "machine", "name": "WonderMaker ZR Ultra S 0.4 nozzle", - "inherits": "fdm_klipper_common", + "inherits": "WonderMaker ZR Ultra 0.4 nozzle", "from": "system", "setting_id": "8xoZ6vYv9ws0J97u", "instantiation": "true", "printer_model": "WonderMaker ZR Ultra S", - "default_print_profile": "0.20mm Standard @WonderMaker ZR Ultra", - "default_bed_type": "4", - "default_filament_profile": [ - "WonderMaker PLA Basic" - ], - "single_extruder_multi_material": "0", "nozzle_diameter": [ "0.4", "0.4", "0.4", "0.4" ], - "printable_area": [ - "0x0", - "300x0", - "300x270", - "0x270" - ], - "bed_exclude_area": [], - "printable_height": "290", - "extruder_clearance_radius": "134", - "bed_mesh_min": [ - "10", - "10" - ], - "bed_mesh_max": [ - "290", - "260" - ], - "bed_mesh_probe_distance": [ - "50", - "50" - ], + "default_print_profile": "0.20mm Standard @WonderMaker ZR Ultra", "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "machine_tool_change_time": "10", - "machine_load_filament_time": "0", - "machine_unload_filament_time": "0", - "retract_lift_below": [ - "279", - "279", - "279", - "279" - ], - "enable_long_retraction_when_cut": [ - "0", - "0", - "0", - "0" - ], - "long_retractions_when_cut": [ - "0", - "0", - "0", - "0" - ] + "support_chamber_temp_control": "1" } diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.6 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.6 nozzle.json old mode 100755 new mode 100644 index 9f2bd6f069..c75e56de4e --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.6 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.6 nozzle.json @@ -1,32 +1,19 @@ { "type": "machine", "name": "WonderMaker ZR Ultra S 0.6 nozzle", - "inherits": "WonderMaker ZR Ultra S 0.4 nozzle", + "inherits": "WonderMaker ZR Ultra 0.6 nozzle", "from": "system", "setting_id": "xuJnOPTmSW1BMo6p", "instantiation": "true", "printer_model": "WonderMaker ZR Ultra S", - "default_print_profile": "0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle", - "printer_variant": "0.6", "nozzle_diameter": [ + "0.6", + "0.6", + "0.6", "0.6" ], - "max_layer_height": [ - "0.42" - ], - "min_layer_height": [ - "0.12" - ], - "retraction_length": [ - "1.4", - "1.4", - "1.4", - "1.4" - ], - "retraction_minimum_travel": [ - "3", - "3", - "3", - "3" - ] + "default_print_profile": "0.30mm Standard @WonderMaker ZR Ultra 0.6 nozzle", + "printer_variant": "0.6", + "support_air_filtration": "1", + "support_chamber_temp_control": "1" } diff --git a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.8 nozzle.json b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.8 nozzle.json old mode 100755 new mode 100644 index 2137855fe0..f18a3d3361 --- a/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.8 nozzle.json +++ b/resources/profiles/WonderMaker/machine/WonderMaker ZR Ultra S 0.8 nozzle.json @@ -1,32 +1,19 @@ { "type": "machine", "name": "WonderMaker ZR Ultra S 0.8 nozzle", - "inherits": "WonderMaker ZR Ultra S 0.4 nozzle", + "inherits": "WonderMaker ZR Ultra 0.8 nozzle", "from": "system", "setting_id": "0BPLKMspArilfkGT", "instantiation": "true", "printer_model": "WonderMaker ZR Ultra S", - "default_print_profile": "0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle", - "printer_variant": "0.8", "nozzle_diameter": [ + "0.8", + "0.8", + "0.8", "0.8" ], - "max_layer_height": [ - "0.56" - ], - "min_layer_height": [ - "0.16" - ], - "retract_length_toolchange": [ - "3", - "3", - "3", - "3" - ], - "retraction_length": [ - "3", - "3", - "3", - "3" - ] + "default_print_profile": "0.40mm Standard @WonderMaker ZR Ultra 0.8 nozzle", + "printer_variant": "0.8", + "support_air_filtration": "1", + "support_chamber_temp_control": "1" } diff --git a/resources/profiles/WonderMaker/machine/fdm_ultra_common.json b/resources/profiles/WonderMaker/machine/fdm_ultra_common.json new file mode 100644 index 0000000000..08c8f9683a --- /dev/null +++ b/resources/profiles/WonderMaker/machine/fdm_ultra_common.json @@ -0,0 +1,64 @@ +{ + "type": "machine", + "name": "fdm_ultra_common", + "inherits": "fdm_klipper_common", + "from": "system", + "instantiation": "false", + "default_bed_type": "4", + "default_filament_profile": [ + "WonderMaker PLA Basic" + ], + "single_extruder_multi_material": "0", + "enable_filament_mapping": "1", + "filament_swap_gcode": "M117 Swap filament for tool {next_extruder}\nPAUSE", + "nozzle_diameter": [ + "0.4", + "0.4", + "0.4", + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x270", + "0x270" + ], + "bed_exclude_area": [], + "printable_height": "290", + "extruder_clearance_radius": "134", + "bed_mesh_min": [ + "10", + "10" + ], + "bed_mesh_max": [ + "290", + "260" + ], + "bed_mesh_probe_distance": [ + "50", + "50" + ], + "support_air_filtration": "0", + "support_chamber_temp_control": "0", + "machine_tool_change_time": "10", + "machine_load_filament_time": "0", + "machine_unload_filament_time": "0", + "retract_lift_below": [ + "279", + "279", + "279", + "279" + ], + "enable_long_retraction_when_cut": [ + "0", + "0", + "0", + "0" + ], + "long_retractions_when_cut": [ + "0", + "0", + "0", + "0" + ] +} diff --git a/resources/shaders/110/xray.fs b/resources/shaders/110/xray.fs new file mode 100644 index 0000000000..27bdb17044 --- /dev/null +++ b/resources/shaders/110/xray.fs @@ -0,0 +1,28 @@ +#version 110 + +// X-Ray view: each surface is a thin translucent layer of its own color, covering more the more +// edge-on it is seen. The caller draws it with depth writes off, so every surface a view ray crosses +// composites and overlapping geometry reads as denser. Source-alpha rather than additive blending: +// additive would saturate to white on the light theme's near-white background. +#define EDGE_FALLOFF 2.0 +// Coverage head-on and edge-on. +#define FACE_DENSITY 0.12 +#define EDGE_DENSITY 0.65 + +uniform vec4 uniform_color; + +varying vec3 eye_normal; +varying vec3 eye_position; +varying vec3 clipping_planes_dots; + +void main() +{ + if (any(lessThan(clipping_planes_dots, vec3(0.0)))) + discard; + + // abs(): back faces are drawn too, and there only the angle matters. + float facing = abs(dot(normalize(eye_normal), normalize(-eye_position))); + float density = mix(EDGE_DENSITY, FACE_DENSITY, pow(facing, EDGE_FALLOFF)); + + gl_FragColor = vec4(uniform_color.rgb, density * uniform_color.a); +} diff --git a/resources/shaders/110/xray.vs b/resources/shaders/110/xray.vs new file mode 100644 index 0000000000..85f932f2df --- /dev/null +++ b/resources/shaders/110/xray.vs @@ -0,0 +1,31 @@ +#version 110 + +uniform mat4 view_model_matrix; +uniform mat4 projection_matrix; +uniform mat3 view_normal_matrix; +uniform mat4 volume_world_matrix; + +// Clipping, as in gouraud.vs: the preview's top / bottom plane and the SLA gizmo's free one. +uniform vec2 z_range; +uniform vec4 clipping_plane; + +attribute vec3 v_position; +attribute vec3 v_normal; + +varying vec3 eye_normal; +varying vec3 eye_position; +varying vec3 clipping_planes_dots; + +void main() +{ + eye_normal = view_normal_matrix * v_normal; + + vec4 position = view_model_matrix * vec4(v_position, 1.0); + eye_position = position.xyz; + + // A component below zero means the fragment is clipped away. + vec4 world_pos = volume_world_matrix * vec4(v_position, 1.0); + clipping_planes_dots = vec3(dot(world_pos, clipping_plane), world_pos.z - z_range.x, z_range.y - world_pos.z); + + gl_Position = projection_matrix * position; +} diff --git a/resources/shaders/140/xray.fs b/resources/shaders/140/xray.fs new file mode 100644 index 0000000000..71c3569f8e --- /dev/null +++ b/resources/shaders/140/xray.fs @@ -0,0 +1,30 @@ +#version 140 + +// X-Ray view: each surface is a thin translucent layer of its own color, covering more the more +// edge-on it is seen. The caller draws it with depth writes off, so every surface a view ray crosses +// composites and overlapping geometry reads as denser. Source-alpha rather than additive blending: +// additive would saturate to white on the light theme's near-white background. +#define EDGE_FALLOFF 2.0 +// Coverage head-on and edge-on. +#define FACE_DENSITY 0.12 +#define EDGE_DENSITY 0.65 + +uniform vec4 uniform_color; + +in vec3 eye_normal; +in vec3 eye_position; +in vec3 clipping_planes_dots; + +out vec4 out_color; + +void main() +{ + if (any(lessThan(clipping_planes_dots, vec3(0.0)))) + discard; + + // abs(): back faces are drawn too, and there only the angle matters. + float facing = abs(dot(normalize(eye_normal), normalize(-eye_position))); + float density = mix(EDGE_DENSITY, FACE_DENSITY, pow(facing, EDGE_FALLOFF)); + + out_color = vec4(uniform_color.rgb, density * uniform_color.a); +} diff --git a/resources/shaders/140/xray.vs b/resources/shaders/140/xray.vs new file mode 100644 index 0000000000..9cb0d64b32 --- /dev/null +++ b/resources/shaders/140/xray.vs @@ -0,0 +1,31 @@ +#version 140 + +uniform mat4 view_model_matrix; +uniform mat4 projection_matrix; +uniform mat3 view_normal_matrix; +uniform mat4 volume_world_matrix; + +// Clipping, as in gouraud.vs: the preview's top / bottom plane and the SLA gizmo's free one. +uniform vec2 z_range; +uniform vec4 clipping_plane; + +in vec3 v_position; +in vec3 v_normal; + +out vec3 eye_normal; +out vec3 eye_position; +out vec3 clipping_planes_dots; + +void main() +{ + eye_normal = view_normal_matrix * v_normal; + + vec4 position = view_model_matrix * vec4(v_position, 1.0); + eye_position = position.xyz; + + // A component below zero means the fragment is clipped away. + vec4 world_pos = volume_world_matrix * vec4(v_position, 1.0); + clipping_planes_dots = vec3(dot(world_pos, clipping_plane), world_pos.z - z_range.x, z_range.y - world_pos.z); + + gl_Position = projection_matrix * position; +} diff --git a/resources/web/dialog/PluginWebDialog/blank.html b/resources/web/dialog/WebDialog/blank.html similarity index 76% rename from resources/web/dialog/PluginWebDialog/blank.html rename to resources/web/dialog/WebDialog/blank.html index 5047c5ba7b..928d754fab 100644 --- a/resources/web/dialog/PluginWebDialog/blank.html +++ b/resources/web/dialog/WebDialog/blank.html @@ -1,5 +1,5 @@ - diff --git a/sandboxes/orca_dock_panel_plugin_any.py b/sandboxes/orca_dock_panel_plugin_any.py new file mode 100644 index 0000000000..514f6c3068 --- /dev/null +++ b/sandboxes/orca_dock_panel_plugin_any.py @@ -0,0 +1,146 @@ +# /// script +# requires-python = ">=3.12" +# +# [tool.orcaslicer.plugin] +# name = "Dock Panel Demo" +# description = "Opens a dockable panel beside the 3D view that lists the objects on the plate." +# author = "OrcaSlicer" +# version = "0.0.1" +# /// +"""Dock Panel Demo -- orca.host.ui.create_dock_panel(). + +Run it from the Plugins dialog. It opens an HTML panel docked on the right of the 3D view, in the +same dock area as the sidebar. Drag its caption to dock it on another side (or float it, where the +platform allows), hide it from the page and run the plugin again to bring it back, or close it with +its close button or from the page. + + page --orca.postMessage({command: 'refresh'})--> plugin.on_message() + page --orca.postMessage({command: 'hide'})--> plugin.on_message() -> panel.hide() + page --orca.close()--> panel closes, plugin.on_close() + plugin --panel.post({command: 'objects', ...})--> page (orca.onMessage) +""" +import orca + +PAGE = """ + + +

Objects on the plate

+

Docked beside the 3D view. Drag the caption to move it.

+ +
+ + + +
+ + + + +
NamePartsCopies
+

Waiting for the plugin...

+ + +""" + + +def plate_objects(): + try: + model = orca.host.model() + except RuntimeError as error: + return {"command": "objects", "error": str(error)} + return { + "command": "objects", + "objects": [ + {"name": obj.name or "(unnamed)", "volumes": obj.volume_count(), "instances": obj.instance_count()} + for obj in model.objects() + ], + } + + +class DockPanelDemo(orca.script.ScriptPluginCapabilityBase): + panel = None + + def get_name(self): + return "Dock Panel Demo" + + def execute(self): + # The capability instance lives as long as the plugin, so a second run finds the open panel. + if self.panel is not None and self.panel.is_open(): + self.panel.show() + return orca.ExecutionResult.success("Dock Panel Demo is already open.") + self.panel = orca.host.ui.create_dock_panel( + html=PAGE, + title="Dock Panel Demo", + width=320, + height=480, + on_message=self.on_message, + on_close=self.on_close, + dock="right", + ) + return orca.ExecutionResult.success("Dock Panel Demo opened.") + + # Called on the UI thread when the page posts. + def on_message(self, message): + command = (message or {}).get("command") + if command == "refresh": + self.panel.post(plate_objects()) + elif command == "hide": + self.panel.hide() + + def on_close(self): + self.panel = None + + +@orca.plugin +class DockPanelDemoPlugin(orca.base): + def register_capabilities(self): + orca.register_capability(DockPanelDemo) diff --git a/scripts/linux.d/debian b/scripts/linux.d/debian index c33b24d2b7..e5816d345e 100644 --- a/scripts/linux.d/debian +++ b/scripts/linux.d/debian @@ -2,6 +2,7 @@ REQUIRED_DEV_PACKAGES=( autoconf + automake build-essential cmake eglexternalplatform-dev @@ -50,16 +51,20 @@ then REQUIRED_DEV_PACKAGES+=(libssl-dev libcurl4-openssl-dev) fi - # check which version of libwebkit2gtk is available - if [ "$(apt show --quiet libwebkit2gtk-4.0-dev 2>/dev/null)" != "" ] + # The package lists must be current before checking what is available. + sudo apt update + + # src/slic3r/CMakeLists.txt requires webkit2gtk-4.1 unconditionally (no + # 4.0 fallback), so prefer it; only fall back to 4.0-dev when 4.1 isn't + # packaged for this distro. + if [ "$(apt show --quiet libwebkit2gtk-4.1-dev 2>/dev/null)" != "" ] then - REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.0-dev) - else REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.1-dev) + else + REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.0-dev) fi # install them all at once - sudo apt update sudo apt install -y "${REQUIRED_DEV_PACKAGES[@]}" echo -e "done\n" diff --git a/src/dev-utils/OrcaSlicer_profile_validator.cpp b/src/dev-utils/OrcaSlicer_profile_validator.cpp index 56acbaa732..557dda7eec 100644 --- a/src/dev-utils/OrcaSlicer_profile_validator.cpp +++ b/src/dev-utils/OrcaSlicer_profile_validator.cpp @@ -122,17 +122,19 @@ Vec2d printable_area_center(const DynamicPrintConfig &cfg) // Put the prime tower where the GUI and CLI would before slicing. The config default (x 15, y 220) // lies off any bed shallower than the tower, and generation rejects an off-plate tower instead of -// exporting it. Beside the centred cube, clear of the edge exclusion strips some beds carry, then -// pulled inside the printable outline by the tower's own estimated footprint, with a few mm of -// clearance so the conflict checker never sees the two touch. -void place_wipe_tower(DynamicPrintConfig &cfg, const Vec2d ¢er) +// exporting it. Beside the cube at the bed centre, clear of the edge exclusion strips some beds +// carry, with a few mm of clearance so the conflict checker never sees the two touch. The cube and +// the tower's estimated footprint are then pulled inside the printable outline as one rigid pair: +// moving the tower alone would push it back onto the cube on a narrow bed. Returns that move for +// the cube. +Vec2d place_wipe_tower(DynamicPrintConfig &cfg, const Vec2d ¢er) { const auto *area = cfg.option("printable_area"); if (area == nullptr || area->values.size() < 3) - return; + return Vec2d::Zero(); const WipeTowerFootprint footprint = estimate_wipe_tower_footprint(cfg, resolve_wipe_tower_type(cfg), {0, 1}, cfg.opt_float("layer_height"), 10.); if (footprint.depth < EPSILON) - return; + return Vec2d::Zero(); const double margin = WIPE_TOWER_MARGIN + footprint.brim_width; // The position is the tower's own origin; a rotated tower extends from it in another // direction, so place the rotated box's extents rather than the origin. @@ -143,13 +145,22 @@ void place_wipe_tower(DynamicPrintConfig &cfg, const Vec2d ¢er) const Vec2d size = unscale(local.max) - lo; Vec2d pos(center.x() + 5. + margin + 5. - lo.x(), center.y() - size.y() / 2. - lo.y()); box.translate(Point::new_scale(pos.x(), pos.y())); - const Vec2f move = WipeTower::move_box_inside_polygon(get_extents(box), Polygons{Polygon::new_scale(area->values)}, scaled(margin)); - pos += move.cast(); + // A bed too small for the pair keeps the cube at its centre and places the tower alone. + const Polygons bed{Polygon::new_scale(area->values)}; + const BoundingBox tower = get_extents(box); + BoundingBox pair = tower; + pair.merge(Point::new_scale(center.x() - 5., center.y() - 5.)); + pair.merge(Point::new_scale(center.x() + 5., center.y() + 5.)); + const Point room = get_extents(bed).size() - Point::new_scale(2. * margin, 2. * margin); + const bool rigid = pair.size().x() < room.x() && pair.size().y() < room.y(); + const Vec2d move = WipeTower::move_box_inside_polygon(rigid ? pair : tower, bed, scaled(margin)).cast(); + pos += move; cfg.option("wipe_tower_x", true)->values = {pos.x()}; cfg.option("wipe_tower_y", true)->values = {pos.y()}; + return rigid ? move : Vec2d::Zero(); } -// Slice one centered cube that switches from filament 1 to filament 2 partway up, so exactly one +// Slice one cube that switches from filament 1 to filament 2 partway up, so exactly one // filament change fires, then export. The change drives the printer's own change_filament_gcode: on a // single-nozzle machine it rides the AMS prime tower (append_tcr), on a multi-nozzle machine it routes // through the nozzle swap (set_extruder / append_tcr2) - the engine picks the path from the printer's @@ -157,10 +168,10 @@ void place_wipe_tower(DynamicPrintConfig &cfg, const Vec2d ¢er) // Slic3r::PlaceholderParserError from export. std::string slice_two_color_cube_and_export(DynamicPrintConfig cfg, bool is_bbl) { - const Vec2d center = printable_area_center(cfg); - place_wipe_tower(cfg, center); + const Vec2d center = printable_area_center(cfg); + const Vec2d cube_min = center - Vec2d(5., 5.) + place_wipe_tower(cfg, center); TriangleMesh m = make_cube(10, 10, 10); - m.translate(float(center.x() - 5.), float(center.y() - 5.), 0.f); + m.translate(static_cast(cube_min.x()), static_cast(cube_min.y()), 0.f); Model model; Print print; diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 3ac3ec5d80..0efce54ed8 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -123,6 +123,8 @@ set(SLIC3R_GUI_SOURCES GUI/PluginPickerDialog.hpp GUI/PluginsDialog.cpp GUI/PluginsDialog.hpp + GUI/Shortcuts.cpp + GUI/Shortcuts.hpp GUI/SpeedDialDialog.cpp GUI/SpeedDialDialog.hpp GUI/ActionRegistry.cpp @@ -137,8 +139,16 @@ set(SLIC3R_GUI_SOURCES GUI/TerminalDialog.hpp GUI/PluginProgressDialog.cpp GUI/PluginProgressDialog.hpp - GUI/PluginWebDialog.cpp - GUI/PluginWebDialog.hpp + GUI/WebDialog.cpp + GUI/WebDialog.hpp + GUI/DockPanel.cpp + GUI/DockPanel.hpp + GUI/WebPanel.cpp + GUI/WebPanel.hpp + GUI/Widgets/WebHosting.cpp + GUI/Widgets/WebHosting.hpp + GUI/AuiPaneLayout.cpp + GUI/AuiPaneLayout.hpp GUI/DragCanvas.cpp GUI/DragCanvas.hpp GUI/EditGCodeDialog.cpp @@ -336,6 +346,8 @@ set(SLIC3R_GUI_SOURCES GUI/Jobs/Worker.hpp GUI/KBShortcutsDialog.cpp GUI/KBShortcutsDialog.hpp + GUI/KeyChord.cpp + GUI/KeyChord.hpp GUI/LibVGCode/LibVGCodeWrapper.hpp GUI/LibVGCode/LibVGCodeWrapper.cpp GUI/LinuxDisplayBackend.cpp @@ -991,8 +1003,8 @@ elseif (WIN32) find_library(LIBAVCODEC_LIBRARY NAMES avcodec PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBSWSCALE_LIBRARY NAMES swscale PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) find_library(LIBAVUTIL_LIBRARY NAMES avutil PATHS ${CMAKE_PREFIX_PATH}/lib NO_DEFAULT_PATH) - if (NOT LIBAVCODEC_LIBRARY OR NOT LIBSWSCALE_LIBRARY OR NOT LIBAVUTIL_LIBRARY) - message(FATAL_ERROR "FFmpeg (avcodec/swscale/avutil) not found under ${CMAKE_PREFIX_PATH}/lib. Rebuild the deps.") + if (NOT LIBAVFORMAT_LIBRARY OR NOT LIBAVCODEC_LIBRARY OR NOT LIBSWSCALE_LIBRARY OR NOT LIBAVUTIL_LIBRARY) + message(FATAL_ERROR "FFmpeg (avformat/avcodec/swscale/avutil) not found under ${CMAKE_PREFIX_PATH}/lib. Rebuild the deps.") endif () target_link_libraries(libslic3r_gui ${LIBAVFORMAT_LIBRARY} ${LIBAVCODEC_LIBRARY} ${LIBSWSCALE_LIBRARY} ${LIBAVUTIL_LIBRARY}) target_include_directories(libslic3r_gui SYSTEM PRIVATE ${CMAKE_PREFIX_PATH}/include) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index fd23337b44..bf3cdc5303 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1157,6 +1157,10 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, const float support_normal_z = get_selection_support_normal_z(); + // The outline passes below are driven by is_outline, which only the object shaders have; with an + // overlay one (wireframe, x-ray) bound they would just draw the volume again. + const bool shader_can_outline = shader->get_uniform_location("is_outline") >= 0; + // Prime depth_tex on every frame so non-outline draws do not keep the // default sampler unit 0, which can conflict with other sampler types. shader->set_uniform("depth_tex", OUTLINE_DEPTH_TEX_UNIT); @@ -1257,7 +1261,7 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, const Matrix3d view_normal_matrix = view_matrix.matrix().block(0, 0, 3, 3) * model_matrix.matrix().block(0, 0, 3, 3).inverse().transpose(); shader->set_uniform("view_normal_matrix", view_normal_matrix); //BBS: add outline related logic - if (volume.first->selected && GUI::wxGetApp().show_outline()) + if (volume.first->selected && shader_can_outline && GUI::wxGetApp().show_outline()) volume.first->render_with_outline(cnv_size); else volume.first->render(); diff --git a/src/slic3r/GUI/AuiPaneLayout.cpp b/src/slic3r/GUI/AuiPaneLayout.cpp new file mode 100644 index 0000000000..dc93352971 --- /dev/null +++ b/src/slic3r/GUI/AuiPaneLayout.cpp @@ -0,0 +1,20 @@ +#include "AuiPaneLayout.hpp" + +namespace Slic3r { namespace GUI { + +std::string aui_pane_layout_entry(const std::string& layout, const std::string& pane_name) +{ + // Panes are separated by '|'; SavePerspective() escapes a '|' inside a caption as "\|". + const std::string prefix = "name=" + pane_name + ";"; + size_t begin = 0; + for (size_t i = 0; i <= layout.size(); ++i) { + if (i < layout.size() && (layout[i] != '|' || (i > 0 && layout[i - 1] == '\\'))) + continue; + if (layout.compare(begin, prefix.size(), prefix) == 0) + return layout.substr(begin, i - begin); + begin = i + 1; + } + return {}; +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/AuiPaneLayout.hpp b/src/slic3r/GUI/AuiPaneLayout.hpp new file mode 100644 index 0000000000..e18b5ff6e1 --- /dev/null +++ b/src/slic3r/GUI/AuiPaneLayout.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace Slic3r { namespace GUI { + +// The part a wxAuiManager layout string (wxAuiManager::SavePerspective) holds for `pane_name`, in the +// form wxAuiManager::LoadPaneInfo() takes, or empty when the layout has no such pane. +std::string aui_pane_layout_entry(const std::string& layout, const std::string& pane_name); + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index da40fb4f19..84554dcfb0 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -6,6 +6,7 @@ #include "Widgets/Label.hpp" #include "MsgDialog.hpp" #include "libslic3r/Print.hpp" +#include "PrePrintChecker.hpp" #include "DeviceCore/DevConfig.h" #include "DeviceCore/DevConfigUtil.h" @@ -1639,19 +1640,6 @@ void CalibrationPresetPage::update_combobox_filaments(MachineObject* obj) select_default_compatible_filament(); } -bool CalibrationPresetPage::is_blocking_printing() -{ - DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return true; - - MachineObject* obj_ = dev->get_selected_machine(); - if (obj_ == nullptr) return true; - - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - const auto source_model = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); - return !DevPrinterConfigUtil::is_printer_model_compatible(source_model, *obj_); -} - bool CalibrationPresetPage::is_nozzle_info_synced() const { if (!curr_obj || !curr_obj->is_info_ready()) @@ -1733,11 +1721,13 @@ void CalibrationPresetPage::update_show_status() } } - //if (is_blocking_printing()) { - // show_status(CaliPresetPageStatus::CaliPresetStatusUnsupportedPrinter); - // return; - //} - //else + bool has_optional_printer_model = DevPrinterConfigUtil::is_optional_printer_model_id(obj_->printer_type); + if (PresetBundle *preset_bundle = wxGetApp().preset_bundle) { + has_optional_printer_model = has_optional_printer_model || + DevPrinterConfigUtil::is_optional_printer_model_id( + preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle)); + } + if (obj_->is_connecting() || !obj_->is_connected()) { show_status(CaliPresetPageStatus::CaliPresetStatusInConnecting); return; @@ -1789,7 +1779,9 @@ void CalibrationPresetPage::update_show_status() return; } - show_status(CaliPresetPageStatus::CaliPresetStatusNormal); + show_status(has_optional_printer_model ? + CaliPresetPageStatus::CaliPresetStatusOptionalPrinterModel : + CaliPresetPageStatus::CaliPresetStatusNormal); } @@ -1843,6 +1835,10 @@ void CalibrationPresetPage::show_status(CaliPresetPageStatus status) Layout(); Fit(); } + else if (status == CaliPresetPageStatus::CaliPresetStatusOptionalPrinterModel) { + update_print_status_msg(PrePrintChecker::get_pre_state_msg(PrintDialogStatus::PrintStatusOptionalPrinterModel), true); + Enable_Send_Button(true); + } else if (status == CaliPresetPageStatus::CaliPresetStatusNoUserLogin) { wxString msg_text = _L("No login account, only printers in LAN mode are displayed."); update_print_status_msg(msg_text, false); diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp index adb4ce52ab..4d1adb1004 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -152,7 +152,8 @@ enum CaliPresetPageStatus CaliPresetStatusInConnecting, CaliPresetStatusFilamentIncompatible, CaliPresetStatusLanModeSDcardNotAvailable, - CaliPresetStatusDifferentNozzleDiameters + CaliPresetStatusDifferentNozzleDiameters, + CaliPresetStatusOptionalPrinterModel }; class CalibrationPresetPage : public CalibrationWizardPage @@ -268,7 +269,6 @@ protected: bool is_nozzle_info_synced() const; void show_status(CaliPresetPageStatus status); void Enable_Send_Button(bool enable); - bool is_blocking_printing(); bool need_check_sdcard(MachineObject* obj); CaliPresetPageStatus get_status() { return m_page_status; } diff --git a/src/slic3r/GUI/DeviceCore/DevManager.cpp b/src/slic3r/GUI/DeviceCore/DevManager.cpp index d4db0cdfeb..f129700c5e 100644 --- a/src/slic3r/GUI/DeviceCore/DevManager.cpp +++ b/src/slic3r/GUI/DeviceCore/DevManager.cpp @@ -1,8 +1,9 @@ +#include "DevManager.h" #include #include -#include "DevManager.h" +#include #include "CloudProvider.hpp" #include "DevUtil.h" @@ -48,10 +49,12 @@ namespace { namespace Slic3r { - DeviceManager::DeviceManager(NetworkAgent* agent) + DeviceManager::DeviceManager(NetworkAgent* agent, bool enable_refresher, AppConfig* app_config) { - m_agent = agent; - m_refresher = new DeviceManagerRefresher(this); + m_agent = agent; + m_app_config = app_config; + if (enable_refresher) + m_refresher = new DeviceManagerRefresher(this); DevPrinterConfigUtil::InitFilePath(resources_dir()); @@ -62,9 +65,14 @@ namespace Slic3r } } + AppConfig* DeviceManager::get_app_config() const + { + return m_app_config ? m_app_config : GUI::wxGetApp().app_config; + } + void DeviceManager::load_local_machines_from_config() { - AppConfig* config = GUI::wxGetApp().app_config; + AppConfig* config = get_app_config(); if (!config) return; const auto local_machines = config->get_local_machines(); @@ -90,9 +98,8 @@ namespace Slic3r } } - void DeviceManager::update_local_machine(const MachineObject& m) + void DeviceManager::update_local_machine(const MachineObject& m, AppConfig* config) { - AppConfig* config = GUI::wxGetApp().app_config; if (config) { if (m.is_lan_mode_printer()) { if (m.has_access_right()) { @@ -113,7 +120,8 @@ namespace Slic3r DeviceManager::~DeviceManager() { - delete m_refresher; + if (m_refresher) + delete m_refresher; for (auto it = localMachineList.begin(); it != localMachineList.end(); it++) { @@ -173,14 +181,22 @@ namespace Slic3r return printer_agent ? printer_agent->get_agent_info().id : ""; } + std::string DeviceManager::get_current_cloud_provider() const + { + const std::string agent_id = get_current_printer_agent_id(); + if (!agent_id.empty()) + return agent_id == BBL_PRINTER_AGENT_ID ? BBL_CLOUD_PROVIDER : ORCA_CLOUD_PROVIDER; + return GUI::wxGetApp().get_printer_cloud_provider(); + } + void DeviceManager::EnableMultiMachine(bool enable) { m_agent->enable_multi_machine(enable); m_enable_mutil_machine = enable; } - void DeviceManager::start_refresher() { m_refresher->Start(); } - void DeviceManager::stop_refresher() { m_refresher->Stop(); } + void DeviceManager::start_refresher() { if (m_refresher) m_refresher->Start(); } + void DeviceManager::stop_refresher() { if (m_refresher) m_refresher->Stop(); } void DeviceManager::keep_alive() @@ -297,6 +313,8 @@ namespace Slic3r /* update localMachineList */ it = localMachineList.find(dev_id); + AppConfig* config = get_app_config(); + if (it != localMachineList.end()) { // update properties /* ip changed */ @@ -386,7 +404,6 @@ namespace Slic3r obj->m_is_online = true; //load access code - AppConfig* config = Slic3r::GUI::wxGetApp().app_config; if (config) { obj->set_access_code(get_access_code_with_legacy_fallback(config, dev_id, obj->printer_agent_id), false); } @@ -400,7 +417,7 @@ namespace Slic3r << ", ip = " << dev_ip <<", printer_name = " << dev_name << ", con_type= " << connect_type <<", signal= " << printer_signal << ", bind_state= " << bind_state; } - update_local_machine(*obj); + update_local_machine(*obj, config); } catch (...) { ; @@ -435,11 +452,16 @@ namespace Slic3r obj->last_alive = Slic3r::Utils::get_current_time_utc(); obj->set_access_code(access_code, false); - update_local_machine(*obj); + update_local_machine(*obj, get_app_config()); return obj; } + void DeviceManager::update_local_machine(const MachineObject& m) + { + update_local_machine(m, GUI::wxGetApp().app_config); + } + int DeviceManager::query_bind_status(std::string& msg, const std::string& provider) { if (!m_agent) @@ -573,13 +595,13 @@ namespace Slic3r << " cur_selected=" << selected_machine; auto my_machine_list = get_my_machine_list(get_current_printer_agent_id()); auto it = my_machine_list.find(dev_id); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: set_selected_machine lookup dev_id=" << dev_id + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: set_selected_machine lookup dev_id=" << dev_id << " found=" << (it != my_machine_list.end()) << " my_machine_count=" << my_machine_list.size() << " current_agent=" << get_current_printer_agent_id() << " provider=" << GUI::wxGetApp().get_printer_cloud_provider(); if (it != my_machine_list.end() && it->second) { - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: target machine dev_id=" << it->second->get_dev_id() + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: target machine dev_id=" << it->second->get_dev_id() << " printer_agent_id=" << it->second->printer_agent_id << " connection_type=" << it->second->connection_type() << " dev_connection_type=" << it->second->dev_connection_type; @@ -598,7 +620,7 @@ namespace Slic3r } else if (last_selected->second->connection_type() == "cloud") { const int result = m_agent->set_user_selected_machine(""); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: cleared previous cloud selection dev_id=" + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: cleared previous cloud selection dev_id=" << selected_machine << " result=" << result; } } @@ -635,7 +657,8 @@ namespace Slic3r it->second->reset(); #if !BBL_RELEASE_TO_PUBLIC - it->second->connect(Slic3r::GUI::wxGetApp().app_config->get("enable_ssl_for_mqtt") == "true" ? true : false); + AppConfig* config = get_app_config(); + it->second->connect(config && config->get("enable_ssl_for_mqtt") == "true"); #else it->second->connect(it->second->local_use_ssl); #endif @@ -652,7 +675,7 @@ namespace Slic3r // diff dev_id, cloud => set_user_selected_machine(new) BOOST_LOG_TRIVIAL(info) << "set_selected_machine: select new cloud machine, dev_id =" << dev_id; const int result = m_agent->set_user_selected_machine(dev_id); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: set new cloud selection dev_id=" + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: set new cloud selection dev_id=" << dev_id << " result=" << result; it->second->reset(); } @@ -661,7 +684,8 @@ namespace Slic3r BOOST_LOG_TRIVIAL(info) << "set_selected_machine: select new lan machine, dev_id =" << dev_id; it->second->reset(); #if !BBL_RELEASE_TO_PUBLIC - it->second->connect(Slic3r::GUI::wxGetApp().app_config->get("enable_ssl_for_mqtt") == "true" ? true : false); + AppConfig* config = get_app_config(); + it->second->connect(config && config->get("enable_ssl_for_mqtt") == "true"); #else it->second->connect(it->second->local_use_ssl); #endif @@ -681,7 +705,7 @@ namespace Slic3r selected_machine = dev_id; record_user_last_machine(selected_machine); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: DeviceManager selection complete selected_machine=" + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: DeviceManager selection complete selected_machine=" << selected_machine; return true; } @@ -714,7 +738,7 @@ namespace Slic3r BOOST_LOG_TRIVIAL(trace) << "add_user_subscribe: " << it->first; } const int result = m_agent->add_subscribe(dev_list); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: add_user_subscribe count=" << dev_list.size() + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: add_user_subscribe count=" << dev_list.size() << " result=" << result; } @@ -729,7 +753,7 @@ namespace Slic3r BOOST_LOG_TRIVIAL(trace) << "del_user_subscribe: " << it->first; } const int result = m_agent->del_subscribe(dev_list); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: del_user_subscribe count=" << dev_list.size() + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: del_user_subscribe count=" << dev_list.size() << " result=" << result; } @@ -851,14 +875,15 @@ namespace Slic3r json j = json::parse(body); const bool has_request_context = j.contains("provider") && j.contains("agent_id") && j.contains("generation"); + const std::string current_provider = get_current_cloud_provider(); const std::string provider = j.contains("provider") ? j["provider"].get() - : GUI::wxGetApp().get_printer_cloud_provider(); + : current_provider; const std::string agent_id = j.contains("agent_id") ? j["agent_id"].get() : get_current_printer_agent_id(); const std::uint64_t generation = j.value("generation", std::uint64_t(0)); if (has_request_context && - (provider != GUI::wxGetApp().get_printer_cloud_provider() || + (provider != current_provider || agent_id != get_current_printer_agent_id() || generation != (m_agent ? m_agent->get_user_machine_list_generation() : 0))) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ": ignoring stale response provider=" @@ -903,7 +928,8 @@ namespace Slic3r if (obj->get_dev_ip().empty()) { - obj->get_dev_ip() = Slic3r::GUI::wxGetApp().app_config->get("ip_address", dev_id); + if (AppConfig* config = get_app_config()) + obj->get_dev_ip() = config->get("ip_address", dev_id); } userMachineList.insert(std::make_pair(dev_id, obj)); } @@ -948,7 +974,7 @@ namespace Slic3r obj->set_access_code(acc_code); } - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: parsed cloud machine dev_id=" << dev_id + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: parsed cloud machine dev_id=" << dev_id << " name=" << obj->get_dev_name() << " agent_id=" << obj->printer_agent_id << " connection_type=" << obj->connection_type() @@ -968,7 +994,7 @@ namespace Slic3r iterat++; } } - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: parse_user_print_info complete provider=" << provider + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: parse_user_print_info complete provider=" << provider << " parsed_count=" << new_list.size() << " stored_count=" << userMachineList.size(); } @@ -987,29 +1013,29 @@ namespace Slic3r unsigned int http_code; std::string body; int result = m_agent->get_user_print_info(&http_code, &body, provider); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: get_user_print_info provider=" << provider + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: get_user_print_info provider=" << provider << " result=" << result << " http_code=" << http_code << " body_bytes=" << body.size(); if (result == 0) { // parse_user_print_info and on_machine_alive (SSDP for discovery) both mutate the same userMachineList map. // on_machine_alive mutates the map on the UI thread, do the same for parse_user_print_info. - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: queueing parse_user_print_info on UI thread"; + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: queueing parse_user_print_info on UI thread"; Slic3r::GUI::wxGetApp().CallAfter([this, body]() { parse_user_print_info(body); }); } } void DeviceManager::record_user_last_machine(const std::string& dev_id) { - if (Slic3r::GUI::wxGetApp().app_config) { - Slic3r::GUI::wxGetApp().app_config->set("user_last_selected_machine", dev_id); + if (AppConfig* config = get_app_config()) { + config->set("user_last_selected_machine", dev_id); } } std::string DeviceManager::get_user_last_machine() const { - if (Slic3r::GUI::wxGetApp().app_config) { - const auto& user_last_machine = Slic3r::GUI::wxGetApp().app_config->get("user_last_selected_machine"); + if (AppConfig* config = get_app_config()) { + const auto& user_last_machine = config->get("user_last_selected_machine"); if (!user_last_machine.empty()) { return user_last_machine; } else if (m_agent) { diff --git a/src/slic3r/GUI/DeviceCore/DevManager.h b/src/slic3r/GUI/DeviceCore/DevManager.h index 32f93f3a1a..1ba4631881 100644 --- a/src/slic3r/GUI/DeviceCore/DevManager.h +++ b/src/slic3r/GUI/DeviceCore/DevManager.h @@ -12,6 +12,7 @@ namespace Slic3r struct BBLocalMachine; class MachineObject; class NetworkAgent; +class AppConfig; namespace GUI { class GUI_App; @@ -24,6 +25,7 @@ class DeviceManager friend class DeviceManagerRefresher; private: NetworkAgent* m_agent{ nullptr }; + AppConfig* m_app_config{ nullptr }; DeviceManagerRefresher* m_refresher{ nullptr }; bool m_enable_mutil_machine = false; @@ -35,11 +37,13 @@ private: std::map userMachineList; /* dev_id -> MachineObject* cloudMachine of User */ public: - DeviceManager(NetworkAgent* agent = nullptr); + DeviceManager(NetworkAgent* agent = nullptr, bool enable_refresher = true, + AppConfig* app_config = nullptr); ~DeviceManager(); public: NetworkAgent* get_agent() const { return m_agent; } + AppConfig* get_app_config() const; void set_agent(NetworkAgent* agent); void start_refresher(); @@ -121,6 +125,7 @@ private: void keep_alive(); void check_pushing(); + std::string get_current_cloud_provider() const; void OnMachineBindStateChanged(MachineObject* obj, const std::string& new_state); void OnSelectedMachineChanged(const std::string& pre_dev_id, const std::string& new_dev_id); @@ -133,14 +138,15 @@ public: std::string connection_type, std::string bind_state, std::string version, std::string access_code); static void update_local_machine(const MachineObject& m); + static void update_local_machine(const MachineObject& m, AppConfig* config); }; class DeviceManagerRefresher : public wxObject { - wxTimer* m_timer{ nullptr }; - int m_timer_interval_msec = 5000; + wxTimer* m_timer{nullptr}; + int m_timer_interval_msec = 5000; - DeviceManager* m_manager{ nullptr }; + DeviceManager* m_manager{nullptr}; public: DeviceManagerRefresher(DeviceManager* manger); diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 60f51ac875..d8fd838f96 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -16,6 +16,7 @@ #include "ReleaseNote.hpp" #include #include +#include #include #include #include @@ -476,7 +477,7 @@ void MachineObject::set_access_code(std::string code, bool only_refresh) { this->access_code = code; if (only_refresh) { - AppConfig* config = GUI::wxGetApp().app_config; + AppConfig* config = m_manager ? m_manager->get_app_config() : GUI::wxGetApp().app_config; if (config) { if (is_lan_mode_printer()) { // why: LAN codes are scoped via BBLocalMachine::access_code, keyed by dev_id and @@ -489,7 +490,7 @@ void MachineObject::set_access_code(std::string code, bool only_refresh) // fresh from the cloud API's current response, so there's no cross-agent leakage // risk to guard against there. if (!code.empty()) { - DeviceManager::update_local_machine(*this); + DeviceManager::update_local_machine(*this, config); } else { // Only patch an existing record's code - don't persist a brand-new // never-bound entry just because set_access_code("") was called on it. @@ -1504,16 +1505,19 @@ int MachineObject::command_upgrade_module(std::string url, std::string module_ty int MachineObject::command_xyz_abs() { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_xyz_abs(get_dev_id(), MachineObject::m_sequence_id++, is_lan_mode_printer())); } int MachineObject::command_auto_leveling() { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_auto_leveling(get_dev_id(), MachineObject::m_sequence_id++, is_lan_mode_printer())); } int MachineObject::command_go_home() { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_go_home(get_dev_id(), this->is_in_printing(), m_support_mqtt_homing, MachineObject::m_sequence_id++, is_lan_mode_printer())); } @@ -1636,11 +1640,13 @@ int MachineObject::command_stop_buzzer() int MachineObject::command_set_bed(int temp) { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_set_bed(get_dev_id(), temp, m_support_mqtt_bet_ctrl, MachineObject::m_sequence_id++, is_lan_mode_printer())); } int MachineObject::command_set_nozzle(int temp) { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_set_nozzle(get_dev_id(), temp, MachineObject::m_sequence_id++, is_lan_mode_printer())); } @@ -1746,6 +1752,7 @@ int MachineObject::command_ams_user_settings(bool start_read_opt, bool tray_read int MachineObject::command_ams_calibrate(int ams_id) { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_ams_calibrate(get_dev_id(), ams_id, MachineObject::m_sequence_id++, is_lan_mode_printer())); } @@ -1784,6 +1791,7 @@ int MachineObject::command_ams_filament_settings(int ams_id, int slot_id, std::s int MachineObject::command_ams_refresh_rfid(std::string tray_id) { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_ams_refresh_rfid(get_dev_id(), tray_id, MachineObject::m_sequence_id++, is_lan_mode_printer())); } @@ -1806,6 +1814,7 @@ int MachineObject::command_start_camera() int MachineObject::command_ams_select_tray(std::string tray_id) { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_ams_select_tray(get_dev_id(), tray_id, MachineObject::m_sequence_id++, is_lan_mode_printer())); } @@ -1965,6 +1974,7 @@ int MachineObject::command_ams_air_print_detect(bool air_print_detect) int MachineObject::command_axis_control(std::string axis, double unit, double input_val, int speed) { + if (!m_agent) return -1; return command_with_dialog(m_agent->command_axis_control(get_dev_id(), axis, unit, input_val, speed, is_core_xy(), m_support_mqtt_axis_control, MachineObject::m_sequence_id++, is_lan_mode_printer())); @@ -2608,9 +2618,14 @@ void MachineObject::set_print_state(std::string status) // why: printer agents can report progress without BBL cloud task identity. void MachineObject::update_print_progress(const json& value) { - if (value.is_string()) - mc_print_percent = stoi(value.get()); - else if (value.is_number_integer()) + if (value.is_string()) { + const std::string progress = value.get(); + int parsed_progress; + const auto result = std::from_chars(progress.data(), progress.data() + progress.size(), parsed_progress); + if (result.ec != std::errc{} || result.ptr != progress.data() + progress.size()) + return; + mc_print_percent = parsed_progress; + } else if (value.is_number_integer()) mc_print_percent = value.get(); else return; @@ -4667,7 +4682,7 @@ int MachineObject::parse_json(std::string tunnel, std::string payload, bool key_ if (diff.count() > 10.0f) { BOOST_LOG_TRIVIAL(trace) << "parse_json timeout = " << diff.count(); } - DeviceManager::update_local_machine(*this); + DeviceManager::update_local_machine(*this, m_manager ? m_manager->get_app_config() : GUI::wxGetApp().app_config); return 0; } diff --git a/src/slic3r/GUI/DockPanel.cpp b/src/slic3r/GUI/DockPanel.cpp new file mode 100644 index 0000000000..0a5d25c4e7 --- /dev/null +++ b/src/slic3r/GUI/DockPanel.cpp @@ -0,0 +1,103 @@ +#include "DockPanel.hpp" + +#include "GUI_App.hpp" +#include "Plater.hpp" +#include "Widgets/WebHosting.hpp" + +#include + +#include +#include + +namespace Slic3r { namespace GUI { + +std::string plugin_pane_name(const std::string& plugin_key, const std::string& title) +{ + std::string name = "plugin:" + plugin_key + ":" + title; + std::replace_if(name.begin(), name.end(), [](char c) { return c == '|' || c == ';' || c == '=' || c == '\\'; }, '_'); + return name; +} + +DockPanel::DockPanel(wxWindow* parent, + const std::string& html, + MessageHandler on_message, + CloseHandler on_close, + CloseHandler on_destroyed) + : WebPanel(parent, web_hosting::orca_bridge_script()) + , m_html(html) + , m_on_message(std::move(on_message)) + , m_on_close(std::move(on_close)) + , m_on_destroyed(std::move(on_destroyed)) +{ + // A link asking for a new window has nowhere to open from a docked panel. + browser()->Bind(wxEVT_WEBVIEW_NEWWINDOW, [](wxWebViewEvent& event) { event.Veto(); }); +} + +DockPanel::~DockPanel() +{ + if (m_on_destroyed) + m_on_destroyed(); +} + +bool DockPanel::on_page_message(const std::string& kind, const nlohmann::json& data) +{ + if (kind == "message") { + if (m_on_message) + m_on_message(data); + return true; + } + if (kind == "close") { + request_close(); + return true; + } + return false; +} + +void DockPanel::push_message(const nlohmann::json& data) +{ + if (!m_closing) + post_to_page(data.dump(-1, ' ', false, nlohmann::json::error_handler_t::replace)); +} + +void DockPanel::fire_close() +{ + if (m_closing) + return; + m_closing = true; + if (m_on_close) { + CloseHandler on_close = std::move(m_on_close); + m_on_close = nullptr; + on_close(); + } +} + +void DockPanel::request_close() +{ + if (m_closing) + return; + fire_close(); + // A page-requested close arrives inside the web view's script callback, so destroy later; another + // close path may have destroyed the panel by then. + wxWeakRef self(this); + CallAfter([self]() { + if (self) + self->remove_pane(); + }); +} + +void DockPanel::destroy_silently() +{ + m_closing = true; + m_on_close = nullptr; + remove_pane(); +} + +void DockPanel::remove_pane() +{ + if (Plater* plater = wxGetApp().plater()) + plater->remove_dock_pane(this); + else + Destroy(); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/DockPanel.hpp b/src/slic3r/GUI/DockPanel.hpp new file mode 100644 index 0000000000..a9a0a0d6b3 --- /dev/null +++ b/src/slic3r/GUI/DockPanel.hpp @@ -0,0 +1,54 @@ +#pragma once + +#include "WebPanel.hpp" + +#include +#include + +namespace Slic3r { namespace GUI { + +// Stable across sessions so the saved layout finds the pane; free of wxAuiManager layout delimiters. +std::string plugin_pane_name(const std::string& plugin_key, const std::string& title); + +// A WebPanel docked in the Plater, on the plugin-window bridge minus submit. It can be destroyed +// without the GIL, so its hooks must not capture pybind11 objects. +class DockPanel : public WebPanel +{ +public: + using MessageHandler = std::function; + using CloseHandler = std::function; + + // on_close fires once, on a user or page close. on_destroyed runs on every destruction and must + // touch host-side state only. + DockPanel(wxWindow* parent, + const std::string& html, + MessageHandler on_message, + CloseHandler on_close, + CloseHandler on_destroyed); + ~DockPanel() override; + + // Main thread only. + void push_message(const nlohmann::json& data); + // Fires on_close, then removes the pane. + void request_close(); + // Removes the pane without on_close, for plugin unload. Destroys at once: unload always comes from + // the host, never from this panel's own callbacks. + void destroy_silently(); + // Fires on_close at most once; also run by the pane's own close button. + void fire_close(); + +protected: + std::optional page_html() override { return m_html; } + bool on_page_message(const std::string& kind, const nlohmann::json& data) override; + +private: + void remove_pane(); + + std::string m_html; + bool m_closing{false}; + MessageHandler m_on_message; + CloseHandler m_on_close; + CloseHandler m_on_destroyed; +}; + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 02ef95e2c6..190eeedbb4 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -29,6 +29,7 @@ #include "MainFrame.hpp" #include "WipeTowerDialog.hpp" #include "GUI_App.hpp" +#include "Shortcuts.hpp" #include "GUI_ObjectList.hpp" #include "GUI_Colors.hpp" #include "Mouse3DController.hpp" @@ -77,6 +78,7 @@ #include #include #include +#include #ifndef IMGUI_DEFINE_MATH_OPERATORS #define IMGUI_DEFINE_MATH_OPERATORS @@ -1055,7 +1057,6 @@ wxDEFINE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_MOVE_SLIDERS, wxKeyEvent); -wxDEFINE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent); wxDEFINE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent); wxDEFINE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent); wxDEFINE_EVENT(EVT_GLCANVAS_REDO, SimpleEvent); @@ -1174,7 +1175,6 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas, Bed3D &bed) , m_dynamic_background_enabled(false) , m_multisample_allowed(false) , m_moving(false) - , m_tab_down(false) , m_camera_movement(false) , m_cursor_type(Standard) , m_color_by("volume") @@ -3229,6 +3229,9 @@ void GLCanvas3D::bind_event_handlers() m_canvas->Bind(wxEVT_PAINT, &GLCanvas3D::on_paint, this); m_canvas->Bind(wxEVT_SET_FOCUS, &GLCanvas3D::on_set_focus, this); m_canvas->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent& evt) { + // The key-up that would commit a keyboard edit goes to whatever took the focus. + if (m_selection_edit.kind != SelectionEdit::None) + finish_selection_edit(); ImGui::SetWindowFocus(nullptr); render(); evt.Skip(); @@ -3358,8 +3361,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) // see include/wx/defs.h enum wxKeyCode int keyCode = evt.GetKeyCode(); - int ctrlMask = wxMOD_CONTROL; - int shiftMask = wxMOD_SHIFT; auto imgui = wxGetApp().imgui(); if (imgui->update_key_data(evt)) { @@ -3367,6 +3368,11 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) return; } +#ifdef SLIC3R_CAD + const int ctrlMask = wxMOD_CONTROL; + const int shiftMask = wxMOD_SHIFT; +#endif + // Design tab: Delete/Backspace removes the selected sketch entities while a // sketch tool is active and the canvas has focus (dialog text fields are separate // wx controls, so this never eats their editing keys). @@ -3425,12 +3431,6 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) } #endif - bool is_in_painting_mode = false; - GLGizmoPainterBase *current_gizmo_painter = dynamic_cast(get_gizmos_manager().get_current()); - if (current_gizmo_painter != nullptr) { - is_in_painting_mode = true; - } - //BBS: add orient deactivate logic if (keyCode == WXK_ESCAPE && (_deactivate_arrange_menu() || _deactivate_orient_menu())) @@ -3439,361 +3439,271 @@ void GLCanvas3D::on_char(wxKeyEvent& evt) if (m_gizmos.on_char(evt)) return; - if ((evt.GetModifiers() & ctrlMask) != 0) { - // CTRL is pressed - switch (keyCode) { -#ifdef __APPLE__ - case 'a': - case 'A': -#else /* __APPLE__ */ - case WXK_CONTROL_A: -#endif /* __APPLE__ */ - if (!is_in_painting_mode && !m_layers_editing.is_enabled()) { - if (evt.ShiftDown()) - post_event(SimpleEvent(EVT_GLCANVAS_SELECT_ALL)); - else - post_event(SimpleEvent(EVT_GLCANVAS_SELECT_CURR_PLATE_ALL)); - } + if (const KeyChord chord = KeyChord::from_event(evt); chord.is_punctuation() && handle_shortcut(chord)) + return; + + if (evt.HasModifiers()) { + evt.Skip(); + return; + } + + auto obj_list = wxGetApp().obj_list(); + switch (keyCode) + { + case WXK_ESCAPE: { deselect_all(); break; } + + // BBS: use keypad to change extruder + case '1': { + if (!m_timer_set_color.IsRunning()) { + m_timer_set_color.StartOnce(500); + break; + } + } + case '0': //Color logic for material 10 + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { + if (m_timer_set_color.IsRunning()) { + if (keyCode < '7') keyCode += 10; + m_timer_set_color.Stop(); + } + if (m_gizmos.get_current_type() != GLGizmosManager::MmSegmentation) + obj_list->set_extruder_for_selected_items(keyCode - '0'); break; -#ifdef __APPLE__ - case 'c': - case 'C': -#else /* __APPLE__ */ - case WXK_CONTROL_C: -#endif /* __APPLE__ */ - if (!is_in_painting_mode) - post_event(SimpleEvent(EVT_GLTOOLBAR_COPY)); - break; -#ifdef __APPLE__ - case 'm': - case 'M': -#else /* __APPLE__ */ - case WXK_CONTROL_M: -#endif /* __APPLE__ */ - { -#ifdef _WIN32 - if (wxGetApp().app_config->get("use_legacy_3DConnexion") == "true") { -#endif //_WIN32 -#ifdef __APPLE__ - // On OSX use Cmd+Shift+M to "Show/Hide 3Dconnexion devices settings dialog" - if ((evt.GetModifiers() & shiftMask) != 0) { -#endif // __APPLE__ - Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); - controller.show_settings_dialog(!controller.is_settings_dialog_shown()); - m_dirty = true; -#ifdef __APPLE__ - } - else - // and Cmd+M to minimize application - wxGetApp().mainframe->Iconize(); -#endif // __APPLE__ -#ifdef _WIN32 - } -#endif //_WIN32 - break; - } -#ifdef __APPLE__ - case 'v': - case 'V': -#else /* __APPLE__ */ - case WXK_CONTROL_V: -#endif /* __APPLE__ */ - if (!is_in_painting_mode) - post_event(SimpleEvent(EVT_GLTOOLBAR_PASTE)); - break; - -#ifdef __APPLE__ - case 'x': - case 'X': -#else /* __APPLE__ */ - case WXK_CONTROL_X: -#endif /* __APPLE__ */ - if (!is_in_painting_mode) - post_event(SimpleEvent(EVT_GLTOOLBAR_CUT)); - break; - -#ifdef __APPLE__ - case 'f': - case 'F': -#else /* __APPLE__ */ - case WXK_CONTROL_F: -#endif /* __APPLE__ */ - break; - - -#ifdef __APPLE__ - case 'y': - case 'Y': -#else /* __APPLE__ */ - case WXK_CONTROL_Y: -#endif /* __APPLE__ */ - if (m_canvas_type == CanvasView3D || m_canvas_type == CanvasAssembleView) { - post_event(SimpleEvent(EVT_GLCANVAS_REDO)); - } - break; -#ifdef __APPLE__ - case 'z': - case 'Z': -#else /* __APPLE__ */ - case WXK_CONTROL_Z: -#endif /* __APPLE__ */ - // only support redu/undo in CanvasView3D - if (m_canvas_type == CanvasView3D || m_canvas_type == CanvasAssembleView) { - post_event(SimpleEvent(EVT_GLCANVAS_UNDO)); - } - break; - - // BBS -#ifdef __APPLE__ - case 'E': - case 'e': -#else /* __APPLE__ */ - case WXK_CONTROL_E: -#endif /* __APPLE__ */ - { m_labels.show(!m_labels.is_shown()); m_dirty = true; break; } - case '0': { - select_view("plate"); - zoom_to_bed(); - break; } - case '1': { select_view("top"); break; } - case '2': { select_view("bottom"); break; } - case '3': { select_view("front"); break; } - case '4': { select_view("rear"); break; } - case '5': { select_view("left"); break; } - case '6': { select_view("right"); break; } - case '7': { select_plate(); break; } - - //case WXK_BACK: - //case WXK_DELETE: -#ifdef __APPLE__ - case 'd': - case 'D': -#else /* __APPLE__ */ - case WXK_CONTROL_D: -#endif /* __APPLE__ */ - post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE_ALL)); - break; -#ifdef __APPLE__ - case 'k': - case 'K': -#else /* __APPLE__ */ - case WXK_CONTROL_K: -#endif /* __APPLE__ */ - post_event(SimpleEvent(EVT_GLTOOLBAR_CLONE)); - break; - default: evt.Skip(); - } - } else { - auto obj_list = wxGetApp().obj_list(); - switch (keyCode) - { - //case WXK_BACK: - case WXK_DELETE: { post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE)); break; } - // BBS -#ifdef __APPLE__ - case WXK_BACK: { post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE)); break; } -#endif - case WXK_ESCAPE: { deselect_all(); break; } - case WXK_F5: { - if (wxGetApp().mainframe->is_printer_view()) - wxGetApp().mainframe->load_printer_url(); - - //if ((wxGetApp().is_editor() && !wxGetApp().plater()->model().objects.empty()) || - // (wxGetApp().is_gcode_viewer() && !wxGetApp().plater()->get_last_loaded_gcode().empty())) - // post_event(SimpleEvent(EVT_GLCANVAS_RELOAD_FROM_DISK)); - break; - } - - // BBS: use keypad to change extruder - case '1': { - if (!m_timer_set_color.IsRunning()) { - m_timer_set_color.StartOnce(500); - break; - } - } - case '0': //Color logic for material 10 - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': { - if (m_timer_set_color.IsRunning()) { - if (keyCode < '7') keyCode += 10; - m_timer_set_color.Stop(); - } - if (m_gizmos.get_current_type() != GLGizmosManager::MmSegmentation) - obj_list->set_extruder_for_selected_items(keyCode - '0'); - break; - } - - case '+': { - if (dynamic_cast(m_canvas->GetParent()) != nullptr) - post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); - else - post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, +1)); - break; - } - case '-': { - if (dynamic_cast(m_canvas->GetParent()) != nullptr) - post_event(wxKeyEvent(EVT_GLCANVAS_EDIT_COLOR_CHANGE, evt)); - else - post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, -1)); - break; - } - case '?': { post_event(SimpleEvent(EVT_GLCANVAS_QUESTION_MARK)); break; } - case 'A': - case 'a': - { - if ((evt.GetModifiers() & shiftMask) != 0) - post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE_PARTPLATE)); - else - post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE)); - break; - } - //case 'B': - //case 'b': { zoom_to_bed(); break; } - case 'C': - case 'c': { wxGetApp().toggle_show_gcode_window(); m_dirty = true; request_extra_frame(); break; } - //case 'G': - //case 'g': { - // if ((evt.GetModifiers() & shiftMask) != 0) { - // if (dynamic_cast(m_canvas->GetParent()) != nullptr) - // post_event(wxKeyEvent(EVT_GLCANVAS_JUMP_TO, evt)); - // } - // break; - //} - case 'I': - case 'i': { _update_camera_zoom(1.0); break; } - //case 'K': - //case 'k': { wxGetApp().plater()->get_camera().select_next_type(); m_dirty = true; break; } - //case 'L': - //case 'l': { - //if (!m_main_toolbar.is_enabled()) { - // m_gcode_viewer.enable_legend(!m_gcode_viewer.is_legend_enabled()); - // m_dirty = true; - // wxGetApp().plater()->update_preview_bottom_toolbar(); - //} - //break; - //} - case 'O': - case 'o': { _update_camera_zoom(-1.0); break; } - case 'q': - case 'Q': - { - if ((evt.GetModifiers() & shiftMask) != 0) - post_event(SimpleEvent(EVT_GLCANVAS_ORIENT_PARTPLATE)); - else - post_event(SimpleEvent(EVT_GLCANVAS_ORIENT)); - break; - } - //case 'Z': - //case 'z': { - // if (!m_selection.is_empty()) - // zoom_to_selection(); - // else { - // if (!m_volumes.empty()) - // zoom_to_volumes(); - // else - // _zoom_to_box(m_gcode_viewer.get_paths_bounding_box()); - // } - // break; - //} - case 'v': - case 'V': { post_event(SimpleEvent(EVT_GLCANVAS_PRINTABLE)); break; } - default: { evt.Skip(); break; } - } + } + default: { evt.Skip(); break; } } } -class TranslationProcessor +bool GLCanvas3D::handle_shortcut(const KeyChord& chord) { - using UpAction = std::function; - using DownAction = std::function; + const ShortcutContext context = m_canvas_type == CanvasPreview ? ShortcutContext::Preview : ShortcutContext::Plater; + const std::optional match = wxGetApp().shortcuts().match(context, chord); + if (!match.has_value()) + return false; + const Shortcut shortcut = match->shortcut; + const int held = match->step_modifiers; + if (m_key_down.repeat && !shortcut_info(shortcut).repeatable) + return true; - UpAction m_up_action{ nullptr }; - DownAction m_down_action{ nullptr }; + const bool painting = dynamic_cast(m_gizmos.get_current()) != nullptr; + const bool can_edit = m_canvas_type == CanvasView3D || m_canvas_type == CanvasAssembleView; + auto edit_selection = [this](SelectionEdit::Kind kind, const Vec3d& direction) { + if (!m_gizmos.is_enabled() || m_selection.is_empty() || m_canvas_type == CanvasAssembleView) + return false; + m_selection_edit.kind = kind; + m_selection_edit.key = m_key_down.code; + m_selection_edit.direction = direction; + return true; + }; + auto move_selection = [&](const Vec3d& direction) { + if (edit_selection(SelectionEdit::Move, direction)) + apply_selection_move((held & wxMOD_SHIFT) != 0, (held & wxMOD_CONTROL) != 0); + }; + auto rotate_selection = [&](double angle_z_rad) { + if (edit_selection(SelectionEdit::Rotate, Vec3d::UnitZ())) + apply_selection_rotate(angle_z_rad); + }; + auto step_slider = [this, held](auto&& step) { + IMSlider* layers = get_gcode_viewer().get_layers_slider(); + IMSlider* moves = get_gcode_viewer().get_moves_slider(); + step(layers, moves, held != 0 ? 5 : 1); + if (layers->is_dirty() && layers->is_one_layer()) + layers->SetLowerValue(layers->GetHigherValue()); + m_dirty = true; + }; - bool m_running{ false }; - Vec3d m_direction{ Vec3d::UnitX() }; - -public: - TranslationProcessor(UpAction up_action, DownAction down_action) - : m_up_action(up_action), m_down_action(down_action) - { - } - - void process(wxKeyEvent& evt) - { - const int keyCode = evt.GetKeyCode(); - wxEventType type = evt.GetEventType(); - if (type == wxEVT_KEY_UP) { - switch (keyCode) - { - case WXK_NUMPAD_LEFT: case WXK_LEFT: - case WXK_NUMPAD_RIGHT: case WXK_RIGHT: - case WXK_NUMPAD_UP: case WXK_UP: - case WXK_NUMPAD_DOWN: case WXK_DOWN: - { - m_running = false; - m_up_action(); - break; - } - default: { break; } - } - } - else if (type == wxEVT_KEY_DOWN) { - bool apply = false; - - switch (keyCode) - { - case WXK_SHIFT: - { - if (m_running) - apply = true; - - break; - } - case WXK_NUMPAD_LEFT: - case WXK_LEFT: - { - m_direction = -Vec3d::UnitX(); - apply = true; - break; - } - case WXK_NUMPAD_RIGHT: - case WXK_RIGHT: - { - m_direction = Vec3d::UnitX(); - apply = true; - break; - } - case WXK_NUMPAD_UP: - case WXK_UP: - { - m_direction = Vec3d::UnitY(); - apply = true; - break; - } - case WXK_NUMPAD_DOWN: - case WXK_DOWN: - { - m_direction = -Vec3d::UnitY(); - apply = true; - break; - } - default: { break; } - } - - if (apply) { - m_running = true; - m_down_action(m_direction, evt.ShiftDown(), evt.CmdDown()); - } + switch (shortcut) { + case Shortcut::SelectAll: + if (!painting && !m_layers_editing.is_enabled()) + post_event(SimpleEvent(EVT_GLCANVAS_SELECT_CURR_PLATE_ALL)); + break; + case Shortcut::SelectAllPlates: + if (!painting && !m_layers_editing.is_enabled()) + post_event(SimpleEvent(EVT_GLCANVAS_SELECT_ALL)); + break; + case Shortcut::Copy: if (!painting) post_event(SimpleEvent(EVT_GLTOOLBAR_COPY)); break; + case Shortcut::Paste: if (!painting) post_event(SimpleEvent(EVT_GLTOOLBAR_PASTE)); break; + case Shortcut::Cut: if (!painting) post_event(SimpleEvent(EVT_GLTOOLBAR_CUT)); break; + case Shortcut::Undo: if (can_edit) post_event(SimpleEvent(EVT_GLCANVAS_UNDO)); break; + case Shortcut::Redo: if (can_edit) post_event(SimpleEvent(EVT_GLCANVAS_REDO)); break; + case Shortcut::DeleteSelected: + if (!m_gizmos.on_delete_key()) + post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE)); + break; + case Shortcut::DeleteAll: post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE_ALL)); break; + case Shortcut::CloneSelected: post_event(SimpleEvent(EVT_GLTOOLBAR_CLONE)); break; + case Shortcut::AddInstance: post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, +1)); break; + case Shortcut::RemoveInstance: post_event(Event(EVT_GLCANVAS_INCREASE_INSTANCES, -1)); break; + case Shortcut::TogglePrintable: post_event(SimpleEvent(EVT_GLCANVAS_PRINTABLE)); break; + case Shortcut::Arrange: + if (!m_gizmos.is_running()) + post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE)); + break; + case Shortcut::ArrangePlate: + if (!m_gizmos.is_running()) + post_event(SimpleEvent(EVT_GLCANVAS_ARRANGE_PARTPLATE)); + break; + case Shortcut::Orient: post_event(SimpleEvent(EVT_GLCANVAS_ORIENT)); break; + case Shortcut::OrientPlate: post_event(SimpleEvent(EVT_GLCANVAS_ORIENT_PARTPLATE)); break; + case Shortcut::RotateSelectionLeft: rotate_selection(0.25 * M_PI); break; + case Shortcut::RotateSelectionRight: rotate_selection(-0.25 * M_PI); break; + case Shortcut::MoveSelectionLeft: move_selection(-Vec3d::UnitX()); break; + case Shortcut::MoveSelectionRight: move_selection(Vec3d::UnitX()); break; + case Shortcut::MoveSelectionUp: move_selection(Vec3d::UnitY()); break; + case Shortcut::MoveSelectionDown: move_selection(-Vec3d::UnitY()); break; + case Shortcut::ZoomIn: _update_camera_zoom(1.0); break; + case Shortcut::ZoomOut: _update_camera_zoom(-1.0); break; + case Shortcut::SwitchView: post_event(SimpleEvent(EVT_GLCANVAS_TAB)); break; + case Shortcut::CollapseSidebar: + if (!wxGetApp().is_gcode_viewer()) + post_event(SimpleEvent(EVT_GLCANVAS_COLLAPSE_SIDEBAR)); + break; + case Shortcut::ShowWireframe: + wxGetApp().plater()->toggle_show_wireframe(); + m_dirty = true; + break; + case Shortcut::Mouse3DSettings: { +#ifdef _WIN32 + if (wxGetApp().app_config->get("use_legacy_3DConnexion") == "true") { +#endif //_WIN32 + Mouse3DController& controller = wxGetApp().plater()->get_mouse3d_controller(); + controller.show_settings_dialog(!controller.is_settings_dialog_shown()); + m_dirty = true; +#ifdef _WIN32 } +#endif //_WIN32 + break; } -}; + case Shortcut::ReloadDevicePage: + if (wxGetApp().mainframe->is_printer_view()) + wxGetApp().mainframe->load_printer_url(); + break; + case Shortcut::KeyboardShortcuts: post_event(SimpleEvent(EVT_GLCANVAS_QUESTION_MARK)); break; + case Shortcut::ToggleGcodeWindow: + wxGetApp().toggle_show_gcode_window(); + m_dirty = true; + request_extra_frame(); + break; + case Shortcut::ToggleOneLayerMode: + get_gcode_viewer().get_layers_slider()->switch_one_layer_mode(); + m_dirty = true; + break; + case Shortcut::GoToLayer: + if (!m_gizmos.is_enabled()) { + get_gcode_viewer().get_layers_slider()->show_go_to_layer(true); + m_dirty = true; + } + break; + case Shortcut::LayerSliderUp: + case Shortcut::LayerSliderDown: + step_slider([up = shortcut == Shortcut::LayerSliderUp](IMSlider* layers, IMSlider* moves, int increment) { + const int delta = up ? increment : -increment; + if (layers->GetSelection() == ssHigher) { + layers->SetHigherValue(layers->GetHigherValue() + delta); + moves->SetHigherValue(moves->GetMaxValue()); + } + else if (layers->GetSelection() == ssLower) + layers->SetLowerValue(layers->GetLowerValue() + delta); + }); + break; + case Shortcut::MovesSliderLeft: + step_slider([](IMSlider* layers, IMSlider* moves, int increment) { + if (moves->GetHigherValue() == moves->GetMinValue() && layers->GetHigherValue() > layers->GetMinValue()) { + layers->SetHigherValue(layers->GetHigherValue() - 1); + moves->SetHigherValue(moves->GetMaxValue()); + } + else + moves->SetHigherValue(moves->GetHigherValue() - increment); + }); + break; + case Shortcut::MovesSliderRight: + step_slider([](IMSlider* layers, IMSlider* moves, int increment) { + if (moves->GetHigherValue() == moves->GetMaxValue() && layers->GetHigherValue() < layers->GetMaxValue()) { + layers->SetHigherValue(layers->GetHigherValue() + 1); + moves->SetHigherValue(moves->GetMinValue()); + } + else + moves->SetHigherValue(moves->GetHigherValue() + increment); + }); + break; + case Shortcut::MovesSliderStart: + case Shortcut::MovesSliderEnd: + step_slider([start = shortcut == Shortcut::MovesSliderStart](IMSlider*, IMSlider* moves, int) { + moves->SetHigherValue(start ? moves->GetMinValue() : moves->GetMaxValue()); + moves->set_as_dirty(); + }); + break; + default: + if (!m_gizmos.open_gizmo_by_shortcut(shortcut)) + return false; + m_dirty = true; + break; + } + return true; +} + +void GLCanvas3D::apply_selection_move(bool slow, bool camera_space) +{ + m_selection.setup_cache(); + const double multiplier = slow ? 1.0 : 10.0; + + Vec3d displacement; + if (camera_space) { + Eigen::Matrix inv_view_3x3 = wxGetApp().plater()->get_camera().get_view_matrix().inverse().matrix().block(0, 0, 3, 3); + displacement = multiplier * (inv_view_3x3 * m_selection_edit.direction); + displacement.z() = 0.0; + } + else + displacement = multiplier * m_selection_edit.direction; + + TransformationType trafo_type; + trafo_type.set_relative(); + m_selection.translate(displacement, trafo_type); + m_dirty = true; +} + +void GLCanvas3D::apply_selection_rotate(double angle_z_rad) +{ + m_selection.setup_cache(); + m_selection.rotate(angle_z_rad * m_selection_edit.direction, TransformationType(TransformationType::World_Relative_Joint)); + m_dirty = true; +} + +void GLCanvas3D::finish_selection_edit() +{ + const SelectionEdit::Kind kind = m_selection_edit.kind; + m_selection_edit.kind = SelectionEdit::None; + if (kind == SelectionEdit::Move) + do_move(L("Tool move")); + else + do_rotate(L("Tool Rotate")); + m_gizmos.update_data(); + // Let the plater know that the dragging finished, so a delayed refresh + // of the scene with the background processing data should be performed. + post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); + // updates camera target constraints + refresh_camera_scene_box(); + m_dirty = true; +} + +// Keys held since their last key-up, shared by every canvas because a shortcut can move the +// focus, and with it the key-up, to another one. +static std::set s_keys_down; + +static bool key_repeats(int key) +{ + for (auto it = s_keys_down.begin(); it != s_keys_down.end();) // drops keys released while no canvas had the focus + it = wxGetKeyState(wxKeyCode(*it)) ? std::next(it) : s_keys_down.erase(it); + return !s_keys_down.insert(key).second; +} + +static void key_released(int key) { s_keys_down.erase(key); } void GLCanvas3D::on_key(wxKeyEvent& evt) { @@ -3811,45 +3721,11 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } #endif - static GLCanvas3D const * thiz = nullptr; - static TranslationProcessor translationProcessor(nullptr, nullptr); - if (thiz != this) { - thiz = this; - translationProcessor = TranslationProcessor( - [this]() { - do_move(L("Tool move")); - m_gizmos.update_data(); - - // BBS - //wxGetApp().obj_manipul()->set_dirty(); - // Let the plater know that the dragging finished, so a delayed refresh - // of the scene with the background processing data should be performed. - post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); - // updates camera target constraints - refresh_camera_scene_box(); - m_dirty = true; - }, - [this](const Vec3d& direction, bool slow, bool camera_space) { - m_selection.setup_cache(); - double multiplier = slow ? 1.0 : 10.0; - - Vec3d displacement; - if (camera_space) { - Eigen::Matrix inv_view_3x3 = wxGetApp().plater()->get_camera().get_view_matrix().inverse().matrix().block(0, 0, 3, 3); - displacement = multiplier * (inv_view_3x3 * direction); - displacement.z() = 0.0; - } - else - displacement = multiplier * direction; - - TransformationType trafo_type; - trafo_type.set_relative(); - m_selection.translate(displacement, trafo_type); - m_dirty = true; - } - );} - const int keyCode = evt.GetKeyCode(); + if (evt.GetEventType() == wxEVT_KEY_DOWN) + m_key_down = { keyCode, key_repeats(keyCode) }; + else if (evt.GetEventType() == wxEVT_KEY_UP) + key_released(keyCode); auto imgui = wxGetApp().imgui(); if (imgui->update_key_data(evt)) @@ -3863,23 +3739,8 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) wxGetApp().plater()->toggle_render_statistic_dialog(); m_dirty = true; #endif - } else if ((evt.ShiftDown() && evt.ControlDown() && keyCode == WXK_RETURN) || - (evt.ShiftDown() && evt.AltDown() && keyCode == WXK_RETURN)) { - wxGetApp().plater()->toggle_show_wireframe(); - m_dirty = true; - } - else if (m_tab_down && keyCode == WXK_TAB && !evt.HasAnyModifiers()) { - // Enable switching between 3D and Preview with Tab - // m_canvas->HandleAsNavigationKey(evt); // XXX: Doesn't work in some cases / on Linux - post_event(SimpleEvent(EVT_GLCANVAS_TAB)); - } - else if (keyCode == WXK_TAB && evt.ShiftDown() && !evt.ControlDown() && ! wxGetApp().is_gcode_viewer()) { - // Collapse side-panel with Shift+Tab - post_event(SimpleEvent(EVT_GLCANVAS_COLLAPSE_SIDEBAR)); } else if (keyCode == WXK_SHIFT) { - translationProcessor.process(evt); - if (m_picking_enabled && m_rectangle_selection.is_dragging()) { _update_selection_from_hover(); m_rectangle_selection.stop_dragging(); @@ -3905,70 +3766,15 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else if (keyCode == WXK_CONTROL) m_dirty = true; - else if (m_gizmos.is_enabled() && !m_selection.is_empty() && m_canvas_type != CanvasAssembleView) { - translationProcessor.process(evt); - - switch (keyCode) - { - case WXK_NUMPAD_PAGEUP: case WXK_PAGEUP: - case WXK_NUMPAD_PAGEDOWN: case WXK_PAGEDOWN: - { - do_rotate(L("Tool Rotate")); - m_gizmos.update_data(); - - // BBS - //wxGetApp().obj_manipul()->set_dirty(); - // Let the plater know that the dragging finished, so a delayed refresh - // of the scene with the background processing data should be performed. - post_event(SimpleEvent(EVT_GLCANVAS_MOUSE_DRAGGING_FINISHED)); - // updates camera target constraints - refresh_camera_scene_box(); - m_dirty = true; - - break; - } - default: { break; } - } - } - - // BBS: add select view logic - if (evt.ControlDown()) { - switch (keyCode) { - case '0': - case WXK_NUMPAD0: //0 on numpad - { select_view("plate"); - zoom_to_bed(); - break; - } - case '1': - case WXK_NUMPAD1: //1 on numpad - { select_view("top"); break; } - case '2': - case WXK_NUMPAD2: //2 on numpad - { select_view("bottom"); break; } - case '3': - case WXK_NUMPAD3: //3 on numpad - { select_view("front"); break; } - case '4': - case WXK_NUMPAD4: //4 on numpad - { select_view("rear"); break; } - case '5': - case WXK_NUMPAD5: //5 on numpad - { select_view("left"); break; } - case '6': - case WXK_NUMPAD6: //6 on numpad - { select_view("right"); break; } - case '7': - case WXK_NUMPAD7: //7 on numpad - { select_plate(); break; } - default: break; - } - } + else if (m_selection_edit.kind != SelectionEdit::None && keyCode == m_selection_edit.key) + finish_selection_edit(); } else if (evt.GetEventType() == wxEVT_KEY_DOWN) { - m_tab_down = keyCode == WXK_TAB && !evt.HasAnyModifiers(); + if (handle_shortcut(KeyChord::from_event(evt))) + return; if (keyCode == WXK_SHIFT) { - translationProcessor.process(evt); + if (m_selection_edit.kind == SelectionEdit::Move) + apply_selection_move(true, evt.CmdDown()); if (m_picking_enabled /*&& (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)*/) { @@ -3985,68 +3791,6 @@ void GLCanvas3D::on_key(wxKeyEvent& evt) } else if (keyCode == WXK_CONTROL) m_dirty = true; - else if (m_gizmos.is_enabled() && !m_selection.is_empty() && m_canvas_type != CanvasAssembleView) { - auto _do_rotate = [this](double angle_z_rad) { - m_selection.setup_cache(); - m_selection.rotate(Vec3d(0.0, 0.0, angle_z_rad), TransformationType(TransformationType::World_Relative_Joint)); - m_dirty = true; -// wxGetApp().obj_manipul()->set_dirty(); - }; - - translationProcessor.process(evt); - - switch (keyCode) - { - case WXK_NUMPAD_PAGEUP: case WXK_PAGEUP: { _do_rotate(0.25 * M_PI); break; } - case WXK_NUMPAD_PAGEDOWN: case WXK_PAGEDOWN: { _do_rotate(-0.25 * M_PI); break; } - default: { break; } - } - } else if (!m_gizmos.is_enabled()) { - // DoubleSlider navigation in Preview - if (m_canvas_type == CanvasPreview) { - IMSlider *m_layers_slider = get_gcode_viewer().get_layers_slider(); - IMSlider *m_moves_slider = get_gcode_viewer().get_moves_slider(); - int increment = (evt.CmdDown() || evt.ShiftDown()) ? 5 : 1; - if ((evt.CmdDown() || evt.ShiftDown()) && evt.GetKeyCode() == 'G') { - m_layers_slider->show_go_to_layer(true); - } - else if (keyCode == WXK_UP || keyCode == WXK_DOWN) { - int new_pos; - if (m_layers_slider->GetSelection() == ssHigher) { - new_pos = keyCode == WXK_UP ? m_layers_slider->GetHigherValue() + increment : m_layers_slider->GetHigherValue() - increment; - m_layers_slider->SetHigherValue(new_pos); - m_moves_slider->SetHigherValue(m_moves_slider->GetMaxValue()); - } - else if (m_layers_slider->GetSelection() == ssLower) { - new_pos = keyCode == WXK_UP ? m_layers_slider->GetLowerValue() + increment : m_layers_slider->GetLowerValue() - increment; - m_layers_slider->SetLowerValue(new_pos); - } - } else if (keyCode == WXK_LEFT) { - if (m_moves_slider->GetHigherValue() == m_moves_slider->GetMinValue() && (m_layers_slider->GetHigherValue() > m_layers_slider->GetMinValue())) { - m_layers_slider->SetHigherValue(m_layers_slider->GetHigherValue() - 1); - m_moves_slider->SetHigherValue(m_moves_slider->GetMaxValue()); - } else { - m_moves_slider->SetHigherValue(m_moves_slider->GetHigherValue() - increment); - } - } else if (keyCode == WXK_RIGHT) { - if (m_moves_slider->GetHigherValue() == m_moves_slider->GetMaxValue() && (m_layers_slider->GetHigherValue() < m_layers_slider->GetMaxValue())) { - m_layers_slider->SetHigherValue(m_layers_slider->GetHigherValue() + 1); - m_moves_slider->SetHigherValue(m_moves_slider->GetMinValue()); - } else { - m_moves_slider->SetHigherValue(m_moves_slider->GetHigherValue() + increment); - } - } else if (keyCode == WXK_HOME || keyCode == WXK_END) { - const int new_pos = keyCode == WXK_HOME ? m_moves_slider->GetMinValue() : m_moves_slider->GetMaxValue(); - m_moves_slider->SetHigherValue(new_pos); - m_moves_slider->set_as_dirty(); - } - - if (m_layers_slider->is_dirty() && m_layers_slider->is_one_layer()) - m_layers_slider->SetLowerValue(m_layers_slider->GetHigherValue()); - - m_dirty = true; - } - } } } else return; @@ -7115,7 +6859,6 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "add"; item.icon_filename = m_is_dark ? "toolbar_open_dark.svg" : "toolbar_open.svg"; - item.tooltip = _utf8(L("Add")) + " [" + GUI::shortkey_ctrl_prefix() + "I]"; item.sprite_id = 0; item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_ADD)); }; item.enabling_callback = []()->bool {return wxGetApp().plater()->can_add_model(); }; @@ -7133,7 +6876,6 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "orient"; item.icon_filename = m_is_dark ? "toolbar_orient_dark.svg" : "toolbar_orient.svg"; - item.tooltip = _utf8(L("Auto orient all/selected objects")) + " [Q]\n" + _utf8(L("Auto orient all objects on current plate")) + " [" + _utf8(L("Shift+")) + "Q]"; item.sprite_id++; item.left.render_callback = nullptr; item.enabling_callback = []()->bool { return wxGetApp().plater()->can_arrange(); }; @@ -7155,7 +6897,6 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "arrange"; item.icon_filename = m_is_dark ? "toolbar_arrange_dark.svg" : "toolbar_arrange.svg"; - item.tooltip = _utf8(L("Arrange all objects")) + " [A]\n" + _utf8(L("Arrange objects on selected plates")) + " [" + _utf8(L("Shift+")) + "A]"; item.sprite_id++; item.left.action_callback = []() {}; item.enabling_callback = []()->bool { return wxGetApp().plater()->can_arrange(); }; @@ -7179,7 +6920,6 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "more"; item.icon_filename = m_is_dark ? "instance_add_dark.svg" : "instance_add.svg"; - item.tooltip = _utf8(L("Add instance")) + " [+]"; item.sprite_id++; item.left.render_callback = nullptr; item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_MORE)); }; @@ -7191,7 +6931,6 @@ bool GLCanvas3D::_init_main_toolbar() item.name = "fewer"; item.icon_filename = m_is_dark ? "instance_remove_dark.svg" : "instance_remove.svg"; - item.tooltip = _utf8(L("Remove instance")) + " [-]"; item.sprite_id++; item.left.render_callback = nullptr; item.left.action_callback = [this]() { if (m_canvas != nullptr) wxPostEvent(m_canvas, SimpleEvent(EVT_GLTOOLBAR_FEWER)); }; @@ -7241,9 +6980,20 @@ bool GLCanvas3D::_init_main_toolbar() if (!m_main_toolbar.add_item(item)) return false; + update_shortcut_tooltips(); return true; } +void GLCanvas3D::update_shortcut_tooltips() +{ + const ShortcutRegistry& shortcuts = wxGetApp().shortcuts(); + m_main_toolbar.set_tooltip(m_main_toolbar.get_item_id("add"), shortcuts.with_key(_u8L("Add"), Shortcut::ImportModel)); + m_main_toolbar.set_tooltip(m_main_toolbar.get_item_id("orient"), shortcuts.with_key(_u8L("Auto orient all/selected objects"), Shortcut::Orient) + "\n" + shortcuts.with_key(_u8L("Auto orient all objects on current plate"), Shortcut::OrientPlate)); + m_main_toolbar.set_tooltip(m_main_toolbar.get_item_id("arrange"), shortcuts.with_key(_u8L("Arrange all objects"), Shortcut::Arrange) + "\n" + shortcuts.with_key(_u8L("Arrange objects on selected plates"), Shortcut::ArrangePlate)); + m_main_toolbar.set_tooltip(m_main_toolbar.get_item_id("more"), shortcuts.with_key(_u8L("Add instance"), Shortcut::AddInstance)); + m_main_toolbar.set_tooltip(m_main_toolbar.get_item_id("fewer"), shortcuts.with_key(_u8L("Remove instance"), Shortcut::RemoveInstance)); +} + //BBS: GUI refactor: GLToolbar bool GLCanvas3D::_init_select_plate_toolbar() { @@ -8758,6 +8508,15 @@ void GLCanvas3D::_render_objects(GLVolumeCollection::ERenderType type, bool with else m_volumes.set_show_sinking_contours(!m_gizmos.is_hiding_instances()); + // Orca: X-Ray replaces both shaded passes with a single one, driven from the opaque call, and + // reuses the volume state (print volume, z range, clipping plane) set up above. + if (_is_xray_view_active()) { + if (type == GLVolumeCollection::ERenderType::Opaque) + _render_xray_volumes(); + m_camera_clipping_plane = ClippingPlane::ClipsNothing(); + return; + } + const bool realistic_mode = wxGetApp().app_config != nullptr && wxGetApp().app_config->get_bool(SETTING_OPENGL_REALISTIC_MODE); const bool realistic_phong = wxGetApp().app_config != nullptr && wxGetApp().app_config->get_bool(SETTING_OPENGL_REALISTIC_PHONG); const std::string shader_name = (realistic_mode && realistic_phong) ? "phong" : "gouraud"; @@ -8894,6 +8653,51 @@ void GLCanvas3D::_render_objects(GLVolumeCollection::ERenderType type, bool with m_camera_clipping_plane = ClippingPlane::ClipsNothing(); } +bool GLCanvas3D::_is_xray_view_active() const +{ + if (m_canvas_type == ECanvasType::CanvasPreview || !wxGetApp().plater()->is_show_xray()) + return false; + + // A painting gizmo and the layer height editor draw the object through their own shaders, and + // would lose what they draw if X-Ray took the pass over. + if (dynamic_cast(m_gizmos.get_current()) != nullptr) + return false; + return !(m_picking_enabled && m_layers_editing.is_enabled() && m_layers_editing.last_object_id != -1 && + m_layers_editing.object_max_z() > 0.0f); +} + +void GLCanvas3D::_render_xray_volumes() +{ + if (m_volumes.empty()) + return; + + GLShaderProgram* shader = wxGetApp().get_shader("xray"); + if (shader == nullptr) + return; + + const Camera& camera = wxGetApp().plater()->get_camera(); + const ECanvasType canvas_type = m_canvas_type; + + // Depth writes off so every surface along a view ray composites, not just the nearest one, and + // back faces kept for the far wall of a hollow part. The low, near-uniform coverage the shader + // emits saturates towards the volume color whatever the order, so the volumes are not sorted. + glsafe(::glDepthMask(GL_FALSE)); + glsafe(::glEnable(GL_BLEND)); + glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); + + shader->start_using(); + m_volumes.render(GLVolumeCollection::ERenderType::All, true, camera.get_view_matrix(), camera.get_projection_matrix(), + get_canvas_size(), [this, canvas_type](const GLVolume& volume) { + if (canvas_type == ECanvasType::CanvasAssembleView) + return !volume.is_modifier && !volume.is_wipe_tower; + return m_render_sla_auxiliaries || volume.composite_id.volume_id >= 0; + }); + shader->stop_using(); + + glsafe(::glDisable(GL_BLEND)); + glsafe(::glDepthMask(GL_TRUE)); +} + void GLCanvas3D::_render_wireframe_overlay() { if (!wxGetApp().plater()->is_show_wireframe()) @@ -10020,6 +9824,12 @@ void GLCanvas3D::_render_canvas_toolbar() [this, p]{p->toggle_show_wireframe(); m_dirty = true;} ); + create_menu_item( _utf8(L("X-Ray")), + m_canvas_type != ECanvasType::CanvasPreview, // not work on preview + p->is_show_xray(), + [this, p]{p->toggle_show_xray(); m_dirty = true;} + ); + create_menu_item( _utf8(L("Realistic View")), m_canvas_type != ECanvasType::CanvasPreview, // not work on preview cfg->get_bool(SETTING_OPENGL_REALISTIC_MODE), diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index fe6108d39f..ad5188f2f3 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -63,6 +63,7 @@ class PartPlateList; #ifdef SLIC3R_CAD class DesignSketchTool; // Design tab: interactive 2D sketch tool #endif +struct KeyChord; #if ENABLE_RETINA_GL class RetinaHelper; @@ -185,7 +186,6 @@ wxDECLARE_EVENT(EVT_GLCANVAS_UPDATE_BED_SHAPE, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_TAB, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_RESETGIZMOS, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_MOVE_SLIDERS, wxKeyEvent); -wxDECLARE_EVENT(EVT_GLCANVAS_EDIT_COLOR_CHANGE, wxKeyEvent); wxDECLARE_EVENT(EVT_GLCANVAS_JUMP_TO, wxKeyEvent); wxDECLARE_EVENT(EVT_GLCANVAS_UNDO, SimpleEvent); wxDECLARE_EVENT(EVT_GLCANVAS_REDO, SimpleEvent); @@ -626,7 +626,23 @@ private: bool m_dynamic_background_enabled; bool m_multisample_allowed; bool m_moving; - bool m_tab_down; + // The key-down being dispatched, kept for the char event that may follow it. + struct KeyDown + { + int code = WXK_NONE; + bool repeat = false; + }; + KeyDown m_key_down; + // A keyboard move or rotation of the selection runs from the key-down that started it to + // that key's release, so a held key becomes one undo step. + struct SelectionEdit + { + enum Kind { None, Move, Rotate }; + Kind kind = None; + int key = WXK_NONE; // raw key code of the key-down, matched against the key-up + Vec3d direction{ Vec3d::UnitX() }; + }; + SelectionEdit m_selection_edit; bool m_camera_movement; //BBS: add toolpath outside bool m_toolpath_outside{ false }; @@ -1094,6 +1110,13 @@ public: void on_idle(wxIdleEvent& evt); void on_char(wxKeyEvent& evt); void on_key(wxKeyEvent& evt); + // Runs the Plater/Preview shortcut bound to chord, swallowing auto-repeats of one-shot + // shortcuts; false when nothing is bound. + bool handle_shortcut(const KeyChord& chord); + void apply_selection_move(bool slow, bool camera_space); + void apply_selection_rotate(double angle_z_rad); + void finish_selection_edit(); + void update_shortcut_tooltips(); void on_mouse_wheel(wxMouseEvent& evt); void on_timer(wxTimerEvent& evt); void on_render_timer(wxTimerEvent& evt); @@ -1333,6 +1356,8 @@ private: //BBS: add outline drawing logic void _render_objects(GLVolumeCollection::ERenderType type, bool with_outline = true); void _render_wireframe_overlay(); + bool _is_xray_view_active() const; + void _render_xray_volumes(); //BBS: GUI refactor: add canvas size as parameters void _render_gcode(int canvas_width, int canvas_height); void _render_gcode_overlay(int canvas_width, int canvas_height); diff --git a/src/slic3r/GUI/GLShadersManager.cpp b/src/slic3r/GUI/GLShadersManager.cpp index 2b8a0edf0a..b35d598829 100644 --- a/src/slic3r/GUI/GLShadersManager.cpp +++ b/src/slic3r/GUI/GLShadersManager.cpp @@ -90,6 +90,8 @@ std::pair GLShadersManager::init() , { "ENABLE_ENVIRONMENT_MAP"sv } #endif // ENABLE_ENVIRONMENT_MAP ); + // used to render objects as translucent, edge weighted surfaces in the X-Ray view + valid &= append_shader("xray", { prefix + "xray.vs", prefix + "xray.fs" }); // used to render variable layers heights in 3d editor valid &= append_shader("variable_layer_height", { prefix + "variable_layer_height.vs", prefix + "variable_layer_height.fs" }); // used to render highlight contour around selected triangles inside the multi-material gizmo diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 26813a38c2..4dd6e378d8 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3,6 +3,7 @@ #include "libslic3r/Technologies.hpp" #include "libslic3r/Platform.hpp" #include "GUI_App.hpp" +#include "Shortcuts.hpp" #include "DeviceCore/DevConfigUtil.h" #include "BindDialog.hpp" #include "DeviceManager.hpp" @@ -1117,6 +1118,8 @@ GUI_App::GUI_App() { //app config initializes early becasuse it is used in instance checking in OrcaSlicer.cpp this->init_app_config(); + m_shortcuts = std::make_unique(); + m_shortcuts->load(*app_config); this->init_download_path(); // Note: the WebView2 runtime check (init_webview_runtime) used to run here, but // the constructor executes before wxWidgets is fully initialized and before the @@ -2385,19 +2388,21 @@ GUI_App::~GUI_App() bool GUI_App::is_blocking_printing(MachineObject *obj_) { - DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return true; - if (obj_ == nullptr) { - obj_ = dev->get_selected_machine(); - } - - if (!obj_) - { - return false; - } - PresetBundle *preset_bundle = wxGetApp().preset_bundle; - std::string source_model = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + const std::string source_model = preset_bundle + ? preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle) + : std::string(); + return is_blocking_printing(obj_, source_model); +} + +bool GUI_App::is_blocking_printing(MachineObject *obj_, const std::string& source_model) +{ + DeviceManager *dev = getDeviceManager(); + if (!dev) return true; + if (obj_ == nullptr) + obj_ = dev->get_selected_machine(); + if (!obj_) + return false; return !DevPrinterConfigUtil::is_printer_model_compatible(source_model, *obj_); } @@ -4665,12 +4670,28 @@ void GUI_App::system_info() //dlg.ShowModal(); } -void GUI_App::keyboard_shortcuts() +void GUI_App::keyboard_shortcuts(ShortcutContext page, wxWindow* parent) { - KBShortcutsDialog dlg; + KBShortcutsDialog dlg(parent != nullptr ? parent : mainframe, page); dlg.ShowModal(); } +void GUI_App::on_shortcuts_changed() +{ + m_shortcuts->save(*app_config); + app_config->save(); + if (mainframe == nullptr) + return; + mainframe->update_shortcut_labels(); + if (Plater* plater = this->plater(); plater != nullptr) { + if (GLCanvas3D* canvas = plater->get_view3D_canvas3D(); canvas != nullptr) + canvas->update_shortcut_tooltips(); +#ifdef __WXOSX__ + obj_list()->update_shortcut_accelerators(); +#endif + } +} + void GUI_App::troubleshoot() { TroubleshootDialog dlg; @@ -8455,7 +8476,9 @@ void GUI_App::open_exportpresetbundledialog(size_t open_on_tab, const std::strin } } -void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option) +void GUI_App::open_preferences() { open_preferences(PreferencesTab::General); } + +void GUI_App::open_preferences(PreferencesTab tab, const std::string& highlight_option) { // Render settings the canvas reads every frame; a change needs one redraw to show. static constexpr const char* opengl_render_setting_keys[] = { @@ -8472,7 +8495,8 @@ void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_ // the dialog needs to be destroyed before the call to recreate_GUI() // or sometimes the application crashes into wxDialogBase() destructor // so we put it into an inner scope - PreferencesDialog dlg(mainframe, open_on_tab, highlight_option); + PreferencesDialog dlg(mainframe); + dlg.select_tab(tab, highlight_option); dlg.ShowModal(); need_recreate_gui = dlg.recreate_GUI(); pending_language = dlg.pending_language(); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 10eaed9135..2dc2970623 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -67,6 +67,9 @@ namespace GUI{ class RemovableDriveManager; class OtherInstanceMessageHandler; +class ShortcutRegistry; +enum class ShortcutContext : uint8_t; +enum class PreferencesTab; class MainFrame; class Sidebar; class ObjectSettings; @@ -283,6 +286,7 @@ private: std::unique_ptr m_removable_drive_manager; std::unique_ptr m_imgui; + std::unique_ptr m_shortcuts; std::unique_ptr m_printhost_job_queue; std::unique_ptr m_other_instance_message_handler; std::unique_ptr m_single_instance_checker; @@ -364,6 +368,7 @@ public: EAppMode get_app_mode() const { return m_app_mode; } Slic3r::DeviceManager* getDeviceManager() { return m_device_manager; } bool is_blocking_printing(MachineObject *obj_ = nullptr); + bool is_blocking_printing(MachineObject *obj_, const std::string& source_model); Slic3r::TaskManager* getTaskManager() { return m_task_manager; } HMSQuery* get_hms_query() { return hms_query; } NetworkAgent* getAgent() { return m_agent; } @@ -480,7 +485,7 @@ public: void recreate_GUI(const wxString& message); void system_info(); - void keyboard_shortcuts(); + void keyboard_shortcuts(ShortcutContext page, wxWindow* parent = nullptr); // the main frame when null void troubleshoot(); void load_project(wxWindow *parent, wxString& input_file) const; void import_model(wxWindow *parent, wxArrayString& input_files) const; @@ -636,7 +641,8 @@ public: wxString current_language_code_safe() const; bool is_localized() const { return m_wxLocale->GetLocale() != "English"; } - void open_preferences(size_t open_on_tab = 0, const std::string& highlight_option = std::string()); + void open_preferences(); // on the General tab + void open_preferences(PreferencesTab tab, const std::string& highlight_option = std::string()); void open_presetbundledialog(size_t open_on_tab = 0, const std::string& highlight_option = std::string()); void open_plugins_dialog(size_t open_on_tab = 0, const std::string& highlight_option = std::string()); // Dialog-free plugin actions used by the speed dial: they never require the Plugins dialog to be open. @@ -734,6 +740,9 @@ public: size_t get_instance_hash_int () { return m_instance_hash_int; } ImGuiWrapper* imgui() { return m_imgui.get(); } + ShortcutRegistry& shortcuts() { return *m_shortcuts; } + // Saves the bindings and refreshes every menu label, tooltip and accelerator table that shows one. + void on_shortcuts_changed(); PrintHostJobQueue& printhost_job_queue() { return *m_printhost_job_queue.get(); } diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index d02922497e..ecca540aa9 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -6,6 +6,7 @@ #include "GUI_Factories.hpp" #include "GUI_ObjectList.hpp" #include "GUI_App.hpp" +#include "Shortcuts.hpp" #include "I18N.hpp" #include "Plater.hpp" #include "ObjectDataViewModel.hpp" @@ -2083,13 +2084,8 @@ wxMenu* MenuFactory::assemble_part_menu() void MenuFactory::append_menu_item_clone(wxMenu* menu) { -#ifdef __APPLE__ - static const wxString ctrl = ("Ctrl+"); -#else - // FIXME: maybe should be using GUI::shortkey_ctrl_prefix() or equivalent? - static const wxString ctrl = _L("Ctrl+"); -#endif - append_menu_item(menu, wxID_ANY, _L("Clone") + "\t" + ctrl + "K", "", + const std::string accel = wxGetApp().shortcuts().accelerator(Shortcut::CloneSelected); + append_menu_item(menu, wxID_ANY, _L("Clone") + (accel.empty() ? wxString() : "\t" + from_u8(accel)), "", [](wxCommandEvent&) { plater()->clone_selection(); }, "", nullptr, diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 8067afd8df..2d77200eef 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -4,6 +4,7 @@ #include "GUI_Factories.hpp" //#include "GUI_ObjectLayers.hpp" #include "GUI_App.hpp" +#include "Shortcuts.hpp" #include "I18N.hpp" #include "Plater.hpp" #include "BitmapComboBox.hpp" @@ -245,56 +246,15 @@ ObjectList::ObjectList(wxWindow* parent) : // Key events are not correctly processed by the wxDataViewCtrl on OSX. // Our patched wxWidgets process the keyboard accelerators. // On the other hand, using accelerators will break in-place editing on Windows & Linux/GTK (there is no in-place editing working on OSX for wxDataViewCtrl for now). -// Bind(wxEVT_KEY_DOWN, &ObjectList::OnChar, this); - { - // Accelerators - // wxAcceleratorEntry entries[25]; - wxAcceleratorEntry entries[26]; - int index = 0; - entries[index++].Set(wxACCEL_CTRL, (int)'C', wxID_COPY); - entries[index++].Set(wxACCEL_CTRL, (int)'X', wxID_CUT); - entries[index++].Set(wxACCEL_CTRL, (int)'V', wxID_PASTE); - entries[index++].Set(wxACCEL_CTRL, (int)'M', wxID_DUPLICATE); - entries[index++].Set(wxACCEL_CTRL, (int)'A', wxID_SELECTALL); - entries[index++].Set(wxACCEL_CTRL, (int)'Z', wxID_UNDO); - entries[index++].Set(wxACCEL_CTRL, (int)'Y', wxID_REDO); - entries[index++].Set(wxACCEL_NORMAL, WXK_BACK, wxID_DELETE); - //entries[index++].Set(wxACCEL_NORMAL, int('+'), wxID_ADD); - //entries[index++].Set(wxACCEL_NORMAL, WXK_NUMPAD_ADD, wxID_ADD); - //entries[index++].Set(wxACCEL_NORMAL, int('-'), wxID_REMOVE); - //entries[index++].Set(wxACCEL_NORMAL, WXK_NUMPAD_SUBTRACT, wxID_REMOVE); - //entries[index++].Set(wxACCEL_NORMAL, int('p'), wxID_PRINT); - - int numbers_cnt = 0; - for (auto char_number : { '1', '2', '3', '4', '5', '6', '7', '8', '9' }) { - entries[index + numbers_cnt].Set(wxACCEL_NORMAL, int(char_number), wxID_LAST + numbers_cnt+1); - entries[index + 9 + numbers_cnt].Set(wxACCEL_NORMAL, WXK_NUMPAD0 + numbers_cnt - 1, wxID_LAST + numbers_cnt+1); - numbers_cnt++; - // index++; - } - wxAcceleratorTable accel(26, entries); - SetAcceleratorTable(accel); - - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->copy(); }, wxID_COPY); - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->paste(); }, wxID_PASTE); - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->select_item_all_children(); }, wxID_SELECTALL); - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->remove(); }, wxID_DELETE); - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->undo(); }, wxID_UNDO); - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->redo(); }, wxID_REDO); - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->cut(); }, wxID_CUT); - this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->clone(); }, wxID_DUPLICATE); - //this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->increase_instances(); }, wxID_ADD); - //this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->decrease_instances(); }, wxID_REMOVE); - //this->Bind(wxEVT_MENU, [this](wxCommandEvent &evt) { this->toggle_printable_state(); }, wxID_PRINT); - - for (int i = 1; i < 10; i++) - this->Bind(wxEVT_MENU, [this, i](wxCommandEvent &evt) { - if (filaments_count() > 1 && i <= filaments_count()) - this->set_extruder_for_selected_items(i); - }, wxID_LAST+i); - - m_accel = accel; - } + m_shortcut_id_base = wxWindow::NewControlId(int(Shortcut::Count)); + for (size_t i = 0; i < size_t(Shortcut::Count); ++i) + this->Bind(wxEVT_MENU, [this, shortcut = Shortcut(i)](wxCommandEvent&) { dispatch_shortcut(shortcut); }, m_shortcut_id_base + int(i)); + for (int i = 1; i < 10; i++) + this->Bind(wxEVT_MENU, [this, i](wxCommandEvent &evt) { + if (filaments_count() > 1 && i <= filaments_count()) + this->set_extruder_for_selected_items(i); + }, wxID_LAST+i); + update_shortcut_accelerators(); #else //__WXOSX__ Bind(wxEVT_CHAR, [this](wxKeyEvent& event) { key_event(event); }); // doesn't work on OSX #endif @@ -1796,36 +1756,10 @@ void ObjectList::decrease_instances() #ifndef __WXOSX__ void ObjectList::key_event(wxKeyEvent& event) { - //if (event.GetKeyCode() == WXK_TAB) - // Navigate(event.ShiftDown() ? wxNavigationKeyEvent::IsBackward : wxNavigationKeyEvent::IsForward); - //else - if (event.GetKeyCode() == WXK_DELETE /*|| event.GetKeyCode() == WXK_BACK*/ ) - remove(); - //else if (event.GetKeyCode() == WXK_F5) - // wxGetApp().plater()->reload_all_from_disk(); - else if (wxGetKeyState(wxKeyCode('A')) && wxGetKeyState(WXK_CONTROL/*WXK_SHIFT*/)) - select_item_all_children(); - else if (wxGetKeyState(wxKeyCode('C')) && wxGetKeyState(WXK_CONTROL)) - copy(); - else if (wxGetKeyState(wxKeyCode('V')) && wxGetKeyState(WXK_CONTROL)) - paste(); - else if (wxGetKeyState(wxKeyCode('Y')) && wxGetKeyState(WXK_CONTROL)) - redo(); - else if (wxGetKeyState(wxKeyCode('Z')) && wxGetKeyState(WXK_CONTROL)) - undo(); - else if (wxGetKeyState(wxKeyCode('X')) && wxGetKeyState(WXK_CONTROL)) - cut(); - else if (wxGetKeyState(wxKeyCode('K')) && wxGetKeyState(WXK_CONTROL)) - clone(); - else if (event.GetUnicodeKey() == '+') - increase_instances(); - else if (event.GetUnicodeKey() == '-') - decrease_instances(); - else if (event.GetUnicodeKey() == 'p') - toggle_printable_state(); - else if (event.GetUnicodeKey() == 'd') - toggle_auto_drop(); - else if (filaments_count() > 1) { + const std::optional shortcut = wxGetApp().shortcuts().lookup(ShortcutContext::ObjectList, KeyChord::from_event(event)); + if (shortcut.has_value() && dispatch_shortcut(*shortcut)) + return; + if (filaments_count() > 1) { std::vector numbers = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; wxChar key_char = event.GetUnicodeKey(); if (std::find(numbers.begin(), numbers.end(), key_char) != numbers.end()) { @@ -1842,6 +1776,43 @@ void ObjectList::key_event(wxKeyEvent& event) } #endif /* __WXOSX__ */ +#ifdef __WXOSX__ +void ObjectList::update_shortcut_accelerators() +{ + std::vector entries; + const ShortcutRegistry& shortcuts = wxGetApp().shortcuts(); + for (Shortcut shortcut : shortcuts_in(ShortcutContext::ObjectList)) + if (const KeyChord chord = shortcuts.binding(shortcut); chord.valid()) + entries.push_back(chord.to_accelerator_entry(m_shortcut_id_base + int(shortcut))); + for (int i = 1; i < 10; ++i) { + entries.emplace_back(wxACCEL_NORMAL, '0' + i, wxID_LAST + i); + entries.emplace_back(wxACCEL_NORMAL, WXK_NUMPAD0 + i, wxID_LAST + i); + } + m_accel = wxAcceleratorTable(int(entries.size()), entries.data()); + SetAcceleratorTable(m_accel); +} +#endif /* __WXOSX__ */ + +bool ObjectList::dispatch_shortcut(Shortcut shortcut) +{ + switch (shortcut) { + case Shortcut::DeleteSelected: remove(); break; + case Shortcut::SelectAll: select_item_all_children(); break; + case Shortcut::Copy: copy(); break; + case Shortcut::Paste: paste(); break; + case Shortcut::Cut: cut(); break; + case Shortcut::Undo: undo(); break; + case Shortcut::Redo: redo(); break; + case Shortcut::CloneSelected: clone(); break; + case Shortcut::AddInstance: increase_instances(); break; + case Shortcut::RemoveInstance: decrease_instances(); break; + case Shortcut::TogglePrintable: toggle_printable_state(); break; + case Shortcut::ToggleAutoDrop: toggle_auto_drop(); break; + default: return false; + } + return true; +} + void ObjectList::OnBeginDrag(wxDataViewEvent &event) { const bool mult_sel = multiple_selection(); diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index cab78b6adc..5705aa2c8b 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -40,6 +40,9 @@ typedef std::map t_layer_config_ranges; #define FIX_THROUGH_CGAL_ALWAYS 1 namespace GUI { + +enum class Shortcut : uint8_t; + struct ObjectVolumeID { ModelObject* object{ nullptr }; ModelVolume* volume{ nullptr }; @@ -270,7 +273,11 @@ public: void extruder_editing(); #ifndef __WXOSX__ void key_event(wxKeyEvent& event); +#else + // wxDataViewCtrl never sees key events on macOS, so the bindings are installed as accelerators. + void update_shortcut_accelerators(); #endif /* __WXOSX__ */ + bool dispatch_shortcut(Shortcut shortcut); void copy(); void paste(); @@ -482,8 +489,8 @@ public: private: #ifdef __WXOSX__ -// void OnChar(wxKeyEvent& event); wxAcceleratorTable m_accel; + wxWindowID m_shortcut_id_base; #endif /* __WXOSX__ */ void OnContextMenu(wxDataViewEvent &event); void list_manipulation(const wxPoint& mouse_pos, bool evt_context_menu = false); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index ea3ae5d21d..2c44202876 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -280,8 +280,6 @@ bool Preview::init(wxWindow* parent, Bed3D& bed, Model* model) m_canvas->enable_assemble_view_toolbar(false); // sizer, m_canvas_widget - m_canvas_widget->Bind(wxEVT_KEY_DOWN, &Preview::update_layers_slider_from_canvas, this); - wxBoxSizer *main_sizer = new wxBoxSizer(wxVERTICAL); main_sizer->Add(m_canvas_widget, 1, wxALL | wxEXPAND, 0); @@ -505,28 +503,6 @@ void Preview::update_layers_slider_mode() m_layers_slider->SetModeAndOnlyExtruder(one_extruder_printed_model, only_extruder, can_change_color); } -void Preview::update_layers_slider_from_canvas(wxKeyEvent &event) -{ - if (event.HasModifiers()) { - event.Skip(); - return; - } - - const auto key = event.GetKeyCode(); - - IMSlider *m_layers_slider = m_canvas->get_gcode_viewer().get_layers_slider(); - IMSlider *m_moves_slider = m_canvas->get_gcode_viewer().get_moves_slider(); - if (key == 'L') { - if(!m_layers_slider->switch_one_layer_mode()) - event.Skip(); - m_canvas->set_as_dirty(); - } - /*else if (key == WXK_SHIFT) - m_layers_slider->UseDefaultColors(false);*/ - else - event.Skip(); -} - void Preview::update_layers_slider(const std::vector& layers_z, bool keep_z_range) { IMSlider *m_layers_slider = m_canvas->get_gcode_viewer().get_layers_slider(); diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 5469e32b71..fdfe364fb8 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -171,7 +171,6 @@ private: void update_layers_slider(const std::vector& layers_z, bool keep_z_range = false); void update_layers_slider_mode(); - void update_layers_slider_from_canvas(wxKeyEvent &event); //BBS: add only gcode mode void load_print_as_fff(bool keep_z_range = false, bool only_gcode = false); }; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp index 99ad00fe55..09bb92dddf 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAdvancedCut.cpp @@ -354,7 +354,6 @@ bool GLGizmoAdvancedCut::on_init() if (!GLGizmoRotate3D::on_init()) return false; - m_shortcut_key = WXK_CONTROL_C; // initiate info shortcuts const wxString ctrl = GUI::shortkey_ctrl_prefix(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp index e686d5bb8f..9560078cb2 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp @@ -1,6 +1,7 @@ #include "GLGizmoAssembly.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp" #include "slic3r/Utils/UndoRedo.hpp" @@ -46,7 +47,7 @@ bool GLGizmoAssembly::on_init() { GLGizmoMeasure::on_init(); - m_shortcut_key = WXK_CONTROL_Y; + m_shortcut = Shortcut::GizmoAssembly; return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp index 1aaac99d40..6ff2c8213d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp @@ -4,6 +4,7 @@ #include #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/GUI_Colors.hpp" @@ -299,7 +300,6 @@ GLGizmoBase::GLGizmoBase(GLCanvas3D &parent, const std::string &icon_filename, u : m_parent(parent) , m_group_id(-1) , m_state(Off) - , m_shortcut_key(NO_SHORTCUT_KEY_VALUE) , m_icon_filename(icon_filename) , m_sprite_id(sprite_id) , m_imgui(wxGetApp().imgui()) @@ -515,11 +515,8 @@ void GLGizmoBase::render_input_window(float x, float y, float bottom_limit) std::string GLGizmoBase::get_name(bool include_shortcut) const { - int key = get_shortcut_key(); - std::string out = on_get_name(); - if (include_shortcut && key >= WXK_CONTROL_A && key <= WXK_CONTROL_Z) - out += std::string(" [") + char(int('A') + key - int(WXK_CONTROL_A)) + "]"; - return out; + const std::string name = on_get_name(); + return include_shortcut && m_shortcut.has_value() ? wxGetApp().shortcuts().with_key(name, *m_shortcut) : name; } } // namespace GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp index 92491d0d44..47e8f832a6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp @@ -11,6 +11,7 @@ #include "slic3r/GUI/3DScene.hpp" #include +#include #include @@ -29,6 +30,7 @@ namespace GUI { class ImGuiWrapper; +enum class Shortcut : uint8_t; class GLCanvas3D; enum class CommonGizmosDataID; class CommonGizmosDataPool; @@ -72,9 +74,6 @@ public: NegZ = 1 << 5, }; - // Represents NO key(button on keyboard) value - static const int NO_SHORTCUT_KEY_VALUE = 0; - protected: struct Grabber { @@ -138,7 +137,7 @@ protected: int m_group_id; // TODO: remove only for rotate EState m_state; - int m_shortcut_key; + std::optional m_shortcut; // the registry entry that opens this gizmo std::string m_icon_filename; unsigned int m_sprite_id; int m_hover_id{ -1 }; @@ -169,7 +168,7 @@ public: EState get_state() const { return m_state; } void set_state(EState state) { m_state = state; on_set_state(); } - int get_shortcut_key() const { return m_shortcut_key; } + std::optional shortcut() const { return m_shortcut; } const std::string& get_icon_filename() const { return m_icon_filename; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp index 6d9e810815..750e5fe6cb 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp @@ -5,6 +5,7 @@ #include "slic3r/GUI/Camera.hpp" #include "slic3r/GUI/Gizmos/GLGizmosCommon.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/Plater.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/ExPolygon.hpp" @@ -46,7 +47,7 @@ bool GLGizmoBrimEars::on_init() { m_new_point_head_radius = get_brim_default_radius(); - m_shortcut_key = WXK_CONTROL_E; + m_shortcut = Shortcut::GizmoBrimEars; const wxString ctrl = GUI::shortkey_ctrl_prefix(); const wxString alt = GUI::shortkey_alt_prefix(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index 273bb94b90..2100b1fca7 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -6,6 +6,7 @@ #include #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp" #include "slic3r/GUI/format.hpp" @@ -1310,7 +1311,7 @@ void GLGizmoCut3D::render_cut_line() bool GLGizmoCut3D::on_init() { m_grabbers.emplace_back(); - m_shortcut_key = WXK_CONTROL_C; + m_shortcut = Shortcut::GizmoCut; // initiate info shortcuts const wxString ctrl = GUI::shortkey_ctrl_prefix(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index ecf465afe7..1009a6e89b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -1,6 +1,7 @@ #include "GLGizmoEmboss.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/GUI_ObjectList.hpp" #include "slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp" #include "slic3r/GUI/MainFrame.hpp" // to update title when add text @@ -727,7 +728,7 @@ bool GLGizmoEmboss::on_init() m_rotate_gizmo.set_highlight_color(gray_color); // NOTE: It has special handling in GLGizmosManager::handle_shortcut - m_shortcut_key = WXK_CONTROL_T; + m_shortcut = Shortcut::GizmoEmboss; m_shortcuts = { {_L("Drag"), _L("Position on surface")} diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 035fb895aa..06d69c3e82 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -8,6 +8,7 @@ //#include "slic3r/GUI/3DScene.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/ImGuiWrapper.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/GUI_ObjectList.hpp" @@ -78,7 +79,7 @@ std::string GLGizmoFdmSupports::on_get_name() const bool GLGizmoFdmSupports::on_init() { // BBS - m_shortcut_key = WXK_CONTROL_L; + m_shortcut = Shortcut::GizmoFdmSupports; m_desc["perform"] = _L("Apply"); m_desc["on_overhangs_only"] = _L("On highlighted overhangs only"); @@ -149,25 +150,14 @@ void GLGizmoFdmSupports::render_painter_gizmo() glsafe(::glDisable(GL_BLEND)); } -// BBS -bool GLGizmoFdmSupports::on_key_down_select_tool_type(int keyCode) { - switch (keyCode) - { - case 'F': - m_current_tool = ImGui::FillButtonIcon; - break; - case 'S': - m_current_tool = ImGui::SphereButtonIcon; - break; - case 'C': - m_current_tool = ImGui::CircleButtonIcon; - break; - case 'G': - m_current_tool = ImGui::GapFillIcon; - break; - default: - return false; - break; +bool GLGizmoFdmSupports::on_tool_shortcut(Shortcut shortcut) +{ + switch (shortcut) { + case Shortcut::PaintToolFill: m_current_tool = ImGui::FillButtonIcon; break; + case Shortcut::PaintToolSphere: m_current_tool = ImGui::SphereButtonIcon; break; + case Shortcut::PaintToolCircle: m_current_tool = ImGui::CircleButtonIcon; break; + case Shortcut::PaintToolGapFill: m_current_tool = ImGui::GapFillIcon; break; + default: return false; } return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp index 57a6cc1981..d282a06b65 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.hpp @@ -26,8 +26,7 @@ public: state_ready }; - //BBS - bool on_key_down_select_tool_type(int keyCode); + bool on_tool_shortcut(Shortcut shortcut) override; protected: void on_render_input_window(float x, float y, float bottom_limit) override; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp index e9d8598423..54dbd96ba7 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp @@ -1,6 +1,7 @@ #include "GLGizmoFlatten.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/Gizmos/GLGizmosCommon.hpp" @@ -54,7 +55,7 @@ void GLGizmoFlatten::data_changed(bool is_serializing) bool GLGizmoFlatten::on_init() { - m_shortcut_key = WXK_CONTROL_F; + m_shortcut = Shortcut::GizmoFlatten; return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp index d807e466c8..8938e8a264 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp @@ -6,6 +6,7 @@ #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/GUI_ObjectList.hpp" #include "slic3r/GUI/ImGuiWrapper.hpp" #include "slic3r/GUI/MsgDialog.hpp" @@ -31,7 +32,7 @@ std::string GLGizmoFuzzySkin::on_get_name() const bool GLGizmoFuzzySkin::on_init() { - m_shortcut_key = WXK_CONTROL_H; + m_shortcut = Shortcut::GizmoFuzzySkin; const wxString ctrl = GUI::shortkey_ctrl_prefix(); const wxString alt = GUI::shortkey_alt_prefix(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp b/src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp index 843a4b45fe..e5c6502452 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoHollow.cpp @@ -25,7 +25,6 @@ GLGizmoHollow::GLGizmoHollow(GLCanvas3D& parent, const std::string& icon_filenam bool GLGizmoHollow::on_init() { - m_shortcut_key = WXK_CONTROL_H; m_desc["enable"] = _(L("Hollow this object")); m_desc["preview"] = _(L("Preview hollowed and drilled model")); m_desc["offset"] = _(L("Offset")) + ": "; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index ba2f54d5c5..8ec564e5b4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -2,6 +2,7 @@ #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp" #include "slic3r/Utils/UndoRedo.hpp" @@ -449,7 +450,7 @@ bool GLGizmoMeasure::gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_po bool GLGizmoMeasure::on_init() { - m_shortcut_key = WXK_CONTROL_U; + m_shortcut = Shortcut::GizmoMeasure; const wxString shift = GUI::shortkey_shift_prefix(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index 8b12da14f9..b91f0a9468 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -1,5 +1,6 @@ #include "GLGizmoMeshBoolean.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/ImGuiWrapper.hpp" #include "slic3r/GUI/GUI.hpp" #include "libslic3r/MeshBoolean.hpp" @@ -104,7 +105,7 @@ bool GLGizmoMeshBoolean::on_mouse(const wxMouseEvent &mouse_event) bool GLGizmoMeshBoolean::on_init() { - m_shortcut_key = WXK_CONTROL_B; + m_shortcut = Shortcut::GizmoMeshBoolean; return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 3d4af75cde..2e741fa5e5 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -2,6 +2,7 @@ #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/ImGuiWrapper.hpp" #include "slic3r/GUI/Camera.hpp" #include "slic3r/GUI/Plater.hpp" @@ -90,7 +91,7 @@ void GLGizmoMmuSegmentation::init_extruders_data() bool GLGizmoMmuSegmentation::on_init() { // BBS - m_shortcut_key = WXK_CONTROL_N; + m_shortcut = Shortcut::GizmoMmuSegmentation; const wxString ctrl = GUI::shortkey_ctrl_prefix(); const wxString alt = GUI::shortkey_alt_prefix(); @@ -209,30 +210,16 @@ bool GLGizmoMmuSegmentation::on_number_key_down(int number) return true; } -bool GLGizmoMmuSegmentation::on_key_down_select_tool_type(int keyCode) { - switch (keyCode) - { - case 'F': - m_current_tool = ImGui::FillButtonIcon; - break; - case 'T': - m_current_tool = ImGui::TriangleButtonIcon; - break; - case 'S': - m_current_tool = ImGui::SphereButtonIcon; - break; - case 'C': - m_current_tool = ImGui::CircleButtonIcon; - break; - case 'H': - m_current_tool = ImGui::HeightRangeIcon; - break; - case 'G': - m_current_tool = ImGui::GapFillIcon; - break; - default: - return false; - break; +bool GLGizmoMmuSegmentation::on_tool_shortcut(Shortcut shortcut) +{ + switch (shortcut) { + case Shortcut::PaintToolFill: m_current_tool = ImGui::FillButtonIcon; break; + case Shortcut::PaintToolTriangle: m_current_tool = ImGui::TriangleButtonIcon; break; + case Shortcut::PaintToolSphere: m_current_tool = ImGui::SphereButtonIcon; break; + case Shortcut::PaintToolCircle: m_current_tool = ImGui::CircleButtonIcon; break; + case Shortcut::PaintToolHeightRange: m_current_tool = ImGui::HeightRangeIcon; break; + case Shortcut::PaintToolGapFill: m_current_tool = ImGui::GapFillIcon; break; + default: return false; } return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp index 70cfde5aed..b2b04acdbe 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.hpp @@ -82,7 +82,7 @@ public: // BBS bool on_number_key_down(int number); - bool on_key_down_select_tool_type(int keyCode); + bool on_tool_shortcut(Shortcut shortcut) override; protected: // BBS diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp index 2f3195620a..4bee1a6cfc 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMove.cpp @@ -1,6 +1,7 @@ #include "GLGizmoMove.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" //BBS: GUI refactor #include "slic3r/GUI/Plater.hpp" #include "libslic3r/AppConfig.hpp" @@ -61,7 +62,7 @@ bool GLGizmoMove3D::on_init() m_grabbers[0].angles = { 0.0, 0.5 * double(PI), 0.0 }; m_grabbers[1].angles = { -0.5 * double(PI), 0.0, 0.0 }; - m_shortcut_key = WXK_CONTROL_M; + m_shortcut = Shortcut::GizmoMove; return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp index 63e9d3f436..9ba6065458 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp @@ -192,6 +192,8 @@ public: ~GLGizmoPainterBase() override; void data_changed(bool is_serializing) override; virtual bool gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_position, bool shift_down, bool alt_down, bool control_down); + // Switches the painting tool a Painting-context shortcut names; false when this gizmo has no such tool. + virtual bool on_tool_shortcut(Shortcut shortcut) { return false; } // Following function renders the triangles and cursor. Having this separated // from usual on_render method allows to render them before transparent diff --git a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp index 5521640eee..835b97f072 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp @@ -3,6 +3,7 @@ #include "slic3r/GUI/ImGuiWrapper.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/Jobs/RotoptimizeJob.hpp" @@ -555,7 +556,7 @@ bool GLGizmoRotate3D::on_init() for (unsigned int i = 0; i < 3; ++i) m_gizmos[i].set_highlight_color(AXES_COLOR[i]); - m_shortcut_key = WXK_CONTROL_R; + m_shortcut = Shortcut::GizmoRotate; return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp index 88e744c2b8..c30acba386 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp @@ -1,6 +1,7 @@ #include "GLGizmoScale.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/Plater.hpp" #include @@ -135,7 +136,7 @@ bool GLGizmoScale3D::on_init() // BBS m_grabbers[4].enabled = false; - m_shortcut_key = WXK_CONTROL_S; + m_shortcut = Shortcut::GizmoScale; return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index b211a18fb2..f36a47c8ec 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -5,6 +5,7 @@ //#include "slic3r/GUI/3DScene.hpp" #include "slic3r/GUI/GLCanvas3D.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/ImGuiWrapper.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/GUI_ObjectList.hpp" @@ -28,7 +29,7 @@ void GLGizmoSeam::on_shutdown() bool GLGizmoSeam::on_init() { - m_shortcut_key = WXK_CONTROL_P; + m_shortcut = Shortcut::GizmoSeam; const wxString ctrl = GUI::shortkey_ctrl_prefix(); const wxString alt = GUI::shortkey_alt_prefix(); @@ -86,19 +87,12 @@ void GLGizmoSeam::render_painter_gizmo() glsafe(::glDisable(GL_BLEND)); } -// BBS -bool GLGizmoSeam::on_key_down_select_tool_type(int keyCode) { - switch (keyCode) - { - case 'S': - m_current_tool = ImGui::SphereButtonIcon; - break; - case 'C': - m_current_tool = ImGui::CircleButtonIcon; - break; - default: - return false; - break; +bool GLGizmoSeam::on_tool_shortcut(Shortcut shortcut) +{ + switch (shortcut) { + case Shortcut::PaintToolSphere: m_current_tool = ImGui::SphereButtonIcon; break; + case Shortcut::PaintToolCircle: m_current_tool = ImGui::CircleButtonIcon; break; + default: return false; } return true; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp index 5b143dc32c..f1c48a12d6 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.hpp @@ -12,8 +12,7 @@ public: void render_painter_gizmo() override; - //BBS - bool on_key_down_select_tool_type(int keyCode); + bool on_tool_shortcut(Shortcut shortcut) override; protected: // BBS diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index ca22b14d99..49818e8e11 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -34,7 +34,6 @@ GLGizmoSlaSupports::GLGizmoSlaSupports(GLCanvas3D& parent, const std::string& ic bool GLGizmoSlaSupports::on_init() { - m_shortcut_key = WXK_CONTROL_L; m_desc["head_diameter"] = _L("Head diameter") + ": "; m_desc["lock_supports"] = _L("Lock supports under new islands"); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index df3e9be584..9ae979eeef 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -261,7 +261,6 @@ bool GLGizmoText::on_init() //m_avail_font_names = init_occt_fonts(); update_font_texture(); m_scale = m_imgui->get_font_size(); - m_shortcut_key = WXK_CONTROL_T; m_grabbers.push_back(Grabber()); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 17a7b769c3..dc51518acc 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -4,6 +4,7 @@ #include "slic3r/GUI/3DScene.hpp" #include "slic3r/GUI/Camera.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Shortcuts.hpp" #include "slic3r/GUI/GUI_ObjectList.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/Utils/UndoRedo.hpp" @@ -486,15 +487,13 @@ bool GLGizmosManager::is_running() const return m_current != Undefined; } -bool GLGizmosManager::handle_shortcut(int key) +bool GLGizmosManager::open_gizmo_by_shortcut(Shortcut shortcut) { if (!m_enabled) return false; - auto is_key = [pressed_key = key](int gizmo_key) { return (gizmo_key == pressed_key - 64) || (gizmo_key == pressed_key - 96); }; - // allowe open shortcut even when selection is empty - if (GLGizmoBase* gizmo_emboss = m_gizmos[Emboss].get(); - is_key(gizmo_emboss->get_shortcut_key())) { + // The text tool opens without a selection because it creates its own object. + if (GLGizmoBase* gizmo_emboss = m_gizmos[Emboss].get(); gizmo_emboss->shortcut() == shortcut) { dynamic_cast(gizmo_emboss)->on_shortcut_key(); return true; } @@ -502,16 +501,21 @@ bool GLGizmosManager::handle_shortcut(int key) if (m_parent.get_selection().is_empty()) return false; - auto is_gizmo = [is_key](const std::unique_ptr &gizmo) { - return gizmo->is_activable() && is_key(gizmo->get_shortcut_key()); - }; - auto it = std::find_if(m_gizmos.begin(), m_gizmos.end(), is_gizmo); - + auto it = std::find_if(m_gizmos.begin(), m_gizmos.end(), [shortcut](const std::unique_ptr &gizmo) { + return gizmo->is_activable() && gizmo->shortcut() == shortcut; + }); if (it == m_gizmos.end()) return false; - EType gizmo_type = EType(it - m_gizmos.begin()); - return open_gizmo(gizmo_type); + return open_gizmo(EType(it - m_gizmos.begin())); +} + +bool GLGizmosManager::on_delete_key() +{ + const bool processed = (m_current == Cut || m_current == Measure || m_current == Assembly) && gizmo_event(SLAGizmoEventType::Delete); + if (processed) + m_parent.set_as_dirty(); + return processed; } bool GLGizmosManager::is_dragging() const @@ -856,15 +860,6 @@ bool GLGizmosManager::on_char(wxKeyEvent& evt) } break; } - //skip some keys when gizmo - case 'A': - case 'a': - { - if (is_running()) { - processed = true; - } - break; - } //case WXK_RETURN: //{ // if ((m_current == SlaSupports) && gizmo_event(SLAGizmoEventType::ApplyChanges)) @@ -883,12 +878,6 @@ bool GLGizmosManager::on_char(wxKeyEvent& evt) //} - case WXK_BACK: - case WXK_DELETE: { - if ((m_current == Cut || m_current == Measure || m_current == Assembly) && gizmo_event(SLAGizmoEventType::Delete)) - processed = true; - break; - } //case 'A': //case 'a': //{ @@ -932,11 +921,6 @@ bool GLGizmosManager::on_char(wxKeyEvent& evt) } } - if (!processed && !evt.HasModifiers()) { - if (handle_shortcut(keyCode)) - processed = true; - } - if (processed) m_parent.set_as_dirty(); @@ -1077,40 +1061,24 @@ bool GLGizmosManager::on_key(wxKeyEvent& evt) processed = select(digit); } } - else if (keyCode == 'F' || keyCode == 'T' || keyCode == 'S' || keyCode == 'C' || keyCode == 'H' || keyCode == 'G') { - processed = mmu_seg->on_key_down_select_tool_type(keyCode); - if (processed) { - // force extra frame to automatically update window size - wxGetApp().imgui()->set_requires_extra_frame(); - } - } } } - else if (m_current == FdmSupports) { - GLGizmoFdmSupports* fdm_support = dynamic_cast(get_current()); - if (fdm_support != nullptr && (keyCode == 'F' || keyCode == 'S' || keyCode == 'C' || keyCode == 'G')) { - processed = fdm_support->on_key_down_select_tool_type(keyCode); - } - if (processed) { - // force extra frame to automatically update window size - wxGetApp().imgui()->set_requires_extra_frame(); - } - } - else if (m_current == Seam) { - GLGizmoSeam* seam = dynamic_cast(get_current()); - if (seam != nullptr && (keyCode == 'S' || keyCode == 'C')) { - processed = seam->on_key_down_select_tool_type(keyCode); - } - if (processed) { - // force extra frame to automatically update window size - wxGetApp().imgui()->set_requires_extra_frame(); - } - } else if (m_current == Measure || m_current == Assembly) { + else if (m_current == Measure || m_current == Assembly) { if (keyCode == WXK_CONTROL) gizmo_event(SLAGizmoEventType::CtrlDown, Vec2d::Zero(), evt.ShiftDown(), evt.AltDown(), evt.CmdDown()); else if (keyCode == WXK_SHIFT) gizmo_event(SLAGizmoEventType::ShiftDown, Vec2d::Zero(), evt.ShiftDown(), evt.AltDown(), evt.CmdDown()); } + + if (!processed) { + if (auto painter = dynamic_cast(get_current()); painter != nullptr) { + const std::optional shortcut = wxGetApp().shortcuts().lookup(ShortcutContext::Painting, KeyChord::from_event(evt)); + processed = shortcut.has_value() && painter->on_tool_shortcut(*shortcut); + if (processed) + // force extra frame to automatically update window size + wxGetApp().imgui()->set_requires_extra_frame(); + } + } } if (processed) diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp index 5f249d2ef7..2a4afac16d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp @@ -263,7 +263,10 @@ public: EType get_gizmo_from_name(const std::string& gizmo_name) const; bool is_running() const; - bool handle_shortcut(int key); + // Opens the gizmo bound to a Plater-context shortcut; false when no gizmo has it or it cannot open now. + bool open_gizmo_by_shortcut(Shortcut shortcut); + // Lets the current gizmo consume the delete key; false when it did not. + bool on_delete_key(); bool is_dragging() const; diff --git a/src/slic3r/GUI/HintNotification.cpp b/src/slic3r/GUI/HintNotification.cpp index c08a447e1e..de5f12e07e 100644 --- a/src/slic3r/GUI/HintNotification.cpp +++ b/src/slic3r/GUI/HintNotification.cpp @@ -5,6 +5,7 @@ #include "GUI_ObjectList.hpp" #include "GLCanvas3D.hpp" #include "MainFrame.hpp" +#include "Preferences.hpp" #include "Tab.hpp" #include "libslic3r/AppConfig.hpp" #include "libslic3r/Utils.hpp" @@ -444,9 +445,8 @@ void HintDatabase::load_hints_from_file(const boost::filesystem::path& path) // open preferences } else if (dict["hypertext_type"] == "preferences") { - std::string page = dict["hypertext_preferences_page"]; std::string item = dict["hypertext_preferences_item"]; - HintData hint_data{ id_string, text1, weight, was_displayed, hypertext_text, follow_text, disabled_tags, enabled_tags, false, documentation_link, img_url, [page, item]() { wxGetApp().open_preferences(1, page); } };// 1 is to modify + HintData hint_data{ id_string, text1, weight, was_displayed, hypertext_text, follow_text, disabled_tags, enabled_tags, false, documentation_link, img_url, [item]() { wxGetApp().open_preferences(PreferencesTab::Control, item); } }; m_loaded_hints.emplace_back(hint_data); } else if (dict["hypertext_type"] == "plater") { diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index be1f53ef97..c03d331627 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -6,359 +6,319 @@ #include "Notebook.hpp" #include #include +#include +#include #include "GUI_App.hpp" #include "wxExtensions.hpp" #include "MainFrame.hpp" +#include "MsgDialog.hpp" +#include "Preferences.hpp" +#include "Widgets/Button.hpp" +#include "Widgets/DialogButtons.hpp" +#include "Widgets/Label.hpp" +#include "Widgets/StaticBox.hpp" +#include "Widgets/StaticLine.hpp" +#include "Widgets/TabCtrl.hpp" #include namespace Slic3r { namespace GUI { -wxDEFINE_EVENT(EVT_PREFERENCES_SELECT_TAB, wxCommandEvent); +namespace { -KBShortcutsDialog::KBShortcutsDialog() - : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY,_L("Keyboard Shortcuts"), - wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) +wxString shortcut_names(const std::vector& shortcuts) { - // fonts - const wxFont& font = wxGetApp().normal_font(); - const wxFont& bold_font = wxGetApp().bold_font(); - SetFont(font); - - this->SetSizeHints(wxDefaultSize, wxDefaultSize); - this->SetBackgroundColour(wxColour(255, 255, 255)); - - wxBoxSizer *m_sizer_top = new wxBoxSizer(wxVERTICAL); - - auto m_top_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); - m_top_line->SetBackgroundColour(wxColour(166, 169, 170)); - - m_sizer_top->Add(m_top_line, 0, wxEXPAND, 0); - m_sizer_body = new wxBoxSizer(wxHORIZONTAL); - - m_panel_selects = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); - m_panel_selects->SetBackgroundColour(wxColour(248, 248, 248)); - wxBoxSizer *m_sizer_left = new wxBoxSizer(wxVERTICAL); - - m_sizer_left->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(20)); - - m_sizer_left->Add(create_button(0, _L("Global")), 0, wxEXPAND, 0); - m_sizer_left->Add(create_button(1, _L("Prepare")), 0, wxEXPAND, 0); - m_sizer_left->Add(create_button(2, _L("Toolbar")), 0, wxEXPAND, 0); - m_sizer_left->Add(create_button(3, _L("Objects list")), 0, wxEXPAND, 0); - m_sizer_left->Add(create_button(4, _L("Preview")), 0, wxEXPAND, 0); - - m_panel_selects->SetSizer(m_sizer_left); - m_panel_selects->Layout(); - m_sizer_left->Fit(m_panel_selects); - m_sizer_body->Add(m_panel_selects, 0, wxEXPAND, 0); - - m_sizer_right = new wxBoxSizer(wxHORIZONTAL); - - m_sizer_right->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(12)); - - m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(870), FromDIP(500)), 0); - - m_sizer_right->Add(m_simplebook, 1, wxEXPAND, 0); - m_sizer_body->Add(m_sizer_right, 1, wxEXPAND, 0); - m_sizer_top->Add(m_sizer_body, 1, wxEXPAND, 0); - - fill_shortcuts(); - for (size_t i = 0; i < m_full_shortcuts.size(); ++i) { - wxPanel *page = create_page(m_simplebook, m_full_shortcuts[i], font, bold_font); - m_pages.push_back(page); - m_simplebook->AddPage(page, m_full_shortcuts[i].first.first, i == 0); + wxString names; + for (Shortcut shortcut : shortcuts) { + if (!names.empty()) + names += ", "; + names += _(shortcut_info(shortcut).name); } + return names; +} - Bind(EVT_PREFERENCES_SELECT_TAB, &KBShortcutsDialog::OnSelectTabel, this); +const wxColour ERROR_COLOUR("#D01B1B"); - SetSizer(m_sizer_top); - Layout(); - Fit(); +// The camera action a mouse button drags, as set in Preferences > Control. +const char* mouse_action(const char* preference) +{ + const std::string action = wxGetApp().app_config->get(preference); + return action == "1" ? L("Pan View") : action == "2" ? L("Rotate View") : L("None"); +} + +// Page layout in DIPs; titles and rows are indented as in the Preferences dialog. +constexpr int PAGE_WIDTH = 640; +constexpr int TITLE_MARGIN = DESIGN_LEFT_MARGIN - 10; +constexpr int ROW_MARGIN = DESIGN_LEFT_MARGIN; +constexpr int ROW_GAP = 16; + +template struct overloaded : Ts... { using Ts::operator()...; }; +template overloaded(Ts...) -> overloaded; + +std::vector to_wx(const std::vector& parts) +{ + std::vector out; + for (const std::string& part : parts) + out.push_back(from_u8(part)); + return out; +} + +// The keys a Global shortcut can use, the second line of its hint and of a rejection. +wxString global_key_advice() +{ + return wxString::Format(_L("Use %s or %s, or a key that does not type a character."), + from_u8(KeyChord::modifier_name(wxMOD_CONTROL)), from_u8(KeyChord::modifier_name(wxMOD_ALT))); +} + +// The pieces of a chord, spaced out for the dialog: "Ctrl + Shift + A". +wxString join_keys(const std::vector& parts) +{ + wxString out; + for (const wxString& part : parts) + out += (out.empty() ? "" : " + ") + part; + return out; +} + +} // namespace + +KBShortcutsDialog::KBShortcutsDialog(wxWindow* parent, ShortcutContext page) + : DPIDialog(parent, wxID_ANY, _L("Keyboard Shortcuts"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) +{ + SetFont(wxGetApp().normal_font()); + SetBackgroundColour(*wxWHITE); + + fill_pages(); + + ScalableButton* probe = new ScalableButton(this, wxID_ANY, "edit"); + m_edit_size = probe->GetBestSize(); + probe->Destroy(); + m_buttons_width = 2 * m_edit_size.x + FromDIP(6); + m_row_text_width = FromDIP(PAGE_WIDTH) - FromDIP(ROW_MARGIN) - FromDIP(TITLE_MARGIN) - 2 * FromDIP(ROW_GAP) - m_buttons_width; + GetTextExtent("W", &m_key_slot, nullptr, nullptr, nullptr, &Label::Head_14); + + // The page tabs follow the Preferences dialog. + m_tabs = new TabCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_NO_BUTTONS | wxTR_HIDE_ROOT | wxTR_SINGLE | wxTR_NO_LINES | wxBORDER_NONE | wxWANTS_CHARS | wxTR_FULL_ROW_HIGHLIGHT); + m_tabs->Bind(wxEVT_RIGHT_DOWN, [](auto&) {}); + m_tabs->SetFont(Label::Body_14); + m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(660), FromDIP(500))); + for (const Page& page : m_pages) { + m_tabs->AppendItem(page.title); + m_simplebook->AddPage(create_page(m_simplebook, page), page.title); + } + const StateColor tab_colour(std::make_pair(wxColour("#6B6B6C"), (int) StateColor::NotChecked), std::make_pair(wxColour("#363636"), (int) StateColor::Normal)); + for (size_t i = 0; i < m_tabs->GetCount(); ++i) + m_tabs->SetItemTextColour(i, tab_colour); + m_tabs->Bind(wxEVT_TAB_SEL_CHANGED, [this](wxCommandEvent& e) { + for (size_t i = 0; i < m_tabs->GetCount(); ++i) + m_tabs->SetItemBold(i, int(i) == e.GetSelection()); + m_simplebook->SetSelection(e.GetSelection()); + }); + const auto shown = std::find_if(m_pages.begin(), m_pages.end(), [page](const Page& entry) { return entry.context == page; }); + m_tabs->SelectItem(shown == m_pages.end() ? 0 : int(shown - m_pages.begin())); + + wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); + sizer->Add(m_tabs, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(5)); + sizer->Add(m_simplebook, 1, wxEXPAND); + SetSizerAndFit(sizer); CenterOnParent(); - - // select first - auto event = wxCommandEvent(EVT_PREFERENCES_SELECT_TAB); - event.SetInt(0); - event.SetEventObject(this); - wxPostEvent(this, event); wxGetApp().UpdateDlgDarkUI(this); } -void KBShortcutsDialog::OnSelectTabel(wxCommandEvent &event) -{ - auto id = event.GetInt(); - SelectHash::iterator i = m_hash_selector.begin(); - while (i != m_hash_selector.end()) { - Select *sel = i->second; - if (id == sel->m_index) { - sel->m_tab_button->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#BFE1DE"))); // ORCA color for selected tab background - sel->m_tab_text->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#BFE1DE"))); // ORCA color for selected tab background - sel->m_tab_text->SetFont(::Label::Head_13); - sel->m_tab_button->Refresh(); - sel->m_tab_text->Refresh(); - - m_simplebook->SetSelection(id); - } else { - sel->m_tab_button->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#F8F8F8"))); - sel->m_tab_text->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#F8F8F8"))); - sel->m_tab_text->SetFont(::Label::Body_13); - sel->m_tab_button->Refresh(); - sel->m_tab_text->Refresh(); - } - i++; - } - wxGetApp().UpdateDlgDarkUI(this); -} - -wxWindow *KBShortcutsDialog::create_button(int id, wxString text) -{ - auto tab_button = new wxWindow(m_panel_selects, wxID_ANY, wxDefaultPosition, wxSize( FromDIP(150), FromDIP(28)), wxTAB_TRAVERSAL); - - wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL); - - sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(22)); - - auto stext = new wxStaticText(tab_button, wxID_ANY, text, wxDefaultPosition, wxDefaultSize, 0); - stext->SetFont(::Label::Body_13); - stext->SetForegroundColour(wxColour(38, 46, 48)); - stext->Wrap(-1); - sizer->Add(stext, 1, wxALIGN_CENTER, 0); - - tab_button->Bind(wxEVT_LEFT_DOWN, [this, id](auto &e) { - auto event = wxCommandEvent(EVT_PREFERENCES_SELECT_TAB); - event.SetInt(id); - event.SetEventObject(this); - wxPostEvent(this, event); - }); - - stext->Bind(wxEVT_LEFT_DOWN, [this, id](wxMouseEvent &e) { - auto event = wxCommandEvent(EVT_PREFERENCES_SELECT_TAB); - event.SetInt(id); - event.SetEventObject(this); - wxPostEvent(this, event); - }); - - Select *sel = new Select; - sel->m_index = id; - sel->m_tab_button = tab_button; - sel->m_tab_text = stext; - m_hash_selector[sel->m_index] = sel; - - tab_button->SetSizer(sizer); - tab_button->Layout(); - return tab_button; -} - void KBShortcutsDialog::on_dpi_changed(const wxRect& suggested_rect) { - m_logo_bmp.msw_rescale(); - m_header_bitmap->SetBitmap(m_logo_bmp.bmp()); - msw_buttons_rescale(this, em_unit(), { wxID_OK }); - + m_tabs->Rescale(); Layout(); Fit(); Refresh(); } -void KBShortcutsDialog::fill_shortcuts() +void KBShortcutsDialog::fill_pages() { - const std::string ctrl = GUI::shortkey_ctrl_prefix(); - const std::string alt = GUI::shortkey_alt_prefix(); - const std::string shift = L("Shift+"); + // A fixed row is listed in the section of the shortcuts it belongs with. + auto fixed = [](ShortcutSection section, std::vector keys, const char* description) { return Row{ FixedKey{ std::move(keys), description }, section }; }; + auto mouse = [](ShortcutSection section, const wxString& button, const char* preference) { return Row{ MouseAction{ button, preference }, section }; }; + auto key = [](const std::string& key) { return _L_CONTEXT(key, "Keyboard Shortcut"); }; + auto page = [this](const wxString& title, const wxString& caption, ShortcutContext context, std::vector fixed_rows) { + Page entry{ title, caption, context, {} }; + for (Shortcut shortcut : shortcuts_in(context)) + entry.rows.push_back({ shortcut, shortcut_section(shortcut) }); + entry.rows.insert(entry.rows.end(), fixed_rows.begin(), fixed_rows.end()); + std::stable_sort(entry.rows.begin(), entry.rows.end(), [](const Row& a, const Row& b) { return a.section < b.section; }); + m_pages.push_back(std::move(entry)); + }; + + const wxString ctrl = from_u8(KeyChord::modifier_name(wxMOD_CONTROL)); + const wxString alt = from_u8(KeyChord::modifier_name(wxMOD_ALT)); + const wxString shift = from_u8(KeyChord::modifier_name(wxMOD_SHIFT)); + const wxString shift_ctrl = shift + "/" + ctrl; // either one + const wxString any_key = key(L_CONTEXT("Key", "Keyboard Shortcut")); // the key the row's shortcut is bound to + const wxString esc = key(L_CONTEXT("Esc", "Keyboard Shortcut")); + const wxString left_button = _L("Left mouse"); + const wxString wheel = _L("Mouse wheel"); + using Section = ShortcutSection; if (wxGetApp().is_editor()) { - Shortcuts global_shortcuts = { - // File - { ctrl + "N", L("New Project") }, - { ctrl + "O", L("Open Project") }, - { ctrl + "S", L("Save Project") }, - { ctrl + shift + "S", L("Save Project as")}, - { ctrl + shift + "E", L("Publish 3MF") }, - // File>Import - { ctrl + "I", L("Import geometry data from STL/STEP/3MF/OBJ/AMF files") }, - // File>Export - { ctrl + "G", L("Export plate sliced file")}, - // Slice plate - { ctrl + "R", L("Slice plate")}, - // Send to Print - { ctrl + shift + "G", L("Print plate")}, - // Edit - { ctrl + "X", L("Cut") }, - { ctrl + "C", L("Copy to clipboard") }, - { ctrl + "V", L("Paste from clipboard") }, - // Configuration - { ctrl + "P", L("Preferences") }, - //3D control -#ifdef __APPLE__ - { ctrl + shift + "M", L("Show/Hide 3Dconnexion devices settings dialog") }, -#else - { ctrl + "M", L("Show/Hide 3Dconnexion devices settings dialog") }, -#endif // __APPLE + page(_L("Global"), _L("Available anywhere in the window, even while typing in a text field."), ShortcutContext::Global, { + fixed(Section::Application, { alt, "1-9, 0" }, L("Run a speed dial favorite while the dial is open")), + fixed(Section::Application, { ctrl, key(L_CONTEXT("Tab", "Keyboard Shortcut")) }, L("Switch to the next main tab")), + }); - // Switch table page - { ctrl + L("Tab"), L("Switch table page")}, - // Open speed dial - { L_CONTEXT("Space", "Keyboard Shortcut"), L("Open speed dial") }, - { alt + "1..9,0", L("Run a Speed Dial favourite (while the Speed Dial is open)") }, - //DEL - #ifdef __APPLE__ - {"fn+⌫", L("Delete Selected")}, - #else - {L_CONTEXT("Del", "Keyboard Shortcut"), L("Delete Selected")}, - #endif - // Help - { "?", L("Show keyboard shortcuts list") } - }; - m_full_shortcuts.push_back({{_L("Global shortcuts"), ""}, global_shortcuts}); + page(_L("Prepare"), _L("Available while the 3D view on the Prepare tab has focus."), ShortcutContext::Plater, { + fixed(Section::Selection, { alt, left_button }, L("Select a part")), + fixed(Section::Selection, { ctrl, left_button }, L("Select multiple objects")), + fixed(Section::Selection, { shift, left_button }, L("Select objects by rectangle")), + fixed(Section::Selection, { esc }, L("Deselect All")), + fixed(Section::Objects, { "1-9" }, L("Keyboard 1-9: set filament for object/part")), + fixed(Section::Placement, { shift, any_key }, L("Movement step set to 1mm")), + fixed(Section::Placement, { ctrl, any_key }, L("Movement in camera space")), + mouse(Section::Camera, left_button, "left_mouse_drag_action"), + mouse(Section::Camera, _L("Middle mouse"), "middle_mouse_drag_action"), + mouse(Section::Camera, _L("Right mouse"), "right_mouse_drag_action"), + fixed(Section::Camera, { wheel }, L("Zoom View")), + }); - - // Retrieve mouse actions from config and map to MouseAction - std::map mouse_actions; - mouse_actions["0"] = L("None"); - mouse_actions["1"] = L("Pan View"); - mouse_actions["2"] = L("Rotate View"); + page(_L("Painting"), _L("Available while a painting gizmo is open: supports, seam, fuzzy skin or color painting."), ShortcutContext::Painting, { + fixed(Section::Gizmos, { esc }, L("Deselect All")), + fixed(Section::Gizmos, { shift, left_button }, L("Move: press to snap by 1mm")), + fixed(Section::PaintingTools, { ctrl, wheel }, L("Support/Color Painting: adjust pen radius")), + fixed(Section::PaintingTools, { alt, wheel }, L("Support/Color Painting: adjust section position")), + }); - Shortcuts plater_shortcuts = { - { L("Left mouse button"), mouse_actions[wxGetApp().app_config->get("left_mouse_drag_action").c_str()]}, - { L("Middle mouse button"), mouse_actions[wxGetApp().app_config->get("middle_mouse_drag_action").c_str()]}, - { L("Right mouse button"), mouse_actions[wxGetApp().app_config->get("right_mouse_drag_action").c_str()]}, - { L("Mouse wheel"), L("Zoom View") }, - { "A", L("Arrange all objects") }, - { shift + "A", L("Arrange objects on selected plates") }, - - { "Q", L("Auto orients selected objects or all objects. If there are selected objects, it just orients the selected ones. Otherwise, it will orient all objects in the current project.") }, - { shift + "Q", L("Auto orients all objects on the active plate.") }, - - {shift + L("Tab"), L("Collapse/Expand the sidebar")}, - {ctrl + L("Any arrow"), L("Movement in camera space")}, - {alt + L("Left mouse button"), L("Select a part")}, - {ctrl + L("Left mouse button"), L("Select multiple objects")}, - {shift + L("Left mouse button"), L("Select objects by rectangle")}, - {L_CONTEXT("Arrow Up", "Keyboard Shortcut"), L("Move selection 10mm in positive Y direction")}, - {L_CONTEXT("Arrow Down", "Keyboard Shortcut"), L("Move selection 10mm in negative Y direction")}, - {L_CONTEXT("Arrow Left", "Keyboard Shortcut"), L("Move selection 10mm in negative X direction")}, - {L_CONTEXT("Arrow Right", "Keyboard Shortcut"), L("Move selection 10mm in positive X direction")}, - {shift + L("Any arrow"), L("Movement step set to 1mm")}, - {L_CONTEXT("Esc", "Keyboard Shortcut"), L("Deselect All")}, - {"1-9", L("Keyboard 1-9: set filament for object/part")}, - {ctrl + "0", L("Camera view - Default")}, - {ctrl + "1", L("Camera view - Top")}, - {ctrl + "2", L("Camera view - Bottom")}, - {ctrl + "3", L("Camera view - Front")}, - {ctrl + "4", L("Camera view - Behind")}, - {ctrl + "5", L("Camera Angle - Left side")}, - {ctrl + "6", L("Camera Angle - Right side")}, - - {ctrl + "A", L("Select all objects")}, - {ctrl + "D", L("Delete All")}, - {ctrl + "Z", L("Undo")}, - {ctrl + "Y", L("Redo")}, - { "M", L("Gizmo move") }, - { "R", L("Gizmo rotate") }, - { "S", L("Gizmo scale") }, - { "F", L("Gizmo place face on bed") }, - { "C", L("Gizmo cut") }, - { "B", L("Gizmo mesh boolean") }, - { "H", L("Gizmo FDM paint-on fuzzy skin") }, - { "L", L("Gizmo SLA support points") }, - { "P", L("Gizmo FDM paint-on seam") }, - { "T", L("Gizmo text emboss/engrave") }, - { "U", L("Gizmo measure") }, - { "Y", L("Gizmo assemble") }, - { "E", L("Gizmo brim ears") }, - { "I", L("Zoom in") }, - { "O", L("Zoom out") }, - { "V", L("Toggle printable for object/part") }, - { L_CONTEXT("Tab", "Keyboard Shortcut"), L("Switch between Prepare/Preview") }, - }; - m_full_shortcuts.push_back({ { _L("Plater"), "" }, plater_shortcuts }); - - Shortcuts gizmos_shortcuts = { - {L_CONTEXT("Esc", "Keyboard Shortcut"), L("Deselect All")}, - {shift, L("Move: press to snap by 1mm")}, - {ctrl + L("Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, - {alt + L("Mouse wheel"), L("Support/Color Painting: adjust section position")}, - }; - m_full_shortcuts.push_back({{_L("Gizmo"), ""}, gizmos_shortcuts}); - - Shortcuts object_list_shortcuts = { - {"1-9", L("Set extruder number for the objects and parts") }, - {L_CONTEXT("Del", "Keyboard Shortcut"), L("Delete objects, parts, modifiers")}, - {L_CONTEXT("Esc", "Keyboard Shortcut"), L("Deselect All")}, - {ctrl + "C", L("Copy to clipboard")}, - {ctrl + "V", L("Paste from clipboard")}, - {ctrl + "X", L("Cut")}, - {ctrl + "A", L("Select all objects")}, - {ctrl + "K", L("Clone Selected")}, - {ctrl + "Z", L("Undo")}, - {ctrl + "Y", L("Redo")}, - {L_CONTEXT("Space", "Keyboard Shortcut"), L("Select the object/part and press space to change the name")}, - {L("Mouse click"), L("Select the object/part and mouse click to change the name")}, - }; - m_full_shortcuts.push_back({ { _L("Objects List"), "" }, object_list_shortcuts }); + page(_L("Objects list"), _L("Available while the object list has focus."), ShortcutContext::ObjectList, { + fixed(Section::Selection, { esc }, L("Deselect All")), + fixed(Section::Objects, { "1-9" }, L("Set extruder number for the objects and parts")), + fixed(Section::Objects, { key(L_CONTEXT("Space", "Keyboard Shortcut")) }, L("Select the object/part and press space to change the name")), + fixed(Section::Objects, { _L("Mouse click") }, L("Select the object/part and mouse click to change the name")), + }); } - Shortcuts preview_shortcuts = { - { L_CONTEXT("Arrow Up", "Keyboard Shortcut"), L("Vertical slider - Move active thumb Up")}, - { L_CONTEXT("Arrow Down", "Keyboard Shortcut"), L("Vertical slider - Move active thumb Down")}, - { L_CONTEXT("Arrow Left", "Keyboard Shortcut"), L("Horizontal slider - Move active thumb Left")}, - { L_CONTEXT("Arrow Right", "Keyboard Shortcut"), L("Horizontal slider - Move active thumb Right")}, - { "L", L("On/Off one layer mode of the vertical slider")}, - { "C", L("On/Off G-code window")}, - { L_CONTEXT("Tab", "Keyboard Shortcut"), L("Switch between Prepare/Preview")}, - {shift + L("Any arrow"), L("Move slider 5x faster")}, - {shift + L("Mouse wheel"), L("Move slider 5x faster")}, - {ctrl + L("Any arrow"), L("Move slider 5x faster")}, - {ctrl + L("Mouse wheel"), L("Move slider 5x faster")}, - { L_CONTEXT("Home", "Keyboard Shortcut"), L("Horizontal slider - Move to start position")}, - { L_CONTEXT("End", "Keyboard Shortcut"), L("Horizontal slider - Move to last position")}, - }; - m_full_shortcuts.push_back({ { _L("Preview"), "" }, preview_shortcuts }); + page(_L("Preview"), _L("Available while the 3D view on the Preview tab has focus."), ShortcutContext::Preview, { + fixed(Section::Sliders, { shift_ctrl, any_key }, L("Move slider 5x faster")), + fixed(Section::Sliders, { shift_ctrl, wheel }, L("Scroll slider 5x faster")), + }); } -wxPanel* KBShortcutsDialog::create_page(wxWindow* parent, const ShortcutsItem& shortcuts, const wxFont& font, const wxFont& bold_font) +wxPanel* KBShortcutsDialog::create_page(wxWindow* parent, const Page& page) { wxPanel* main_page = new wxPanel(parent); wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); - if (!shortcuts.first.second.empty()) { - main_sizer->AddSpacer(FromDIP(10)); - wxBoxSizer* info_sizer = new wxBoxSizer(wxHORIZONTAL); - info_sizer->AddStretchSpacer(); - info_sizer->Add(new wxStaticText(main_page, wxID_ANY, shortcuts.first.second), 0); - info_sizer->AddStretchSpacer(); - main_sizer->Add(info_sizer, 0, wxEXPAND); - main_sizer->AddSpacer(FromDIP(10)); - } - - int items_count = (int) shortcuts.second.size(); wxScrolledWindow *scrollable_panel = new wxScrolledWindow(main_page); wxGetApp().UpdateDarkUI(scrollable_panel); - scrollable_panel->SetScrollbars(20, 20, 50, 50); - scrollable_panel->SetInitialSize(wxSize(FromDIP(850), FromDIP(450))); + const wxColour page_colour = StateColor::darkModeColorFor(*wxWHITE); + scrollable_panel->SetBackgroundColour(page_colour); + scrollable_panel->SetScrollRate(0, 20); + const int page_width = FromDIP(PAGE_WIDTH); + scrollable_panel->SetInitialSize(wxSize(page_width, FromDIP(450))); - wxBoxSizer * scrollable_panel_sizer = new wxBoxSizer(wxVERTICAL); - wxFlexGridSizer *grid_sizer = new wxFlexGridSizer(items_count, 2, FromDIP(10), FromDIP(20)); + const int title_margin = FromDIP(TITLE_MARGIN); + const int row_margin = FromDIP(ROW_MARGIN); + const int gap = FromDIP(ROW_GAP); - for (int i = 0; i < items_count; ++i) { - const auto &[shortcut, description] = shortcuts.second[i]; - // Keyboard keys carry a "Keyboard Shortcut" context so translators keep them in English; - // mouse-input labels are ordinary phrases and use the plain lookup. - const bool is_mouse = shortcut.find("Mouse") != std::string::npos || shortcut.find("mouse") != std::string::npos; - auto key = new wxStaticText(scrollable_panel, wxID_ANY, is_mouse ? _(shortcut) : _L_CONTEXT(shortcut, "Keyboard Shortcut")); - key->SetForegroundColour(wxColour(50, 58, 61)); - key->SetFont(bold_font); - grid_sizer->Add(key, 0, wxALIGN_CENTRE_VERTICAL); + wxBoxSizer* scrollable_panel_sizer = new wxBoxSizer(wxVERTICAL); - auto desc = new wxStaticText(scrollable_panel, wxID_ANY, _(description)); - desc->SetFont(font); - desc->SetForegroundColour(wxColour(50, 58, 61)); - desc->Wrap(FromDIP(600)); - grid_sizer->Add(desc, 0, wxALIGN_CENTRE_VERTICAL); + const wxColour note_colour = StateColor::darkModeColorFor(wxColour("#F8F8F8")); + const wxColour note_text = StateColor::darkModeColorFor(wxColour("#6B6B6A")); + StaticBox* note = new StaticBox(scrollable_panel); + note->SetCornerRadius(FromDIP(4)); + note->SetBorderWidth(0); + note->SetBackgroundColor(note_colour); + note->SetBackgroundColour(note_colour); + auto note_icon = new wxStaticBitmap(note, wxID_ANY, ScalableBitmap(note, "help", 16).bmp()); + auto note_text_ctrl = new wxStaticText(note, wxID_ANY, page.caption); + note_text_ctrl->SetFont(Label::Body_13); + note_text_ctrl->SetForegroundColour(note_text); + note_text_ctrl->SetBackgroundColour(note_colour); + note_text_ctrl->Wrap(page_width - 2 * title_margin - FromDIP(10 + 16 + 8 + 10)); + wxBoxSizer* note_sizer = new wxBoxSizer(wxHORIZONTAL); + note_sizer->Add(note_icon, 0, wxALIGN_CENTRE_VERTICAL | wxLEFT, FromDIP(10)); + note_sizer->Add(note_text_ctrl, 1, wxALIGN_CENTRE_VERTICAL | wxALL, FromDIP(8)); + note->SetSizer(note_sizer); + scrollable_panel_sizer->Add(note, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, title_margin); + + auto key_parts = [](const Row& row) { + return std::visit(overloaded{ + [](Shortcut shortcut) { return to_wx(wxGetApp().shortcuts().binding(shortcut).display_parts()); }, + [](const FixedKey& fixed) { return fixed.keys; }, + [](const MouseAction& mouse) { return std::vector{ mouse.button }; }, + }, row.content); + }; + auto description = [](const Row& row) { + return std::visit(overloaded{ + [](Shortcut shortcut) { return _(shortcut_info(shortcut).name); }, + [](const FixedKey& fixed) { return _(fixed.description); }, + [](const MouseAction& mouse) { return _(mouse_action(mouse.preference)); }, + }, row.content); + }; + auto icon_button = [&](const char* icon, const wxString& tooltip) { + auto button = new ScalableButton(scrollable_panel, wxID_ANY, icon); + button->SetBackgroundColour(page_colour); + button->SetToolTip(tooltip); + return button; + }; + + std::optional section; + for (const Row& row : page.rows) { + if (section != row.section) { + auto heading = new StaticLine(scrollable_panel, false, _(section_name(row.section))); + heading->SetFont(Label::Head_14); + heading->SetForegroundColour(DESIGN_GRAY900_COLOR); + wxBoxSizer* heading_sizer = new wxBoxSizer(wxHORIZONTAL); + heading_sizer->AddSpacer(title_margin); + heading_sizer->Add(heading, 1, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(6)); + heading_sizer->AddSpacer(title_margin); + scrollable_panel_sizer->Add(heading_sizer, 0, wxEXPAND | wxTOP, FromDIP(section.has_value() ? 10 : 6)); + section = row.section; + } + auto desc = new wxStaticText(scrollable_panel, wxID_ANY, description(row)); + desc->SetFont(Label::Body_14); + desc->SetForegroundColour(DESIGN_GRAY900_COLOR); + auto chord_label = [&](long style) { + auto label = new wxStaticText(scrollable_panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, style); + label->SetFont(Label::Head_14); + label->SetForegroundColour(DESIGN_GRAY900_COLOR); + return label; + }; + wxStaticText* modifiers = chord_label(0); + wxStaticText* key = chord_label(wxALIGN_CENTRE_HORIZONTAL); // a single key is centred in its column + desc->Wrap(m_row_text_width - set_chord_labels(modifiers, key, key_parts(row))); + + wxBoxSizer* buttons = new wxBoxSizer(wxHORIZONTAL); + if (const MouseAction* mouse = std::get_if(&row.content)) { + auto settings = icon_button("settings", _L("Preferences")); + settings->Bind(wxEVT_BUTTON, [this, preference = mouse->preference](wxCommandEvent&) { open_mouse_preferences(preference); }); + buttons->Add(settings, 0, wxALIGN_CENTRE_VERTICAL); + m_preference_rows.push_back({ mouse->preference, desc }); + } else if (const Shortcut* editable = std::get_if(&row.content)) { + const Shortcut shortcut = *editable; + auto change = icon_button("edit", _L("Edit")); + change->Bind(wxEVT_BUTTON, [this, shortcut](wxCommandEvent&) { edit_shortcut(shortcut); }); + auto reset = icon_button("undo", _L("Reset")); + reset->Bind(wxEVT_BUTTON, [this, shortcut](wxCommandEvent&) { reset_shortcut(shortcut); }); + reset->Show(wxGetApp().shortcuts().is_customized(shortcut)); + buttons->Add(change, 0, wxALIGN_CENTRE_VERTICAL | wxRIGHT, FromDIP(6)); + buttons->Add(reset, 0, wxALIGN_CENTRE_VERTICAL | wxRESERVE_SPACE_EVEN_IF_HIDDEN); + m_editable_rows.push_back({ shortcut, desc, modifiers, key, reset }); + } else { + auto lock = new wxStaticBitmap(scrollable_panel, wxID_ANY, ScalableBitmap(scrollable_panel, "printer_status_lock", 16).bmp()); + lock->SetToolTip(_L("Not customizable")); + buttons->Add((m_edit_size.x - lock->GetBestSize().x) / 2, m_edit_size.y); // centred under the edit icons, at their height + buttons->Add(lock, 0, wxALIGN_CENTRE_VERTICAL); + } + if (const int used = buttons->GetMinSize().x; used < m_buttons_width) // a box sizer recomputes its own min size, so pad it + buttons->AddSpacer(m_buttons_width - used); + + wxBoxSizer* row_sizer = new wxBoxSizer(wxHORIZONTAL); + row_sizer->AddSpacer(row_margin); + row_sizer->Add(desc, 1, wxALIGN_CENTRE_VERTICAL); + row_sizer->AddSpacer(gap); + row_sizer->Add(modifiers, 0, wxALIGN_CENTRE_VERTICAL); + row_sizer->Add(key, 0, wxALIGN_CENTRE_VERTICAL); + row_sizer->Add(buttons, 0, wxALIGN_CENTRE_VERTICAL | wxLEFT, gap); + row_sizer->AddSpacer(title_margin); + scrollable_panel_sizer->Add(row_sizer, 0, wxEXPAND | wxTOP, FromDIP(4)); } - - scrollable_panel_sizer->Add(grid_sizer, 1, wxEXPAND | wxALL, FromDIP(20)); + scrollable_panel_sizer->AddSpacer(title_margin); scrollable_panel->SetSizer(scrollable_panel_sizer); main_sizer->Add(scrollable_panel, 1, wxEXPAND); @@ -367,5 +327,227 @@ wxPanel* KBShortcutsDialog::create_page(wxWindow* parent, const ShortcutsItem& s return main_page; } +void KBShortcutsDialog::edit_shortcut(Shortcut shortcut) +{ + ShortcutCaptureDialog dlg(this, shortcut); + if (dlg.ShowModal() != wxID_OK) + return; + const wxString question = wxString::Format(_L("%s is assigned to %s. Reassign it to %s?"), + join_keys(to_wx(dlg.chord().display_parts())), shortcut_names(dlg.conflicts()), _(shortcut_info(shortcut).name)); + if (!take_chord_from(shortcut, dlg.conflicts(), question)) + return; + wxGetApp().shortcuts().bind(shortcut, dlg.chord()); + apply_bindings(); +} + +void KBShortcutsDialog::reset_shortcut(Shortcut shortcut) +{ + const std::vector conflicts = wxGetApp().shortcuts().conflicts(shortcut, shortcut_info(shortcut).default_chord); + const wxString question = wxString::Format(_L("The default %s is assigned to %s. Reassign it to %s?"), + join_keys(to_wx(shortcut_info(shortcut).default_chord.display_parts())), shortcut_names(conflicts), _(shortcut_info(shortcut).name)); + if (!take_chord_from(shortcut, conflicts, question)) + return; + wxGetApp().shortcuts().reset(shortcut); + apply_bindings(); +} + +bool KBShortcutsDialog::take_chord_from(Shortcut shortcut, const std::vector& conflicts, const wxString& question) +{ + if (conflicts.empty()) + return true; + MessageDialog confirm(this, question, _(shortcut_info(shortcut).name), wxICON_QUESTION | wxOK | wxCANCEL); + if (confirm.ShowModal() != wxID_OK) + return false; + for (Shortcut other : conflicts) + wxGetApp().shortcuts().bind(other, KeyChord{}); + return true; +} + +void KBShortcutsDialog::apply_bindings() +{ + const ShortcutRegistry& shortcuts = wxGetApp().shortcuts(); + std::set pages; + for (const EditableRow& row : m_editable_rows) { + const int chord_width = set_chord_labels(row.modifiers, row.key, to_wx(shortcuts.binding(row.shortcut).display_parts())); + row.description->SetLabel(_(shortcut_info(row.shortcut).name)); + row.description->Wrap(m_row_text_width - chord_width); + row.reset->Show(shortcuts.is_customized(row.shortcut)); + pages.insert(row.key->GetParent()); + } + for (wxWindow* page : pages) + page->Layout(); + wxGetApp().on_shortcuts_changed(); +} + +int KBShortcutsDialog::set_chord_labels(wxStaticText* modifiers, wxStaticText* key, std::vector parts) +{ + const wxString last = parts.empty() ? wxString() : parts.back(); + if (!parts.empty()) + parts.pop_back(); + modifiers->SetLabel(parts.empty() ? wxString() : join_keys(parts) + " + "); + modifiers->Show(!parts.empty()); + key->SetLabel(last); + const int key_width = last.length() == 1 ? m_key_slot : key->GetBestSize().x; + key->SetMinSize(wxSize(key_width, -1)); + return (parts.empty() ? 0 : modifiers->GetBestSize().x) + key_width; +} + +void KBShortcutsDialog::open_mouse_preferences(const char* preference) +{ + // Opened from Preferences > Control, the settings are right behind this dialog. + if (auto preferences = dynamic_cast(GetParent()); preferences != nullptr) { + // Runs once this dialog has closed and the focus is back in Preferences. + preferences->CallAfter([preferences, preference] { preferences->select_tab(PreferencesTab::Control, preference); }); + EndModal(wxID_OK); + return; + } + wxGetApp().open_preferences(PreferencesTab::Control, preference); + // A language change rebuilds the main frame, taking this dialog with it. + if (GetParent() != wxGetApp().mainframe) { + EndModal(wxID_CANCEL); + return; + } + for (const PreferenceRow& row : m_preference_rows) + row.description->SetLabel(_(mouse_action(row.preference))); +} + +ShortcutCaptureDialog::ShortcutCaptureDialog(wxWindow* parent, Shortcut shortcut) + : DPIDialog(parent, wxID_ANY, _(shortcut_info(shortcut).name), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) + , m_shortcut(shortcut) +{ + SetBackgroundColour(*wxWHITE); + wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); + + // A Global shortcut also runs while a text field has the focus, so its hint names the keys it can use. + const bool global = (shortcut_info(shortcut).contexts & context_bit(ShortcutContext::Global)) != 0; + const wxString advice = global_key_advice(); + const wxString typing = _L("Global shortcuts also apply while typing."); + const wxString rule = _L("A key that types a character cannot be a global shortcut."); + m_hint = global ? typing + "\n" + advice : _L("Esc cancels, Enter confirms."); + m_rejection = rule + "\n" + advice; + + // Wide enough for each sentence on a line of its own where the translation allows, within limits. + int width = FromDIP(450); + for (const wxString& sentence : { typing, rule, advice }) { + int extent = 0; + GetTextExtent(sentence, &extent, nullptr, nullptr, nullptr, &wxGetApp().normal_font()); + width = std::max(width, extent); + } + width = std::min(width, FromDIP(550)); + + auto prompt = new Label(this, wxGetApp().normal_font(), wxString::Format(_L("Press the new shortcut for\n\"%s\""), _(shortcut_info(shortcut).name)), LB_AUTO_WRAP); + prompt->SetMinSize(wxSize(width, -1)); + sizer->Add(prompt, 0, wxALL, FromDIP(20)); + + // Keyboard focus stays on this box so the buttons never receive the key presses. + const wxColour box_colour = StateColor::darkModeColorFor(*wxWHITE); + StaticBox* capture = new StaticBox(this, wxID_ANY, wxDefaultPosition, wxSize(width, FromDIP(60)), wxWANTS_CHARS); + capture->SetCornerRadius(FromDIP(4)); + capture->SetBorderColorNormal(StateColor::darkModeColorFor(wxColour("#009688"))); // the focused-input colour, since the box always has the focus + capture->SetBackgroundColorNormal(box_colour); + capture->SetBackgroundColour(box_colour); + wxBoxSizer* capture_sizer = new wxBoxSizer(wxVERTICAL); + m_chord_label = new wxStaticText(capture, wxID_ANY, join_keys(to_wx(wxGetApp().shortcuts().binding(shortcut).display_parts()))); + m_chord_label->SetFont(::Label::Head_14); + m_chord_label->SetBackgroundColour(box_colour); + capture_sizer->AddStretchSpacer(); + capture_sizer->Add(m_chord_label, 0, wxALIGN_CENTER); + capture_sizer->AddStretchSpacer(); + capture->SetSizer(capture_sizer); + capture->Bind(wxEVT_KEY_DOWN, &ShortcutCaptureDialog::on_key, this); + capture->Bind(wxEVT_CHAR, &ShortcutCaptureDialog::on_char, this); + capture->Bind(wxEVT_LEFT_DOWN, [capture](wxMouseEvent&) { capture->SetFocus(); }); + sizer->Add(capture, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(20)); + + m_status = new Label(this, wxGetApp().normal_font(), m_hint, LB_AUTO_WRAP); + m_status->SetMinSize(wxSize(width, 3 * m_status->GetCharHeight())); // room for three lines, so the dialog keeps its size while keys are tried + m_status_colour = m_status->GetForegroundColour(); + sizer->Add(m_status, 0, wxLEFT | wxRIGHT | wxTOP, FromDIP(20)); + + auto dlg_btns = new DialogButtons(this, {"Unbind", "OK", "Cancel"}, "", 1 /*left_aligned*/); + dlg_btns->GetFIRST()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { + m_chord = KeyChord{}; + m_conflicts.clear(); + EndModal(wxID_OK); + }); + dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_CANCEL); }); + m_ok = dlg_btns->GetOK(); + m_ok->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { EndModal(wxID_OK); }); + m_ok->Enable(false); + sizer->Add(dlg_btns, 0, wxEXPAND | wxTOP, FromDIP(10)); + + SetSizerAndFit(sizer); + CenterOnParent(); + wxGetApp().UpdateDlgDarkUI(this); + capture->CallAfter([capture]() { capture->SetFocus(); }); +} + +void ShortcutCaptureDialog::on_dpi_changed(const wxRect& suggested_rect) +{ + Layout(); + Fit(); +} + +void ShortcutCaptureDialog::on_key(wxKeyEvent& evt) +{ + if (!evt.HasAnyModifiers()) { + if (evt.GetKeyCode() == WXK_ESCAPE) { + EndModal(wxID_CANCEL); + return; + } + if (evt.GetKeyCode() == WXK_RETURN || evt.GetKeyCode() == WXK_NUMPAD_ENTER) { + if (m_ok->IsEnabled()) + EndModal(wxID_OK); + return; + } + } + const KeyChord chord = KeyChord::from_event(evt); + if (!chord.valid()) + return; + if (chord.needs_char_event()) { + evt.Skip(); + return; + } + record(chord); +} + +void ShortcutCaptureDialog::on_char(wxKeyEvent& evt) +{ + const KeyChord chord = KeyChord::from_event(evt); + if (chord.is_punctuation()) + record(chord); +} + +void ShortcutCaptureDialog::record(const KeyChord& chord) +{ + m_chord = chord; + m_chord_label->SetLabel(join_keys(to_wx(chord.display_parts()))); + m_chord_label->GetParent()->Layout(); + + auto reject = [this](const wxString& reason) { + m_status->SetForegroundColour(ERROR_COLOUR); + m_status->SetLabel(reason); + m_conflicts.clear(); + m_ok->Enable(false); + }; + const bool global = (shortcut_info(m_shortcut).contexts & context_bit(ShortcutContext::Global)) != 0; + if (global && !chord.is_menu_accelerator()) { + reject(m_rejection); + } else if (const std::optional owner = wxGetApp().shortcuts().step_owner(m_shortcut, chord); owner.has_value()) { + reject(wxString::Format(_L("Already used as a step of %s."), _(shortcut_info(*owner).name))); + } else { + m_conflicts = wxGetApp().shortcuts().conflicts(m_shortcut, chord); + m_status->SetForegroundColour(m_status_colour); + if (m_conflicts.empty()) + m_status->SetLabel(m_hint); + else + m_status->SetLabel(wxString::Format(_L("Already assigned to %s. Press OK to reassign it."), shortcut_names(m_conflicts))); + m_ok->Enable(true); + } + m_status->Refresh(); // a colour change alone does not repaint + Layout(); + Fit(); +} + } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/KBShortcutsDialog.hpp b/src/slic3r/GUI/KBShortcutsDialog.hpp index 9d49cd35c5..3091726147 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.hpp +++ b/src/slic3r/GUI/KBShortcutsDialog.hpp @@ -3,53 +3,120 @@ #include #include +#include #include #include "GUI_Utils.hpp" +#include "Shortcuts.hpp" #include "wxExtensions.hpp" #include +class Button; +class Label; +class TabCtrl; + namespace Slic3r { namespace GUI { -class Select -{ -public: - int m_index; - wxWindow *m_tab_button; - wxWindow *m_tab_text; -}; -WX_DECLARE_HASH_MAP(int, Select *, wxIntegerHash, wxIntegerEqual, SelectHash); - +// Lists every shortcut per context and lets the user rebind the assignable ones. class KBShortcutsDialog : public DPIDialog { - typedef std::pair Shortcut; - typedef std::vector Shortcuts; - typedef std::pair, Shortcuts> ShortcutsItem; - typedef std::vector ShortcutsVec; + // A key the user cannot rebind. + struct FixedKey + { + std::vector keys; // modifier names and the key, shown joined with "+" + const char* description; // untranslated + }; + // A mouse button whose camera action is chosen in Preferences. + struct MouseAction + { + wxString button; + const char* preference; // AppConfig key of the action + }; + struct Row + { + std::variant content; + ShortcutSection section; + }; + struct Page + { + wxString title; + wxString caption; // when the page's keys apply + ShortcutContext context; + std::vector rows; + }; + struct EditableRow + { + Shortcut shortcut; + wxStaticText* description; + wxStaticText* modifiers; + wxStaticText* key; + ScalableButton* reset; + }; + struct PreferenceRow + { + const char* preference; + wxStaticText* description; + }; - ShortcutsVec m_full_shortcuts; - ScalableBitmap m_logo_bmp; - wxStaticBitmap* m_header_bitmap; - std::vector m_pages; + std::vector m_pages; + std::vector m_editable_rows; + std::vector m_preference_rows; + // Row geometry, measured once and shared by every page. + wxSize m_edit_size; // an edit or reset icon + int m_buttons_width = 0; // every row's buttons column, so the right-aligned keys share an edge + int m_row_text_width = 0; // what a description and its chord share; the description wraps at the rest + int m_key_slot = 0; // width of the widest single key, the column single keys line up in + + TabCtrl* m_tabs; + wxSimplebook* m_simplebook; public: - KBShortcutsDialog(); - wxWindow* create_button(int id, wxString text); - void OnSelectTabel(wxCommandEvent &event); - wxPanel *m_panel_selects; - wxBoxSizer *m_sizer_right; - wxSimplebook *m_simplebook; - wxBoxSizer * m_sizer_body; - SelectHash m_hash_selector; + KBShortcutsDialog(wxWindow* parent, ShortcutContext page); // opens on the page of that context protected: void on_dpi_changed(const wxRect &suggested_rect) override; private: - void fill_shortcuts(); - wxPanel* create_header(wxWindow* parent, const wxFont& bold_font); - wxPanel* create_page(wxWindow* parent, const ShortcutsItem& shortcuts, const wxFont& font, const wxFont& bold_font); + void fill_pages(); + wxPanel* create_page(wxWindow* parent, const Page& page); + void edit_shortcut(Shortcut shortcut); + void reset_shortcut(Shortcut shortcut); + // Asks question before unbinding conflicts; false when the user declined. + bool take_chord_from(Shortcut shortcut, const std::vector& conflicts, const wxString& question); + void apply_bindings(); // refreshes the rows and pushes the change to the rest of the app + // Puts a chord on a row's two labels, a single key in the shared column, and returns the width the chord takes. + int set_chord_labels(wxStaticText* modifiers, wxStaticText* key, std::vector parts); + void open_mouse_preferences(const char* preference); +}; + +// Records one key chord for a shortcut, warning about the shortcuts it would take the chord from. +class ShortcutCaptureDialog : public DPIDialog +{ +public: + ShortcutCaptureDialog(wxWindow* parent, Shortcut shortcut); + + // Valid after ShowModal() returned wxID_OK; an invalid chord means "unbind". + const KeyChord& chord() const { return m_chord; } + const std::vector& conflicts() const { return m_conflicts; } + +protected: + void on_dpi_changed(const wxRect& suggested_rect) override; + +private: + void on_key(wxKeyEvent& evt); + void on_char(wxKeyEvent& evt); + void record(const KeyChord& chord); + + Shortcut m_shortcut; + KeyChord m_chord; + std::vector m_conflicts; + wxStaticText* m_chord_label; + wxString m_hint; // what m_status shows while there is nothing to warn about + wxString m_rejection; // what it shows for a key a Global shortcut cannot use + Label* m_status; + wxColour m_status_colour; + Button* m_ok; }; } // namespace GUI diff --git a/src/slic3r/GUI/KeyChord.cpp b/src/slic3r/GUI/KeyChord.cpp new file mode 100644 index 0000000000..cd746d2f92 --- /dev/null +++ b/src/slic3r/GUI/KeyChord.cpp @@ -0,0 +1,314 @@ +#include "KeyChord.hpp" + +#include "GUI.hpp" +#include "I18N.hpp" + +#include + +#include +#include +#include + +namespace Slic3r { namespace GUI { + +namespace { + +constexpr int BINDABLE_MODIFIERS = wxMOD_CONTROL | wxMOD_SHIFT | wxMOD_ALT | wxMOD_RAW_CONTROL; + +struct KeyName +{ + int key; + const char* name; // canonical name, as wx parses it + const char* alias; // accepted when parsing; nullptr when there is none + const char* label; // translation key for KeyChord::display(); nullptr when name is it +}; + +constexpr std::array special_keys{{ + { WXK_BACK, L_CONTEXT("Backspace", "Keyboard Shortcut"), "Back", nullptr }, + { WXK_TAB, L_CONTEXT("Tab", "Keyboard Shortcut"), nullptr, nullptr }, + { WXK_RETURN, L_CONTEXT("Enter", "Keyboard Shortcut"), "Return", nullptr }, + { WXK_ESCAPE, L_CONTEXT("Esc", "Keyboard Shortcut"), "Escape", nullptr }, + { WXK_SPACE, L_CONTEXT("Space", "Keyboard Shortcut"), nullptr, nullptr }, + { WXK_DELETE, L_CONTEXT("Del", "Keyboard Shortcut"), "Delete", nullptr }, + { WXK_INSERT, L_CONTEXT("Ins", "Keyboard Shortcut"), "Insert", nullptr }, + { WXK_HOME, L_CONTEXT("Home", "Keyboard Shortcut"), nullptr, nullptr }, + { WXK_END, L_CONTEXT("End", "Keyboard Shortcut"), nullptr, nullptr }, + { WXK_PAGEUP, L_CONTEXT("PgUp", "Keyboard Shortcut"), "PageUp", nullptr }, + { WXK_PAGEDOWN, L_CONTEXT("PgDn", "Keyboard Shortcut"), "PageDown", nullptr }, + // Displayed as "Arrow Left" and so on, which is what the catalogs translate. + { WXK_LEFT, "Left", nullptr, L_CONTEXT("Arrow Left", "Keyboard Shortcut") }, + { WXK_RIGHT, "Right", nullptr, L_CONTEXT("Arrow Right", "Keyboard Shortcut") }, + { WXK_UP, "Up", nullptr, L_CONTEXT("Arrow Up", "Keyboard Shortcut") }, + { WXK_DOWN, "Down", nullptr, L_CONTEXT("Arrow Down", "Keyboard Shortcut") }, +}}; + +bool equals_ignoring_case(const std::string& a, const char* b) +{ + if (b == nullptr) + return false; + size_t i = 0; + for (; i < a.size() && b[i] != '\0'; ++i) + if (std::tolower(static_cast(a[i])) != std::tolower(static_cast(b[i]))) + return false; + return i == a.size() && b[i] == '\0'; +} + +bool is_letter(int key) { return key >= 'A' && key <= 'Z'; } +bool is_digit(int key) { return key >= '0' && key <= '9'; } +bool is_printable(int key) { return key > ' ' && key < 127; } +bool is_symbol(int key) { return is_printable(key) && !std::isalnum(key); } +bool is_function_key(int key) { return key >= WXK_F1 && key <= WXK_F24; } + +bool is_special(int key) +{ + if (is_function_key(key)) + return true; + return std::any_of(special_keys.begin(), special_keys.end(), [key](const KeyName& k) { return k.key == key; }); +} + +std::string special_key_name(int key) +{ + if (is_function_key(key)) + return "F" + std::to_string(key - WXK_F1 + 1); + for (const KeyName& k : special_keys) + if (k.key == key) + return k.name; + return {}; +} + +std::string special_key_label(int key) +{ + for (const KeyName& k : special_keys) + if (k.key == key) + return _u8L_CONTEXT(k.label != nullptr ? k.label : k.name, "Keyboard Shortcut"); + return special_key_name(key); +} + +int parse_key(const std::string& text) +{ + if (text.size() == 1) { + const int key = static_cast(text[0]); + return is_printable(key) ? std::toupper(key) : WXK_NONE; + } + for (const KeyName& k : special_keys) + if (equals_ignoring_case(text, k.name) || equals_ignoring_case(text, k.alias)) + return k.key; + if ((text[0] == 'F' || text[0] == 'f') && text.size() <= 3 && std::all_of(text.begin() + 1, text.end(), [](char c) { return std::isdigit(static_cast(c)); })) { + const int n = std::stoi(text.substr(1)); + if (n >= 1 && n <= 24) + return WXK_F1 + n - 1; + } + return WXK_NONE; +} + +int parse_modifier(const std::string& text) +{ + if (equals_ignoring_case(text, "Ctrl") || equals_ignoring_case(text, "Control") || equals_ignoring_case(text, "Cmd") || equals_ignoring_case(text, "Command")) + return wxMOD_CONTROL; + if (equals_ignoring_case(text, "Shift")) + return wxMOD_SHIFT; + if (equals_ignoring_case(text, "Alt") || equals_ignoring_case(text, "Option")) + return wxMOD_ALT; + if (equals_ignoring_case(text, "RawCtrl")) + return wxMOD_RAW_CONTROL; + return wxMOD_NONE; +} + +// Numpad keys act as their main-keyboard counterparts, so one binding covers both. +int fold_numpad(int key) +{ + if (key >= WXK_NUMPAD0 && key <= WXK_NUMPAD9) + return '0' + (key - WXK_NUMPAD0); + switch (key) { + case WXK_NUMPAD_ENTER: return WXK_RETURN; + case WXK_NUMPAD_SPACE: return WXK_SPACE; + case WXK_NUMPAD_TAB: return WXK_TAB; + case WXK_NUMPAD_HOME: return WXK_HOME; + case WXK_NUMPAD_END: return WXK_END; + case WXK_NUMPAD_PAGEUP: return WXK_PAGEUP; + case WXK_NUMPAD_PAGEDOWN: return WXK_PAGEDOWN; + case WXK_NUMPAD_LEFT: return WXK_LEFT; + case WXK_NUMPAD_RIGHT: return WXK_RIGHT; + case WXK_NUMPAD_UP: return WXK_UP; + case WXK_NUMPAD_DOWN: return WXK_DOWN; + case WXK_NUMPAD_INSERT: return WXK_INSERT; + case WXK_NUMPAD_DELETE: return WXK_DELETE; + case WXK_NUMPAD_ADD: return '+'; + case WXK_NUMPAD_SUBTRACT: return '-'; + case WXK_NUMPAD_MULTIPLY: return '*'; + case WXK_NUMPAD_DIVIDE: return '/'; + case WXK_NUMPAD_DECIMAL: return '.'; + case WXK_NUMPAD_EQUAL: return '='; + default: return key; + } +} + +// Modifiers in the order the text forms list them; wxMOD_RAW_CONTROL is wxMOD_CONTROL off macOS. +#ifdef __APPLE__ +constexpr std::array MODIFIER_ORDER{ wxMOD_CONTROL, wxMOD_SHIFT, wxMOD_ALT, wxMOD_RAW_CONTROL }; +#else +constexpr std::array MODIFIER_ORDER{ wxMOD_CONTROL, wxMOD_SHIFT, wxMOD_ALT }; +#endif + +const char* canonical_modifier_prefix(int modifier) +{ + if (modifier == wxMOD_CONTROL) + return "Ctrl+"; + if (modifier == wxMOD_SHIFT) + return "Shift+"; + if (modifier == wxMOD_ALT) + return "Alt+"; + return "RawCtrl+"; +} + +template +std::string join_modifiers(int modifiers, Prefix prefix) +{ + std::string out; + for (int modifier : MODIFIER_ORDER) + if (modifiers & modifier) + out += prefix(modifier); + return out; +} + +} // namespace + +bool KeyChord::is_punctuation() const { return is_symbol(key) && modifiers == wxMOD_NONE; } + +bool KeyChord::needs_char_event() const { return is_symbol(key) && (modifiers & ~wxMOD_SHIFT) == 0; } + +bool KeyChord::is_menu_accelerator() const +{ + return valid() && ((modifiers & (wxMOD_CONTROL | wxMOD_ALT | wxMOD_RAW_CONTROL)) != 0 || (!is_printable(key) && key != WXK_SPACE)); +} + +std::string KeyChord::to_string() const +{ + if (!valid()) + return {}; + std::string out = join_modifiers(modifiers, canonical_modifier_prefix); + if (is_printable(key)) + out += char(key); + else + out += special_key_name(key); + return out; +} + +std::optional KeyChord::parse(const std::string& text) +{ + if (text.empty()) + return std::nullopt; + + // The key is whatever follows the last separator; a trailing '+' is the '+' key itself. + size_t key_start = text.size() - 1; + if (text.back() != '+') { + const size_t sep = text.rfind('+'); + key_start = sep == std::string::npos ? 0 : sep + 1; + } + KeyChord chord; + chord.key = parse_key(text.substr(key_start)); + if (chord.key == WXK_NONE) + return std::nullopt; + + const std::string prefix = key_start == 0 ? std::string() : text.substr(0, key_start - 1); + size_t begin = 0; + while (begin < prefix.size()) { + size_t end = prefix.find('+', begin); + if (end == std::string::npos) + end = prefix.size(); + const int modifier = parse_modifier(prefix.substr(begin, end - begin)); + if (modifier == wxMOD_NONE) + return std::nullopt; + chord.modifiers |= modifier; + begin = end + 1; + } + if (is_letter(chord.key) || is_digit(chord.key) || !is_printable(chord.key) || chord.modifiers == wxMOD_NONE) + return chord; + // Shift is folded into the character for punctuation, so "Shift+/" is not accepted. + return (chord.modifiers & wxMOD_SHIFT) ? std::nullopt : std::optional(chord); +} + +std::string KeyChord::display() const +{ + std::string out; + for (const std::string& part : display_parts()) + out += (out.empty() ? "" : "+") + part; + return out; +} + +std::vector KeyChord::display_parts() const +{ + std::vector parts; + if (!valid()) + return parts; + for (int modifier : MODIFIER_ORDER) + if (modifiers & modifier) + parts.push_back(modifier_name(modifier)); + parts.push_back(is_printable(key) ? std::string(1, char(key)) : special_key_label(key)); + return parts; +} + +std::string KeyChord::modifier_prefix(int modifier) +{ + if (modifier == wxMOD_CONTROL) + return shortkey_ctrl_prefix(); + if (modifier == wxMOD_SHIFT) + return _u8L("Shift+"); + if (modifier == wxMOD_ALT) + return shortkey_alt_prefix(); +#ifdef __APPLE__ + if (modifier == wxMOD_RAW_CONTROL) + return u8"⌃+"; +#endif + return {}; +} + +// The catalogue holds the "Ctrl+" prefixes, so the bare name is the prefix without its "+" +// and any space before it ("Strg +" in German). +std::string KeyChord::modifier_name(int modifier) +{ + std::string name = modifier_prefix(modifier); + if (!name.empty() && name.back() == '+') + name.pop_back(); + while (!name.empty() && name.back() == ' ') + name.pop_back(); + return name; +} + +wxAcceleratorEntry KeyChord::to_accelerator_entry(int command) const +{ + int flags = wxACCEL_NORMAL; + if (modifiers & wxMOD_CONTROL) + flags |= wxACCEL_CTRL; + if (modifiers & wxMOD_SHIFT) + flags |= wxACCEL_SHIFT; + if (modifiers & wxMOD_ALT) + flags |= wxACCEL_ALT; +#ifdef __APPLE__ + if (modifiers & wxMOD_RAW_CONTROL) + flags |= wxACCEL_RAW_CTRL; +#endif + return wxAcceleratorEntry(flags, key, command); +} + +KeyChord KeyChord::from_event(const wxKeyEvent& evt) +{ + KeyChord chord; + chord.modifiers = evt.GetModifiers() & BINDABLE_MODIFIERS; + int key = fold_numpad(evt.GetKeyCode()); + + if (evt.GetEventType() == wxEVT_CHAR) { + if (key >= 1 && key <= 26 && evt.ControlDown()) + key = 'A' + key - 1; // Ctrl+letter arrives as the control character + else if (is_symbol(key)) + chord.modifiers &= ~wxMOD_SHIFT; // the character already reflects Shift + } + if (key >= 'a' && key <= 'z') + key -= 'a' - 'A'; + + if (is_printable(key) || is_special(key)) + chord.key = key; + return chord; +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/KeyChord.hpp b/src/slic3r/GUI/KeyChord.hpp new file mode 100644 index 0000000000..c7884409eb --- /dev/null +++ b/src/slic3r/GUI/KeyChord.hpp @@ -0,0 +1,64 @@ +#pragma once + +#include +#include + +#include +#include +#include +#include + +class wxKeyEvent; + +namespace Slic3r { namespace GUI { + +// One key press: a key code as wxEVT_KEY_DOWN reports it (letters upper-case, numpad keys +// folded onto their main-keyboard equivalents) plus the wxMOD_* modifiers held with it. +// Printable punctuation is stored as the character it produces, so "+" means the key that +// types "+" on the user's layout. +struct KeyChord +{ + int key = WXK_NONE; + int modifiers = wxMOD_NONE; + + bool valid() const { return key != WXK_NONE; } + bool operator==(const KeyChord& other) const { return key == other.key && modifiers == other.modifiers; } + bool operator!=(const KeyChord& other) const { return !(*this == other); } + + // Bare printable keys other than letters and digits are matched on wxEVT_CHAR, because + // only the char event knows which character a key produces under the active layout. + bool is_punctuation() const; + // True for a printable non-alphanumeric key pressed with nothing but Shift, which only the + // char event that follows can resolve. + bool needs_char_event() const; + // True when Ctrl or Alt is held or the key is non-printable, the chords a menu can own without + // swallowing typing in text fields. + bool is_menu_accelerator() const; + + // Platform-neutral text ("Ctrl+Shift+S") for persistence and wx accelerator strings. + std::string to_string() const; + static std::optional parse(const std::string& text); + + // Text for menus, tooltips and the shortcuts dialog, with translated modifier names and the + // command and option glyphs on macOS. + std::string display() const; + // The pieces display() joins with "+": the modifier names, then the key name. + std::vector display_parts() const; + // Translated text of one wxMOD_* modifier, as a "Ctrl+" prefix or the bare "Ctrl" name. + static std::string modifier_prefix(int modifier); + static std::string modifier_name(int modifier); + + wxAcceleratorEntry to_accelerator_entry(int command) const; + + // Builds the chord a key event describes, or an invalid chord for pure modifier presses and + // keys outside the bindable set. wxEVT_CHAR events are normalized to the key codes + // wxEVT_KEY_DOWN reports for letters, digits and special keys. + static KeyChord from_event(const wxKeyEvent& evt); +}; + +struct KeyChordHash +{ + size_t operator()(const KeyChord& chord) const { return std::hash()((static_cast(chord.modifiers) << 32) | unsigned(chord.key)); } +}; + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index f8f5656581..ed802cca75 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -56,6 +56,7 @@ #include "../Utils/PrintHost.hpp" #include "GUI_App.hpp" +#include "Shortcuts.hpp" #include "UnsavedChangesDialog.hpp" #include "PublishSettingsDialog.hpp" #include "MsgDialog.hpp" @@ -310,17 +311,6 @@ static wxIcon main_frame_icon(GUI_App::EAppMode app_mode) wxDEFINE_EVENT(EVT_SYNC_CLOUD_PRESET, SimpleEvent); -#ifdef __APPLE__ -static const wxString ctrl = ("Ctrl+"); -// FIXME: maybe should be using GUI::shortkey_ctrl_prefix() or equivalent? -static const std::string ctrl_t = u8"\u2318+"; // "⌘" (Mac Command) -#else -static const wxString ctrl = _L("Ctrl+"); -// FIXME: maybe should be using GUI::shortkey_ctrl_prefix() or equivalent? -static const wxString ctrl_t = ctrl; -#endif -static const wxString shift = _L("Shift+"); - MainFrame::MainFrame() : DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_STYLE, "mainframe") , m_printhost_queue_dlg(new PrintHostQueueDialog(this)) @@ -730,69 +720,8 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ } return;} #endif - // Orca: open the speed dial from any page with a bare Space. Only when no modifier is held (so - // editing shortcuts like Ctrl+Shift+Space in the canvas still reach it) and the focused window - // doesn't use Space to activate itself (buttons, checkboxes, list/choice controls, text fields), - // so a bare Space there still clicks/toggles instead of being hijacked. Gated by a preference - // (default on) so users can hand Space back to the focused control entirely. - if (wxGetApp().app_config->get_bool("enable_speed_dial") && !evt.CmdDown() && !evt.ShiftDown() && - !evt.AltDown() && evt.GetKeyCode() == WXK_SPACE) { - if (focus_keeps_space(wxWindow::FindFocus())) { - evt.Skip(); // let the focused control keep Space - return; - } - // Defer out of the native key-event stack: open_speed_dial() may create a WebView and - // run script, the same window work the codebase avoids doing on native callbacks. - this->CallAfter([] { wxGetApp().open_speed_dial(); }); - return; - } - if (evt.CmdDown() && evt.GetKeyCode() == 'R') { if (m_slice_enable) { wxGetApp().plater()->update(true, true); wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SLICE_PLATE)); this->m_tabpanel->SelectPageByName(TAB_ID_PREVIEW); } return; } - if (evt.CmdDown() && evt.ShiftDown() && evt.GetKeyCode() == 'G') { - m_plater->apply_background_progress(); - m_print_enable = get_enable_print_status(); - m_print_btn->Enable(m_print_enable); - if (m_print_enable) { - if (wxGetApp().preset_bundle->use_bbl_network() || wxGetApp().app_config->get_bool("use_printer_agents")) - wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_PRINT_PLATE)); - else - wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SEND_GCODE)); - } + if (!handle_global_shortcut(KeyChord::from_event(evt))) evt.Skip(); - return; - } - else if (evt.CmdDown() && evt.GetKeyCode() == 'G') { if (can_export_gcode()) { wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_EXPORT_SLICED_FILE)); } evt.Skip(); return; } - if (evt.CmdDown() && evt.GetKeyCode() == 'J') { m_printhost_queue_dlg->Show(); return; } - if (evt.CmdDown() && evt.GetKeyCode() == 'N') { m_plater->new_project(); return;} - if (evt.CmdDown() && evt.GetKeyCode() == 'O') { m_plater->load_project(); return;} - if (evt.CmdDown() && evt.ShiftDown() && evt.GetKeyCode() == 'S') { if (can_save_as()) m_plater->save_project(true); return;} - else if (evt.CmdDown() && evt.GetKeyCode() == 'S') { if (can_save()) m_plater->save_project(); return;} - if (evt.CmdDown() && evt.GetKeyCode() == 'F') { - if (m_plater && is_prepare_or_preview_tab()) { - m_plater->sidebar().can_search(); - } - } -#ifdef __APPLE__ - if (evt.CmdDown() && evt.GetKeyCode() == ',') -#else - if (evt.CmdDown() && evt.GetKeyCode() == 'P') -#endif - { - // Orca: Use GUI_App::open_preferences instead of direct call so windows associations are updated on exit - wxGetApp().open_preferences(); - plater()->get_current_canvas3D()->force_set_focus(); - return; - } - - if (evt.CmdDown() && evt.GetKeyCode() == 'I' && !evt.ShiftDown()) { - if (!can_add_models()) return; - if (m_plater) { m_plater->add_file(); } - return; - } - if (evt.CmdDown() && evt.ShiftDown() && evt.GetKeyCode() == 'E') { - if (can_export_model()) publish_project(); - return; - } - evt.Skip(); }); Bind(wxEVT_SHOW, [](wxShowEvent &evt) { @@ -813,6 +742,96 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ bind_diff_dialog(); } +bool MainFrame::handle_global_shortcut(const KeyChord& chord) +{ + const std::optional shortcut = wxGetApp().shortcuts().lookup(ShortcutContext::Global, chord); + if (!shortcut.has_value()) + return false; + + switch (*shortcut) { + case Shortcut::SlicePlate: + if (m_slice_enable) { + wxGetApp().plater()->update(true, true); + wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SLICE_PLATE)); + m_tabpanel->SelectPageByName(TAB_ID_PREVIEW); + } + break; + case Shortcut::PrintPlate: + m_plater->apply_background_progress(); + m_print_enable = get_enable_print_status(); + m_print_btn->Enable(m_print_enable); + if (m_print_enable) { + if (wxGetApp().preset_bundle->use_bbl_network() || wxGetApp().app_config->get_bool("use_printer_agents")) + wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_PRINT_PLATE)); + else + wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SEND_GCODE)); + } + return false; + case Shortcut::ExportSlicedFile: + if (can_export_gcode()) + wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_EXPORT_SLICED_FILE)); + return false; + case Shortcut::PrintHostQueue: m_printhost_queue_dlg->Show(); break; + case Shortcut::SpeedDial: + if (!wxGetApp().app_config->get_bool("enable_speed_dial") || (chord == KeyChord{ WXK_SPACE } && focus_keeps_space(wxWindow::FindFocus()))) + return false; + // Deferred out of the native key-event stack: open_speed_dial() may create a WebView and run script. + CallAfter([] { wxGetApp().open_speed_dial(); }); + break; + case Shortcut::NewProject: m_plater->new_project(); break; + case Shortcut::OpenProject: m_plater->load_project(); break; + case Shortcut::SaveProjectAs: + if (can_save_as()) + m_plater->save_project(true); + break; + case Shortcut::SaveProject: + if (can_save()) + m_plater->save_project(); + break; + case Shortcut::Search: + if (m_plater && is_prepare_or_preview_tab()) + m_plater->sidebar().can_search(); + return false; + case Shortcut::Preferences: + // Orca: Use GUI_App::open_preferences instead of direct call so windows associations are updated on exit + wxGetApp().open_preferences(); + plater()->get_current_canvas3D()->force_set_focus(); + break; + case Shortcut::ImportModel: + if (can_add_models() && m_plater) + m_plater->add_file(); + break; + case Shortcut::Publish3mf: + if (can_export_model()) + publish_project(); + break; + case Shortcut::ShowLabels: + if (m_plater && m_plater->is_view3D_shown()) { + m_plater->show_view3D_labels(!m_plater->are_view3D_labels_shown()); + m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); + } + break; + case Shortcut::ViewDefault: + if (m_plater) { + select_view("plate"); + m_plater->get_current_canvas3D()->zoom_to_bed(); + } + break; + case Shortcut::ViewTop: select_view("top"); break; + case Shortcut::ViewBottom: select_view("bottom"); break; + case Shortcut::ViewFront: select_view("front"); break; + case Shortcut::ViewRear: select_view("rear"); break; + case Shortcut::ViewLeft: select_view("left"); break; + case Shortcut::ViewRight: select_view("right"); break; + case Shortcut::ViewPlate: + if (m_plater) + m_plater->get_current_canvas3D()->select_plate(); + break; + default: return false; + } + return true; +} + void MainFrame::bind_diff_dialog() { auto get_tab = [](Preset::Type type) { @@ -1170,6 +1189,8 @@ void MainFrame::shutdown() if (m_project != nullptr) m_project->shutdown(); m_plugin_pages.shutdown(); + if (m_plater != nullptr) + m_plater->remove_dock_panes(); #ifdef __WXGTK__ // Edge panels are child windows — wxWidgets destroys them automatically. m_edge_bottom = nullptr; @@ -2766,13 +2787,31 @@ static const wxString sep = " - "; static const wxString sep = "\t"; #endif -static wxMenu* generate_help_menu() +wxString MainFrame::shortcut_label(const wxString& label, Shortcut shortcut, bool accelerator) +{ + const ShortcutRegistry& shortcuts = wxGetApp().shortcuts(); + if (accelerator) { + const std::string accel = shortcuts.accelerator(shortcut); + if (!accel.empty()) + return label + " " + from_u8(accel); + } + const std::string text = shortcuts.display(shortcut); + return text.empty() ? label : label + sep + from_u8(text); +} + +void MainFrame::update_shortcut_labels() +{ + for (const ShortcutMenuItem& entry : m_shortcut_menu_items) + entry.item->SetItemLabel(shortcut_label(entry.label, entry.shortcut, entry.accelerator)); +} + +wxMenu* MainFrame::generate_help_menu() { wxMenu* helpMenu = new wxMenu(); // shortcut key - append_menu_item(helpMenu, wxID_ANY, _L("Keyboard Shortcuts") + sep + "&?", _L("Show the list of keyboard shortcuts"), - [](wxCommandEvent&) { wxGetApp().keyboard_shortcuts(); }); + append_shortcut_item(helpMenu, Shortcut::KeyboardShortcuts, false, _L("Keyboard Shortcuts"), _L("Show the list of keyboard shortcuts"), + [](wxCommandEvent&) { wxGetApp().keyboard_shortcuts(ShortcutContext::Global); }); // Show Beginner's Tutorial append_menu_item(helpMenu, wxID_ANY, _L("Setup Wizard"), _L("Setup Wizard"), [](wxCommandEvent &) {wxGetApp().ShowUserGuide();}); @@ -2854,29 +2893,28 @@ static void add_common_publish_menu_items(wxMenu* publish_menu, MainFrame* mainF #endif } -static void add_common_view_menu_items(wxMenu* view_menu, MainFrame* mainFrame, std::function can_change_view) +void MainFrame::add_common_view_menu_items(wxMenu* view_menu, std::function can_change_view) { - // The camera control accelerators are captured by GLCanvas3D::on_char(). - append_menu_item(view_menu, wxID_ANY, _L("Default View") + "\t" + ctrl + "0", _L("Default View"), [mainFrame](wxCommandEvent&) { - mainFrame->select_view("plate"); - mainFrame->plater()->get_current_canvas3D()->zoom_to_bed(); + append_shortcut_item(view_menu, Shortcut::ViewDefault, true, _L("Default View"), _L("Default View"), [this](wxCommandEvent&) { + select_view("plate"); + plater()->get_current_canvas3D()->zoom_to_bed(); }, - "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); + "", nullptr, [can_change_view]() { return can_change_view(); }, this); //view_menu->AppendSeparator(); //TRN To be shown in the main menu View->Top - append_menu_item(view_menu, wxID_ANY, _L_CONTEXT("Top", "Camera View") + "\t" + ctrl + "1", _L("Top View"), [mainFrame](wxCommandEvent&) { mainFrame->select_view("top"); }, - "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); + append_shortcut_item(view_menu, Shortcut::ViewTop, true, _L_CONTEXT("Top", "Camera View"), _L("Top View"), [this](wxCommandEvent&) { select_view("top"); }, + "", nullptr, [can_change_view]() { return can_change_view(); }, this); //TRN To be shown in the main menu View->Bottom - append_menu_item(view_menu, wxID_ANY, _L_CONTEXT("Bottom", "Camera View") + "\t" + ctrl + "2", _L("Bottom View"), [mainFrame](wxCommandEvent&) { mainFrame->select_view("bottom"); }, - "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); - append_menu_item(view_menu, wxID_ANY, _L_CONTEXT("Front", "Camera View") + "\t" + ctrl + "3", _L("Front View"), [mainFrame](wxCommandEvent&) { mainFrame->select_view("front"); }, - "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); - append_menu_item(view_menu, wxID_ANY, _L_CONTEXT("Rear", "Camera View") + "\t" + ctrl + "4", _L("Rear View"), [mainFrame](wxCommandEvent&) { mainFrame->select_view("rear"); }, - "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); - append_menu_item(view_menu, wxID_ANY, _L_CONTEXT("Left", "Camera View") + "\t" + ctrl + "5", _L("Left View"),[mainFrame](wxCommandEvent &) {mainFrame->select_view("left"); }, - "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); - append_menu_item(view_menu, wxID_ANY, _L_CONTEXT("Right", "Camera View") + "\t" + ctrl + "6", _L("Right View"),[mainFrame](wxCommandEvent &) { mainFrame->select_view("right"); }, - "", nullptr, [can_change_view]() { return can_change_view(); }, mainFrame); + append_shortcut_item(view_menu, Shortcut::ViewBottom, true, _L_CONTEXT("Bottom", "Camera View"), _L("Bottom View"), [this](wxCommandEvent&) { select_view("bottom"); }, + "", nullptr, [can_change_view]() { return can_change_view(); }, this); + append_shortcut_item(view_menu, Shortcut::ViewFront, true, _L_CONTEXT("Front", "Camera View"), _L("Front View"), [this](wxCommandEvent&) { select_view("front"); }, + "", nullptr, [can_change_view]() { return can_change_view(); }, this); + append_shortcut_item(view_menu, Shortcut::ViewRear, true, _L_CONTEXT("Rear", "Camera View"), _L("Rear View"), [this](wxCommandEvent&) { select_view("rear"); }, + "", nullptr, [can_change_view]() { return can_change_view(); }, this); + append_shortcut_item(view_menu, Shortcut::ViewLeft, true, _L_CONTEXT("Left", "Camera View"), _L("Left View"), [this](wxCommandEvent &) { select_view("left"); }, + "", nullptr, [can_change_view]() { return can_change_view(); }, this); + append_shortcut_item(view_menu, Shortcut::ViewRight, true, _L_CONTEXT("Right", "Camera View"), _L("Right View"), [this](wxCommandEvent &) { select_view("right"); }, + "", nullptr, [can_change_view]() { return can_change_view(); }, this); } void MainFrame::init_menubar_as_editor() @@ -2895,17 +2933,17 @@ void MainFrame::init_menubar_as_editor() [this] { return m_plater != nullptr && wxGetApp().app_config->get("app", "single_instance") == "false"; }, this); #endif // New Project - append_menu_item(fileMenu, wxID_ANY, _L("New Project") + "\t" + ctrl + "N", _L("Start a new project"), + append_shortcut_item(fileMenu, Shortcut::NewProject, true, _L("New Project"), _L("Start a new project"), [this](wxCommandEvent&) { if (m_plater) m_plater->new_project(); }, "", nullptr, [this](){return can_start_new_project(); }, this); // Open Project #ifndef __APPLE__ - append_menu_item(fileMenu, wxID_ANY, _L("Open Project") + dots + "\t" + ctrl + "O", _L("Open a project file"), + append_shortcut_item(fileMenu, Shortcut::OpenProject, true, _L("Open Project") + dots, _L("Open a project file"), [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, "menu_open", nullptr, [this](){return can_open_project(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Open Project") + dots + "\t" + ctrl + "O", _L("Open a project file"), + append_shortcut_item(fileMenu, Shortcut::OpenProject, true, _L("Open Project") + dots, _L("Open a project file"), [this](wxCommandEvent&) { if (m_plater) m_plater->load_project(); }, "", nullptr, [this](){return can_open_project(); }, this); #endif @@ -2932,21 +2970,21 @@ void MainFrame::init_menubar_as_editor() // BBS: close save project #ifndef __APPLE__ - append_menu_item(fileMenu, wxID_ANY, _L("Save Project") + "\t" + ctrl + "S", _L("Save current project to file"), + append_shortcut_item(fileMenu, Shortcut::SaveProject, true, _L("Save Project"), _L("Save current project to file"), [this](wxCommandEvent&) { if (m_plater) m_plater->save_project(); }, "menu_save", nullptr, [this](){return m_plater != nullptr && can_save(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Save Project") + "\t" + ctrl + "S", _L("Save current project to file"), + append_shortcut_item(fileMenu, Shortcut::SaveProject, true, _L("Save Project"), _L("Save current project to file"), [this](wxCommandEvent&) { if (m_plater) m_plater->save_project(); }, "", nullptr, [this](){return m_plater != nullptr && can_save(); }, this); #endif #ifndef __APPLE__ - append_menu_item(fileMenu, wxID_ANY, _L("Save Project as") + dots + "\t" + ctrl + shift + "S", _L("Save current project as"), + append_shortcut_item(fileMenu, Shortcut::SaveProjectAs, true, _L("Save Project as") + dots, _L("Save current project as"), [this](wxCommandEvent&) { if (m_plater) m_plater->save_project(true); }, "menu_save", nullptr, [this](){return m_plater != nullptr && can_save_as(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Save Project as") + dots + "\t" + ctrl + shift + "S", _L("Save current project as"), + append_shortcut_item(fileMenu, Shortcut::SaveProjectAs, true, _L("Save Project as") + dots, _L("Save current project as"), [this](wxCommandEvent&) { if (m_plater) m_plater->save_project(true); }, "", nullptr, [this](){return m_plater != nullptr && can_save_as(); }, this); #endif @@ -2956,11 +2994,11 @@ void MainFrame::init_menubar_as_editor() auto publish_handler = [this](wxCommandEvent&) { publish_project(); }; #ifndef __APPLE__ - append_menu_item(fileMenu, wxID_ANY, _L("Publish 3MF") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), + append_shortcut_item(fileMenu, Shortcut::Publish3mf, true, _L("Publish 3MF") + dots, _L("Export a 3MF file with the selected settings embedded"), publish_handler, "menu_publish", nullptr, [this](){return can_export_model(); }, this); #else - append_menu_item(fileMenu, wxID_ANY, _L("Publish 3MF") + dots + "\t" + ctrl + shift + "E", _L("Export a 3MF file with the selected settings embedded"), + append_shortcut_item(fileMenu, Shortcut::Publish3mf, true, _L("Publish 3MF") + dots, _L("Export a 3MF file with the selected settings embedded"), publish_handler, "", nullptr, [this](){return can_export_model(); }, this); #endif @@ -2971,13 +3009,13 @@ void MainFrame::init_menubar_as_editor() // BBS wxMenu *import_menu = new wxMenu(); #ifndef __APPLE__ - append_menu_item(import_menu, wxID_ANY, _L("Import 3MF/STL/STEP/SVG/OBJ/AMF") + dots + "\t" + ctrl + "I", _L("Load a model"), + append_shortcut_item(import_menu, Shortcut::ImportModel, true, _L("Import 3MF/STL/STEP/SVG/OBJ/AMF") + dots, _L("Load a model"), [this](wxCommandEvent&) { if (m_plater) { m_plater->add_file(); } }, "menu_import", nullptr, [this](){return can_add_models(); }, this); #else - append_menu_item(import_menu, wxID_ANY, _L("Import 3MF/STL/STEP/SVG/OBJ/AMF") + dots + "\t" + ctrl + "I", _L("Load a model"), + append_shortcut_item(import_menu, Shortcut::ImportModel, true, _L("Import 3MF/STL/STEP/SVG/OBJ/AMF") + dots, _L("Load a model"), [this](wxCommandEvent&) { if (m_plater) { m_plater->add_model(); } }, "", nullptr, [this](){return can_add_models(); }, this); #endif @@ -3009,7 +3047,7 @@ void MainFrame::init_menubar_as_editor() [this](wxCommandEvent&) { if (m_plater) m_plater->export_core_3mf(); }, "menu_export_sliced_file", nullptr, [this](){return can_export_model(); }, this); // BBS export .gcode.3mf - append_menu_item(export_menu, wxID_ANY, _L("Export plate sliced file") + dots + "\t" + ctrl + "G", _L("Export current sliced file"), + append_shortcut_item(export_menu, Shortcut::ExportSlicedFile, true, _L("Export plate sliced file") + dots, _L("Export current sliced file"), [this](wxCommandEvent&) { if (m_plater) wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_EXPORT_SLICED_FILE)); }, "menu_export_sliced_file", nullptr, [this](){return can_export_gcode(); }, this); @@ -3059,37 +3097,37 @@ void MainFrame::init_menubar_as_editor() }; #ifndef __APPLE__ // BBS undo - append_menu_item(editMenu, wxID_ANY, _L("Undo") + "\t" + ctrl + "Z", + append_shortcut_item(editMenu, Shortcut::Undo, true, _L("Undo"), _L("Undo"), [this](wxCommandEvent&) { m_plater->undo(); }, "menu_undo", nullptr, [this](){return m_plater->can_undo(); }, this); // BBS redo - append_menu_item(editMenu, wxID_ANY, _L("Redo") + "\t" + ctrl + "Y", + append_shortcut_item(editMenu, Shortcut::Redo, true, _L("Redo"), _L("Redo"), [this](wxCommandEvent&) { m_plater->redo(); }, "menu_redo", nullptr, [this](){return m_plater->can_redo(); }, this); editMenu->AppendSeparator(); // BBS Cut TODO - append_menu_item(editMenu, wxID_ANY, _L("Cut") + "\t" + ctrl + "X", + append_shortcut_item(editMenu, Shortcut::Cut, true, _L("Cut"), _L("Cut selection to clipboard"), [this](wxCommandEvent&) {m_plater->cut_selection_to_clipboard(); }, "menu_cut", nullptr, [this]() {return m_plater->can_copy_to_clipboard(); }, this); // BBS Copy - append_menu_item(editMenu, wxID_ANY, _L("Copy") + "\t" + ctrl + "C", + append_shortcut_item(editMenu, Shortcut::Copy, true, _L("Copy"), _L("Copy selection to clipboard"), [this](wxCommandEvent&) { m_plater->copy_selection_to_clipboard(); }, "menu_copy", nullptr, [this](){return m_plater->can_copy_to_clipboard(); }, this); // BBS Paste - append_menu_item(editMenu, wxID_ANY, _L("Paste") + "\t" + ctrl + "V", + append_shortcut_item(editMenu, Shortcut::Paste, true, _L("Paste"), _L("Paste clipboard"), [this](wxCommandEvent&) { m_plater->paste_from_clipboard(); }, "menu_paste", nullptr, [this](){return m_plater->can_paste_from_clipboard(); }, this); // BBS Delete selected - append_menu_item(editMenu, wxID_ANY, _L("Delete Selected") + "\t" + _L_CONTEXT("Del", "Keyboard Shortcut"), + append_shortcut_item(editMenu, Shortcut::DeleteSelected, true, _L("Delete Selected"), _L("Deletes the current selection"),[this](wxCommandEvent&) { m_plater->remove_selected(); }, "menu_remove", nullptr, [this](){return can_delete(); }, this); //BBS: delete all - append_menu_item(editMenu, wxID_ANY, _L("Delete All") + "\t" + ctrl + "D", + append_shortcut_item(editMenu, Shortcut::DeleteAll, true, _L("Delete All"), _L("Deletes all objects"),[this](wxCommandEvent&) { m_plater->delete_all_objects_from_model(); }, "menu_remove", nullptr, [this](){return can_delete_all(); }, this); editMenu->AppendSeparator(); // BBS Clone Selected - append_menu_item(editMenu, wxID_ANY, _L("Clone Selected") /*+ "\t" + ctrl + "M"*/, + append_shortcut_item(editMenu, Shortcut::CloneSelected, true, _L("Clone Selected"), _L("Clone copies of selections"),[this](wxCommandEvent&) { m_plater->clone_selection(); }, @@ -3103,7 +3141,7 @@ void MainFrame::init_menubar_as_editor() editMenu->AppendSeparator(); #else // BBS undo - append_menu_item(editMenu, wxID_ANY, _L("Undo") + sep + ctrl_t + "Z", + append_shortcut_item(editMenu, Shortcut::Undo, false, _L("Undo"), _L("Undo"), [this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3115,7 +3153,7 @@ void MainFrame::init_menubar_as_editor() m_plater->undo(); }, "", nullptr, [this](){return m_plater->can_undo(); }, this); // BBS redo - append_menu_item(editMenu, wxID_ANY, _L("Redo") + sep + ctrl_t + "Y", + append_shortcut_item(editMenu, Shortcut::Redo, false, _L("Redo"), _L("Redo"), [this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3128,7 +3166,7 @@ void MainFrame::init_menubar_as_editor() "", nullptr, [this](){return m_plater->can_redo(); }, this); editMenu->AppendSeparator(); // BBS Cut TODO - append_menu_item(editMenu, wxID_ANY, _L("Cut") + sep + ctrl_t + "X", + append_shortcut_item(editMenu, Shortcut::Cut, false, _L("Cut"), _L("Cut selection to clipboard"), [this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3140,7 +3178,7 @@ void MainFrame::init_menubar_as_editor() m_plater->cut_selection_to_clipboard(); }, "", nullptr, [this]() {return m_plater->can_copy_to_clipboard(); }, this); // BBS Copy - append_menu_item(editMenu, wxID_ANY, _L("Copy") + sep + ctrl_t + "C", + append_shortcut_item(editMenu, Shortcut::Copy, false, _L("Copy"), _L("Copy selection to clipboard"), [this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3152,7 +3190,7 @@ void MainFrame::init_menubar_as_editor() m_plater->copy_selection_to_clipboard(); }, "", nullptr, [this](){return m_plater->can_copy_to_clipboard(); }, this); // BBS Paste - append_menu_item(editMenu, wxID_ANY, _L("Paste") + sep + ctrl_t + "V", + append_shortcut_item(editMenu, Shortcut::Paste, false, _L("Paste"), _L("Paste clipboard"), [this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3165,14 +3203,14 @@ void MainFrame::init_menubar_as_editor() "", nullptr, [this](){return m_plater->can_paste_from_clipboard(); }, this); #if 0 // BBS Delete selected - append_menu_item(editMenu, wxID_ANY, _L("Delete Selected") + "\t" + _L_CONTEXT("Backspace", "Keyboard Shortcut"), + append_shortcut_item(editMenu, Shortcut::DeleteSelected, true, _L("Delete Selected"), _L("Deletes the current selection"),[this](wxCommandEvent&) { m_plater->remove_selected(); }, "", nullptr, [this](){return can_delete(); }, this); #endif //BBS: delete all - append_menu_item(editMenu, wxID_ANY, _L("Delete All") + "\t" + ctrl + "D", + append_shortcut_item(editMenu, Shortcut::DeleteAll, true, _L("Delete All"), _L("Deletes all objects"),[this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3185,7 +3223,7 @@ void MainFrame::init_menubar_as_editor() "", nullptr, [this](){return can_delete_all(); }, this); editMenu->AppendSeparator(); // BBS Clone Selected - append_menu_item(editMenu, wxID_ANY, _L("Clone Selected") + "\t" + ctrl + "K", + append_shortcut_item(editMenu, Shortcut::CloneSelected, true, _L("Clone Selected"), _L("Clone copies of selections"),[this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3208,7 +3246,7 @@ void MainFrame::init_menubar_as_editor() #endif // BBS Select All - append_menu_item(editMenu, wxID_ANY, _L("Select All") + sep + ctrl_t + "A", + append_shortcut_item(editMenu, Shortcut::SelectAll, false, _L("Select All"), _L("Selects all objects"), [this, handle_key_event](wxCommandEvent&) { wxKeyEvent e; e.SetEventType(wxEVT_KEY_DOWN); @@ -3260,7 +3298,7 @@ void MainFrame::init_menubar_as_editor() wxMenu* viewMenu = nullptr; if (m_plater) { viewMenu = new wxMenu(); - add_common_view_menu_items(viewMenu, this, std::bind(&MainFrame::can_change_view, this)); + add_common_view_menu_items(viewMenu, std::bind(&MainFrame::can_change_view, this)); viewMenu->AppendSeparator(); //BBS perspective view @@ -3291,13 +3329,14 @@ void MainFrame::init_menubar_as_editor() []() { return wxGetApp().app_config->get_bool("auto_perspective"); }, this); viewMenu->AppendSeparator(); - append_menu_check_item(viewMenu, wxID_ANY, _L("Show &G-code Window") + sep + "C", _L("Show G-code window in Preview scene."), + wxMenuItem* gcode_window = append_menu_check_item(viewMenu, wxID_ANY, shortcut_label(_L("Show &G-code Window"), Shortcut::ToggleGcodeWindow, true), _L("Show G-code window in Preview scene."), [this](wxCommandEvent &) { wxGetApp().toggle_show_gcode_window(); m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this, [this]() { return m_tabpanel->GetSelectedPageName() == TAB_ID_PREVIEW; }, []() { return wxGetApp().show_gcode_window(); }, this); + m_shortcut_menu_items.push_back({ gcode_window, Shortcut::ToggleGcodeWindow, _L("Show &G-code Window"), true }); append_menu_check_item( viewMenu, wxID_ANY, _L("Show 3D Navigator"), _L("Show 3D navigator in Prepare and Preview scene."), @@ -3325,9 +3364,10 @@ void MainFrame::init_menubar_as_editor() this); viewMenu->AppendSeparator(); - append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Labels") + "\t" + ctrl + "E", _L("Show object labels in 3D scene."), + wxMenuItem* show_labels = append_menu_check_item(viewMenu, wxID_ANY, shortcut_label(_L("Show &Labels"), Shortcut::ShowLabels, true), _L("Show object labels in 3D scene."), [this](wxCommandEvent&) { m_plater->show_view3D_labels(!m_plater->are_view3D_labels_shown()); m_plater->get_current_canvas3D()->post_event(SimpleEvent(wxEVT_PAINT)); }, this, [this]() { return m_plater->is_view3D_shown(); }, [this]() { return m_plater->are_view3D_labels_shown(); }, this); + m_shortcut_menu_items.push_back({ show_labels, Shortcut::ShowLabels, _L("Show &Labels"), true }); append_menu_check_item(viewMenu, wxID_ANY, _L("Show &Overhang"), _L("Show object overhang highlight in 3D scene."), [this](wxCommandEvent &) { @@ -3372,8 +3412,6 @@ void MainFrame::init_menubar_as_editor() //auto preference_item = new wxMenuItem(parent_menu, OrcaSlicerMenuPreferences + bambu_studio_id_base, _L("Preferences") + "\t" + ctrl + ",", ""); #else wxMenu* parent_menu = m_topbar->GetTopMenu(); - auto preference_item = new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); - #endif #ifdef __APPLE__ @@ -3382,17 +3420,12 @@ void MainFrame::init_menubar_as_editor() parent_menu, wxID_ANY, _L(about_title), "", [](wxCommandEvent &) { Slic3r::GUI::about();}, "", nullptr, []() { return true; }, this, 0); - append_menu_item( - parent_menu, wxID_ANY, _L("Preferences") + "\t" + ctrl + ",", "", + append_shortcut_item( + parent_menu, Shortcut::Preferences, true, _L("Preferences"), "", [](wxCommandEvent &) { wxGetApp().open_preferences(); }, "", nullptr, []() { return true; }, this, 1); - parent_menu->AppendSeparator(); - append_menu_item( - parent_menu, wxID_ANY, _L("Open speed dial...") + sep + "Space", "", - [](wxCommandEvent &) { wxGetApp().open_speed_dial(); }, - "", nullptr, []() { return true; }, this); //parent_menu->Insert(1, preference_item); #endif // Help menu @@ -3406,8 +3439,8 @@ void MainFrame::init_menubar_as_editor() m_topbar->AddDropDownSubMenu(viewMenu, _L("View")); //BBS add Preference - append_menu_item( - m_topbar->GetTopMenu(), wxID_ANY, _L("Preferences") + "\t" + ctrl + "P", "", + append_shortcut_item( + m_topbar->GetTopMenu(), Shortcut::Preferences, true, _L("Preferences"), "", [](wxCommandEvent &) { // Orca: Use GUI_App::open_preferences instead of direct call so windows associations are updated on exit wxGetApp().open_preferences(); @@ -3417,8 +3450,8 @@ void MainFrame::init_menubar_as_editor() auto top_menu = m_topbar->GetTopMenu(); top_menu->AppendSeparator(); - append_menu_item( - top_menu, wxID_ANY, _L("Open speed dial...") + "\t" + "Space", "", + append_shortcut_item( + top_menu, Shortcut::SpeedDial, false, _L("Open Speed Dial"), "", [](wxCommandEvent &) { wxGetApp().open_speed_dial(); }, "", nullptr, []() { return true; }, this); top_menu->AppendSeparator(); @@ -3524,8 +3557,8 @@ void MainFrame::init_menubar_as_editor() #else // On Mac, the Apple menu ignores non-standard custom items, so add Preset Bundle to the File menu fileMenu->AppendSeparator(); - append_menu_item( - fileMenu, wxID_ANY, _L("Open speed dial...") + sep + "Space", "", + append_shortcut_item( + fileMenu, Shortcut::SpeedDial, false, _L("Open Speed Dial"), "", [](wxCommandEvent&) { wxGetApp().open_speed_dial(); }, "", nullptr, []() { return true; }, this); append_menu_item( @@ -3728,7 +3761,7 @@ void MainFrame::init_menubar_as_gcodeviewer() wxMenu* viewMenu = nullptr; if (m_plater != nullptr) { viewMenu = new wxMenu(); - add_common_view_menu_items(viewMenu, this, std::bind(&MainFrame::can_change_view, this)); + add_common_view_menu_items(viewMenu, std::bind(&MainFrame::can_change_view, this)); } // helpmenu diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 6851935059..66f3b31263 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -74,6 +74,8 @@ class DesignPanel; class MainFrame; class WebViewPanel; class ParamsDialog; +enum class Shortcut : uint8_t; +struct KeyChord; #ifdef __WXGTK__ class ResizeEdgePanel; #endif @@ -195,6 +197,29 @@ class MainFrame : public DPIFrame // vector of a MenuBar items changeable in respect to printer technology std::vector m_changeable_menu_items; + // Menu items whose label shows a key binding; update_shortcut_labels() rewrites them. + struct ShortcutMenuItem + { + wxMenuItem* item; + Shortcut shortcut; + wxString label; + bool accelerator; // false keeps the binding display-only on macOS, where the menu bar's accelerators are live + }; + std::vector m_shortcut_menu_items; + + wxString shortcut_label(const wxString& label, Shortcut shortcut, bool accelerator); + template + wxMenuItem* append_shortcut_item(wxMenu* menu, Shortcut shortcut, bool accelerator, const wxString& label, Args&&... args) + { + wxMenuItem* item = append_menu_item(menu, wxID_ANY, shortcut_label(label, shortcut, accelerator), std::forward(args)...); + m_shortcut_menu_items.push_back({ item, shortcut, label, accelerator }); + return item; + } + // Runs the Global shortcut bound to chord; false when the focused control should see the key as well. + bool handle_global_shortcut(const KeyChord& chord); + void add_common_view_menu_items(wxMenu* view_menu, std::function can_change_view); + wxMenu* generate_help_menu(); + struct FileHistory : wxFileHistory { FileHistory(int max) : wxFileHistory(max) {} @@ -354,6 +379,7 @@ public: void request_select_tab(const wxString& id); int get_calibration_curr_tab(); void select_view(const std::string& direction); + void update_shortcut_labels(); // Propagate changed configuration from the Tab to the Plater and save changes to the AppConfig void on_config_changed(DynamicPrintConfig* cfg) const ; void set_print_button_to_default(PrintSelectType select_type); diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index dd0350ae0e..a73634bb35 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -261,7 +261,7 @@ void MonitorPanel::msw_rescale() void MonitorPanel::select_machine(std::string machine_sn) { - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: MonitorPanel::select_machine queueing machine_sn=" << machine_sn; + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: MonitorPanel::select_machine queueing machine_sn=" << machine_sn; wxCommandEvent *event = new wxCommandEvent(wxEVT_COMMAND_CHOICE_SELECTED); event->SetString(machine_sn); wxQueueEvent(this, event); @@ -280,7 +280,7 @@ void MonitorPanel::on_select_printer(wxCommandEvent& event) { Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); const std::string requested_dev_id = event.GetString().ToStdString(); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: MonitorPanel::on_select_printer requested_dev_id=" + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: MonitorPanel::on_select_printer requested_dev_id=" << requested_dev_id << " device_manager=" << (dev ? "set" : "null"); if (!dev) return; @@ -289,7 +289,7 @@ void MonitorPanel::on_select_printer(wxCommandEvent& event) } const bool selected = dev->set_selected_machine(requested_dev_id); - BOOST_LOG_TRIVIAL(info) << "Orca diagnostic: MonitorPanel::on_select_printer set_selected_machine result=" + BOOST_LOG_TRIVIAL(trace) << "Orca diagnostic: MonitorPanel::on_select_printer set_selected_machine result=" << selected << " selected_dev_id=" << (dev->get_selected_machine() ? dev->get_selected_machine()->get_dev_id() : ""); if (!selected) diff --git a/src/slic3r/GUI/MultiMachine.cpp b/src/slic3r/GUI/MultiMachine.cpp index eac1c939bf..df6ccc1298 100644 --- a/src/slic3r/GUI/MultiMachine.cpp +++ b/src/slic3r/GUI/MultiMachine.cpp @@ -3,7 +3,6 @@ #include "GUI_App.hpp" #include "MainFrame.hpp" -#include "DeviceCore/DevConfigUtil.h" namespace Slic3r { namespace GUI { @@ -52,7 +51,7 @@ void DeviceItem::sync_state() state_printable = 6; } - if (is_blocking_printing(obj_)) { + if (wxGetApp().is_blocking_printing(obj_)) { state_printable = 5; } @@ -105,18 +104,6 @@ void DeviceItem::unselected() } } -bool DeviceItem::is_blocking_printing(MachineObject* obj_) -{ - DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return true; - std::string source_model = ""; - - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - source_model = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); - - return !DevPrinterConfigUtil::is_printer_model_compatible(source_model, *obj_); -} - void DeviceItem::update_item(const DeviceItem* item) { // Except for the selected status, everything else is updated diff --git a/src/slic3r/GUI/MultiMachine.hpp b/src/slic3r/GUI/MultiMachine.hpp index 51f70b9d96..b38918225c 100644 --- a/src/slic3r/GUI/MultiMachine.hpp +++ b/src/slic3r/GUI/MultiMachine.hpp @@ -59,7 +59,6 @@ public: void selected(); void unselected(); - bool is_blocking_printing(MachineObject* obj_); void update_item(const DeviceItem* item); }; diff --git a/src/slic3r/GUI/NativeCommands.cpp b/src/slic3r/GUI/NativeCommands.cpp index 2e24f14326..1297cd4a24 100644 --- a/src/slic3r/GUI/NativeCommands.cpp +++ b/src/slic3r/GUI/NativeCommands.cpp @@ -10,6 +10,7 @@ #include "GUI_Factories.hpp" #include "GUI_ObjectList.hpp" #include "I18N.hpp" +#include "Shortcuts.hpp" #include "IMSlider.hpp" #include "MainFrame.hpp" #include "NetworkTestDialog.hpp" @@ -563,7 +564,7 @@ std::vector build_command_catalog() // ---- Help ---- (mirrors the top-bar Help menu, plus the wiki/YouTube links) add("help_keyboard_shortcuts", _u8L("Keyboard Shortcuts"), _u8L("Help"), [](const std::string&) { - wxGetApp().keyboard_shortcuts(); + wxGetApp().keyboard_shortcuts(ShortcutContext::Global); return AppActionRunResult{AppActionRunResult::Level::Success}; }); add("help_setup_wizard", _u8L("Setup Wizard"), _u8L("Help"), [](const std::string&) { diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 001954c5e9..e8825b66ba 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -82,10 +82,12 @@ #include "GUI.hpp" #include "GUI_App.hpp" +#include "Shortcuts.hpp" #include "GUI_ObjectList.hpp" #ifdef __WXGTK__ #include "LinuxDisplayBackend.hpp" #endif +#include "AuiPaneLayout.hpp" #include "GUI_Utils.hpp" #include "GUI_Factories.hpp" #include "wxExtensions.hpp" @@ -6830,6 +6832,14 @@ struct Plater::priv // GUI elements AuiMgr m_aui_mgr; + // Live dock panes. `on_close` runs when the user closes one from its close button; `shown` is + // what the owner asked for. + struct DockPane + { + std::function on_close; + bool shown{true}; + }; + std::map m_dock_panes; wxString m_default_window_layout; wxPanel* current_panel{ nullptr }; std::vector panels; @@ -6910,6 +6920,7 @@ struct Plater::priv bool show_render_statistic_dialog{ false }; bool show_wireframe{ false }; bool wireframe_enabled{ true }; + bool show_xray{ false }; static const std::regex pattern_bundle; static const std::regex pattern_3mf; @@ -7001,6 +7012,11 @@ struct Plater::priv void update_sidebar(bool force_update = false); void reset_window_layout(); Sidebar::DockingState get_sidebar_docking_state(); + void add_dock_pane(wxWindow* window, const std::string& name, const wxString& caption, const std::string& dock, + const wxSize& size, std::function on_close); + void remove_dock_pane(wxWindow* window); + void show_dock_pane(wxWindow* window, bool show); + bool dock_pane_visible(const DockPane& dock_pane, const wxAuiPaneInfo& pane) const; bool is_view3D_layers_editing_enabled() const { return (current_panel == view3D) && view3D->get_canvas3d()->is_layers_editing_enabled(); } @@ -7581,6 +7597,18 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) panel_3d->SetSizer(panel_sizer); m_aui_mgr.AddPane(panel_3d, wxAuiPaneInfo().Name("main").CenterPane().PaneBorder(false)); + q->Bind(wxEVT_AUI_PANE_CLOSE, [this](wxAuiManagerEvent& evt) { + const wxAuiPaneInfo* pane = evt.GetPane(); + auto it = pane != nullptr ? m_dock_panes.find(pane->window) : m_dock_panes.end(); + if (it != m_dock_panes.end()) { + const std::function on_close = std::move(it->second.on_close); + m_dock_panes.erase(it); + if (on_close) + on_close(); + } + evt.Skip(); + }); + m_default_window_layout = m_aui_mgr.SavePerspective(); { @@ -7677,7 +7705,9 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) view3D_canvas->Bind(EVT_GLCANVAS_PRINTABLE, [this](SimpleEvent& evt) { this->sidebar->obj_list()->toggle_printable_state(); }); view3D_canvas->Bind(EVT_GLCANVAS_SELECT_ALL, [this](SimpleEvent&) { this->q->select_all(); }); - view3D_canvas->Bind(EVT_GLCANVAS_QUESTION_MARK, [](SimpleEvent&) { wxGetApp().keyboard_shortcuts(); }); + view3D_canvas->Bind(EVT_GLCANVAS_QUESTION_MARK, [this](SimpleEvent&) { + wxGetApp().keyboard_shortcuts(view3D->get_canvas3d()->get_gizmos_manager().is_paint_gizmo() ? ShortcutContext::Painting : ShortcutContext::Plater); + }); view3D_canvas->Bind(EVT_GLCANVAS_INCREASE_INSTANCES, [this](Event& evt) { if (evt.data == 1) this->q->increase_instances(); else if (this->can_decrease_instances()) this->q->decrease_instances(); }); view3D_canvas->Bind(EVT_GLCANVAS_INSTANCE_MOVED, [this](SimpleEvent&) { update(); }); @@ -7754,7 +7784,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) view3D_canvas->Bind(EVT_GLCANVAS_UPDATE_BED_SHAPE, [q](SimpleEvent&) { q->set_bed_shape(); }); // Preview events: - preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_QUESTION_MARK, [](SimpleEvent&) { wxGetApp().keyboard_shortcuts(); }); + preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_QUESTION_MARK, [](SimpleEvent&) { wxGetApp().keyboard_shortcuts(ShortcutContext::Preview); }); preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_UPDATE_BED_SHAPE, [q](SimpleEvent&) { q->set_bed_shape(); }); preview->get_wxglcanvas()->Bind(EVT_GLCANVAS_UPDATE, [this](SimpleEvent &) { preview->get_canvas3d()->set_as_dirty(); @@ -8215,10 +8245,7 @@ void Plater::priv::collapse_sidebar(bool collapse) sidebar_layout.is_collapsed = collapse; // Now update the tooltip in the toolbar. - std::string new_tooltip = collapse - ? _u8L("Expand sidebar") - : _u8L("Collapse sidebar"); - new_tooltip += " [" + _u8L("Shift+") + _u8L("Tab") + "]"; + const std::string new_tooltip = wxGetApp().shortcuts().with_key(collapse ? _u8L("Expand sidebar") : _u8L("Collapse sidebar"), Shortcut::CollapseSidebar); int id = collapse_toolbar.get_item_id("collapse_sidebar"); collapse_toolbar.set_tooltip(id, new_tooltip); @@ -8247,6 +8274,14 @@ void Plater::priv::update_sidebar(bool force_update) { } } + for (const auto& [window, dock_pane] : m_dock_panes) { + wxAuiPaneInfo& pane = m_aui_mgr.GetPane(window); + if (pane.IsOk() && pane.IsShown() != dock_pane_visible(dock_pane, pane)) { + pane.Show(!pane.IsShown()); + needs_update = true; + } + } + if (needs_update) { notification_manager->set_sidebar_collapsed(sidebar.IsShown()); m_aui_mgr.Update(); @@ -8256,10 +8291,96 @@ void Plater::priv::update_sidebar(bool force_update) { void Plater::priv::reset_window_layout() { m_aui_mgr.LoadPerspective(m_default_window_layout, false); + // Loading a layout docks and hides every pane it does not list, and the default layout lists no + // dock panes: a floating dock pane is docked again, like the rest of the window. + for (const auto& [window, dock_pane] : m_dock_panes) + if (wxAuiPaneInfo& pane = m_aui_mgr.GetPane(window); pane.IsOk()) + pane.Show(dock_pane_visible(dock_pane, pane)); sidebar_layout.is_collapsed = false; update_sidebar(true); } +bool Plater::priv::dock_pane_visible(const DockPane& dock_pane, const wxAuiPaneInfo& pane) const +{ + // A floating pane is a top-level window, so it does not hide with the Plater on other tabs. + return dock_pane.shown && (!pane.IsFloating() || sidebar_layout.show); +} + +void Plater::priv::add_dock_pane(wxWindow* window, const std::string& name, const wxString& caption, const std::string& dock, + const wxSize& size, std::function on_close) +{ + const wxString base_name = wxString::FromUTF8(name); + wxString unique_name = base_name; + for (int i = 2; m_aui_mgr.GetPane(unique_name).IsOk(); ++i) + unique_name = base_name + wxString::Format("#%d", i); + + // A restored layout below already holds pixels. + const wxSize pixels = q->FromDIP(size); + wxAuiPaneInfo info; + info.Name(unique_name).Caption(caption).BestSize(pixels).FloatingSize(pixels).DestroyOnClose(true); + if (dock == "left") + info.Left(); + else if (dock == "bottom") + info.Bottom(); + else + info.Right(); + if (dock == "float") + info.Float(); + + // Put the pane back where it was the last time the window layout was saved with it open. + const std::string saved = aui_pane_layout_entry(wxGetApp().app_config->get("window_layout"), unique_name.utf8_string()); + if (!saved.empty()) { + m_aui_mgr.LoadPaneInfo(wxString::FromUTF8(saved), info); + info.Caption(caption).DestroyOnClose(true).Show(); + } + + // Floating is disabled on Wayland. + if ((m_aui_mgr.GetFlags() & wxAUI_MGR_ALLOW_FLOATING) == 0) { + info.Dock().Floatable(false); + if (info.dock_direction == wxAUI_DOCK_NONE) + info.Right(); + } + + const DockPane& dock_pane = m_dock_panes[window] = DockPane{std::move(on_close)}; + info.Show(dock_pane_visible(dock_pane, info)); + m_aui_mgr.AddPane(window, info); + + // wxAUI does not record a dragged sash in best_size, so track the docked size like the sidebar + // does, for the saved layout. + window->Bind(wxEVT_IDLE, [this, window](wxIdleEvent& evt) { + wxAuiPaneInfo& pane = m_aui_mgr.GetPane(window); + if (pane.IsOk() && pane.IsShown() && pane.IsDocked() && pane.rect.GetWidth() > 0 && pane.rect.GetHeight() > 0) { + const bool horizontal = pane.dock_direction == wxAUI_DOCK_TOP || pane.dock_direction == wxAUI_DOCK_BOTTOM; + pane.BestSize(horizontal ? pane.best_size.GetWidth() : pane.rect.GetWidth(), + horizontal ? pane.rect.GetHeight() : pane.best_size.GetHeight()); + } + evt.Skip(); + }); + + m_aui_mgr.Update(); +} + +void Plater::priv::remove_dock_pane(wxWindow* window) +{ + m_dock_panes.erase(window); + if (m_aui_mgr.DetachPane(window)) + m_aui_mgr.Update(); + window->Destroy(); +} + +void Plater::priv::show_dock_pane(wxWindow* window, bool show) +{ + const auto it = m_dock_panes.find(window); + wxAuiPaneInfo& pane = m_aui_mgr.GetPane(window); + if (it == m_dock_panes.end() || !pane.IsOk()) + return; + it->second.shown = show; + if (pane.IsShown() == dock_pane_visible(it->second, pane)) + return; + pane.Show(!pane.IsShown()); + m_aui_mgr.Update(); +} + Sidebar::DockingState Plater::priv::get_sidebar_docking_state() { if (!sidebar_layout.is_enabled) { return Sidebar::None; @@ -17854,6 +17975,19 @@ Sidebar::DockingState Plater::get_sidebar_docking_state() const { return p->get_ void Plater::reset_window_layout() { p->reset_window_layout(); } +void Plater::add_dock_pane(wxWindow* window, const std::string& name, const wxString& caption, const std::string& dock, + const wxSize& size, std::function on_close) +{ + p->add_dock_pane(window, name, caption, dock, size, std::move(on_close)); +} +void Plater::remove_dock_pane(wxWindow* window) { p->remove_dock_pane(window); } +void Plater::remove_dock_panes() +{ + while (!p->m_dock_panes.empty()) + p->remove_dock_pane(p->m_dock_panes.begin()->first); +} +void Plater::show_dock_pane(wxWindow* window, bool show) { p->show_dock_pane(window, show); } + //BBS void Plater::select_curr_plate_all() { p->select_curr_plate_all(); } void Plater::remove_curr_plate_all() { p->remove_curr_plate_all(); } @@ -22493,6 +22627,16 @@ bool Plater::is_wireframe_enabled() const return p->wireframe_enabled; } +void Plater::toggle_show_xray() +{ + p->show_xray = !p->show_xray; +} + +bool Plater::is_show_xray() const +{ + return p->show_xray; +} + /*Plater::TakeSnapshot::TakeSnapshot(Plater *plater, const std::string &snapshot_name) : TakeSnapshot(plater, from_u8(snapshot_name)) {} diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index c37ef47b89..9fa8e15a22 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -478,6 +478,17 @@ public: void reset_window_layout(); + // Dock panes sit alongside the sidebar; `window` must be a child of the Plater. `dock` is + // "left", "right", "bottom" or "float", and `size` is in DIPs. A pane closed from its own close + // button is destroyed after on_close runs; remove_dock_pane() destroys it without calling on_close. + void add_dock_pane(wxWindow* window, const std::string& name, const wxString& caption, const std::string& dock, + const wxSize& size, std::function on_close); + void remove_dock_pane(wxWindow* window); + void show_dock_pane(wxWindow* window, bool show); + // Removes every dock pane without calling on_close, for MainFrame::shutdown() (app exit and a + // language switch), while the Plater and any floating frames still exist. + void remove_dock_panes(); + // Called after the Preferences dialog is closed and the program settings are saved. // Update the UI based on the current preferences. void update_ui_from_settings(); @@ -959,6 +970,9 @@ public: void enable_wireframe(bool status); bool is_wireframe_enabled() const; + void toggle_show_xray(); + bool is_show_xray() const; + // Wrapper around wxWindow::PopupMenu to suppress error messages popping out while tracking the popup menu. bool PopupMenu(wxMenu *menu, const wxPoint& pos = wxDefaultPosition); bool PopupMenu(wxMenu *menu, int x, int y) { return this->PopupMenu(menu, wxPoint(x, y)); } diff --git a/src/slic3r/GUI/PrePrintChecker.hpp b/src/slic3r/GUI/PrePrintChecker.hpp index bab608348d..5dea00a88f 100644 --- a/src/slic3r/GUI/PrePrintChecker.hpp +++ b/src/slic3r/GUI/PrePrintChecker.hpp @@ -171,7 +171,7 @@ public: void add_with_checkbox(PrintDialogStatus state, wxString msg, wxString checkbox_label, bool checked, std::function checkbox_callback); static ::std::string get_print_status_info(PrintDialogStatus status); - wxString get_pre_state_msg(PrintDialogStatus status); + static wxString get_pre_state_msg(PrintDialogStatus status); static bool is_error(PrintDialogStatus status) { return (PrintStatusErrorBegin < status) && (PrintStatusErrorEnd > status); }; static bool is_error_printer(PrintDialogStatus status) { return (PrintStatusPrinterErrorBegin < status) && (PrintStatusPrinterErrorEnd > status); }; static bool is_error_filament(PrintDialogStatus status) { return (PrintStatusFilamentErrorBegin < status) && (PrintStatusFilamentErrorEnd > status); }; diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index adda0edd74..be4bfcfa63 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -18,6 +18,7 @@ #include "NetworkTestDialog.hpp" #include "Widgets/StaticLine.hpp" #include "Widgets/RadioGroup.hpp" +#include "Shortcuts.hpp" #include "slic3r/Utils/bambu_networking.hpp" #include "slic3r/Utils/NetworkAgent.hpp" #include "NetworkPluginDialog.hpp" @@ -285,6 +286,7 @@ std::tuple PreferencesDialog::create_item_combobox_base( auto combobox = new ::ComboBox(m_parent, wxID_ANY, wxEmptyString, wxDefaultPosition, DESIGN_LARGE_COMBOBOX_SIZE, 0, nullptr, wxCB_READONLY); combobox->GetDropDown().SetUseContentWidth(true); combobox->SetToolTip(tip); + combobox->SetName(param); // select_tab() finds the row by this name std::vector::iterator iter; for (iter = vlist.begin(); iter != vlist.end(); iter++) { @@ -1522,6 +1524,19 @@ PreferencesDialog::~PreferencesDialog() { } +void PreferencesDialog::select_tab(PreferencesTab tab, const std::string& option) +{ + if (const auto index = m_tab_index.find(tab); index != m_tab_index.end()) + m_pref_tabs->SelectItem(index->second); + wxWindow* control = option.empty() ? nullptr : m_parent->FindWindow(wxString(option)); + if (control == nullptr) + return; + int unit = 1; + m_parent->GetScrollPixelsPerUnit(nullptr, &unit); + m_parent->Scroll(wxDefaultCoord, (m_parent->CalcUnscrolledPosition(control->GetPosition()).y - FromDIP(10)) / unit); + control->SetFocus(); // the focused tint marks the row +} + void PreferencesDialog::on_dpi_changed(const wxRect &suggested_rect) { m_pref_tabs->Rescale(); @@ -1599,7 +1614,7 @@ void PreferencesDialog::create_items() ////////////////////////// //// GENERAL TAB ///////////////////////////////////// - m_pref_tabs->AppendItem(_L("General")); + m_tab_index[PreferencesTab::General] = m_pref_tabs->AppendItem(_L("General")); f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); g_sizer = f_sizers.back(); g_sizer->AddGrowableCol(0, 1); @@ -1730,8 +1745,8 @@ void PreferencesDialog::create_items() auto item_multi_machine = create_item_checkbox(_L("Multi device management"), _L("With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."), "enable_multi_machine", _L("(Requires restart)")); g_sizer->Add(item_multi_machine); - auto item_speed_dial = create_item_checkbox(_L("Open the Speed Dial with the Space key"), - _L("When enabled, pressing Space (with no other key held) opens the Speed Dial action search from any page."), + auto item_speed_dial = create_item_checkbox(_L("Open the Speed Dial from the keyboard"), + _L("When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page."), "enable_speed_dial"); g_sizer->Add(item_speed_dial); @@ -1789,7 +1804,7 @@ void PreferencesDialog::create_items() ////////////////////////// //// CONTROL TAB ///////////////////////////////////// - m_pref_tabs->AppendItem(_L("Control")); + m_tab_index[PreferencesTab::Control] = m_pref_tabs->AppendItem(_L("Control")); f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); g_sizer = f_sizers.back(); g_sizer->AddGrowableCol(0, 1); @@ -1859,6 +1874,14 @@ void PreferencesDialog::create_items() auto item_right_mouse_drag = create_item_combobox(_L("Right Mouse Drag"), _L("Set the action that dragging the right mouse button should perform."), "right_mouse_drag_action", ButtonDragActions); g_sizer->Add(item_right_mouse_drag); + //// CONTROL > Keyboard + g_sizer->Add(create_item_title(_L("Keyboard")), 1, wxEXPAND); + + auto item_shortcuts = create_item_button(_L("Keyboard shortcuts"), _L("Edit") + dots, "", _L("Choose the key for each action."), [this]() { + wxGetApp().keyboard_shortcuts(ShortcutContext::Global, this); + }); + g_sizer->Add(item_shortcuts); + //// CONTROL > Clear my choice on ... g_sizer->Add(create_item_title(_L("Clear my choice on...")), 1, wxEXPAND); @@ -1883,7 +1906,7 @@ void PreferencesDialog::create_items() ////////////////////////// //// GRAPHICS TAB ///////////////////////////////////// - m_pref_tabs->AppendItem(_L("Graphics")); + m_tab_index[PreferencesTab::Graphics] = m_pref_tabs->AppendItem(_L("Graphics")); f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); g_sizer = f_sizers.back(); g_sizer->AddGrowableCol(0, 1); @@ -2031,7 +2054,7 @@ void PreferencesDialog::create_items() ////////////////////////// //// ONLINE TAB ///////////////////////////////////// - m_pref_tabs->AppendItem(_L("Online")); + m_tab_index[PreferencesTab::Online] = m_pref_tabs->AppendItem(_L("Online")); f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); g_sizer = f_sizers.back(); g_sizer->AddGrowableCol(0, 1); diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp index 5ab7fb1919..e3b6ffdc7d 100644 --- a/src/slic3r/GUI/Preferences.hpp +++ b/src/slic3r/GUI/Preferences.hpp @@ -29,6 +29,9 @@ namespace Slic3r { namespace GUI { #define DESIGN_INPUT_SIZE wxSize(FromDIP(120), -1) #define DESIGN_LEFT_MARGIN 25 +// The tabs other dialogs open Preferences on. +enum class PreferencesTab { General, Control, Graphics, Online }; + class PreferencesDialog : public DPIDialog { private: @@ -38,6 +41,7 @@ protected: wxBoxSizer * m_sizer_body; wxScrolledWindow* m_parent; TabCtrl* m_pref_tabs; + std::map m_tab_index; // position of each tab in m_pref_tabs // bool m_settings_layout_changed {false}; bool m_seq_top_layer_only_changed{false}; @@ -60,6 +64,8 @@ public: ~PreferencesDialog(); + void select_tab(PreferencesTab tab, const std::string& option = {}); // and scrolls a combobox option's row into view, focused + wxString m_backup_interval_time; wxTimer m_filament_height_timer; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 8109b1c50f..acd47a977f 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -2520,23 +2520,13 @@ void SelectMachineDialog::on_cancel(wxCloseEvent &event) bool SelectMachineDialog::is_blocking_printing(MachineObject* obj_) { - DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return true; - auto target_model = obj_->printer_type; - std::string source_model = ""; + if (m_print_type == PrintFromType::FROM_NORMAL) + return wxGetApp().is_blocking_printing(obj_); - if (m_print_type == PrintFromType::FROM_NORMAL) { - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - source_model = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); - - - }else if (m_print_type == PrintFromType::FROM_SDCARD_VIEW) { - if (m_required_data_plate_data_list.size() > 0) { - source_model = m_required_data_plate_data_list[m_print_plate_idx]->printer_model_id; - } - } - - return !DevPrinterConfigUtil::is_printer_model_compatible(source_model, *obj_); + std::string source_model; + if (m_print_type == PrintFromType::FROM_SDCARD_VIEW && !m_required_data_plate_data_list.empty()) + source_model = m_required_data_plate_data_list[m_print_plate_idx]->printer_model_id; + return wxGetApp().is_blocking_printing(obj_, source_model); } static std::unordered_set _get_used_nozzle_idxes() diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index cafbb360e6..7e65c2c530 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -738,7 +738,7 @@ void SendMultiMachinePage::on_send(wxCommandEvent& event) if (obj && obj->is_online() && !obj->can_abort() && !obj->is_in_upgrading() && it->second->get_state_selected() == 1 && it->second->state_printable <= 2) { - if (!it->second->is_blocking_printing(obj)) { + if (!wxGetApp().is_blocking_printing(obj)) { PrintParams params = request_params(obj); print_params.push_back(params); } diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index d7e4878dbb..fab86056f6 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -1277,7 +1277,7 @@ void SendToPrinterDialog::update_show_status() reset_timeout(); // reading done - if (is_blocking_printing(obj_)) { + if (wxGetApp().is_blocking_printing(obj_)) { show_status(PrintDialogStatus::PrintStatusUnsupportedPrinter); return; } @@ -1342,16 +1342,6 @@ void SendToPrinterDialog::update_show_status() } } -bool SendToPrinterDialog::is_blocking_printing(MachineObject* obj_) -{ - DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return true; - - PresetBundle* preset_bundle = wxGetApp().preset_bundle; - auto source_model = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); - return !DevPrinterConfigUtil::is_printer_model_compatible(source_model, *obj_); -} - void SendToPrinterDialog::Enable_Refresh_Button(bool en) { if (!en) { diff --git a/src/slic3r/GUI/SendToPrinter.hpp b/src/slic3r/GUI/SendToPrinter.hpp index 24e483ae33..ddfb017552 100644 --- a/src/slic3r/GUI/SendToPrinter.hpp +++ b/src/slic3r/GUI/SendToPrinter.hpp @@ -181,7 +181,6 @@ public: void reset_timeout(); void update_user_printer(); void update_show_status(); - bool is_blocking_printing(MachineObject* obj_); void prepare(int print_plate_idx); void check_focus(wxWindow* window); void check_fcous_state(wxWindow* window); diff --git a/src/slic3r/GUI/Shortcuts.cpp b/src/slic3r/GUI/Shortcuts.cpp new file mode 100644 index 0000000000..0bcf0ccef9 --- /dev/null +++ b/src/slic3r/GUI/Shortcuts.cpp @@ -0,0 +1,377 @@ +#include "Shortcuts.hpp" + +#include "I18N.hpp" +#include "libslic3r/AppConfig.hpp" + +#include +#include +#include + +namespace Slic3r { namespace GUI { + +namespace { + +constexpr uint8_t GLOBAL = context_bit(ShortcutContext::Global); +constexpr uint8_t PLATER = context_bit(ShortcutContext::Plater); +constexpr uint8_t PREVIEW = context_bit(ShortcutContext::Preview); +constexpr uint8_t OBJECT_LIST = context_bit(ShortcutContext::ObjectList); +constexpr uint8_t PAINTING = context_bit(ShortcutContext::Painting); +constexpr uint8_t CANVAS = PLATER | PREVIEW; + +constexpr int CTRL = wxMOD_CONTROL; +constexpr int SHIFT = wxMOD_SHIFT; +constexpr int CTRL_SHIFT = wxMOD_CONTROL | wxMOD_SHIFT; + +#ifdef __APPLE__ +constexpr KeyChord PREFERENCES_CHORD{ ',', CTRL }; +constexpr KeyChord DELETE_CHORD{ WXK_BACK }; +constexpr KeyChord MOUSE3D_CHORD{ 'M', CTRL_SHIFT }; +#else +constexpr KeyChord PREFERENCES_CHORD{ 'P', CTRL }; +constexpr KeyChord DELETE_CHORD{ WXK_DELETE }; +constexpr KeyChord MOUSE3D_CHORD{ 'M', CTRL }; +#endif + +// Each row: enum value, AppConfig key, description shown in the dialog, contexts the key is +// looked up in, and the default chord. Rows are in the order the dialog lists them, within +// the sections of the Shortcut enum. +// SHORTCUT runs once per key press. +// REPEATING runs again on every auto-repeat of a held key. +// STEPPING repeats, and Shift or Ctrl held with its key select a step variant of it instead +// of another shortcut (ShortcutInfo::modifier_variants). +#define SHORTCUT(id, key, name, contexts, ...) ShortcutInfo{ Shortcut::id, key, name, contexts, __VA_ARGS__, false, false } +#define REPEATING(id, key, name, contexts, ...) ShortcutInfo{ Shortcut::id, key, name, contexts, __VA_ARGS__, true, false } +#define STEPPING(id, key, name, contexts, ...) ShortcutInfo{ Shortcut::id, key, name, contexts, __VA_ARGS__, true, true } + +constexpr std::array shortcut_table = {{ + // Project + SHORTCUT(NewProject, "new_project", L("New Project"), GLOBAL, { 'N', CTRL }), + SHORTCUT(OpenProject, "open_project", L("Open Project"), GLOBAL, { 'O', CTRL }), + SHORTCUT(SaveProject, "save_project", L("Save Project"), GLOBAL, { 'S', CTRL }), + SHORTCUT(SaveProjectAs, "save_project_as", L("Save Project as"), GLOBAL, { 'S', CTRL_SHIFT }), + SHORTCUT(ImportModel, "import_model", L("Import geometry data from STL/STEP/3MF/OBJ/AMF files"), GLOBAL, { 'I', CTRL }), + SHORTCUT(Publish3mf, "publish_3mf", L("Publish 3MF"), GLOBAL, { 'E', CTRL_SHIFT }), + + // Slicing and printing + SHORTCUT(SlicePlate, "slice_plate", L("Slice plate"), GLOBAL, { 'R', CTRL }), + SHORTCUT(ExportSlicedFile, "export_sliced_file", L("Export plate sliced file"), GLOBAL, { 'G', CTRL }), + SHORTCUT(PrintPlate, "print_plate", L("Print plate"), GLOBAL, { 'G', CTRL_SHIFT }), + SHORTCUT(PrintHostQueue, "print_host_queue", L("Print host upload queue"), GLOBAL, { 'J', CTRL }), + + // Selection + SHORTCUT(SelectAll, "select_all", L("Select all objects"), PLATER | OBJECT_LIST, { 'A', CTRL }), + SHORTCUT(SelectAllPlates, "select_all_plates", L("Select all objects on all plates"), PLATER, { 'A', CTRL_SHIFT }), + + // Editing + REPEATING(Undo, "undo", L("Undo"), PLATER | OBJECT_LIST, { 'Z', CTRL }), + REPEATING(Redo, "redo", L("Redo"), PLATER | OBJECT_LIST, { 'Y', CTRL }), + SHORTCUT(Cut, "cut", L("Cut"), PLATER | OBJECT_LIST, { 'X', CTRL }), + SHORTCUT(Copy, "copy", L("Copy to clipboard"), PLATER | OBJECT_LIST, { 'C', CTRL }), + SHORTCUT(Paste, "paste", L("Paste from clipboard"), PLATER | OBJECT_LIST, { 'V', CTRL }), + SHORTCUT(DeleteSelected, "delete_selected", L("Delete Selected"), PLATER | OBJECT_LIST, DELETE_CHORD), + SHORTCUT(DeleteAll, "delete_all", L("Delete All"), PLATER, { 'D', CTRL }), + SHORTCUT(CloneSelected, "clone_selected", L("Clone Selected"), PLATER | OBJECT_LIST, { 'K', CTRL }), + + // Objects + REPEATING(AddInstance, "add_instance", L("Add instance"), PLATER | OBJECT_LIST, { '+' }), + REPEATING(RemoveInstance, "remove_instance", L("Remove instance"), PLATER | OBJECT_LIST, { '-' }), + SHORTCUT(TogglePrintable, "toggle_printable", L("Toggle printable for object/part"), PLATER | OBJECT_LIST, { 'V' }), + SHORTCUT(ToggleAutoDrop, "toggle_auto_drop", L("Auto Drop"), OBJECT_LIST, { 'D' }), + + // Placement + SHORTCUT(Arrange, "arrange", L("Arrange all objects"), PLATER, { 'A' }), + SHORTCUT(ArrangePlate, "arrange_plate", L("Arrange objects on selected plates"), PLATER, { 'A', SHIFT }), + SHORTCUT(Orient, "orient", L("Auto orient all/selected objects"), PLATER, { 'Q' }), + SHORTCUT(OrientPlate, "orient_plate", L("Auto orient all objects on current plate"), PLATER, { 'Q', SHIFT }), + STEPPING(MoveSelectionLeft, "move_selection_left", L("Move selection 10mm in negative X direction"), PLATER, { WXK_LEFT }), + STEPPING(MoveSelectionRight, "move_selection_right", L("Move selection 10mm in positive X direction"), PLATER, { WXK_RIGHT }), + STEPPING(MoveSelectionUp, "move_selection_up", L("Move selection 10mm in positive Y direction"), PLATER, { WXK_UP }), + STEPPING(MoveSelectionDown, "move_selection_down", L("Move selection 10mm in negative Y direction"), PLATER, { WXK_DOWN }), + REPEATING(RotateSelectionLeft, "rotate_selection_left", L("Rotate selection 45 degrees counterclockwise"), PLATER, { WXK_PAGEUP }), + REPEATING(RotateSelectionRight, "rotate_selection_right", L("Rotate selection 45 degrees clockwise"), PLATER, { WXK_PAGEDOWN }), + + // Gizmos + SHORTCUT(GizmoMove, "gizmo_move", L("Gizmo move"), PLATER, { 'M' }), + SHORTCUT(GizmoRotate, "gizmo_rotate", L("Gizmo rotate"), PLATER, { 'R' }), + SHORTCUT(GizmoScale, "gizmo_scale", L("Gizmo scale"), PLATER, { 'S' }), + SHORTCUT(GizmoFlatten, "gizmo_flatten", L("Gizmo place face on bed"), PLATER, { 'F' }), + SHORTCUT(GizmoCut, "gizmo_cut", L("Gizmo cut"), PLATER, { 'C' }), + SHORTCUT(GizmoMeshBoolean, "gizmo_mesh_boolean", L("Gizmo mesh boolean"), PLATER, { 'B' }), + SHORTCUT(GizmoFdmSupports, "gizmo_fdm_supports", L("Gizmo FDM paint-on supports"), PLATER, { 'L' }), + SHORTCUT(GizmoSeam, "gizmo_seam", L("Gizmo FDM paint-on seam"), PLATER, { 'P' }), + SHORTCUT(GizmoFuzzySkin, "gizmo_fuzzy_skin", L("Gizmo FDM paint-on fuzzy skin"), PLATER, { 'H' }), + SHORTCUT(GizmoMmuSegmentation, "gizmo_mmu_segmentation", L("Gizmo multi-material painting"), PLATER, { 'N' }), + SHORTCUT(GizmoEmboss, "gizmo_emboss", L("Gizmo text emboss/engrave"), PLATER, { 'T' }), + SHORTCUT(GizmoMeasure, "gizmo_measure", L("Gizmo measure"), PLATER, { 'U' }), + SHORTCUT(GizmoAssembly, "gizmo_assembly", L("Gizmo assemble"), PLATER, { 'Y' }), + SHORTCUT(GizmoBrimEars, "gizmo_brim_ears", L("Gizmo brim ears"), PLATER, { 'E' }), + + // Sliders + SHORTCUT(GoToLayer, "go_to_layer", L("Jump to layer"), PREVIEW, { 'G', SHIFT }), + STEPPING(LayerSliderUp, "layer_slider_up", L("Vertical slider - Move active thumb Up"), PREVIEW, { WXK_UP }), + STEPPING(LayerSliderDown, "layer_slider_down", L("Vertical slider - Move active thumb Down"), PREVIEW, { WXK_DOWN }), + STEPPING(MovesSliderLeft, "moves_slider_left", L("Horizontal slider - Move active thumb Left"), PREVIEW, { WXK_LEFT }), + STEPPING(MovesSliderRight, "moves_slider_right", L("Horizontal slider - Move active thumb Right"), PREVIEW, { WXK_RIGHT }), + REPEATING(MovesSliderStart, "moves_slider_start", L("Horizontal slider - Move to start position"), PREVIEW, { WXK_HOME }), + REPEATING(MovesSliderEnd, "moves_slider_end", L("Horizontal slider - Move to last position"), PREVIEW, { WXK_END }), + + // Painting tools + SHORTCUT(PaintToolCircle, "paint_tool_circle", L("Circle"), PAINTING, { 'C' }), + SHORTCUT(PaintToolSphere, "paint_tool_sphere", L("Sphere"), PAINTING, { 'S' }), + SHORTCUT(PaintToolFill, "paint_tool_fill", L("Fill"), PAINTING, { 'F' }), + SHORTCUT(PaintToolGapFill, "paint_tool_gap_fill", L("Gap Fill"), PAINTING, { 'G' }), + SHORTCUT(PaintToolTriangle, "paint_tool_triangle", L("Triangle"), PAINTING, { 'T' }), + SHORTCUT(PaintToolHeightRange, "paint_tool_height_range", L("Height Range"), PAINTING, { 'H' }), + + // Camera + SHORTCUT(ViewDefault, "view_default", L("Camera view - Default"), GLOBAL, { '0', CTRL }), + SHORTCUT(ViewTop, "view_top", L("Camera view - Top"), GLOBAL, { '1', CTRL }), + SHORTCUT(ViewBottom, "view_bottom", L("Camera view - Bottom"), GLOBAL, { '2', CTRL }), + SHORTCUT(ViewFront, "view_front", L("Camera view - Front"), GLOBAL, { '3', CTRL }), + SHORTCUT(ViewRear, "view_rear", L("Camera view - Behind"), GLOBAL, { '4', CTRL }), + SHORTCUT(ViewLeft, "view_left", L("Camera Angle - Left side"), GLOBAL, { '5', CTRL }), + SHORTCUT(ViewRight, "view_right", L("Camera Angle - Right side"), GLOBAL, { '6', CTRL }), + SHORTCUT(ViewPlate, "view_plate", L("Camera view - Current plate"), GLOBAL, { '7', CTRL }), + REPEATING(ZoomIn, "zoom_in", L("Zoom in"), CANVAS, { 'I' }), + REPEATING(ZoomOut, "zoom_out", L("Zoom out"), CANVAS, { 'O' }), + SHORTCUT(Mouse3DSettings, "mouse3d_settings", L("Show/Hide 3Dconnexion devices settings dialog"), CANVAS, MOUSE3D_CHORD), + + // Display + SHORTCUT(ShowLabels, "show_labels", L("Show object labels in 3D scene."), GLOBAL, { 'E', CTRL }), + SHORTCUT(ShowWireframe, "show_wireframe", L("Show/Hide wireframe"), CANVAS, { WXK_RETURN, CTRL_SHIFT }), + SHORTCUT(ToggleGcodeWindow, "toggle_gcode_window", L("On/Off G-code window"), PREVIEW, { 'C' }), + SHORTCUT(ToggleOneLayerMode, "toggle_one_layer_mode", L("On/Off one layer mode of the vertical slider"), PREVIEW, { 'L' }), + + // Application + SHORTCUT(Preferences, "preferences", L("Preferences"), GLOBAL, PREFERENCES_CHORD), + SHORTCUT(Search, "search", L("Search"), GLOBAL, { 'F', CTRL }), + SHORTCUT(SwitchView, "switch_view", L("Switch between Prepare/Preview"), CANVAS, { WXK_TAB }), + SHORTCUT(CollapseSidebar, "collapse_sidebar", L("Collapse/Expand the sidebar"), CANVAS, { WXK_TAB, SHIFT }), + SHORTCUT(SpeedDial, "speed_dial", L("Open the speed dial"), GLOBAL, { WXK_SPACE }), + SHORTCUT(ReloadDevicePage, "reload_device_page", L("Reload the device page"), CANVAS, { WXK_F5 }), + SHORTCUT(KeyboardShortcuts, "keyboard_shortcuts", L("Show keyboard shortcuts list"), CANVAS, { '?' }), +}}; + +#undef SHORTCUT +#undef REPEATING +#undef STEPPING + +// The first shortcut of each section's run in shortcut_table and the section's heading, indexed +// by ShortcutSection. +struct SectionInfo +{ + Shortcut first; + const char* name; +}; + +constexpr std::array section_table = {{ + { Shortcut::NewProject, L("Project") }, + { Shortcut::SlicePlate, L("Slicing and printing") }, + { Shortcut::SelectAll, L("Selection") }, + { Shortcut::Undo, L("Editing") }, + { Shortcut::AddInstance, L("Objects") }, + { Shortcut::Arrange, L("Placement") }, + { Shortcut::GizmoMove, L("Gizmos") }, + { Shortcut::GoToLayer, L("Sliders") }, + { Shortcut::PaintToolCircle, L("Painting tools") }, + { Shortcut::ViewDefault, L("Camera") }, + { Shortcut::ShowLabels, L("Display") }, + { Shortcut::Preferences, L("Application") }, +}}; + +constexpr bool sections_follow_table_order() +{ + if (section_table.front().first != Shortcut(0)) + return false; + for (size_t i = 1; i < section_table.size(); ++i) + if (section_table[i].first <= section_table[i - 1].first) + return false; + return true; +} +static_assert(sections_follow_table_order(), "section_table must begin at the first shortcut and ascend"); + +constexpr bool table_is_in_enum_order() +{ + for (size_t i = 0; i < shortcut_table.size(); ++i) + if (shortcut_table[i].id != Shortcut(i)) + return false; + return true; +} +static_assert(table_is_in_enum_order(), "shortcut_table must list every Shortcut in declaration order"); + +const char* CONFIG_SECTION = "shortcuts"; +const char* UNBOUND = "none"; + +bool share_context(uint8_t a, uint8_t b) { return (a & b) != 0 || (a & GLOBAL) != 0 || (b & GLOBAL) != 0; } + +// The modifiers a modifier_variants shortcut accepts on top of its binding. +constexpr int STEP_MODIFIERS = wxMOD_SHIFT | wxMOD_CONTROL; + +// The step modifiers chord adds to binding, 0 when chord is not a step of it; a binding with +// Shift or Ctrl of its own has no steps, so no two bindings share one. +int step_modifiers(const KeyChord& chord, const KeyChord& binding) +{ + if (!binding.valid() || (binding.modifiers & STEP_MODIFIERS) != 0 || chord.key != binding.key || + (chord.modifiers & ~STEP_MODIFIERS) != binding.modifiers) + return 0; + return chord.modifiers & STEP_MODIFIERS; +} + +} // namespace + +const ShortcutInfo& shortcut_info(Shortcut shortcut) { return shortcut_table[size_t(shortcut)]; } + +ShortcutSection shortcut_section(Shortcut shortcut) +{ + size_t section = 0; + for (size_t i = 1; i < section_table.size(); ++i) + if (section_table[i].first <= shortcut) + section = i; + return ShortcutSection(section); +} + +const char* section_name(ShortcutSection section) { return section_table[size_t(section)].name; } + +std::vector shortcuts_in(ShortcutContext context) +{ + std::vector out; + for (const ShortcutInfo& info : shortcut_table) + if (info.contexts & context_bit(context)) + out.push_back(info.id); + return out; +} + +ShortcutRegistry::ShortcutRegistry() { rebuild_index(); } + +KeyChord ShortcutRegistry::binding(Shortcut shortcut) const +{ + const std::optional& override = m_overrides[size_t(shortcut)]; + return override.has_value() ? *override : shortcut_info(shortcut).default_chord; +} + +bool ShortcutRegistry::is_customized(Shortcut shortcut) const { return m_overrides[size_t(shortcut)].has_value(); } + +std::string ShortcutRegistry::display(Shortcut shortcut) const { return binding(shortcut).display(); } + +std::string ShortcutRegistry::with_key(const std::string& text, Shortcut shortcut) const +{ + const std::string key = display(shortcut); + return key.empty() ? text : text + " [" + key + "]"; +} + +std::string ShortcutRegistry::accelerator(Shortcut shortcut) const +{ + const KeyChord chord = binding(shortcut); + return chord.is_menu_accelerator() ? chord.to_string() : std::string(); +} + +std::optional ShortcutRegistry::lookup(ShortcutContext context, const KeyChord& chord) const +{ + if (!chord.valid()) + return std::nullopt; + auto it = m_index.find(chord); + if (it == m_index.end()) + return std::nullopt; + for (Shortcut shortcut : it->second) + if (shortcut_info(shortcut).contexts & context_bit(context)) + return shortcut; + return std::nullopt; +} + +std::optional ShortcutRegistry::match(ShortcutContext context, const KeyChord& chord) const +{ + if (const std::optional exact = lookup(context, chord); exact.has_value()) + return Match{ *exact, 0 }; + if ((chord.modifiers & STEP_MODIFIERS) == 0) + return std::nullopt; + for (const ShortcutInfo& info : shortcut_table) + if (info.modifier_variants && (info.contexts & context_bit(context))) + if (const int step = step_modifiers(chord, binding(info.id)); step != 0) + return Match{ info.id, step }; + return std::nullopt; +} + +std::vector ShortcutRegistry::conflicts(Shortcut shortcut, const KeyChord& chord) const +{ + std::vector out; + if (!chord.valid()) + return out; + const uint8_t contexts = shortcut_info(shortcut).contexts; + for (const ShortcutInfo& other : shortcut_table) + if (other.id != shortcut && share_context(contexts, other.contexts) && binding(other.id) == chord) + out.push_back(other.id); + return out; +} + +std::optional ShortcutRegistry::step_owner(Shortcut shortcut, const KeyChord& chord) const +{ + const uint8_t contexts = shortcut_info(shortcut).contexts; + for (const ShortcutInfo& other : shortcut_table) + if (other.modifier_variants && other.id != shortcut && share_context(contexts, other.contexts)) + if (const int step = step_modifiers(chord, binding(other.id)); step == wxMOD_SHIFT || step == wxMOD_CONTROL) // the combined step stays assignable + return other.id; + return std::nullopt; +} + +void ShortcutRegistry::bind(Shortcut shortcut, const KeyChord& chord) +{ + const ShortcutInfo& info = shortcut_info(shortcut); + if (chord == info.default_chord) + m_overrides[size_t(shortcut)].reset(); + else + m_overrides[size_t(shortcut)] = chord; + rebuild_index(); +} + +void ShortcutRegistry::reset(Shortcut shortcut) +{ + m_overrides[size_t(shortcut)].reset(); + rebuild_index(); +} + +void ShortcutRegistry::reset_all() +{ + m_overrides.fill(std::nullopt); + rebuild_index(); +} + +void ShortcutRegistry::load(const AppConfig& config) +{ + m_overrides.fill(std::nullopt); + if (config.has_section(CONFIG_SECTION)) { + const std::map& section = config.get_section(CONFIG_SECTION); + for (const ShortcutInfo& info : shortcut_table) { + auto it = section.find(info.key); + if (it == section.end()) + continue; + if (it->second == UNBOUND) + m_overrides[size_t(info.id)] = KeyChord{}; + else if (std::optional chord = KeyChord::parse(it->second); chord.has_value()) + // A Global chord is seen before any text field, so it needs a modifier or a non-typing key. + if ((info.contexts & GLOBAL) == 0 || chord->is_menu_accelerator()) + m_overrides[size_t(info.id)] = *chord; + } + } + rebuild_index(); +} + +void ShortcutRegistry::save(AppConfig& config) const +{ + for (const ShortcutInfo& info : shortcut_table) { + const std::optional& override = m_overrides[size_t(info.id)]; + if (override.has_value()) + config.set(CONFIG_SECTION, info.key, override->valid() ? override->to_string() : UNBOUND); + else + config.erase(CONFIG_SECTION, info.key); + } +} + +void ShortcutRegistry::rebuild_index() +{ + m_index.clear(); + for (const ShortcutInfo& info : shortcut_table) + if (const KeyChord chord = binding(info.id); chord.valid()) + m_index[chord].push_back(info.id); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Shortcuts.hpp b/src/slic3r/GUI/Shortcuts.hpp new file mode 100644 index 0000000000..ba002556ca --- /dev/null +++ b/src/slic3r/GUI/Shortcuts.hpp @@ -0,0 +1,127 @@ +#pragma once + +#include "KeyChord.hpp" + +#include +#include +#include +#include +#include +#include + +namespace Slic3r { + +class AppConfig; + +namespace GUI { + +// Where a key press is looked up. A shortcut may belong to several contexts; Global ones are +// dispatched by the main frame before any child window sees the key. +enum class ShortcutContext : uint8_t { Global, Plater, Preview, ObjectList, Painting, Count }; + +constexpr uint8_t context_bit(ShortcutContext context) { return uint8_t(1u << unsigned(context)); } + +enum class Shortcut : uint8_t { + // Project + NewProject, OpenProject, SaveProject, SaveProjectAs, ImportModel, Publish3mf, + // Slicing and printing + SlicePlate, ExportSlicedFile, PrintPlate, PrintHostQueue, + // Selection + SelectAll, SelectAllPlates, + // Editing + Undo, Redo, Cut, Copy, Paste, DeleteSelected, DeleteAll, CloneSelected, + // Objects + AddInstance, RemoveInstance, TogglePrintable, ToggleAutoDrop, + // Placement + Arrange, ArrangePlate, Orient, OrientPlate, + MoveSelectionLeft, MoveSelectionRight, MoveSelectionUp, MoveSelectionDown, RotateSelectionLeft, RotateSelectionRight, + // Gizmos + GizmoMove, GizmoRotate, GizmoScale, GizmoFlatten, GizmoCut, GizmoMeshBoolean, GizmoFdmSupports, GizmoSeam, GizmoFuzzySkin, + GizmoMmuSegmentation, GizmoEmboss, GizmoMeasure, GizmoAssembly, GizmoBrimEars, + // Sliders + GoToLayer, LayerSliderUp, LayerSliderDown, MovesSliderLeft, MovesSliderRight, MovesSliderStart, MovesSliderEnd, + // Painting tools + PaintToolCircle, PaintToolSphere, PaintToolFill, PaintToolGapFill, PaintToolTriangle, PaintToolHeightRange, + // Camera + ViewDefault, ViewTop, ViewBottom, ViewFront, ViewRear, ViewLeft, ViewRight, ViewPlate, ZoomIn, ZoomOut, Mouse3DSettings, + // Display + ShowLabels, ShowWireframe, ToggleGcodeWindow, ToggleOneLayerMode, + // Application + Preferences, Search, SwitchView, CollapseSidebar, SpeedDial, ReloadDevicePage, KeyboardShortcuts, + Count +}; + +struct ShortcutInfo +{ + Shortcut id; + const char* key; // AppConfig key + const char* name; // untranslated description + uint8_t contexts; // context_bit() mask + KeyChord default_chord; + bool repeatable; // runs on key auto-repeat as well + // Shift or Ctrl held with the bound key select a variant of this action, such as the finer + // move step or the faster slider step. + bool modifier_variants; +}; + +// Headings of the shortcuts dialog, in listing order. +enum class ShortcutSection : uint8_t { + Project, SlicingAndPrinting, Selection, Editing, Objects, Placement, Gizmos, Sliders, PaintingTools, Camera, Display, Application, + Count +}; + +const ShortcutInfo& shortcut_info(Shortcut shortcut); +ShortcutSection shortcut_section(Shortcut shortcut); +const char* section_name(ShortcutSection section); // untranslated heading +std::vector shortcuts_in(ShortcutContext context); // in table order + +// Effective key bindings: the built-in defaults overlaid with the user's own. Owns the +// chord -> shortcut index every dispatcher queries. +class ShortcutRegistry +{ +public: + ShortcutRegistry(); + + KeyChord binding(Shortcut shortcut) const; // invalid when unbound + bool is_customized(Shortcut shortcut) const; + + std::string display(Shortcut shortcut) const; // "Ctrl+N" for tooltips and the shortcuts dialog + std::string with_key(const std::string& text, Shortcut shortcut) const; // "text [Ctrl+N]", or text alone when unbound + std::string accelerator(Shortcut shortcut) const; // wx accelerator text for menu labels; empty when unbound or not menu-safe + + // Matches a key event in one context. Global shortcuts are only found through the Global context. + std::optional lookup(ShortcutContext context, const KeyChord& chord) const; + + // lookup(), then the modifier_variants shortcuts, which also match with Shift or Ctrl added + // to their binding; step_modifiers holds whichever of the two were added. + struct Match + { + Shortcut shortcut; + int step_modifiers; + }; + std::optional match(ShortcutContext context, const KeyChord& chord) const; + + // Shortcuts other than shortcut bound to chord in a context it shares; Global shortcuts + // share every context. + std::vector conflicts(Shortcut shortcut, const KeyChord& chord) const; + + // The modifier_variants shortcut in a shared context whose Shift or Ctrl step is chord; + // such a chord is reserved for that step. + std::optional step_owner(Shortcut shortcut, const KeyChord& chord) const; + + void bind(Shortcut shortcut, const KeyChord& chord); // an invalid chord unbinds + void reset(Shortcut shortcut); + void reset_all(); + + void load(const AppConfig& config); + void save(AppConfig& config) const; + +private: + void rebuild_index(); + + std::array, size_t(Shortcut::Count)> m_overrides; + std::unordered_map, KeyChordHash> m_index; +}; + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 11a7176af0..1c42735b0b 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -1742,6 +1742,8 @@ void SyncAmsInfoDialog::show_status(PrintDialogStatus status, std::vectorprinters.get_edited_preset().get_printer_type(preset_bundle); - - } else if (m_print_type == PrintFromType::FROM_SDCARD_VIEW) { - if (m_required_data_plate_data_list.size() > 0) { source_model = m_required_data_plate_data_list[m_print_plate_idx]->printer_model_id; } - } - - return !DevPrinterConfigUtil::is_printer_model_compatible(source_model, *obj_); + std::string source_model; + if (m_print_type == PrintFromType::FROM_SDCARD_VIEW && !m_required_data_plate_data_list.empty()) + source_model = m_required_data_plate_data_list[m_print_plate_idx]->printer_model_id; + return wxGetApp().is_blocking_printing(obj_, source_model); } bool SyncAmsInfoDialog::is_same_nozzle_type(std::string &filament_type, NozzleType &tag_nozzle_type) @@ -2263,6 +2259,18 @@ void SyncAmsInfoDialog::update_show_status() reset_timeout(); + bool has_optional_printer_model = DevPrinterConfigUtil::is_optional_printer_model_id(obj_->printer_type); + if (m_print_type == PrintFromType::FROM_NORMAL) { + if (PresetBundle *preset_bundle = wxGetApp().preset_bundle) { + has_optional_printer_model = has_optional_printer_model || + DevPrinterConfigUtil::is_optional_printer_model_id( + preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle)); + } + } else if (m_print_type == PrintFromType::FROM_SDCARD_VIEW && !m_required_data_plate_data_list.empty()) { + has_optional_printer_model = has_optional_printer_model || + DevPrinterConfigUtil::is_optional_printer_model_id(m_required_data_plate_data_list[m_print_plate_idx]->printer_model_id); + } + if (!obj_->GetConfig()->SupportPrintAllPlates() && m_print_plate_idx == PLATE_ALL_IDX) { show_status(PrintDialogStatus::PrintStatusNotSupportedPrintAll); return; @@ -2356,6 +2364,9 @@ void SyncAmsInfoDialog::update_show_status() } } } + + if (has_optional_printer_model) + show_status(PrintDialogStatus::PrintStatusOptionalPrinterModel); } bool SyncAmsInfoDialog::has_timelapse_warning() diff --git a/src/slic3r/GUI/PluginWebDialog.cpp b/src/slic3r/GUI/WebDialog.cpp similarity index 52% rename from src/slic3r/GUI/PluginWebDialog.cpp rename to src/slic3r/GUI/WebDialog.cpp index d89aac7270..8bcb517d87 100644 --- a/src/slic3r/GUI/PluginWebDialog.cpp +++ b/src/slic3r/GUI/WebDialog.cpp @@ -1,11 +1,7 @@ -#include "PluginWebDialog.hpp" +#include "WebDialog.hpp" -#include "slic3r/GUI/GUI.hpp" #include "slic3r/GUI/GUI_App.hpp" - -#include - -#include +#include "slic3r/GUI/Widgets/WebHosting.hpp" #include @@ -13,59 +9,15 @@ namespace Slic3r { namespace GUI { -namespace { - -// Injected into the top-level page at document start (before the plugin's own -// scripts). Defines window.orca as the only host surface the page may use. It -// references window.wx lazily (at call time) so it never races the backend's -// deferred registration of the "wx" message handler. Guarded against -// double-injection so it is harmless if also prepended. -constexpr char ORCA_BRIDGE_JS[] = R"JS( -(function () { - if (window.top !== window.self) return; - if (window.orca) return; - var handlers = []; - function send(kind, data) { - try { - window.wx.postMessage(JSON.stringify({ - channel: 'orca', kind: kind, data: (data === undefined ? null : data) - })); - } catch (e) { /* bridge not ready yet */ } - } - window.orca = { - postMessage: function (d) { send('message', d); }, - submit: function (d) { send('submit', d); }, - close: function () { send('close'); }, - onMessage: function (cb) { if (typeof cb === 'function') handlers.push(cb); } - }; - window.__orcaDispatch = function (payload) { - var data = payload ? payload.data : null; - for (var i = 0; i < handlers.length; i++) { - try { handlers[i](data); } catch (e) {} - } - }; -})(); -)JS"; - -// file:// base URL for plugin HTML loaded via SetPage, so self-referencing -// relative URLs resolve against the bundled web resources directory. -wxString web_base_url() -{ - const std::string dir = (boost::filesystem::path(resources_dir()) / "web").make_preferred().string(); - return wxString("file://") + from_u8(dir) + "/"; -} - -} // namespace - -PluginWebDialog::PluginWebDialog(wxWindow* parent, - const wxString& title, - const std::string& html, - const wxSize& size, - MessageHandler on_message, - SubmitHandler on_submit, - CloseHandler on_close, - CloseHandler on_destroyed, - long wx_style) +WebDialog::WebDialog(wxWindow* parent, + const wxString& title, + const std::string& html, + const wxSize& size, + MessageHandler on_message, + SubmitHandler on_submit, + CloseHandler on_close, + CloseHandler on_destroyed, + long wx_style) : WebViewHostDialog(parent, wxID_ANY, title, wxDefaultPosition, size, wx_style) , m_html(html) , m_on_message(std::move(on_message)) @@ -75,7 +27,7 @@ PluginWebDialog::PluginWebDialog(wxWindow* parent, { // A tiny bundled bootstrap page brings the webview up; the real plugin HTML // is swapped in via SetPage once the bootstrap finishes loading. - create_webview("web/dialog/PluginWebDialog/blank.html", title, size, wxSize(320, 240)); + create_webview(web_hosting::BOOTSTRAP_PAGE, title, size, wxSize(320, 240)); // Paint the window/webview in the themed background so there is no white // flash before the (transparent) bootstrap page and plugin HTML render. @@ -87,21 +39,22 @@ PluginWebDialog::PluginWebDialog(wxWindow* parent, // create_webview() via add_user_scripts(); nothing to add here. // Swap in the plugin HTML once the bootstrap page settles. Bind ERROR too so a // missing/blocked bootstrap resource (e.g. a packaged build) still triggers it. - Bind(wxEVT_WEBVIEW_LOADED, &PluginWebDialog::on_bootstrap_event, this, wv->GetId()); - Bind(wxEVT_WEBVIEW_ERROR, &PluginWebDialog::on_bootstrap_event, this, wv->GetId()); + Bind(wxEVT_WEBVIEW_LOADED, &WebDialog::on_bootstrap_event, this, wv->GetId()); + Bind(wxEVT_WEBVIEW_ERROR, &WebDialog::on_bootstrap_event, this, wv->GetId()); + Bind(wxEVT_WEBVIEW_NAVIGATED, &WebDialog::on_navigated, this, wv->GetId()); } - Bind(wxEVT_CLOSE_WINDOW, &PluginWebDialog::on_close_window, this); + Bind(wxEVT_CLOSE_WINDOW, &WebDialog::on_close_window, this); } -void PluginWebDialog::add_user_scripts() +void WebDialog::add_user_scripts() { if (wxWebView* wv = browser()) { - wv->AddUserScript(wxString::FromUTF8(WebViewHostDialog::plugin_defaults_user_script())); - wv->AddUserScript(ORCA_BRIDGE_JS); + wv->AddUserScript(wxString::FromUTF8(WebViewHostDialog::element_defaults_user_script())); + wv->AddUserScript(wxString::FromUTF8(web_hosting::orca_bridge_script())); } } -PluginWebDialog::~PluginWebDialog() +WebDialog::~WebDialog() { // Runs on every destruction path. Deliberately NOT a wxEVT_DESTROY handler: // that event is sent from the base ~wxDialog(), after this subclass's members @@ -111,19 +64,19 @@ PluginWebDialog::~PluginWebDialog() m_on_destroyed(); } -void PluginWebDialog::post_message(PluginWebDialog* dialog, const nlohmann::json& data) +void WebDialog::post_message(WebDialog* dialog, const nlohmann::json& data) { if (dialog != nullptr && dialog->is_open()) dialog->push_message(data); } -void PluginWebDialog::request_close(PluginWebDialog* dialog) +void WebDialog::request_close(WebDialog* dialog) { if (dialog != nullptr) dialog->Close(); } -void PluginWebDialog::destroy_for_plugin(PluginWebDialog* dialog) +void WebDialog::destroy_silently(WebDialog* dialog) { if (dialog == nullptr) return; @@ -137,24 +90,42 @@ void PluginWebDialog::destroy_for_plugin(PluginWebDialog* dialog) dialog->Destroy(); } -void PluginWebDialog::on_bootstrap_event(wxWebViewEvent& event) +void WebDialog::on_bootstrap_event(wxWebViewEvent& event) { - // The first bootstrap load (or its error) triggers the swap to plugin HTML; - // the resulting plugin-page load is ignored (guarded by m_content_loaded). - load_plugin_content(); + const bool loaded = event.GetEventType() == wxEVT_WEBVIEW_LOADED; + // The first bootstrap load (or its error) triggers the swap to plugin HTML. + if (!m_content_loaded) + load_page_html(); + // WebKit reloads the SetPage base URL, so a committed load of it that we did not start is a reload. + // A failed navigation is reported against the page that stayed but never commits. Edge ignores the + // base URL and restores SetPage content itself, so nothing matches there. + else if (web_hosting::is_content_url(event.GetURL())) { + if (m_own_page_load) + m_own_page_load = false; + else if (loaded && m_content_navigated) + load_page_html(); + } + if (loaded) + m_content_navigated = false; event.Skip(); } -void PluginWebDialog::load_plugin_content() +void WebDialog::on_navigated(wxWebViewEvent& event) { - if (m_content_loaded) - return; - m_content_loaded = true; - if (wxWebView* wv = browser()) - wv->SetPage(wxString::FromUTF8(m_html), web_base_url()); + m_content_navigated = web_hosting::is_content_url(event.GetURL()); + event.Skip(); } -void PluginWebDialog::on_script_message(const nlohmann::json& payload) +void WebDialog::load_page_html() +{ + m_content_loaded = true; + if (wxWebView* wv = browser()) { + m_own_page_load = true; + wv->SetPage(wxString::FromUTF8(m_html), web_hosting::content_base_url()); + } +} + +void WebDialog::on_script_message(const nlohmann::json& payload) { if (payload.value("channel", std::string()) == "orca") { const std::string kind = payload.value("kind", std::string()); @@ -174,7 +145,7 @@ void PluginWebDialog::on_script_message(const nlohmann::json& payload) handle_common_script_command(payload); } -void PluginWebDialog::push_message(const nlohmann::json& data) +void WebDialog::push_message(const nlohmann::json& data) { if (!m_open) return; @@ -183,7 +154,7 @@ void PluginWebDialog::push_message(const nlohmann::json& data) call_web_handler(envelope, wxT("__orcaDispatch")); } -void PluginWebDialog::finish(bool submitted, const nlohmann::json& data) +void WebDialog::finish(bool submitted, const nlohmann::json& data) { if (!m_open) return; @@ -202,7 +173,7 @@ void PluginWebDialog::finish(bool submitted, const nlohmann::json& data) Close(); } -void PluginWebDialog::on_close_window(wxCloseEvent&) +void WebDialog::on_close_window(wxCloseEvent&) { if (!m_open) { // finish() already dispatched submit/close and requested the close. @@ -222,7 +193,7 @@ void PluginWebDialog::on_close_window(wxCloseEvent&) Destroy(); } -void PluginWebDialog::fire_submit(const nlohmann::json& data) +void WebDialog::fire_submit(const nlohmann::json& data) { if (m_on_submit) { SubmitHandler cb = std::move(m_on_submit); @@ -230,7 +201,7 @@ void PluginWebDialog::fire_submit(const nlohmann::json& data) } } -void PluginWebDialog::fire_close() +void WebDialog::fire_close() { if (m_close_fired) return; diff --git a/src/slic3r/GUI/PluginWebDialog.hpp b/src/slic3r/GUI/WebDialog.hpp similarity index 70% rename from src/slic3r/GUI/PluginWebDialog.hpp rename to src/slic3r/GUI/WebDialog.hpp index 05f77f5148..aec5de18ef 100644 --- a/src/slic3r/GUI/PluginWebDialog.hpp +++ b/src/slic3r/GUI/WebDialog.hpp @@ -1,5 +1,5 @@ -#ifndef slic3r_GUI_PluginWebDialog_hpp_ -#define slic3r_GUI_PluginWebDialog_hpp_ +#ifndef slic3r_GUI_WebDialog_hpp_ +#define slic3r_GUI_WebDialog_hpp_ #include "Widgets/WebViewHostDialog.hpp" @@ -21,7 +21,7 @@ namespace Slic3r { namespace GUI { // GIL held; the plugin layer wraps any Python callables in a GIL-safe holder. // // Usable both modally (ShowModal -> read result()) and modelessly (Show()). -class PluginWebDialog : public Slic3r::GUI::WebViewHostDialog +class WebDialog : public Slic3r::GUI::WebViewHostDialog { public: using MessageHandler = std::function; @@ -32,20 +32,20 @@ public: // user/JS-initiated close (while the window is alive). on_destroyed runs from // the destructor on every path and must touch host-side state only (no Python // / no derived members). - PluginWebDialog(wxWindow* parent, - const wxString& title, - const std::string& html, - const wxSize& size, - MessageHandler on_message, - SubmitHandler on_submit, - CloseHandler on_close, - CloseHandler on_destroyed, - long wx_style = wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER); - ~PluginWebDialog() override; + WebDialog(wxWindow* parent, + const wxString& title, + const std::string& html, + const wxSize& size, + MessageHandler on_message, + SubmitHandler on_submit, + CloseHandler on_close, + CloseHandler on_destroyed, + long wx_style = wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxMAXIMIZE_BOX | wxRESIZE_BORDER); + ~WebDialog() override; - static void post_message(PluginWebDialog* dialog, const nlohmann::json& data); - static void request_close(PluginWebDialog* dialog); - static void destroy_for_plugin(PluginWebDialog* dialog); + static void post_message(WebDialog* dialog, const nlohmann::json& data); + static void request_close(WebDialog* dialog); + static void destroy_silently(WebDialog* dialog); // Push a payload to the page; delivered to handlers registered via // window.orca.onMessage(). MAIN-THREAD ONLY (the plugin layer marshals). @@ -64,7 +64,8 @@ protected: private: void on_bootstrap_event(wxWebViewEvent& event); - void load_plugin_content(); + void on_navigated(wxWebViewEvent& event); + void load_page_html(); void on_close_window(wxCloseEvent& event); void fire_submit(const nlohmann::json& data); void fire_close(); @@ -72,6 +73,8 @@ private: std::string m_html; bool m_content_loaded{false}; + bool m_own_page_load{false}; // a SetPage of the plugin HTML is in flight + bool m_content_navigated{false}; // a navigation to the base URL has committed bool m_open{true}; bool m_close_fired{false}; std::optional m_result; @@ -83,4 +86,4 @@ private: }} // namespace Slic3r::GUI -#endif // slic3r_GUI_PluginWebDialog_hpp_ +#endif // slic3r_GUI_WebDialog_hpp_ diff --git a/src/slic3r/GUI/WebMediaController.cpp b/src/slic3r/GUI/WebMediaController.cpp index 1e1fecce0a..fe4b94d3ac 100644 --- a/src/slic3r/GUI/WebMediaController.cpp +++ b/src/slic3r/GUI/WebMediaController.cpp @@ -4,13 +4,23 @@ namespace Slic3r { namespace GUI { -WebMediaController::WebMediaController(wxWebView* webview) : m_webview(webview) +namespace { + +void initialize_webview(wxWebView* webview) { - if (!m_webview) + if (!webview) return; - m_webview->SetBackgroundColour(*wxBLACK); - m_webview->SetPage("", ""); + webview->SetBackgroundColour(*wxBLACK); + webview->SetPage("", ""); +} + +} // namespace + +WebMediaController::WebMediaController(wxWebView* webview) + : m_webview(webview) +{ + initialize_webview(m_webview); } void WebMediaController::Load(wxURI url) @@ -71,6 +81,8 @@ void WebMediaController::Stop() if (m_webview) { m_webview->RunScript("if(typeof stopCameraRefresh==='function') stopCameraRefresh();"); m_webview->Stop(); + m_webview->SetPage("", "about:blank"); + m_webview->ClearHistory(); } m_url.clear(); } diff --git a/src/slic3r/GUI/WebMediaController.hpp b/src/slic3r/GUI/WebMediaController.hpp index 566bf65e96..e7756d8977 100644 --- a/src/slic3r/GUI/WebMediaController.hpp +++ b/src/slic3r/GUI/WebMediaController.hpp @@ -23,7 +23,7 @@ public: void Stop() override; private: - wxWebView* m_webview; + wxWebView* m_webview = nullptr; std::string m_url; CameraStreamMode m_stream_mode = CameraStreamMode::http; }; diff --git a/src/slic3r/GUI/WebPanel.cpp b/src/slic3r/GUI/WebPanel.cpp new file mode 100644 index 0000000000..a8cef9d941 --- /dev/null +++ b/src/slic3r/GUI/WebPanel.cpp @@ -0,0 +1,111 @@ +#include "WebPanel.hpp" + +#include "GUI_App.hpp" +#include "Widgets/WebHosting.hpp" +#include "Widgets/WebView.hpp" +#include "Widgets/WebViewHostDialog.hpp" + +#include + +#include + +namespace Slic3r { namespace GUI { + +WebPanel::WebPanel(wxWindow* parent, const char* bridge_script) + : wxPanel(parent, wxID_ANY) +{ + SetBackgroundColour(wxGetApp().get_window_default_clr()); + auto* sizer = new wxBoxSizer(wxVERTICAL); + SetSizer(sizer); + + // Never null: WebView::CreateWebView substitutes a placeholder view when no backend is available. + m_browser = WebView::CreateWebView(this, web_hosting::bootstrap_url()); + m_browser->SetBackgroundColour(GetBackgroundColour()); + m_browser->AddUserScript(wxString::FromUTF8(WebViewHostDialog::theme_user_script())); + m_browser->AddUserScript(wxString::FromUTF8(WebViewHostDialog::element_defaults_user_script())); + m_browser->AddUserScript(wxString::FromUTF8(bridge_script)); + m_browser->Bind(wxEVT_WEBVIEW_LOADED, &WebPanel::on_load_event, this); + m_browser->Bind(wxEVT_WEBVIEW_ERROR, &WebPanel::on_load_event, this); + m_browser->Bind(wxEVT_WEBVIEW_NAVIGATED, &WebPanel::on_navigated, this); + m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &WebPanel::on_script_message, this); + m_browser->Bind(EVT_WEBVIEW_RECREATED, &WebPanel::on_webview_recreated, this); + sizer->Add(m_browser, 1, wxEXPAND); +} + +void WebPanel::on_load_event(wxWebViewEvent& event) +{ + const bool loaded = event.GetEventType() == wxEVT_WEBVIEW_LOADED; + if (!m_content_loaded) { + // The first bootstrap load (or its error) triggers the swap to the plugin HTML. + m_content_loaded = true; + load_page_html(); + } else if (!web_hosting::is_content_url(event.GetURL())) { + // Not our document (a linked page, a substituted error page), or any document on Edge, which ignores + // the base URL and restores SetPage content on a reload itself; either way it takes the app theme. + if (loaded) + apply_theme(); + } else if (m_own_page_load) { + m_own_page_load = false; + // The document-start theme script is fixed at creation, so re-apply the app theme. + if (loaded) + apply_theme(); + } else if (loaded && m_content_navigated) { + // WebKit reloads the SetPage base URL, so a committed load of it that we did not start is a + // reload. A failed navigation is reported against the page that stayed but never commits. + load_page_html(); + } + if (loaded) + m_content_navigated = false; + event.Skip(); +} + +void WebPanel::on_navigated(wxWebViewEvent& event) +{ + m_content_navigated = web_hosting::is_content_url(event.GetURL()); + event.Skip(); +} + +void WebPanel::load_page_html() +{ + if (const std::optional html = page_html()) { + m_own_page_load = true; + m_browser->SetPage(wxString::FromUTF8(*html), web_hosting::content_base_url()); + } +} + +void WebPanel::on_script_message(wxWebViewEvent& event) +{ + const nlohmann::json payload = nlohmann::json::parse(event.GetString().utf8_string(), nullptr, false); + if (!payload.is_object() || payload.value("channel", std::string()) != "orca") + return; + + const std::string kind = payload.value("kind", std::string()); + if (!on_page_message(kind, payload.contains("data") ? payload["data"] : nlohmann::json())) + BOOST_LOG_TRIVIAL(warning) << "WebPanel ignored a window.orca '" << kind << "' call; this host does not support it"; +} + +void WebPanel::on_webview_recreated(wxCommandEvent&) +{ + SetBackgroundColour(wxGetApp().get_window_default_clr()); + m_browser->SetBackgroundColour(GetBackgroundColour()); + Refresh(); + // Handled without Skip(), so WebView::RecreateAll() does not reload the plugin page. + apply_theme(); +} + +void WebPanel::apply_theme() +{ + WebView::RunScript(m_browser, wxString::FromUTF8(WebViewHostDialog::theme_apply_script())); +} + +void WebPanel::post_to_page(const std::string& json) +{ + WebView::RunScript(m_browser, wxString::Format( + "(function dispatch(payload, attempts) {\n" + " if (typeof window.__orcaDispatch === 'function') { window.__orcaDispatch(payload); return; }\n" + " if (attempts < 100) window.setTimeout(function() { dispatch(payload, attempts + 1); }, 25);\n" + "})({data: %s}, 0);", + wxString::FromUTF8(json))); +} + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/WebPanel.hpp b/src/slic3r/GUI/WebPanel.hpp new file mode 100644 index 0000000000..d4c493dbc1 --- /dev/null +++ b/src/slic3r/GUI/WebPanel.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include + +#include +#include + +#include +#include + +namespace Slic3r { namespace GUI { + +// Host-supplied HTML in a web view panel, for any window that embeds or derives from it (today plugin +// Pages tabs and docked panels): bootstrap page and swap, theme and bridge scripts, live re-theming, and +// window.orca messages routed to on_page_message(). +class WebPanel : public wxPanel +{ +public: + WebPanel(wxWindow* parent, const char* bridge_script); + +protected: + wxWebView* browser() const { return m_browser; } + + // Delivers an already serialised JSON value to the page's window.orca.onMessage handlers, + // waiting briefly for the bridge while the page is still loading. Main thread only. + void post_to_page(const std::string& json); + + // The plugin HTML to show once the bootstrap page has loaded, and again when WebKit reloads it; + // std::nullopt leaves it blank. + virtual std::optional page_html() = 0; + // A window.orca message from the page; false for a kind this host does not handle (logged). + virtual bool on_page_message(const std::string& kind, const nlohmann::json& data) = 0; + +private: + void on_load_event(wxWebViewEvent& event); + void on_navigated(wxWebViewEvent& event); + void on_script_message(wxWebViewEvent& event); + void on_webview_recreated(wxCommandEvent& event); + void apply_theme(); + void load_page_html(); + + wxWebView* m_browser{nullptr}; + bool m_content_loaded{false}; + bool m_own_page_load{false}; // a SetPage of the plugin HTML is in flight + bool m_content_navigated{false}; // a navigation to the base URL has committed +}; + +}} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Widgets/WebHosting.cpp b/src/slic3r/GUI/Widgets/WebHosting.cpp new file mode 100644 index 0000000000..a1b0df496a --- /dev/null +++ b/src/slic3r/GUI/Widgets/WebHosting.cpp @@ -0,0 +1,69 @@ +#include "WebHosting.hpp" + +#include "slic3r/GUI/GUI.hpp" + +#include + +#include + +#include + +namespace Slic3r { namespace GUI { namespace web_hosting { + +namespace { + +// Injected into the top-level page at document start (before the plugin's own +// scripts). Defines window.orca as the only host surface the page may use. It +// references window.wx lazily (at call time) so it never races the backend's +// deferred registration of the "wx" message handler. Guarded against +// double-injection so it is harmless if also prepended. +constexpr char ORCA_BRIDGE_JS[] = R"JS( +(function () { + if (window.top !== window.self) return; + if (window.orca) return; + var handlers = []; + function send(kind, data) { + try { + window.wx.postMessage(JSON.stringify({ + channel: 'orca', kind: kind, data: (data === undefined ? null : data) + })); + } catch (e) { /* bridge not ready yet */ } + } + window.orca = { + postMessage: function (d) { send('message', d); }, + submit: function (d) { send('submit', d); }, + close: function () { send('close'); }, + onMessage: function (cb) { if (typeof cb === 'function') handlers.push(cb); } + }; + window.__orcaDispatch = function (payload) { + var data = payload ? payload.data : null; + for (var i = 0; i < handlers.length; i++) { + try { handlers[i](data); } catch (e) {} + } + }; +})(); +)JS"; + +} // namespace + +wxString bootstrap_url() +{ + return wxString("file://") + from_u8((boost::filesystem::path(resources_dir()) / BOOTSTRAP_PAGE).make_preferred().string()); +} + +wxString content_base_url() +{ + const std::string dir = (boost::filesystem::path(resources_dir()) / "web").make_preferred().string(); + return wxString("file://") + from_u8(dir) + "/"; +} + +bool is_content_url(const wxString& url) +{ + // The web view reports the URL it parsed, which escapes anything the resources path holds + // (a space, a non-ASCII character), while content_base_url() is the raw path. + return wxURI::Unescape(url.BeforeFirst('#')) == content_base_url(); +} + +const char* orca_bridge_script() { return ORCA_BRIDGE_JS; } + +}}} // namespace Slic3r::GUI::web_hosting diff --git a/src/slic3r/GUI/Widgets/WebHosting.hpp b/src/slic3r/GUI/Widgets/WebHosting.hpp new file mode 100644 index 0000000000..5bf0ebc166 --- /dev/null +++ b/src/slic3r/GUI/Widgets/WebHosting.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include + +namespace Slic3r { namespace GUI { namespace web_hosting { + +// Shared by the hosts that show plugin HTML: WebDialog and WebPanel. + +// The bundled blank page a plugin web view loads before the plugin HTML is swapped in. +constexpr const char* BOOTSTRAP_PAGE = "web/dialog/WebDialog/blank.html"; + +// The file:// URL of BOOTSTRAP_PAGE. +wxString bootstrap_url(); + +// The file:// base URL plugin HTML is loaded against, so relative URLs resolve to bundled resources. +wxString content_base_url(); + +// Whether `url` is the plugin HTML's base URL, ignoring any fragment. WebKit reports it for the +// injected page, a reload and a failed navigation alike, so a match alone is not a new document. +bool is_content_url(const wxString& url); + +// The window.orca bridge of plugin windows and docked panels. Pages tabs ship their own. +const char* orca_bridge_script(); + +}}} // namespace Slic3r::GUI::web_hosting diff --git a/src/slic3r/GUI/Widgets/WebViewHostDialog.cpp b/src/slic3r/GUI/Widgets/WebViewHostDialog.cpp index 044fe33cde..e4e3d2878a 100644 --- a/src/slic3r/GUI/Widgets/WebViewHostDialog.cpp +++ b/src/slic3r/GUI/Widgets/WebViewHostDialog.cpp @@ -75,6 +75,8 @@ if(document.documentElement) } // namespace +std::string WebViewHostDialog::theme_apply_script() { return host_theme_apply_js(); } + // Document-start user script: injects the contract