mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-21 16:02:37 +00:00
Compare commits
160
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35db2cd89b | ||
|
|
1e87d56482 | ||
|
|
1c90ba78a5 | ||
|
|
bb1e68aa94 | ||
|
|
02f148123d | ||
|
|
7c55b07736 | ||
|
|
156e096a9b | ||
|
|
050ebbb1f4 | ||
|
|
e840187edc | ||
|
|
5be1f8f209 | ||
|
|
02736fee16 | ||
|
|
ffee402494 | ||
|
|
4fd7fdb3fa | ||
|
|
322dc9b6a6 | ||
|
|
6c0f5eee55 | ||
|
|
6a52ea1818 | ||
|
|
b6e4f52c05 | ||
|
|
ba22a87a0b | ||
|
|
542cd18d19 | ||
|
|
57092d5abd | ||
|
|
f529692ac0 | ||
|
|
728cf63c3d | ||
|
|
7580d8ef8c | ||
|
|
d5dbd96dd6 | ||
|
|
0225cadff0 | ||
|
|
c5aedd1cea | ||
|
|
78eef79ffe | ||
|
|
56d2c527cb | ||
|
|
fd23b74b99 | ||
|
|
50dfcff031 | ||
|
|
d322b1a156 | ||
|
|
ee6613a4b8 | ||
|
|
e9d421050e | ||
|
|
5e6895ddd2 | ||
|
|
6dbdb1d07e | ||
|
|
117ed0060d | ||
|
|
c5d2944ee0 | ||
|
|
5005ecc88b | ||
|
|
7be7f07551 | ||
|
|
54fe28ab08 | ||
|
|
b422636740 | ||
|
|
c806a09c7c | ||
|
|
1a8f39c5f7 | ||
|
|
9421e7fa9b | ||
|
|
af9fd10d7a | ||
|
|
74aed7a2bb | ||
|
|
8bff9aaf32 | ||
|
|
83723e2a7b | ||
|
|
e2fd46f82c | ||
|
|
b216813bf0 | ||
|
|
b3296fa199 | ||
|
|
6d9a9eeb04 | ||
|
|
8e243faa3a | ||
|
|
b5412221b6 | ||
|
|
f444176df8 | ||
|
|
a684c6daf6 | ||
|
|
7f10c73dce | ||
|
|
945520b827 | ||
|
|
b281c91b99 | ||
|
|
b57d7a67e2 | ||
|
|
18ca06ec6b | ||
|
|
32a4e0fb37 | ||
|
|
f9ed5843c0 | ||
|
|
7c73739e1a | ||
|
|
aa4e28b2b5 | ||
|
|
408db4b3b0 | ||
|
|
169189498e | ||
|
|
72784cfe91 | ||
|
|
ef4815b26c | ||
|
|
b97ca3c0ac | ||
|
|
f73566dd2b | ||
|
|
7fbfb7ba87 | ||
|
|
23bd320076 | ||
|
|
a10d9e77cf | ||
|
|
1d023216f2 | ||
|
|
dc2796209f | ||
|
|
194ef34080 | ||
|
|
4e1caa39eb | ||
|
|
38f5c84e7f | ||
|
|
4d8ce0e8a7 | ||
|
|
38cb1ae8d1 | ||
|
|
32f82b64e7 | ||
|
|
e56d7aeb80 | ||
|
|
4758dc6c68 | ||
|
|
596cbb8b2d | ||
|
|
6312caaf13 | ||
|
|
0051768206 | ||
|
|
1d078e005a | ||
|
|
82759d3899 | ||
|
|
59155f26ac | ||
|
|
79dcace1ac | ||
|
|
8dfc7a14b9 | ||
|
|
1534268183 | ||
|
|
501af81ba9 | ||
|
|
16c44940d2 | ||
|
|
40eab797c6 | ||
|
|
ca7fbfb007 | ||
|
|
7b404596e9 | ||
|
|
06ef58bad8 | ||
|
|
74c4a7e450 | ||
|
|
dbb991bf07 | ||
|
|
66d3f3f9c3 | ||
|
|
6b5c8af1c8 | ||
|
|
e72a3a65b2 | ||
|
|
1b71835337 | ||
|
|
f9fa1c117f | ||
|
|
6f3ca7d1b9 | ||
|
|
13ae3a1c90 | ||
|
|
fb36d5e73b | ||
|
|
abb2ab8d3f | ||
|
|
95b781745d | ||
|
|
80e64f80a6 | ||
|
|
477208a969 | ||
|
|
2e08b19d6b | ||
|
|
ea7117b7ca | ||
|
|
603a8f9c8f | ||
|
|
6a2a57bdf4 | ||
|
|
c8aacea176 | ||
|
|
4824a171f1 | ||
|
|
101f43b2d8 | ||
|
|
e01ac1f0a6 | ||
|
|
b51db32bb5 | ||
|
|
603b02f0e7 | ||
|
|
54dc5a2f1d | ||
|
|
303be94262 | ||
|
|
58bad17af9 | ||
|
|
ddce030322 | ||
|
|
2d4b431d5f | ||
|
|
acb0be6ed9 | ||
|
|
14b05a4d8e | ||
|
|
27c468754c | ||
|
|
88632710d5 | ||
|
|
d434e35488 | ||
|
|
7bd53b1283 | ||
|
|
6489b4cad3 | ||
|
|
71c4eebfc9 | ||
|
|
00f558aa18 | ||
|
|
3145f28bb7 | ||
|
|
29d4513694 | ||
|
|
0dc14aa876 | ||
|
|
013a9452af | ||
|
|
e00906a833 | ||
|
|
56c28fc102 | ||
|
|
5ede9711f5 | ||
|
|
6bcb809dd0 | ||
|
|
33dfb66aa5 | ||
|
|
ef7bfeda9c | ||
|
|
47ccca7f72 | ||
|
|
04e13200aa | ||
|
|
0013c1da34 | ||
|
|
5afc6ae9b2 | ||
|
|
adb0ca3dc3 | ||
|
|
08128911e3 | ||
|
|
0a7ac3f2ac | ||
|
|
d865e9e6e1 | ||
|
|
7aaeea2bd2 | ||
|
|
9e635925c8 | ||
|
|
ec22a58c40 | ||
|
|
a636243ec0 | ||
|
|
b9e1db41a0 |
@@ -32,9 +32,17 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
label: OrcaSlicer Version
|
label: OrcaSlicer Version
|
||||||
description: Which version of Orca Slicer are you running? You can see the full version in `Help` -> `About Orca Slicer`.
|
description: Which version of Orca Slicer are you running? You can see the full version in `Help` -> `About Orca Slicer`.
|
||||||
placeholder: e.g. 1.9.0
|
placeholder: e.g. 2.5.0
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: working_version
|
||||||
|
attributes:
|
||||||
|
label: Regression compared to a previous version
|
||||||
|
description: Did it work in a previous version?
|
||||||
|
placeholder: e.g. 2.3.2
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: os_type
|
id: os_type
|
||||||
attributes:
|
attributes:
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
name: Check profiles
|
name: Check profiles
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
|
# release/* is included because pr-merge-bot.yml lets delegates merge into
|
||||||
|
# it, and it gates on this workflow's result. Without it a delegated merge
|
||||||
|
# into a release branch would run no profile validation at all.
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
- release/*
|
||||||
paths:
|
paths:
|
||||||
- 'resources/profiles/**'
|
- 'resources/profiles/**'
|
||||||
- ".github/workflows/check_profiles.yml"
|
- ".github/workflows/check_profiles.yml"
|
||||||
@@ -20,6 +24,8 @@ permissions:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_profiles:
|
check_profiles:
|
||||||
|
# This job name is the check-run name pr-merge-bot.yml requires before a
|
||||||
|
# delegated merge. Renaming it silently disables that gate.
|
||||||
name: Check profiles
|
name: Check profiles
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -0,0 +1,510 @@
|
|||||||
|
name: PR Merge Bot
|
||||||
|
|
||||||
|
# Merges a pull request on request from a delegated vendor profile maintainer.
|
||||||
|
# The merge is performed by this workflow's GITHUB_TOKEN, so a delegate needs no
|
||||||
|
# repository access.
|
||||||
|
#
|
||||||
|
# Commands, posted as a comment on the PR:
|
||||||
|
# /bot merge squash-merge the PR
|
||||||
|
# /bot merge --dry-run report the verdict without merging
|
||||||
|
#
|
||||||
|
# Merges only when the commenter holds a grant covering every changed path, the
|
||||||
|
# PR targets main or release/*, and CI is green on the head commit. Otherwise it
|
||||||
|
# comments naming the files that fell outside the grant.
|
||||||
|
#
|
||||||
|
# Grants come from the FOLDER_MERGERS variable in the `merge-delegation`
|
||||||
|
# environment: one per line, `account: path`, `#` comments and blank lines
|
||||||
|
# allowed. Paths may contain spaces. A vendor takes two grants, the folder and
|
||||||
|
# its sibling bundle JSON:
|
||||||
|
#
|
||||||
|
# # Acme profiles
|
||||||
|
# vendor-maintainer: resources/profiles/Acme/
|
||||||
|
# vendor-maintainer: resources/profiles/Acme.json
|
||||||
|
#
|
||||||
|
# Edit the grant list (environment scope, so admin only):
|
||||||
|
# gh variable set FOLDER_MERGERS --env merge-delegation --body "$(cat folder-mergers.txt)"
|
||||||
|
# gh variable get FOLDER_MERGERS --env merge-delegation
|
||||||
|
#
|
||||||
|
# Stop all merging without touching this file:
|
||||||
|
# gh variable set MERGE_BOT_DRY_RUN --body true
|
||||||
|
|
||||||
|
on:
|
||||||
|
issue_comment:
|
||||||
|
types:
|
||||||
|
- created
|
||||||
|
|
||||||
|
# One merge attempt per PR at a time, so two quick comments cannot race.
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.event.issue.number }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
merge:
|
||||||
|
# Skips the job unless a PR comment mentions the command.
|
||||||
|
if: >-
|
||||||
|
github.repository == 'OrcaSlicer/OrcaSlicer'
|
||||||
|
&& github.event.issue.pull_request != null
|
||||||
|
&& contains(github.event.comment.body, '/bot merge')
|
||||||
|
permissions:
|
||||||
|
contents: write # pulls.merge
|
||||||
|
pull-requests: write # pulls.merge
|
||||||
|
issues: write # feedback comment + reactions
|
||||||
|
actions: write # re-dispatch build_all.yml after the merge
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
# Supplies FOLDER_MERGERS. Must carry no protection rules, or every
|
||||||
|
# delegated merge would wait for a human reviewer.
|
||||||
|
environment: merge-delegation
|
||||||
|
steps:
|
||||||
|
- name: Merge PR on behalf of a folder delegate
|
||||||
|
uses: actions/github-script@v9
|
||||||
|
env:
|
||||||
|
# Read as env vars, never interpolated into the script body.
|
||||||
|
FOLDER_MERGERS: ${{ vars.FOLDER_MERGERS }}
|
||||||
|
MERGE_BOT_DRY_RUN: ${{ vars.MERGE_BOT_DRY_RUN }}
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
function isPermissionDenied(error) {
|
||||||
|
return error && error.status === 403 && /Resource not accessible by integration/i.test(error.message || '');
|
||||||
|
}
|
||||||
|
|
||||||
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
|
|
||||||
|
const MARKER = '<!-- pr-merge-bot -->';
|
||||||
|
// No grant may reach outside this root.
|
||||||
|
const DELEGATABLE_ROOT = 'resources/profiles/';
|
||||||
|
const ALLOWED_BASE_BRANCH = /^(?:main|release\/.+)$/;
|
||||||
|
const MERGE_METHOD = 'squash';
|
||||||
|
const REQUIRED_CHECK = 'Check profiles'; // job name in check_profiles.yml
|
||||||
|
const MAX_CHANGED_FILES = 500; // policy cap, well under listFiles' 3000
|
||||||
|
const LISTFILES_CAP = 3000;
|
||||||
|
const MAX_REPORTED_FILES = 12;
|
||||||
|
const MERGEABLE_ATTEMPTS = 5;
|
||||||
|
const MERGEABLE_DELAY_MS = 2000;
|
||||||
|
const OK_CONCLUSIONS = new Set(['success', 'neutral', 'skipped']);
|
||||||
|
const REGULAR_FILE_MODES = new Set(['100644', '100755']);
|
||||||
|
|
||||||
|
// Paths refused whatever the grants say. Checked before grants, so
|
||||||
|
// delegating a new root means removing it from this list too.
|
||||||
|
const DENIED_PATTERNS = [
|
||||||
|
/^\.github\//,
|
||||||
|
/(^|\/)\.git(attributes|modules|ignore|config)$/,
|
||||||
|
/^(?:src|deps|deps_src|tests|tools|cmake|sandboxes|scripts|docs?|localization|bbl)\//,
|
||||||
|
/(^|\/)cmakelists\.txt$/,
|
||||||
|
/\.cmake$/,
|
||||||
|
/^build_[^/]*\.(?:sh|bat)$/,
|
||||||
|
/^version\.inc$/,
|
||||||
|
// Executables, including those inside the delegatable root.
|
||||||
|
/\.(?:sh|bash|bat|cmd|ps1|py|js|mjs|cjs|ts|rb|pl|php)$/
|
||||||
|
];
|
||||||
|
|
||||||
|
function parseGrants(raw) {
|
||||||
|
// GitHub login: 1-39 chars, alphanumerics with single interior hyphens.
|
||||||
|
const loginPattern = /^[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$/;
|
||||||
|
const grantsByLogin = new Map();
|
||||||
|
const problems = [];
|
||||||
|
|
||||||
|
(raw || '').split(/\r?\n/).forEach((rawLine, index) => {
|
||||||
|
const line = rawLine.trim();
|
||||||
|
if (!line || line.startsWith('#')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Splits on the first colon only, so paths may contain ':' and spaces.
|
||||||
|
const separator = line.indexOf(':');
|
||||||
|
if (separator === -1) {
|
||||||
|
problems.push(`line ${index + 1}: expected \`account: path\``);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const login = line.slice(0, separator).trim().replace(/^@/, '');
|
||||||
|
const path = line.slice(separator + 1).trim().replace(/\/+$/, '');
|
||||||
|
|
||||||
|
if (!loginPattern.test(login)) {
|
||||||
|
problems.push(`line ${index + 1}: \`${login}\` is not a valid GitHub account name`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (/[\\*?\u0000-\u001f\u007f]/.test(path) || path.split('/').includes('..') || path.includes('//')) {
|
||||||
|
problems.push(`line ${index + 1}: invalid path (no globs, \`..\`, \`//\`, backslashes or control characters)`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Rejects anything outside the root, and the bare root itself.
|
||||||
|
if (!path.startsWith(DELEGATABLE_ROOT) || path.length <= DELEGATABLE_ROOT.length) {
|
||||||
|
problems.push(`line ${index + 1}: \`${path}\` is not inside \`${DELEGATABLE_ROOT}\``);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const key = login.toLowerCase();
|
||||||
|
grantsByLogin.set(key, (grantsByLogin.get(key) || []).concat(path));
|
||||||
|
});
|
||||||
|
|
||||||
|
return { grantsByLogin, problems };
|
||||||
|
}
|
||||||
|
|
||||||
|
function isDenied(path) {
|
||||||
|
if (/[\\\u0000-\u001f\u007f]/.test(path) || path.startsWith('/') || path.split('/').includes('..')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const normalized = path.normalize('NFKC').toLowerCase();
|
||||||
|
return DENIED_PATTERNS.some((pattern) => pattern.test(normalized));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Byte-exact match on directory boundaries, so a grant of
|
||||||
|
// `.../Acme` covers neither `.../Acme Labs/x.json` nor `.../Acme.json`.
|
||||||
|
function isGranted(path, grants) {
|
||||||
|
return grants.some((grant) => path === grant || path.startsWith(`${grant}/`));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Both endpoints of a rename; both must satisfy the grant.
|
||||||
|
function pathsFor(file) {
|
||||||
|
return [file.filename, file.previous_filename].filter(Boolean);
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatList(items) {
|
||||||
|
const unique = [...new Set(items)];
|
||||||
|
const shown = unique.slice(0, MAX_REPORTED_FILES).map((item) => `- \`${item}\``);
|
||||||
|
if (unique.length > MAX_REPORTED_FILES) {
|
||||||
|
shown.push(`- …and ${unique.length - MAX_REPORTED_FILES} more`);
|
||||||
|
}
|
||||||
|
return shown.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
const { owner, repo } = context.repo;
|
||||||
|
const issue = context.payload.issue;
|
||||||
|
const comment = context.payload.comment;
|
||||||
|
|
||||||
|
if (!issue.pull_request) {
|
||||||
|
core.info('Ignoring comment that is not on a pull request.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Ignores a comment whose sender is not its author.
|
||||||
|
if (context.payload.action !== 'created' || context.payload.sender.login !== comment.user.login) {
|
||||||
|
core.warning('Ignoring comment whose sender does not match its author.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (comment.user.type !== 'User') {
|
||||||
|
core.info('Ignoring bot-authored command.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const commandLine = (comment.body || '')
|
||||||
|
.split('\n')
|
||||||
|
.map((line) => line.trim())
|
||||||
|
.find((line) => /^\/bot\s+merge\b/i.test(line));
|
||||||
|
|
||||||
|
if (!commandLine) {
|
||||||
|
core.info('No /bot merge command found.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const commenter = comment.user.login;
|
||||||
|
const { grantsByLogin, problems } = parseGrants(process.env.FOLDER_MERGERS);
|
||||||
|
const grants = grantsByLogin.get(commenter.toLowerCase()) || [];
|
||||||
|
|
||||||
|
for (const problem of problems) {
|
||||||
|
core.warning(`FOLDER_MERGERS ${problem}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Says nothing to accounts with no grant, so it cannot be used to spam.
|
||||||
|
if (!grants.length) {
|
||||||
|
core.info(`Ignoring /bot merge from @${commenter}: not listed in FOLDER_MERGERS.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Warns instead of failing when the token cannot post feedback.
|
||||||
|
async function bestEffort(call, warning) {
|
||||||
|
try {
|
||||||
|
await call();
|
||||||
|
} catch (error) {
|
||||||
|
if (isPermissionDenied(error)) {
|
||||||
|
core.warning(warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const react = (content) => bestEffort(
|
||||||
|
() => github.rest.reactions.createForIssueComment({ owner, repo, comment_id: comment.id, content }),
|
||||||
|
`Cannot add the "${content}" reaction because the token cannot write.`);
|
||||||
|
|
||||||
|
const say = (body) => bestEffort(
|
||||||
|
() => github.rest.issues.createComment({ owner, repo, issue_number: issue.number, body: `${MARKER}\n${body}` }),
|
||||||
|
'Cannot post a comment because the token cannot write comments.');
|
||||||
|
|
||||||
|
// Declines the command: warns in the log, reacts, explains on the PR.
|
||||||
|
async function refuse(reason) {
|
||||||
|
const configNote = problems.length
|
||||||
|
? `\n\n\`FOLDER_MERGERS\` also has problems a maintainer needs to fix:\n${problems.map((problem) => `- ${problem}`).join('\n')}`
|
||||||
|
: '';
|
||||||
|
const grantsNote = `\n\n<details><summary>Your current grants</summary>\n\n${formatList(grants)}\n\n</details>`;
|
||||||
|
|
||||||
|
core.warning(`Refused /bot merge from @${commenter}: ${reason}`);
|
||||||
|
await react('-1');
|
||||||
|
await say(`@${commenter} I can't merge this PR: ${reason}${configNote}${grantsNote}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
await react('eyes');
|
||||||
|
|
||||||
|
const args = (commandLine.match(/^\/bot\s+merge\s*(.*)$/i)[1] || '').trim().split(/\s+/).filter(Boolean);
|
||||||
|
const unknownArgs = args.filter((arg) => arg.toLowerCase() !== '--dry-run');
|
||||||
|
const dryRun = String(process.env.MERGE_BOT_DRY_RUN || '').toLowerCase() === 'true'
|
||||||
|
|| unknownArgs.length !== args.length;
|
||||||
|
|
||||||
|
if (unknownArgs.length) {
|
||||||
|
return refuse(
|
||||||
|
`I don't understand ${unknownArgs.map((arg) => `\`${arg}\``).join(', ')}. ` +
|
||||||
|
'Usage: `/bot merge` or `/bot merge --dry-run`.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refuses everything while the grant list is malformed.
|
||||||
|
if (problems.length) {
|
||||||
|
return refuse(
|
||||||
|
'the `FOLDER_MERGERS` grant list has malformed lines, so I refuse every merge until it is fixed.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let { data: pr } = await github.rest.pulls.get({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
pull_number: issue.number
|
||||||
|
});
|
||||||
|
|
||||||
|
if (pr.merged) {
|
||||||
|
return refuse('it is already merged.');
|
||||||
|
}
|
||||||
|
if (pr.state !== 'open') {
|
||||||
|
return refuse(`its state is \`${pr.state}\`, not \`open\`.`);
|
||||||
|
}
|
||||||
|
if (pr.draft) {
|
||||||
|
return refuse('it is still a draft. Mark it ready for review first.');
|
||||||
|
}
|
||||||
|
if (!ALLOWED_BASE_BRANCH.test(pr.base.ref)) {
|
||||||
|
return refuse(`it targets \`${pr.base.ref}\`. Delegated merges are only allowed into \`main\` and \`release/*\`.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---- folder scope ----
|
||||||
|
const files = await github.paginate(github.rest.pulls.listFiles, {
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
pull_number: pr.number,
|
||||||
|
per_page: 100
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!files.length) {
|
||||||
|
return refuse('it changes no files, so there is nothing to verify or merge.');
|
||||||
|
}
|
||||||
|
// Refuses when the file list is truncated or disagrees with the PR.
|
||||||
|
if (files.length >= LISTFILES_CAP || files.length !== pr.changed_files) {
|
||||||
|
return refuse(
|
||||||
|
`it reports ${pr.changed_files} changed files but the API listed ${files.length}, ` +
|
||||||
|
'so the file list is truncated and I cannot verify the folder scope. A maintainer must merge this one.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (pr.changed_files > MAX_CHANGED_FILES) {
|
||||||
|
return refuse(`it changes ${pr.changed_files} files; delegated merges are capped at ${MAX_CHANGED_FILES}.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const deniedFiles = [];
|
||||||
|
const outsideFiles = [];
|
||||||
|
|
||||||
|
for (const file of files) {
|
||||||
|
for (const path of pathsFor(file)) {
|
||||||
|
if (isDenied(path)) {
|
||||||
|
deniedFiles.push(path);
|
||||||
|
} else if (!isGranted(path, grants)) {
|
||||||
|
outsideFiles.push(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deniedFiles.length) {
|
||||||
|
core.error(`@${commenter} attempted a delegated merge touching protected paths: ${deniedFiles.join(', ')}`);
|
||||||
|
return refuse(
|
||||||
|
'it touches paths that are never delegatable, whatever the grants say ' +
|
||||||
|
`(CI, build, scripts or executable files):\n\n${formatList(deniedFiles)}\n\nA maintainer should look at this before it goes any further.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (outsideFiles.length) {
|
||||||
|
return refuse(
|
||||||
|
`${outsideFiles.length} changed path(s) fall outside your grants:\n\n${formatList(outsideFiles)}\n\n` +
|
||||||
|
'A vendor needs both grants: `resources/profiles/<Vendor>/` **and** `resources/profiles/<Vendor>.json`.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---- file modes: rejects symlinks and submodules ----
|
||||||
|
// Fetches the delegatable subtree only; listFiles does not report modes.
|
||||||
|
const headSha = pr.head.sha;
|
||||||
|
const { data: tree } = await github.rest.git.getTree({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
tree_sha: `${headSha}:${DELEGATABLE_ROOT.replace(/\/$/, '')}`,
|
||||||
|
recursive: 'true'
|
||||||
|
});
|
||||||
|
|
||||||
|
if (tree.truncated) {
|
||||||
|
return refuse('the git tree is too large to verify file modes. A maintainer must merge this one.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Entry paths are subtree-relative.
|
||||||
|
const modesByPath = new Map(tree.tree.map((entry) => [`${DELEGATABLE_ROOT}${entry.path}`, entry.mode]));
|
||||||
|
const irregularFiles = files
|
||||||
|
.filter((file) => file.status !== 'removed')
|
||||||
|
.map((file) => [file.filename, modesByPath.get(file.filename)])
|
||||||
|
.filter(([, mode]) => !REGULAR_FILE_MODES.has(mode))
|
||||||
|
.map(([path, mode]) => `${path} (mode ${mode || 'missing'})`);
|
||||||
|
|
||||||
|
if (irregularFiles.length) {
|
||||||
|
core.error(`@${commenter} attempted a delegated merge with non-regular files: ${irregularFiles.join(', ')}`);
|
||||||
|
return refuse(
|
||||||
|
`it adds symlinks, submodules or files I cannot verify:\n\n${formatList(irregularFiles)}\n\nA maintainer should look at this before it goes any further.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---- mergeability: waits for GitHub to compute it ----
|
||||||
|
for (let attempt = 0; pr.mergeable === null && attempt < MERGEABLE_ATTEMPTS; attempt += 1) {
|
||||||
|
core.info(`Mergeability not computed yet; retrying in ${MERGEABLE_DELAY_MS}ms.`);
|
||||||
|
await sleep(MERGEABLE_DELAY_MS);
|
||||||
|
({ data: pr } = await github.rest.pulls.get({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
pull_number: pr.number
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pr.mergeable === null) {
|
||||||
|
return refuse('GitHub is still working out whether it can be merged. Try `/bot merge` again in a minute.');
|
||||||
|
}
|
||||||
|
if (!pr.mergeable) {
|
||||||
|
return refuse(`it is not mergeable (\`${pr.mergeable_state}\`) - most likely a conflict with \`${pr.base.ref}\`.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---- CI on the head commit ----
|
||||||
|
const checkRuns = await github.paginate(github.rest.checks.listForRef, {
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
ref: headSha,
|
||||||
|
filter: 'latest',
|
||||||
|
per_page: 100
|
||||||
|
});
|
||||||
|
const pendingChecks = checkRuns.filter((run) => run.status !== 'completed');
|
||||||
|
const failedChecks = checkRuns.filter((run) => run.status === 'completed' && !OK_CONCLUSIONS.has(run.conclusion));
|
||||||
|
|
||||||
|
if (pendingChecks.length) {
|
||||||
|
return refuse(
|
||||||
|
`${pendingChecks.length} check(s) are still running on \`${headSha.slice(0, 7)}\`:\n\n` +
|
||||||
|
`${formatList(pendingChecks.map((run) => run.name))}\n\nRe-run \`/bot merge\` once they finish.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (failedChecks.length) {
|
||||||
|
return refuse(
|
||||||
|
`${failedChecks.length} check(s) are not green on \`${headSha.slice(0, 7)}\`:\n\n` +
|
||||||
|
formatList(failedChecks.map((run) => `${run.name} (${run.conclusion})`))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const { data: combined } = await github.rest.repos.getCombinedStatusForRef({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
ref: headSha
|
||||||
|
});
|
||||||
|
// total_count 0 only means there are no legacy statuses.
|
||||||
|
if (combined.total_count > 0 && combined.state !== 'success') {
|
||||||
|
return refuse(
|
||||||
|
`the combined commit status on \`${headSha.slice(0, 7)}\` is \`${combined.state}\`:\n\n` +
|
||||||
|
formatList(combined.statuses.filter((status) => status.state !== 'success')
|
||||||
|
.map((status) => `${status.context} (${status.state})`))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Requires the check to have actually run, not merely to have not failed.
|
||||||
|
const requiredCheck = checkRuns.find((run) =>
|
||||||
|
run.name === REQUIRED_CHECK &&
|
||||||
|
run.app && run.app.slug === 'github-actions' &&
|
||||||
|
run.status === 'completed' && OK_CONCLUSIONS.has(run.conclusion));
|
||||||
|
|
||||||
|
if (!requiredCheck) {
|
||||||
|
return refuse(
|
||||||
|
`the \`${REQUIRED_CHECK}\` check has not succeeded on \`${headSha.slice(0, 7)}\`. ` +
|
||||||
|
'If it never ran, a maintainer needs to approve the workflow run first.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const scopeSummary = `${files.length} file(s), all within:\n${formatList(grants)}`;
|
||||||
|
|
||||||
|
if (dryRun) {
|
||||||
|
core.info('Dry run: every gate passed, not merging.');
|
||||||
|
await react('+1');
|
||||||
|
await say(
|
||||||
|
`@${commenter} **dry run** - this PR passes every gate and I *would* squash-merge it ` +
|
||||||
|
`at \`${headSha.slice(0, 7)}\`.\n\nVerified scope: ${scopeSummary}`
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---- re-validate, then merge ----
|
||||||
|
// An unchanged head SHA means the verified file list still holds.
|
||||||
|
const { data: fresh } = await github.rest.pulls.get({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
pull_number: pr.number
|
||||||
|
});
|
||||||
|
|
||||||
|
if (fresh.head.sha !== headSha || fresh.base.ref !== pr.base.ref || fresh.state !== 'open' || fresh.merged || fresh.draft) {
|
||||||
|
return refuse('it changed while I was checking it. Nothing was merged - re-run `/bot merge`.');
|
||||||
|
}
|
||||||
|
|
||||||
|
let merged;
|
||||||
|
try {
|
||||||
|
// Pinned to the verified head: a moved head fails with 409.
|
||||||
|
({ data: merged } = await github.rest.pulls.merge({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
pull_number: pr.number,
|
||||||
|
sha: headSha,
|
||||||
|
merge_method: MERGE_METHOD,
|
||||||
|
commit_title: `${pr.title} (#${pr.number})`,
|
||||||
|
commit_message:
|
||||||
|
`Merged by /bot merge on behalf of @${commenter} (id ${comment.user.id}).\n` +
|
||||||
|
`Grants: ${grants.join(', ')}\nHead: ${headSha}\n`
|
||||||
|
}));
|
||||||
|
} catch (error) {
|
||||||
|
const hint = {
|
||||||
|
403: 'the workflow token cannot write to the repository.',
|
||||||
|
405: 'GitHub refused the merge - branch protection, a required review or check, a newly added CODEOWNERS file, or squash merging being disabled.',
|
||||||
|
409: `the head commit moved after I verified it (was \`${headSha.slice(0, 7)}\`).`,
|
||||||
|
422: 'GitHub rejected the merge as invalid.'
|
||||||
|
}[error.status];
|
||||||
|
|
||||||
|
if (!hint) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
await refuse(`${hint}\n\n> ${error.message}\n\nNothing was merged.`);
|
||||||
|
core.setFailed(`Delegated merge failed: ${error.status} ${error.message}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
core.info(`Merged #${pr.number} as ${merged.sha}.`);
|
||||||
|
await react('rocket');
|
||||||
|
await say(
|
||||||
|
`@${commenter} squash-merged into \`${pr.base.ref}\` as ${merged.sha}.\n\nVerified scope: ${scopeSummary}`
|
||||||
|
);
|
||||||
|
|
||||||
|
// ---- re-kick the build ----
|
||||||
|
// A GITHUB_TOKEN merge fires no push event, so build_all.yml would
|
||||||
|
// otherwise never see these files.
|
||||||
|
try {
|
||||||
|
await github.rest.actions.createWorkflowDispatch({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
workflow_id: 'build_all.yml',
|
||||||
|
ref: pr.base.ref
|
||||||
|
});
|
||||||
|
core.info(`Dispatched build_all.yml on ${pr.base.ref}.`);
|
||||||
|
} catch (error) {
|
||||||
|
core.warning(`Merged successfully, but dispatching build_all.yml failed: ${error.message}`);
|
||||||
|
}
|
||||||
@@ -30,6 +30,7 @@ ctest --test-dir ./tests/fff_print
|
|||||||
- C++17, selective C++20. PascalCase classes, snake_case functions/variables
|
- C++17, selective C++20. PascalCase classes, snake_case functions/variables
|
||||||
- `#pragma once` for headers. Smart pointers and RAII preferred
|
- `#pragma once` for headers. Smart pointers and RAII preferred
|
||||||
- Parallelization via TBB — be mindful of shared state
|
- Parallelization via TBB — be mindful of shared state
|
||||||
|
- Always use `SetSizerAndFit(sizer)` instead of `SetSizer(sizer)` on top level window. Unless `SetSizer` must be called before the full layout is built, call `sizer->SetSizeHints(window)` afterwards in this case.
|
||||||
|
|
||||||
## Key Entry Points
|
## Key Entry Points
|
||||||
|
|
||||||
@@ -55,11 +56,36 @@ ctest --test-dir ./tests/fff_print
|
|||||||
- Add helper functions or utilities only when existing code cannot reasonably be reused. Avoid duplication.
|
- Add helper functions or utilities only when existing code cannot reasonably be reused. Avoid duplication.
|
||||||
- Keep code concise and clear. Manually simplify AI generated bloated codes before review.
|
- Keep code concise and clear. Manually simplify AI generated bloated codes before review.
|
||||||
- Include targeted tests or documented verification for behavior changes, especially in slicing logic, profiles, formats, and GUI defaults.
|
- Include targeted tests or documented verification for behavior changes, especially in slicing logic, profiles, formats, and GUI defaults.
|
||||||
|
- For profile changes (`resources/profiles/<Vendor>/**`), check that `version` in the sibling `resources/profiles/<Vendor>.json` was bumped.
|
||||||
- For translation changes (`localization/i18n/**/*.po`), check that recurring terms match the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_glossary.md) for that language.
|
- For translation changes (`localization/i18n/**/*.po`), check that recurring terms match the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_glossary.md) for that language.
|
||||||
|
|
||||||
## Localization & translations
|
## Localization & translations
|
||||||
|
|
||||||
- Translation catalogs live in `localization/i18n/<lang>/OrcaSlicer_<lang>.po`.
|
Catalogs live in `localization/i18n/<lang>/OrcaSlicer_<lang>.po`; the template is `OrcaSlicer.pot`.
|
||||||
- When creating or reviewing translations, use the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_glossary.md) as the source of truth for recurring terms, so the same English term is always rendered the same way within a language and terms that must stay in English (brand/product names, acronyms, file formats, G-code, macros/variables) are not translated.
|
See the [Localization guide](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_guide.md) for the human-facing version of these principles.
|
||||||
- If a term's established translation changes, update both the affected `.po` files and the glossary so they stay in sync.
|
|
||||||
- Only edit `msgstr` (never `msgid`); keep placeholders (`%s`, `%1%`, `\n`), context (`msgctxt`), and file encoding/line endings intact.
|
### Terminology
|
||||||
|
|
||||||
|
- Use the [Localization glossary](https://github.com/OrcaSlicer/OrcaSlicer_WIKI/blob/main/guides/localization_glossary.md) as the source of truth for recurring terms, so the same English term is always rendered the same way within a language, and terms that must stay in English (brand/product names, acronyms, materials, file formats, G-code tokens, macros/variables/identifiers) are not translated.
|
||||||
|
- If a term's established translation changes, update both the affected `.po` files and the glossary (`localization_glossary.tsv`, then regenerate) so they stay in sync.
|
||||||
|
- Translate the *meaning*, not the words. Check what the string actually controls before translating it — English reuses one word for different things. `Flow ratio` (multiplier), `Flow Rate` (throughput) and `Flow Dynamics` (pressure compensation) are three different terms; `extruder` may mean the toolhead, the feeder motor, or the nozzle depending on the string.
|
||||||
|
- Reuse one template per recurring message shape (`Failed to connect to …`, `Are you sure you want to …?`), even where the English wording varies.
|
||||||
|
|
||||||
|
### Editing rules
|
||||||
|
|
||||||
|
- Only edit `msgstr` — **never** change `msgid`, and never "fix" wrong English in the translation alone. Report the source string instead.
|
||||||
|
- Preserve exactly: placeholders (`%s`, `%d`, `%1%`, `%zu`, `%%`), every `\n` (count *and* position, including leading/trailing), leading/trailing spaces, HTML tags, `℃`, and the file's encoding and line endings.
|
||||||
|
- **Never reorder positional arguments** in a `c-format` string. If the msgid is `%d` then `%s`, that order must hold — swapping them breaks at runtime.
|
||||||
|
- `msgctxt` separates homonyms — always read it. `Back`/`Camera View` is the rear view of the 3D navigator, while `Back`/`Navigation` is the go-back button; `Top` exists in the *Alignment*, *Layers* and *Camera View* senses.
|
||||||
|
- When a string needs disambiguating, add context in the source (`_L_CONTEXT`/`_u8L_CONTEXT`), don't work around it in the translation.
|
||||||
|
- A literal `%` inside a string xgettext flagged `possible-c-format` will fail `msgfmt`. Fix it with a `// xgettext:no-c-format, no-boost-format` comment above the string in the source — do not mangle the translation or use `%%` in text that is never passed through printf.
|
||||||
|
- Plural entries: read `nplurals` from the catalog's `Plural-Forms` header (it is **not** always 2 — ja/ko/zh/th/vi use 1, ru/cs/pl/lt use 3, uk uses 4). Each form must be genuinely inflected for its quantity; repeating one sentence across all forms is a bug in Slavic/Baltic languages, though it is correct for Turkish and Hungarian.
|
||||||
|
- An entry whose `msgstr` equals its `msgid` is untranslated even though it is not empty; a plural entry with any empty form is likewise incomplete.
|
||||||
|
- Mark machine-produced translations with an `# AI Translated` translator comment. Don't add it to a human translation you didn't actually rewrite.
|
||||||
|
- Don't reflow or re-wrap unrelated entries — keep the diff limited to the strings you changed.
|
||||||
|
|
||||||
|
### Verifying
|
||||||
|
|
||||||
|
- `scripts/run_gettext.bat --full` (Windows) regenerates the template, merges every catalog and compiles the `.mo` files. It must exit 0.
|
||||||
|
- Or check a single catalog with `msgfmt --check-format -o <out>.mo localization/i18n/<lang>/OrcaSlicer_<lang>.po`.
|
||||||
|
- Fuzzy entries are not shown to users. If you correct one, clear its `fuzzy` flag, otherwise the fix never ships.
|
||||||
|
|||||||
@@ -80,8 +80,12 @@ endif()
|
|||||||
|
|
||||||
if (DEFINED BBL_RELEASE_TO_PUBLIC)
|
if (DEFINED BBL_RELEASE_TO_PUBLIC)
|
||||||
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=${BBL_RELEASE_TO_PUBLIC}")
|
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=${BBL_RELEASE_TO_PUBLIC}")
|
||||||
|
if (BBL_RELEASE_TO_PUBLIC)
|
||||||
|
add_compile_definitions(WXINSPECTOR_DISABLE)
|
||||||
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=$<CONFIG:Release>")
|
add_compile_definitions("BBL_RELEASE_TO_PUBLIC=$<CONFIG:Release>")
|
||||||
|
add_compile_definitions("$<$<CONFIG:Release>:WXINSPECTOR_DISABLE>")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
find_package(Git)
|
find_package(Git)
|
||||||
|
|||||||
@@ -119,6 +119,10 @@ Download the **Windows Installer exe** for your preferred version from the [rele
|
|||||||
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
|
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
### Microsoft Store
|
||||||
|
|
||||||
|
Install from the [Microsoft Store](https://apps.microsoft.com/detail/9mv6gl23xm59) when you prefer a Store-signed package (helps on Windows 11 Smart App Control).
|
||||||
|
|
||||||
### Windows Package Manager
|
### Windows Package Manager
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ echo on
|
|||||||
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
set CMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
if "%USE_NINJA%"=="1" (
|
if "%USE_NINJA%"=="1" (
|
||||||
cmake .. -G %CMAKE_GENERATOR% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
cmake .. -G %CMAKE_GENERATOR% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
cmake --build . --config %build_type% --target ALL_BUILD
|
cmake --build . --config %build_type% --target all
|
||||||
) else (
|
) else (
|
||||||
cmake .. -G %CMAKE_GENERATOR% -A %arch% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
cmake .. -G %CMAKE_GENERATOR% -A %arch% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
|
||||||
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
cmake --build . --config %build_type% --target ALL_BUILD -- -m
|
||||||
|
|||||||
Vendored
+8
@@ -52,6 +52,14 @@ ExternalProject_Add(dep_OpenSSL
|
|||||||
CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch}
|
CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch}
|
||||||
"--openssldir=${DESTDIR}"
|
"--openssldir=${DESTDIR}"
|
||||||
"--prefix=${DESTDIR}"
|
"--prefix=${DESTDIR}"
|
||||||
|
# OpenSSL's linux-x86_64 target sets multilib=64, so it installs to
|
||||||
|
# <prefix>/lib64 while every other dep uses <prefix>/lib. CPython's
|
||||||
|
# --with-openssl only ever emits -L<dir>/lib, so it misses the bundled
|
||||||
|
# static libs and silently links the system OpenSSL instead -- which,
|
||||||
|
# against 1.1.1w headers, leaves _ssl.so with an undefined
|
||||||
|
# SSL_get_peer_certificate (removed in OpenSSL 3.x). Pin libdir so the
|
||||||
|
# prefix stays single-layout.
|
||||||
|
"--libdir=lib"
|
||||||
${_cross_comp_prefix_line}
|
${_cross_comp_prefix_line}
|
||||||
no-shared
|
no-shared
|
||||||
no-asm
|
no-asm
|
||||||
|
|||||||
Vendored
+98
@@ -0,0 +1,98 @@
|
|||||||
|
# Copyright (c) 2020-2021 Intel Corporation
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
set(TBB_LINK_DEF_FILE_FLAG ${CMAKE_LINK_DEF_FILE_FLAG})
|
||||||
|
set(TBB_DEF_FILE_PREFIX win${TBB_ARCH})
|
||||||
|
|
||||||
|
# Workaround for CMake issue https://gitlab.kitware.com/cmake/cmake/issues/18317.
|
||||||
|
# TODO: consider use of CMP0092 CMake policy.
|
||||||
|
string(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
|
|
||||||
|
set(TBB_WARNING_LEVEL $<$<BOOL:${TBB_STRICT}>:/W4> $<$<BOOL:${TBB_STRICT}>:/WX>)
|
||||||
|
|
||||||
|
# Warning suppression C4324: structure was padded due to alignment specifier
|
||||||
|
set(TBB_WARNING_SUPPRESS /wd4324)
|
||||||
|
set(TBB_TEST_COMPILE_FLAGS /bigobj)
|
||||||
|
|
||||||
|
if (MSVC_VERSION LESS_EQUAL 1900)
|
||||||
|
# Warning suppression C4503 for VS2015 and earlier:
|
||||||
|
# decorated name length exceeded, name was truncated.
|
||||||
|
# More info can be found at
|
||||||
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4503
|
||||||
|
set(TBB_TEST_COMPILE_FLAGS ${TBB_TEST_COMPILE_FLAGS} /wd4503)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(TBB_LIB_COMPILE_FLAGS -D_CRT_SECURE_NO_WARNINGS /GS)
|
||||||
|
set(TBB_COMMON_COMPILE_FLAGS /volatile:iso /FS /EHsc)
|
||||||
|
|
||||||
|
# Ignore /WX set through add_compile_options() or added to CMAKE_CXX_FLAGS if TBB_STRICT is disabled.
|
||||||
|
if (NOT TBB_STRICT AND COMMAND tbb_remove_compile_flag)
|
||||||
|
tbb_remove_compile_flag(/WX)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (WINDOWS_STORE OR TBB_WINDOWS_DRIVER)
|
||||||
|
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} /D_WIN32_WINNT=0x0A00)
|
||||||
|
set(TBB_COMMON_LINK_FLAGS -NODEFAULTLIB:kernel32.lib -INCREMENTAL:NO)
|
||||||
|
set(TBB_COMMON_LINK_LIBS OneCore.lib)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (WINDOWS_STORE)
|
||||||
|
if (NOT CMAKE_SYSTEM_VERSION EQUAL 10.0)
|
||||||
|
message(FATAL_ERROR "CMAKE_SYSTEM_VERSION must be equal to 10.0")
|
||||||
|
endif()
|
||||||
|
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} /ZW /ZW:nostdlib)
|
||||||
|
# CMake define this extra lib, remove it for this build type
|
||||||
|
string(REGEX REPLACE "WindowsApp.lib" "" CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")
|
||||||
|
|
||||||
|
if (TBB_NO_APPCONTAINER)
|
||||||
|
set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} -APPCONTAINER:NO)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (TBB_WINDOWS_DRIVER)
|
||||||
|
# Since this is universal driver disable this variable
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR "")
|
||||||
|
# CMake define list additional libs, remove it for this build type
|
||||||
|
set(CMAKE_CXX_STANDARD_LIBRARIES "")
|
||||||
|
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} /D _UNICODE /DUNICODE /DWINAPI_FAMILY=WINAPI_FAMILY_APP /D__WRL_NO_DEFAULT_LIB__)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED TBB_ENABLE_IPO)
|
||||||
|
if (DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION)
|
||||||
|
set(TBB_ENABLE_IPO ${CMAKE_INTERPROCEDURAL_OPTIMIZATION})
|
||||||
|
else()
|
||||||
|
set(TBB_ENABLE_IPO ON)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (TBB_ENABLE_IPO)
|
||||||
|
if (CMAKE_CXX_COMPILER_ID MATCHES "(Clang|IntelLLVM)")
|
||||||
|
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86|AMD64)")
|
||||||
|
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -mrtm -mwaitpkg)
|
||||||
|
endif()
|
||||||
|
set(TBB_OPENMP_NO_LINK_FLAG TRUE)
|
||||||
|
set(TBB_IPO_COMPILE_FLAGS $<$<NOT:$<CONFIG:Debug>>:-flto>)
|
||||||
|
else()
|
||||||
|
set(TBB_IPO_COMPILE_FLAGS $<$<NOT:$<CONFIG:Debug>>:/GL>)
|
||||||
|
set(TBB_IPO_LINK_FLAGS $<$<NOT:$<CONFIG:Debug>>:-LTCG> $<$<NOT:$<CONFIG:Debug>>:-INCREMENTAL:NO>)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
if (CMAKE_CXX_COMPILER_ID MATCHES "(Clang|IntelLLVM)" AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86|AMD64)")
|
||||||
|
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -mrtm -mwaitpkg)
|
||||||
|
endif()
|
||||||
|
set(TBB_IPO_COMPILE_FLAGS "")
|
||||||
|
set(TBB_IPO_LINK_FLAGS "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(TBB_OPENMP_FLAG /openmp)
|
||||||
Vendored
+5
-1
@@ -1,4 +1,6 @@
|
|||||||
if (FLATPAK AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
if (MSVC)
|
||||||
|
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/MSVC.cmake ./cmake/compilers/MSVC.cmake)
|
||||||
|
elseif (FLATPAK AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/GNU.cmake ./cmake/compilers/GNU.cmake)
|
set(_patch_command ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/GNU.cmake ./cmake/compilers/GNU.cmake)
|
||||||
else()
|
else()
|
||||||
set(_patch_command "")
|
set(_patch_command "")
|
||||||
@@ -13,6 +15,8 @@ orcaslicer_add_cmake_project(
|
|||||||
-DTBB_BUILD_SHARED=OFF
|
-DTBB_BUILD_SHARED=OFF
|
||||||
-DTBB_BUILD_TESTS=OFF
|
-DTBB_BUILD_TESTS=OFF
|
||||||
-DTBB_TEST=OFF
|
-DTBB_TEST=OFF
|
||||||
|
-DTBB_ENABLE_IPO=OFF
|
||||||
|
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||||
-DCMAKE_DEBUG_POSTFIX=_debug
|
-DCMAKE_DEBUG_POSTFIX=_debug
|
||||||
)
|
)
|
||||||
|
|||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
build/cmake/wxWidgetsConfig.cmake.in | 10 +++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/build/cmake/wxWidgetsConfig.cmake.in b/build/cmake/wxWidgetsConfig.cmake.in
|
||||||
|
index 1a83f36..70ad8a4 100644
|
||||||
|
--- a/build/cmake/wxWidgetsConfig.cmake.in
|
||||||
|
+++ b/build/cmake/wxWidgetsConfig.cmake.in
|
||||||
|
@@ -58,7 +58,16 @@ if(WIN32_MSVC_NAMING)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||||
|
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||||
|
+ if (CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(ARM64|arm64|aarch64)$")
|
||||||
|
+ set(_wx_clang_msvc_lib_dir "vc_arm64_lib")
|
||||||
|
+ else()
|
||||||
|
+ set(_wx_clang_msvc_lib_dir "vc_x64_lib")
|
||||||
|
+ endif()
|
||||||
|
+ include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/${_wx_clang_msvc_lib_dir}/@PROJECT_NAME@Targets.cmake")
|
||||||
|
+else()
|
||||||
|
+ include("${CMAKE_CURRENT_LIST_DIR}${wxPLATFORM_LIB_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||||
|
+endif()
|
||||||
|
|
||||||
|
macro(wx_inherit_property source dest name)
|
||||||
|
# property name without _<CONFIG>
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
Vendored
+1
@@ -28,6 +28,7 @@ orcaslicer_add_cmake_project(
|
|||||||
GIT_SHALLOW ON
|
GIT_SHALLOW ON
|
||||||
GIT_SUBMODULES 3rdparty/catch 3rdparty/pcre 3rdparty/libwebp
|
GIT_SUBMODULES 3rdparty/catch 3rdparty/pcre 3rdparty/libwebp
|
||||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
||||||
|
PATCH_COMMAND git apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-Clang-CL-fix.patch
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
-DwxBUILD_PRECOMP=ON
|
-DwxBUILD_PRECOMP=ON
|
||||||
${_wx_toolkit}
|
${_wx_toolkit}
|
||||||
|
|||||||
@@ -37,7 +37,11 @@ target_include_directories(Clipper2
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
target_compile_options(Clipper2 PRIVATE /W4 /WX)
|
if (MSVC AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
target_compile_options(Clipper2 PRIVATE /W4 /WX)
|
||||||
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||||
|
target_compile_options(Clipper2 PRIVATE /W4)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
target_compile_options(Clipper2 PRIVATE -Wall -Wextra -Wpedantic -Werror)
|
target_compile_options(Clipper2 PRIVATE -Wall -Wextra -Wpedantic -Werror)
|
||||||
target_link_libraries(Clipper2 PUBLIC -lm)
|
target_link_libraries(Clipper2 PUBLIC -lm)
|
||||||
|
|||||||
@@ -2856,6 +2856,7 @@ const ImWchar* ImFontAtlas::GetGlyphRangesDefault()
|
|||||||
{
|
{
|
||||||
0x0020, 0x00FF, // Basic Latin + Latin Supplement
|
0x0020, 0x00FF, // Basic Latin + Latin Supplement
|
||||||
0x2000, 0x206F, // General Punctuation
|
0x2000, 0x206F, // General Punctuation
|
||||||
|
0x2103, 0x2103, // ℃ Celsius symbol
|
||||||
0x3000, 0x30FF, // CJK Symbols and Punctuations, Hiragana, Katakana
|
0x3000, 0x30FF, // CJK Symbols and Punctuations, Hiragana, Katakana
|
||||||
0x31F0, 0x31FF, // Katakana Phonetic Extensions
|
0x31F0, 0x31FF, // Katakana Phonetic Extensions
|
||||||
0xFF00, 0xFFEF, // Half-width characters
|
0xFF00, 0xFFEF, // Half-width characters
|
||||||
|
|||||||
@@ -465,6 +465,57 @@ static void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditState *stat
|
|||||||
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
|
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
|
||||||
y = r.ymin;
|
y = r.ymin;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// In multi-line mode, clamp y to stay within the text vertical bounds.
|
||||||
|
// This lets the click still land at a valid location if the mouse is slightly
|
||||||
|
// above or below the text.
|
||||||
|
StbTexteditRow r;
|
||||||
|
int n = STB_TEXTEDIT_STRINGLEN(str);
|
||||||
|
int i = 0;
|
||||||
|
float base_y = 0, y_min, y_max;
|
||||||
|
|
||||||
|
// Get the first row to establish y_min and start the iteration
|
||||||
|
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
|
||||||
|
if (r.num_chars <= 0)
|
||||||
|
{
|
||||||
|
state->cursor = 0;
|
||||||
|
state->select_start = state->cursor;
|
||||||
|
state->select_end = state->cursor;
|
||||||
|
state->has_preferred_x = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
y_min = r.ymin;
|
||||||
|
y_max = base_y + r.ymax;
|
||||||
|
i = r.num_chars;
|
||||||
|
base_y += r.baseline_y_delta;
|
||||||
|
|
||||||
|
// Walk the remaining rows to find the bottom of the last row
|
||||||
|
while (i < n)
|
||||||
|
{
|
||||||
|
STB_TEXTEDIT_LAYOUTROW(&r, str, i);
|
||||||
|
if (r.num_chars <= 0)
|
||||||
|
break;
|
||||||
|
y_max = base_y + r.ymax;
|
||||||
|
i += r.num_chars;
|
||||||
|
base_y += r.baseline_y_delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the text ends with a newline, account for the empty trailing line
|
||||||
|
// so the cursor can be placed on it
|
||||||
|
if (n > 0 && STB_TEXTEDIT_GETCHAR(str, n - 1) == STB_TEXTEDIT_NEWLINE)
|
||||||
|
{
|
||||||
|
STB_TEXTEDIT_LAYOUTROW(&r, str, n);
|
||||||
|
y_max = base_y + r.ymax;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subtract half the last line height to avoid rounding issues when the mouse
|
||||||
|
// is just barely below the last line (keep cursor on the last line, not after the text)
|
||||||
|
y_max -= (r.ymax - r.ymin) * 0.5f;
|
||||||
|
|
||||||
|
if (y < y_min) y = y_min;
|
||||||
|
if (y > y_max) y = y_max;
|
||||||
|
}
|
||||||
|
|
||||||
state->cursor = stb_text_locate_coord(str, x, y);
|
state->cursor = stb_text_locate_coord(str, x, y);
|
||||||
state->select_start = state->cursor;
|
state->select_start = state->cursor;
|
||||||
@@ -485,6 +536,50 @@ static void stb_textedit_drag(STB_TEXTEDIT_STRING *str, STB_TexteditState *state
|
|||||||
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
|
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
|
||||||
y = r.ymin;
|
y = r.ymin;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// In multi-line mode, clamp y to stay within the text vertical bounds.
|
||||||
|
// This lets the drag keep working if the mouse goes off the top or bottom of the text.
|
||||||
|
StbTexteditRow r;
|
||||||
|
int n = STB_TEXTEDIT_STRINGLEN(str);
|
||||||
|
int i = 0;
|
||||||
|
float base_y = 0, y_min, y_max;
|
||||||
|
|
||||||
|
// Get the first row to establish y_min and start the iteration
|
||||||
|
STB_TEXTEDIT_LAYOUTROW(&r, str, 0);
|
||||||
|
if (r.num_chars <= 0)
|
||||||
|
return;
|
||||||
|
y_min = r.ymin;
|
||||||
|
y_max = base_y + r.ymax;
|
||||||
|
i = r.num_chars;
|
||||||
|
base_y += r.baseline_y_delta;
|
||||||
|
|
||||||
|
// Walk the remaining rows to find the bottom of the last row
|
||||||
|
while (i < n)
|
||||||
|
{
|
||||||
|
STB_TEXTEDIT_LAYOUTROW(&r, str, i);
|
||||||
|
if (r.num_chars <= 0)
|
||||||
|
break;
|
||||||
|
y_max = base_y + r.ymax;
|
||||||
|
i += r.num_chars;
|
||||||
|
base_y += r.baseline_y_delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the text ends with a newline, account for the empty trailing line
|
||||||
|
// so the cursor can be placed on it
|
||||||
|
if (n > 0 && STB_TEXTEDIT_GETCHAR(str, n - 1) == STB_TEXTEDIT_NEWLINE)
|
||||||
|
{
|
||||||
|
STB_TEXTEDIT_LAYOUTROW(&r, str, n);
|
||||||
|
y_max = base_y + r.ymax;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subtract half the last line height to avoid rounding issues when the mouse
|
||||||
|
// is just barely below the last line (keep cursor on the last line, not after the text)
|
||||||
|
y_max -= (r.ymax - r.ymin) * 0.5f;
|
||||||
|
|
||||||
|
if (y < y_min) y = y_min;
|
||||||
|
if (y > y_max) y = y_max;
|
||||||
|
}
|
||||||
|
|
||||||
if (state->select_start == state->select_end)
|
if (state->select_start == state->select_end)
|
||||||
state->select_start = state->cursor;
|
state->select_start = state->cursor;
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ add_library(miniz_static STATIC
|
|||||||
|
|
||||||
if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
|
if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
|
||||||
target_compile_definitions(miniz_static PRIVATE _GNU_SOURCE)
|
target_compile_definitions(miniz_static PRIVATE _GNU_SOURCE)
|
||||||
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||||
|
target_compile_options(miniz_static PRIVATE /clang:-Wno-error=incompatible-pointer-types)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(miniz INTERFACE miniz_static)
|
target_link_libraries(miniz INTERFACE miniz_static)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-07-23 15:24-0300\n"
|
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@@ -982,7 +982,7 @@ msgstr ""
|
|||||||
#, possible-boost-format
|
#, possible-boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Objects(%1%) have duplicated connectors. Some connectors may be missing in slicing result.\n"
|
"Objects(%1%) have duplicated connectors. Some connectors may be missing in slicing result.\n"
|
||||||
"Please report to PrusaSlicer team in which scenario this issue happened.\n"
|
"Please report to the OrcaSlicer team in which scenario this issue happened.\n"
|
||||||
"Thank you."
|
"Thank you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3385,7 +3385,6 @@ msgstr ""
|
|||||||
msgid "Innerloop"
|
msgid "Innerloop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRN To be shown in the main menu View->Top
|
|
||||||
msgid "Top"
|
msgid "Top"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3609,6 +3608,9 @@ msgstr ""
|
|||||||
msgid "Arranging"
|
msgid "Arranging"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Arranging "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Arranging canceled."
|
msgid "Arranging canceled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -5470,10 +5472,24 @@ msgstr ""
|
|||||||
msgid "Align to Y axis"
|
msgid "Align to Y axis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Front"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgctxt "Camera View"
|
msgctxt "Camera View"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRN To be shown in the main menu View->Top
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Top"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRN To be shown in the main menu View->Bottom
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Bottom"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgctxt "Camera View"
|
msgctxt "Camera View"
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -5854,19 +5870,13 @@ msgstr ""
|
|||||||
msgid "Top View"
|
msgid "Top View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRN To be shown in the main menu View->Bottom
|
|
||||||
msgid "Bottom"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Bottom View"
|
msgid "Bottom View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Front"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Front View"
|
msgid "Front View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgctxt "Camera View"
|
||||||
msgid "Rear"
|
msgid "Rear"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7771,19 +7781,19 @@ msgid "Replaced with 3D files from directory:\n"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, possible-boost-format
|
#, possible-boost-format
|
||||||
msgid "✖ Skipped %1%: same file.\n"
|
msgid "✖ Skipped %s: same file.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, possible-boost-format
|
#, possible-boost-format
|
||||||
msgid "✖ Skipped %1%: file does not exist.\n"
|
msgid "✖ Skipped %s: file does not exist.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, possible-boost-format
|
#, possible-boost-format
|
||||||
msgid "✖ Skipped %1%: failed to replace.\n"
|
msgid "✖ Skipped %s: failed to replace.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, possible-boost-format
|
#, possible-boost-format
|
||||||
msgid "✔ Replaced %1%.\n"
|
msgid "✔ Replaced %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Replaced volumes"
|
msgid "Replaced volumes"
|
||||||
@@ -8654,6 +8664,17 @@ msgstr ""
|
|||||||
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
|
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Dimmed layer brightness"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
|
||||||
|
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Login region"
|
msgid "Login region"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -12350,12 +12371,26 @@ msgstr ""
|
|||||||
msgid "Intra-layer order"
|
msgid "Intra-layer order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Print order within a single layer."
|
msgid ""
|
||||||
|
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
|
||||||
|
"\n"
|
||||||
|
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
|
||||||
|
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
|
||||||
|
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
|
||||||
|
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
|
||||||
|
"\n"
|
||||||
|
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "As object list"
|
msgid "As object list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Best of all (shortest path)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Snake"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Slow printing down for better layer cooling"
|
msgid "Slow printing down for better layer cooling"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -14729,7 +14764,7 @@ msgstr ""
|
|||||||
msgid "Retract amount after wipe"
|
msgid "Retract amount after wipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, possible-c-format
|
#, no-c-format, no-boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||||
@@ -17211,6 +17246,15 @@ msgid ""
|
|||||||
"Please select one that should be used."
|
"Please select one that should be used."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Auto-scale for nozzle"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
|
||||||
|
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
|
||||||
|
"Turn scaling off only if you wish to print the reference model exactly as-is."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "PA Calibration"
|
msgid "PA Calibration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -17333,6 +17377,12 @@ msgstr ""
|
|||||||
msgid "End speed: "
|
msgid "End speed: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Auto-adjust to max volumetric speed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please input valid values:\n"
|
"Please input valid values:\n"
|
||||||
"start > 10\n"
|
"start > 10\n"
|
||||||
@@ -17340,6 +17390,39 @@ msgid ""
|
|||||||
"end > start + step"
|
"end > start + step"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, possible-c-format, possible-boost-format
|
||||||
|
msgid ""
|
||||||
|
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
|
||||||
|
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
|
||||||
|
"\n"
|
||||||
|
"%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, possible-c-format, possible-boost-format
|
||||||
|
msgid ""
|
||||||
|
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
|
||||||
|
"\n"
|
||||||
|
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, possible-c-format, possible-boost-format
|
||||||
|
msgid ""
|
||||||
|
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
|
||||||
|
"\n"
|
||||||
|
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
|
||||||
|
"\n"
|
||||||
|
"Continue?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Continue anyway?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Start retraction length: "
|
msgid "Start retraction length: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
+2422
-1438
File diff suppressed because it is too large
Load Diff
+2343
-1407
File diff suppressed because it is too large
Load Diff
+1154
-937
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-07-23 15:24-0300\n"
|
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||||
"PO-Revision-Date: 2026-06-17 15:44-0300\n"
|
"PO-Revision-Date: 2026-06-17 15:44-0300\n"
|
||||||
"Last-Translator: Alexandre Folle de Menezes\n"
|
"Last-Translator: Alexandre Folle de Menezes\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -978,7 +978,7 @@ msgstr ""
|
|||||||
#, boost-format
|
#, boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Objects(%1%) have duplicated connectors. Some connectors may be missing in slicing result.\n"
|
"Objects(%1%) have duplicated connectors. Some connectors may be missing in slicing result.\n"
|
||||||
"Please report to PrusaSlicer team in which scenario this issue happened.\n"
|
"Please report to the OrcaSlicer team in which scenario this issue happened.\n"
|
||||||
"Thank you."
|
"Thank you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3381,7 +3381,6 @@ msgstr ""
|
|||||||
msgid "Innerloop"
|
msgid "Innerloop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRN To be shown in the main menu View->Top
|
|
||||||
msgid "Top"
|
msgid "Top"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3605,6 +3604,9 @@ msgstr ""
|
|||||||
msgid "Arranging"
|
msgid "Arranging"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Arranging "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Arranging canceled."
|
msgid "Arranging canceled."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -5466,10 +5468,24 @@ msgstr ""
|
|||||||
msgid "Align to Y axis"
|
msgid "Align to Y axis"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Front"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgctxt "Camera View"
|
msgctxt "Camera View"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRN To be shown in the main menu View->Top
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Top"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRN To be shown in the main menu View->Bottom
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Bottom"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgctxt "Camera View"
|
msgctxt "Camera View"
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -5850,19 +5866,13 @@ msgstr ""
|
|||||||
msgid "Top View"
|
msgid "Top View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. TRN To be shown in the main menu View->Bottom
|
|
||||||
msgid "Bottom"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Bottom View"
|
msgid "Bottom View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Front"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Front View"
|
msgid "Front View"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgctxt "Camera View"
|
||||||
msgid "Rear"
|
msgid "Rear"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -7766,20 +7776,20 @@ msgstr ""
|
|||||||
msgid "Replaced with 3D files from directory:\n"
|
msgid "Replaced with 3D files from directory:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✖ Skipped %1%: same file.\n"
|
msgid "✖ Skipped %s: same file.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✖ Skipped %1%: file does not exist.\n"
|
msgid "✖ Skipped %s: file does not exist.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✖ Skipped %1%: failed to replace.\n"
|
msgid "✖ Skipped %s: failed to replace.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✔ Replaced %1%.\n"
|
msgid "✔ Replaced %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Replaced volumes"
|
msgid "Replaced volumes"
|
||||||
@@ -8650,6 +8660,17 @@ msgstr ""
|
|||||||
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
|
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Dimmed layer brightness"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "%"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
|
||||||
|
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Login region"
|
msgid "Login region"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -12346,12 +12367,26 @@ msgstr ""
|
|||||||
msgid "Intra-layer order"
|
msgid "Intra-layer order"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Print order within a single layer."
|
msgid ""
|
||||||
|
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
|
||||||
|
"\n"
|
||||||
|
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
|
||||||
|
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
|
||||||
|
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
|
||||||
|
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
|
||||||
|
"\n"
|
||||||
|
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "As object list"
|
msgid "As object list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Best of all (shortest path)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Snake"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Slow printing down for better layer cooling"
|
msgid "Slow printing down for better layer cooling"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -14725,7 +14760,7 @@ msgstr ""
|
|||||||
msgid "Retract amount after wipe"
|
msgid "Retract amount after wipe"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, no-c-format, no-boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||||
@@ -17207,6 +17242,15 @@ msgid ""
|
|||||||
"Please select one that should be used."
|
"Please select one that should be used."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Auto-scale for nozzle"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
|
||||||
|
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
|
||||||
|
"Turn scaling off only if you wish to print the reference model exactly as-is."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "PA Calibration"
|
msgid "PA Calibration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -17329,6 +17373,12 @@ msgstr ""
|
|||||||
msgid "End speed: "
|
msgid "End speed: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Auto-adjust to max volumetric speed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please input valid values:\n"
|
"Please input valid values:\n"
|
||||||
"start > 10\n"
|
"start > 10\n"
|
||||||
@@ -17336,6 +17386,39 @@ msgid ""
|
|||||||
"end > start + step"
|
"end > start + step"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
msgid ""
|
||||||
|
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
|
||||||
|
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
|
||||||
|
"\n"
|
||||||
|
"%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
msgid ""
|
||||||
|
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
|
||||||
|
"\n"
|
||||||
|
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format, boost-format
|
||||||
|
msgid ""
|
||||||
|
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
|
||||||
|
"\n"
|
||||||
|
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
|
||||||
|
"\n"
|
||||||
|
"Continue?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Continue anyway?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Start retraction length: "
|
msgid "Start retraction length: "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2026-07-23 15:24-0300\n"
|
"POT-Creation-Date: 2026-07-29 17:40-0300\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Ian A. Bassi <>\n"
|
"Last-Translator: Ian A. Bassi <>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
@@ -983,11 +983,11 @@ msgstr "Conector"
|
|||||||
#, boost-format
|
#, boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Objects(%1%) have duplicated connectors. Some connectors may be missing in slicing result.\n"
|
"Objects(%1%) have duplicated connectors. Some connectors may be missing in slicing result.\n"
|
||||||
"Please report to PrusaSlicer team in which scenario this issue happened.\n"
|
"Please report to the OrcaSlicer team in which scenario this issue happened.\n"
|
||||||
"Thank you."
|
"Thank you."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Los objetos(%1%) tienen conectores duplicados. Es posible que falten algunos conectores en el resultado del laminado.\n"
|
"Los objetos(%1%) tienen conectores duplicados. Es posible que falten algunos conectores en el resultado del laminado.\n"
|
||||||
"Informe al equipo de PrusaSlicer sobre el escenario en el que se produjo este problema.\n"
|
"Informe al equipo de OrcaSlicer sobre el escenario en el que se produjo este problema.\n"
|
||||||
"Gracias."
|
"Gracias."
|
||||||
|
|
||||||
msgid "Cut by Plane"
|
msgid "Cut by Plane"
|
||||||
@@ -3459,7 +3459,6 @@ msgstr "Recámara"
|
|||||||
msgid "Innerloop"
|
msgid "Innerloop"
|
||||||
msgstr "Bucle interno"
|
msgstr "Bucle interno"
|
||||||
|
|
||||||
#. TRN To be shown in the main menu View->Top
|
|
||||||
msgid "Top"
|
msgid "Top"
|
||||||
msgstr "Superior"
|
msgstr "Superior"
|
||||||
|
|
||||||
@@ -3687,6 +3686,10 @@ msgstr "Organizando..."
|
|||||||
msgid "Arranging"
|
msgid "Arranging"
|
||||||
msgstr "Organizando"
|
msgstr "Organizando"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Arranging "
|
||||||
|
msgstr "Organizando "
|
||||||
|
|
||||||
msgid "Arranging canceled."
|
msgid "Arranging canceled."
|
||||||
msgstr "Organización cancelada."
|
msgstr "Organización cancelada."
|
||||||
|
|
||||||
@@ -5630,10 +5633,27 @@ msgstr "Evitar la zona de calibración del extrusor"
|
|||||||
msgid "Align to Y axis"
|
msgid "Align to Y axis"
|
||||||
msgstr "Alinear con el eje Y"
|
msgstr "Alinear con el eje Y"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Front"
|
||||||
|
msgstr "Frontal"
|
||||||
|
|
||||||
msgctxt "Camera View"
|
msgctxt "Camera View"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Posterior"
|
msgstr "Posterior"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
#. TRN To be shown in the main menu View->Top
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Top"
|
||||||
|
msgstr "Superior"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
#. TRN To be shown in the main menu View->Bottom
|
||||||
|
msgctxt "Camera View"
|
||||||
|
msgid "Bottom"
|
||||||
|
msgstr "Inferior"
|
||||||
|
|
||||||
msgctxt "Camera View"
|
msgctxt "Camera View"
|
||||||
msgid "Left"
|
msgid "Left"
|
||||||
msgstr "Izquierda"
|
msgstr "Izquierda"
|
||||||
@@ -6020,19 +6040,14 @@ msgstr "Vista por Defecto"
|
|||||||
msgid "Top View"
|
msgid "Top View"
|
||||||
msgstr "Vista superior"
|
msgstr "Vista superior"
|
||||||
|
|
||||||
#. TRN To be shown in the main menu View->Bottom
|
|
||||||
msgid "Bottom"
|
|
||||||
msgstr "Inferior"
|
|
||||||
|
|
||||||
msgid "Bottom View"
|
msgid "Bottom View"
|
||||||
msgstr "Vista inferior"
|
msgstr "Vista inferior"
|
||||||
|
|
||||||
msgid "Front"
|
|
||||||
msgstr "Frontal"
|
|
||||||
|
|
||||||
msgid "Front View"
|
msgid "Front View"
|
||||||
msgstr "Vista frontal"
|
msgstr "Vista frontal"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgctxt "Camera View"
|
||||||
msgid "Rear"
|
msgid "Rear"
|
||||||
msgstr "Posterior"
|
msgstr "Posterior"
|
||||||
|
|
||||||
@@ -7982,21 +7997,21 @@ msgstr "No se seleccionó el directorio para el reemplazo"
|
|||||||
msgid "Replaced with 3D files from directory:\n"
|
msgid "Replaced with 3D files from directory:\n"
|
||||||
msgstr "Reemplazado con archivos 3D desde el directorio:\n"
|
msgstr "Reemplazado con archivos 3D desde el directorio:\n"
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✖ Skipped %1%: same file.\n"
|
msgid "✖ Skipped %s: same file.\n"
|
||||||
msgstr "✖ Omitido %1%: mismo archivo.\n"
|
msgstr "✖ Omitido %s: mismo archivo.\n"
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✖ Skipped %1%: file does not exist.\n"
|
msgid "✖ Skipped %s: file does not exist.\n"
|
||||||
msgstr "✖ Omitido %1%: el archivo no existe.\n"
|
msgstr "✖ Omitido %s: el archivo no existe.\n"
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✖ Skipped %1%: failed to replace.\n"
|
msgid "✖ Skipped %s: failed to replace.\n"
|
||||||
msgstr "✖ Omitido %1%: fallo al reemplazar.\n"
|
msgstr "✖ Omitido %s: fallo al reemplazar.\n"
|
||||||
|
|
||||||
#, boost-format
|
#, c-format
|
||||||
msgid "✔ Replaced %1%.\n"
|
msgid "✔ Replaced %s.\n"
|
||||||
msgstr "✔ Reemplazado %1%.\n"
|
msgstr "✔ Reemplazado %s.\n"
|
||||||
|
|
||||||
msgid "Replaced volumes"
|
msgid "Replaced volumes"
|
||||||
msgstr "Volúmenes reemplazados"
|
msgstr "Volúmenes reemplazados"
|
||||||
@@ -8920,6 +8935,21 @@ msgstr "Atenuar las capas inferiores"
|
|||||||
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
|
msgid "When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."
|
||||||
msgstr "Al desplazar el control deslizante de capas en la vista previa laminada, oscurece las capas inferiores a la actual para que solo la capa visualizada se muestre a pleno brillo."
|
msgstr "Al desplazar el control deslizante de capas en la vista previa laminada, oscurece las capas inferiores a la actual para que solo la capa visualizada se muestre a pleno brillo."
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Dimmed layer brightness"
|
||||||
|
msgstr "Brillo de las capas atenuadas"
|
||||||
|
|
||||||
|
msgid "%"
|
||||||
|
msgstr "%"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid ""
|
||||||
|
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
|
||||||
|
"99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."
|
||||||
|
msgstr ""
|
||||||
|
"Con qué brillo se muestran las capas atenuadas cuando \"Atenuar las capas inferiores\" está activado.\n"
|
||||||
|
"99% apenas se oscurece y 0% las muestra en negro. Está limitado al 99% porque el 100% equivaldría a desactivar la opción."
|
||||||
|
|
||||||
msgid "Login region"
|
msgid "Login region"
|
||||||
msgstr "Región de inicio de sesión"
|
msgstr "Región de inicio de sesión"
|
||||||
|
|
||||||
@@ -12870,12 +12900,37 @@ msgstr "Por objeto"
|
|||||||
msgid "Intra-layer order"
|
msgid "Intra-layer order"
|
||||||
msgstr "Orden dentro de la capa"
|
msgstr "Orden dentro de la capa"
|
||||||
|
|
||||||
msgid "Print order within a single layer."
|
# AI Translated
|
||||||
msgstr "Orden de impresión dentro de cada capa."
|
msgid ""
|
||||||
|
"Order in which object instances are visited within a single layer, which controls how much travel is spent moving between them.\n"
|
||||||
|
"\n"
|
||||||
|
"Default: nearest-neighbor chaining, refined with 2-opt and crossing removal. A good general choice.\n"
|
||||||
|
"As object list: instances are printed in the same order as the object list, without any path optimization. Use it when you need a predictable, manually controlled order.\n"
|
||||||
|
"Best of all (shortest path): every strategy is evaluated and the shortest one is used. The object instance order is decided once for the whole print, while the ordering of individual islands is decided per layer, so different layers may end up using different strategies. Slightly slower to slice.\n"
|
||||||
|
"Snake: serpentine row-by-row traversal, refined with 2-opt. Well suited to regular grids of many small parts.\n"
|
||||||
|
"\n"
|
||||||
|
"With multiple filaments or tools in the same layer, minimizing tool changes takes priority: objects are grouped by filament first and this setting only orders the instances within each filament group, so the overall sequence may not look like the shortest path across the plate."
|
||||||
|
msgstr ""
|
||||||
|
"Orden en el que se recorren las instancias de objeto dentro de una misma capa, lo que determina cuánto desplazamiento se emplea para moverse entre ellas.\n"
|
||||||
|
"\n"
|
||||||
|
"Por defecto: encadenado por vecino más cercano, refinado con 2-opt y eliminación de cruces. Una buena opción general.\n"
|
||||||
|
"Como lista de objetos: las instancias se imprimen en el mismo orden que la lista de objetos, sin ninguna optimización de trayectoria. Úselo cuando necesite un orden predecible y controlado manualmente.\n"
|
||||||
|
"La mejor de todas (trayectoria más corta): se evalúan todas las estrategias y se utiliza la más corta. El orden de las instancias de objeto se decide una sola vez para toda la impresión, mientras que el orden de las islas individuales se decide capa por capa, por lo que distintas capas pueden acabar usando estrategias diferentes. El laminado es algo más lento.\n"
|
||||||
|
"Serpentina: recorrido serpenteante fila por fila, refinado con 2-opt. Muy adecuado para rejillas regulares de muchas piezas pequeñas.\n"
|
||||||
|
"\n"
|
||||||
|
"Con varios filamentos o herramientas en la misma capa, minimizar los cambios de herramienta tiene prioridad: los objetos se agrupan primero por filamento y este ajuste solo ordena las instancias dentro de cada grupo de filamento, por lo que la secuencia global puede no parecer la trayectoria más corta a lo largo de la cama."
|
||||||
|
|
||||||
msgid "As object list"
|
msgid "As object list"
|
||||||
msgstr "Como lista de objetos"
|
msgstr "Como lista de objetos"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Best of all (shortest path)"
|
||||||
|
msgstr "La mejor de todas (trayectoria más corta)"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Snake"
|
||||||
|
msgstr "Serpentina"
|
||||||
|
|
||||||
msgid "Slow printing down for better layer cooling"
|
msgid "Slow printing down for better layer cooling"
|
||||||
msgstr "Reducir la velocidad de impresión para mejorar la refrigeración de las capas"
|
msgstr "Reducir la velocidad de impresión para mejorar la refrigeración de las capas"
|
||||||
|
|
||||||
@@ -15490,7 +15545,7 @@ msgstr "La longitud de la retracción rápida antes de la purga, en relación co
|
|||||||
msgid "Retract amount after wipe"
|
msgid "Retract amount after wipe"
|
||||||
msgstr "Cantidad de retracción después de la limpieza"
|
msgstr "Cantidad de retracción después de la limpieza"
|
||||||
|
|
||||||
#, c-format
|
#, no-c-format, no-boost-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of fast retraction after wipe, relative to retraction length.\n"
|
"The length of fast retraction after wipe, relative to retraction length.\n"
|
||||||
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
"The value will be clamped by 100% minus the retract amount before the wipe value."
|
||||||
@@ -18111,6 +18166,20 @@ msgstr ""
|
|||||||
"Hay varias direcciones IP resueltas del nombre del host %1%.\n"
|
"Hay varias direcciones IP resueltas del nombre del host %1%.\n"
|
||||||
"Por favor, seleccione la que debe usarse."
|
"Por favor, seleccione la que debe usarse."
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Auto-scale for nozzle"
|
||||||
|
msgstr "Escalar automáticamente para la boquilla"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid ""
|
||||||
|
"This model is designed around a 0.4 mm nozzle with a 0.2 mm layer height. \n"
|
||||||
|
"When the scaling option is enabled (recommended), it dynamically resizes to match your current nozzle diameter and an appropriate layer height, making the test both accurate and easy to read.\n"
|
||||||
|
"Turn scaling off only if you wish to print the reference model exactly as-is."
|
||||||
|
msgstr ""
|
||||||
|
"Este modelo está diseñado para una boquilla de 0,4 mm con una altura de la capa de 0,2 mm. \n"
|
||||||
|
"Cuando la opción de escalado está activada (recomendado), el modelo se redimensiona dinámicamente para adaptarse al diámetro de boquilla actual y a una altura de capa adecuada, lo que hace que la prueba sea precisa y fácil de leer.\n"
|
||||||
|
"Desactive el escalado solo si desea imprimir el modelo de referencia exactamente tal cual."
|
||||||
|
|
||||||
msgid "PA Calibration"
|
msgid "PA Calibration"
|
||||||
msgstr "Calibración PA"
|
msgstr "Calibración PA"
|
||||||
|
|
||||||
@@ -18247,6 +18316,14 @@ msgstr "Velocidad inicial: "
|
|||||||
msgid "End speed: "
|
msgid "End speed: "
|
||||||
msgstr "Velocidad final: "
|
msgstr "Velocidad final: "
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Auto-adjust to max volumetric speed"
|
||||||
|
msgstr "Ajustar automáticamente a la velocidad volumétrica máxima"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "If the end speed would exceed the filament's maximum volumetric speed, automatically lower the layer height (keeping standard values and staying within the machine's limits) to reach it. If even the minimum layer height is not enough, lower the end speed instead."
|
||||||
|
msgstr "Si la velocidad final superara la velocidad volumétrica máxima del filamento, se reduce automáticamente la altura de la capa (manteniendo valores estándar y dentro de los límites de la máquina) para alcanzarla. Si ni siquiera la altura de capa mínima es suficiente, se reduce la velocidad final."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Please input valid values:\n"
|
"Please input valid values:\n"
|
||||||
"start > 10\n"
|
"start > 10\n"
|
||||||
@@ -18258,6 +18335,57 @@ msgstr ""
|
|||||||
"incremento >=0\n"
|
"incremento >=0\n"
|
||||||
"final > inicio + paso"
|
"final > inicio + paso"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
#, c-format, boost-format
|
||||||
|
msgid ""
|
||||||
|
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s), which limits the outer wall to about %.0f mm/s at this line width and layer height.\n"
|
||||||
|
" Speeds above this will be clamped, so the upper blocks of the tower will not print at the requested speed.\n"
|
||||||
|
"\n"
|
||||||
|
"%s"
|
||||||
|
msgstr ""
|
||||||
|
"La velocidad final (%.0f mm/s) supera la velocidad volumétrica máxima del filamento (%.1f mm³/s), lo que limita el perímetro externo a unos %.0f mm/s con este ancho de línea y esta altura de capa.\n"
|
||||||
|
" Las velocidades superiores se recortarán, por lo que los bloques superiores de la torre no se imprimirán a la velocidad solicitada.\n"
|
||||||
|
"\n"
|
||||||
|
"%s"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
#, c-format, boost-format
|
||||||
|
msgid ""
|
||||||
|
"The end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s) at the default layer height (%.2f mm).\n"
|
||||||
|
"\n"
|
||||||
|
"The layer height has been reduced to %.2f mm (a value used by this printer's profiles) so the tower can reach the requested speed."
|
||||||
|
msgstr ""
|
||||||
|
"La velocidad final (%.0f mm/s) supera la velocidad volumétrica máxima del filamento (%.1f mm³/s) con la altura de capa predeterminada (%.2f mm).\n"
|
||||||
|
"\n"
|
||||||
|
"La altura de la capa se ha reducido a %.2f mm (un valor usado por los perfiles de esta impresora) para que la torre pueda alcanzar la velocidad solicitada."
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
#, c-format, boost-format
|
||||||
|
msgid ""
|
||||||
|
"Even at the smallest layer height used by this printer's profiles (%.2f mm) the end speed (%.0f mm/s) exceeds the filament's maximum volumetric speed (%.1f mm³/s).\n"
|
||||||
|
"\n"
|
||||||
|
"The layer height will be set to %.2f mm and the end speed lowered to %.0f mm/s.\n"
|
||||||
|
"\n"
|
||||||
|
"Continue?"
|
||||||
|
msgstr ""
|
||||||
|
"Incluso con la altura de capa más pequeña usada por los perfiles de esta impresora (%.2f mm), la velocidad final (%.0f mm/s) supera la velocidad volumétrica máxima del filamento (%.1f mm³/s).\n"
|
||||||
|
"\n"
|
||||||
|
"La altura de la capa se establecerá en %.2f mm y la velocidad final se reducirá a %.0f mm/s.\n"
|
||||||
|
"\n"
|
||||||
|
"¿Continuar?"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Continue anyway?"
|
||||||
|
msgstr "¿Continuar de todos modos?"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Enable \"Auto-adjust\" to fix this automatically, or continue anyway?"
|
||||||
|
msgstr "¿Activar \"Ajuste automático\" para corregir esto automáticamente o continuar de todos modos?"
|
||||||
|
|
||||||
|
# AI Translated
|
||||||
|
msgid "Enable \"Auto-scale for nozzle\" and \"Auto-adjust\" to fix this automatically, or continue anyway?"
|
||||||
|
msgstr "¿Activar \"Escalar automáticamente para la boquilla\" y \"Ajuste automático\" para corregir esto automáticamente o continuar de todos modos?"
|
||||||
|
|
||||||
msgid "Start retraction length: "
|
msgid "Start retraction length: "
|
||||||
msgstr "Longitud de retracción inicial: "
|
msgstr "Longitud de retracción inicial: "
|
||||||
|
|
||||||
@@ -20733,6 +20861,18 @@ msgstr ""
|
|||||||
"Evita la deformación\n"
|
"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?"
|
"¿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 "Print order within a single layer."
|
||||||
|
#~ msgstr "Orden de impresión dentro de cada capa."
|
||||||
|
|
||||||
|
#~ msgid "Bottom"
|
||||||
|
#~ msgstr "Inferior"
|
||||||
|
|
||||||
|
#~ msgid "Front"
|
||||||
|
#~ msgstr "Frontal"
|
||||||
|
|
||||||
|
#~ msgid "Rear"
|
||||||
|
#~ msgstr "Posterior"
|
||||||
|
|
||||||
#~ msgid "Enter"
|
#~ msgid "Enter"
|
||||||
#~ msgstr "Enter"
|
#~ msgstr "Enter"
|
||||||
|
|
||||||
@@ -20817,9 +20957,6 @@ msgstr ""
|
|||||||
#~ msgid "°C"
|
#~ msgid "°C"
|
||||||
#~ msgstr "°C"
|
#~ msgstr "°C"
|
||||||
|
|
||||||
#~ msgid "%"
|
|
||||||
#~ msgstr "%"
|
|
||||||
|
|
||||||
#~ msgid "Anisotropic surfaces"
|
#~ msgid "Anisotropic surfaces"
|
||||||
#~ msgstr "Superficies anisótropas"
|
#~ msgstr "Superficies anisótropas"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+2316
-1677
File diff suppressed because it is too large
Load Diff
+1870
-1187
File diff suppressed because it is too large
Load Diff
+3457
-1679
File diff suppressed because it is too large
Load Diff
+2878
-1604
File diff suppressed because it is too large
Load Diff
+1072
-440
File diff suppressed because it is too large
Load Diff
+6572
-3161
File diff suppressed because it is too large
Load Diff
+3146
-1710
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+7185
-3424
File diff suppressed because it is too large
Load Diff
+1482
-703
File diff suppressed because it is too large
Load Diff
+2731
-1755
File diff suppressed because it is too large
Load Diff
+2595
-1465
File diff suppressed because it is too large
Load Diff
+4195
-2224
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Creality",
|
"name": "Creality",
|
||||||
"version": "02.03.02.75",
|
"version": "02.03.02.76",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "Creality configurations",
|
"description": "Creality configurations",
|
||||||
"machine_model_list": [
|
"machine_model_list": [
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -128,7 +128,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -124,7 +124,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -128,7 +128,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -128,7 +128,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
+1
-1
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "1",
|
"enable_prime_tower": "1",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
"draft_shield": "disabled",
|
"draft_shield": "disabled",
|
||||||
"elefant_foot_compensation": "0.15",
|
"elefant_foot_compensation": "0.15",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enable_prime_tower": "0",
|
"enable_prime_tower": "0",
|
||||||
"enable_support": "0",
|
"enable_support": "0",
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
+1
-1
@@ -126,7 +126,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
+1
-1
@@ -126,7 +126,7 @@
|
|||||||
"detect_narrow_internal_solid_infill": "1",
|
"detect_narrow_internal_solid_infill": "1",
|
||||||
"dont_filter_internal_bridges": "disabled",
|
"dont_filter_internal_bridges": "disabled",
|
||||||
"elefant_foot_compensation_layers": "1",
|
"elefant_foot_compensation_layers": "1",
|
||||||
"enable_arc_fitting": "1",
|
"enable_arc_fitting": "0",
|
||||||
"enable_overhang_speed": "1",
|
"enable_overhang_speed": "1",
|
||||||
"enforce_support_layers": "0",
|
"enforce_support_layers": "0",
|
||||||
"ensure_vertical_shell_thickness": "ensure_all",
|
"ensure_vertical_shell_thickness": "ensure_all",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Custom Printer",
|
"name": "Custom Printer",
|
||||||
"version": "02.04.00.01",
|
"version": "02.04.00.03",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "My configurations",
|
"description": "My configurations",
|
||||||
"machine_model_list": [
|
"machine_model_list": [
|
||||||
|
|||||||
@@ -24,12 +24,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -24,12 +24,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -24,12 +24,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -24,12 +24,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -25,12 +25,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -25,12 +25,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -25,12 +25,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -25,12 +25,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -25,12 +25,6 @@
|
|||||||
"filament_loading_speed_start": [
|
"filament_loading_speed_start": [
|
||||||
"50"
|
"50"
|
||||||
],
|
],
|
||||||
"filament_multitool_ramming": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"filament_multitool_ramming_flow": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"filament_stamping_distance": [
|
"filament_stamping_distance": [
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
"deretraction_speed": [
|
"deretraction_speed": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"z_hop_types": "Normal Lift",
|
"z_hop_types": "Slope Lift",
|
||||||
"silent_mode": "0",
|
"silent_mode": "0",
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "",
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
"deretraction_speed": [
|
"deretraction_speed": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"z_hop_types": "Normal Lift",
|
"z_hop_types": "Slope Lift",
|
||||||
"silent_mode": "0",
|
"silent_mode": "0",
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "",
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
"deretraction_speed": [
|
"deretraction_speed": [
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"z_hop_types": "Normal Lift",
|
"z_hop_types": "Slope Lift",
|
||||||
"silent_mode": "0",
|
"silent_mode": "0",
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "",
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
"instantiation": "false",
|
"instantiation": "false",
|
||||||
"gcode_flavor": "klipper",
|
"gcode_flavor": "klipper",
|
||||||
"single_extruder_multi_material": "0",
|
"single_extruder_multi_material": "0",
|
||||||
|
"wait_for_temp_on_wipe_tower": "1",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Generic PLA @MyToolChanger"
|
"Generic PLA @MyToolChanger"
|
||||||
],
|
],
|
||||||
@@ -172,11 +173,11 @@
|
|||||||
"0.4"
|
"0.4"
|
||||||
],
|
],
|
||||||
"z_hop_types": [
|
"z_hop_types": [
|
||||||
"Normal Lift",
|
"Slope Lift",
|
||||||
"Normal Lift",
|
"Slope Lift",
|
||||||
"Normal Lift",
|
"Slope Lift",
|
||||||
"Normal Lift",
|
"Slope Lift",
|
||||||
"Normal Lift"
|
"Slope Lift"
|
||||||
],
|
],
|
||||||
"purge_in_prime_tower": "0",
|
"purge_in_prime_tower": "0",
|
||||||
"machine_pause_gcode": "M601",
|
"machine_pause_gcode": "M601",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "OrcaFilamentLibrary",
|
"name": "OrcaFilamentLibrary",
|
||||||
"version": "02.04.00.03",
|
"version": "02.04.00.04",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "Orca Filament Library",
|
"description": "Orca Filament Library",
|
||||||
"filament_list": [
|
"filament_list": [
|
||||||
|
|||||||
@@ -36,6 +36,9 @@
|
|||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"8"
|
"8"
|
||||||
],
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"8"
|
||||||
|
],
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"PET-CF"
|
"PET-CF"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -39,6 +39,9 @@
|
|||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"8"
|
"8"
|
||||||
],
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"8"
|
||||||
|
],
|
||||||
"filament_vendor": [
|
"filament_vendor": [
|
||||||
"Bambu Lab"
|
"Bambu Lab"
|
||||||
],
|
],
|
||||||
|
|||||||
+3
@@ -39,6 +39,9 @@
|
|||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"6"
|
"6"
|
||||||
],
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"6"
|
||||||
|
],
|
||||||
"filament_vendor": [
|
"filament_vendor": [
|
||||||
"Bambu Lab"
|
"Bambu Lab"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -21,6 +21,9 @@
|
|||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"6"
|
"6"
|
||||||
],
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"6"
|
||||||
|
],
|
||||||
"filament_type": [
|
"filament_type": [
|
||||||
"PLA-AERO"
|
"PLA-AERO"
|
||||||
],
|
],
|
||||||
|
|||||||
+3
@@ -27,6 +27,9 @@
|
|||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"6"
|
"6"
|
||||||
],
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"6"
|
||||||
|
],
|
||||||
"filament_scarf_seam_type": [
|
"filament_scarf_seam_type": [
|
||||||
"none"
|
"none"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -21,6 +21,9 @@
|
|||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"6"
|
"6"
|
||||||
],
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"6"
|
||||||
|
],
|
||||||
"filament_vendor": [
|
"filament_vendor": [
|
||||||
"Bambu Lab"
|
"Bambu Lab"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -36,6 +36,9 @@
|
|||||||
"filament_max_volumetric_speed": [
|
"filament_max_volumetric_speed": [
|
||||||
"1"
|
"1"
|
||||||
],
|
],
|
||||||
|
"filament_multitool_ramming_flow": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
"filament_retraction_minimum_travel": [
|
"filament_retraction_minimum_travel": [
|
||||||
"3"
|
"3"
|
||||||
],
|
],
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user