Merge branch '5.3'

This commit is contained in:
Remco Burema 2023-02-23 13:41:00 +01:00
commit 5970524b3a
199 changed files with 390 additions and 504 deletions

View file

@ -109,9 +109,13 @@ jobs:
if: ${{ runner.os == 'Macos' }}
run: brew install autoconf automake ninja
# NOTE: Due to what are probably github issues, we have to remove the cache and reconfigure before the rest.
# This is maybe because grub caches the disk it uses last time, which is recreated each time.
- name: Install Linux system requirements
if: ${{ runner.os == 'Linux' }}
run: |
sudo rm /var/cache/debconf/config.dat
sudo dpkg --configure -a
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt update
sudo apt upgrade

View file

@ -7,110 +7,149 @@ name: conan-package
# It should run on pushes against main or CURA-* branches, but it will only create the binaries for main and release branches
on:
workflow_dispatch:
inputs:
create_binaries_windows:
required: true
default: false
description: 'create binaries Windows'
create_binaries_linux:
required: true
default: false
description: 'create binaries Linux'
create_binaries_macos:
required: true
default: false
description: 'create binaries Macos'
workflow_dispatch:
inputs:
create_binaries_windows:
required: true
default: false
description: 'create binaries Windows'
create_binaries_linux:
required: true
default: false
description: 'create binaries Linux'
create_binaries_macos:
required: true
default: false
description: 'create binaries Macos'
push:
paths:
- 'plugins/**'
- 'resources/**'
- 'cura/**'
- 'icons/**'
- 'tests/**'
- 'packaging/**'
- '.github/workflows/conan-*.yml'
- '.github/workflows/notify.yml'
- '.github/workflows/requirements-conan-package.txt'
- 'requirements*.txt'
- 'conanfile.py'
- 'conandata.yml'
- 'GitVersion.yml'
- '*.jinja'
branches:
- main
- 'CURA-*'
- '[1-9].[0-9]'
- '[1-9].[0-9][0-9]'
tags:
- '[1-9].[0-9].[0-9]*'
- '[1-9].[0-9].[0-9]'
- '[1-9].[0-9][0-9].[0-9]*'
push:
paths:
- 'plugins/**'
- 'resources/**'
- 'cura/**'
- 'icons/**'
- 'tests/**'
- 'packaging/**'
- '.github/workflows/conan-*.yml'
- '.github/workflows/notify.yml'
- '.github/workflows/requirements-conan-package.txt'
- 'requirements*.txt'
- 'conanfile.py'
- 'conandata.yml'
- 'GitVersion.yml'
- '*.jinja'
branches:
- main
- 'CURA-*'
- '[1-9].[0-9]'
- '[1-9].[0-9][0-9]'
tags:
- '[1-9].[0-9].[0-9]*'
- '[1-9].[0-9].[0-9]'
- '[1-9].[0-9][0-9].[0-9]*'
env:
CONAN_LOGIN_USERNAME_CURA: ${{ secrets.CONAN_USER }}
CONAN_PASSWORD_CURA: ${{ secrets.CONAN_PASS }}
CONAN_LOGIN_USERNAME_CURA_CE: ${{ secrets.CONAN_USER }}
CONAN_PASSWORD_CURA_CE: ${{ secrets.CONAN_PASS }}
CONAN_LOG_RUN_TO_OUTPUT: 1
CONAN_LOGGING_LEVEL: ${{ inputs.conan_logging_level }}
CONAN_NON_INTERACTIVE: 1
permissions: {}
jobs:
conan-recipe-version:
permissions:
contents: read
conan-recipe-version:
permissions:
contents: read
uses: ultimaker/cura/.github/workflows/conan-recipe-version.yml@main
uses: ultimaker/cura/.github/workflows/conan-recipe-version.yml@main
with:
project_name: cura
conan-package-create-linux:
needs: [ conan-recipe-version ]
runs-on: 'ubuntu-latest'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python and pip
uses: actions/setup-python@v4
with:
project_name: cura
python-version: '3.10.x'
cache: 'pip'
cache-dependency-path: .github/workflows/requirements-conan-package.txt
conan-package-export:
permissions:
contents: read
- name: Install Python requirements for runner
run: pip install -r https://raw.githubusercontent.com/Ultimaker/Cura/main/.github/workflows/requirements-conan-package.txt
# Note the runner requirements are always installed from the main branch in the Ultimaker/Cura repo
needs: [ conan-recipe-version ]
uses: ultimaker/cura/.github/workflows/conan-recipe-export.yml@main
- name: Use Conan download cache (Bash)
if: ${{ runner.os != 'Windows' }}
run: conan config set storage.download_cache="$HOME/.conan/conan_download_cache"
- name: Cache Conan local repository packages (Bash)
uses: actions/cache@v3
with:
recipe_id_full: ${{ needs.conan-recipe-version.outputs.recipe_id_full }}
recipe_id_latest: ${{ needs.conan-recipe-version.outputs.recipe_id_latest }}
runs_on: 'ubuntu-20.04'
python_version: '3.10.x'
conan_logging_level: 'info'
secrets: inherit
path: |
$HOME/.conan/data
$HOME/.conan/conan_download_cache
key: conan-ubuntu-${{ runner.arch }}-create-cache
conan-package-create-linux:
permissions:
contents: read
# NOTE: Due to what are probably github issues, we have to remove the cache and reconfigure before the rest.
# This is maybe because grub caches the disk it uses last time, which is recreated each time.
- name: Install Linux system requirements
if: ${{ runner.os == 'Linux' }}
run: |
sudo rm /var/cache/debconf/config.dat
sudo dpkg --configure -a
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt update
sudo apt upgrade
sudo apt install efibootmgr build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config flex bison -y
if: ${{ (github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master' || needs.conan-recipe-version.outputs.is_release_branch == 'true')) || (github.event_name == 'workflow_dispatch' && inputs.create_binaries_linux) }}
needs: [ conan-recipe-version, conan-package-export ]
- name: Install GCC-12
run: |
sudo apt install g++-12 gcc-12 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12
uses: ultimaker/cura/.github/workflows/conan-package-create.yml@main
with:
project_name: ${{ needs.conan-recipe-version.outputs.project_name }}
recipe_id_full: ${{ needs.conan-recipe-version.outputs.recipe_id_full }}
build_id: 1
runs_on: 'ubuntu-20.04'
python_version: '3.10.x'
conan_logging_level: 'info'
secrets: inherit
- name: Create the default Conan profile
run: conan profile new default --detect
notify-export:
if: ${{ always() }}
needs: [ conan-recipe-version, conan-package-export ]
- name: Get Conan configuration
run: conan config install https://github.com/Ultimaker/conan-config.git
uses: ultimaker/cura/.github/workflows/notify.yml@main
with:
success: ${{ contains(join(needs.*.result, ','), 'success') }}
success_title: "New Conan recipe exported in ${{ github.repository }}"
success_body: "Exported ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
failure_title: "Failed to export Conan Export in ${{ github.repository }}"
failure_body: "Failed to exported ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
secrets: inherit
- name: Create the Packages using lockfile
run: conan create . ${{ needs.conan-recipe-version.outputs.recipe_id_full }} --build=missing --update -o ${{ needs.conan-recipe-version.outputs.project_name }}:devtools=True
notify-create:
if: ${{ always() && ((github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master' || needs.conan-recipe-version.outputs.is_release_branch == 'true')) || (github.event_name == 'workflow_dispatch' && inputs.create_binaries_linux)) }}
needs: [ conan-recipe-version, conan-package-create-linux ]
- name: Remove the latest alias
if: ${{ needs.conan-recipe-version.outputs.recipe_id_latest != '' }}
run: |
conan remove ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} -r cura -f || true
conan remove ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} -r cura-ce -f || true
uses: ultimaker/cura/.github/workflows/notify.yml@main
with:
success: ${{ contains(join(needs.*.result, ','), 'success') }}
success_title: "New binaries created in ${{ github.repository }}"
success_body: "Created binaries for ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
failure_title: "Failed to create binaries in ${{ github.repository }}"
failure_body: "Failed to created binaries for ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
secrets: inherit
- name: Create the latest alias
if: ${{ needs.conan-recipe-version.outputs.recipe_id_latest != '' && always() }}
run: conan alias ${{ needs.conan-recipe-version.outputs.recipe_id_latest }} ${{ needs.conan-recipe-version.outputs.recipe_id_full }}
- name: Upload the Package(s)
if: always()
run: |
conan upload "*" -r cura --all -c
conan upload "*" -r cura-ce -c
notify-create:
if: ${{ always() && (github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master' || needs.conan-recipe-version.outputs.is_release_branch == 'true')) }}
needs: [ conan-recipe-version, conan-package-create-linux ]
uses: ultimaker/cura/.github/workflows/notify.yml@main
with:
success: ${{ contains(join(needs.*.result, ','), 'success') }}
success_title: "New binaries created in ${{ github.repository }}"
success_body: "Created binaries for ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
failure_title: "Failed to create binaries in ${{ github.repository }}"
failure_body: "Failed to created binaries for ${{ needs.conan-recipe-version.outputs.recipe_id_full }}"
secrets: inherit

View file

@ -122,9 +122,17 @@ jobs:
if: ${{ runner.os == 'Macos' }}
run: brew install autoconf automake ninja create-dmg # Delete create-dmg when deprecating dmg
- name: Hack needed specifically for ubuntu-22.04 from mid-Feb 2023 onwards
if: ${{ runner.os == 'Linux' && startsWith(inputs.platform, 'ubuntu-22.04') }}
run: sudo apt remove libodbc2 libodbcinst2 unixodbc-common -y
# NOTE: Due to what are probably github issues, we have to remove the cache and reconfigure before the rest.
# This is maybe because grub caches the disk it uses last time, which is recreated each time.
- name: Install Linux system requirements
if: ${{ runner.os == 'Linux' }}
run: |
sudo rm /var/cache/debconf/config.dat
sudo dpkg --configure -a
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
sudo apt update
sudo apt upgrade

View file

@ -105,9 +105,13 @@ jobs:
$HOME/.conan/conan_download_cache
key: conan-${{ runner.os }}-${{ runner.arch }}-unit-cache
# NOTE: Due to what are probably github issues, we have to remove the cache and reconfigure before the rest.
# This is maybe because grub caches the disk it uses last time, which is recreated each time.
- name: Install Linux system requirements
if: ${{ runner.os == 'Linux' }}
run: |
sudo rm /var/cache/debconf/config.dat
sudo dpkg --configure -a
sudo apt update
sudo apt upgrade
sudo apt install build-essential checkinstall libegl-dev zlib1g-dev libssl-dev ninja-build autoconf libx11-dev libx11-xcb-dev libfontenc-dev libice-dev libsm-dev libxau-dev libxaw7-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-dev libxmuu-dev libxpm-dev libxrandr-dev libxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev libxxf86vm-dev xtrans-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xkb-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-xinerama0-dev xkb-data libxcb-dri3-dev uuid-dev libxcb-util-dev libxkbcommon-x11-dev pkg-config -y

View file

@ -1,107 +1,90 @@
---
# Usage: defaults to the first entry in this conandata.yml file
# If you're on a release branch create an entry for that **version** e.q.: `5.1.0` update the requirements (use pinned versions, not latest)
# also create a beta entry for that **version** e.q.: `5.1.0-beta`, update the requirements (use the <dep_name>/(latest)@ultimaker/stable)
#
# If you're working on a feature/bugfix branch from a release branch, create an entry for that **channel**, update the requirements (use
# the <dep_name>/(latest)@ultimaker/stable)
#
# If you're working on a feature/bugfix branch from a main branch, it is optional to create an entry for that **channel**, update the
# requirements (use the <dep_name>/(latest)@ultimaker/testing)
#
# Subject to change in the future!
runinfo:
entrypoint: "cura_app.py"
pyinstaller:
datas:
cura_plugins:
package: "cura"
src: "plugins"
dst: "share/cura/plugins"
cura_resources:
package: "cura"
src: "resources"
dst: "share/cura/resources"
cura_private_data:
package: "cura_private_data"
src: "resources"
dst: "share/cura/resources"
internal: true
cura_private_data_plugins:
package: "cura_private_data"
src: "plugins"
dst: "share/cura/plugins"
internal: true
uranium_plugins:
package: "uranium"
src: "plugins"
dst: "share/uranium/plugins"
uranium_resources:
package: "uranium"
src: "resources"
dst: "share/uranium/resources"
uranium_um_qt_qml_um:
package: "uranium"
src: "site-packages/UM/Qt/qml/UM"
dst: "PyQt6/Qt6/qml/UM"
cura_binary_data:
package: "cura_binary_data"
src: "resources/cura/resources"
dst: "share/cura/resources"
uranium_binary_data:
package: "cura_binary_data"
src: "resources/uranium/resources"
dst: "share/uranium/resources"
windows_binary_data:
package: "cura_binary_data"
src: "windows"
dst: "share/windows"
fdm_materials:
package: "fdm_materials"
src: "materials"
dst: "share/cura/resources/materials"
tcl:
package: "tcl"
src: "lib/tcl8.6"
dst: "tcl"
tk:
package: "tk"
src: "lib/tk8.6"
dst: "tk"
binaries:
curaengine:
package: "curaengine"
src: "bin"
dst: "."
binary: "CuraEngine"
hiddenimports:
- "pySavitar"
- "pyArcus"
- "pynest2d"
- "PyQt6"
- "PyQt6.QtNetwork"
- "PyQt6.sip"
- "logging.handlers"
- "zeroconf"
- "fcntl"
- "stl"
- "serial"
collect_all:
- "cura"
- "UM"
- "serial"
- "Charon"
- "sqlite3"
- "trimesh"
- "win32ctypes"
- "PyQt6"
- "PyQt6.QtNetwork"
- "PyQt6.sip"
- "stl"
icon:
Windows: "./icons/Cura.ico"
Macos: "./icons/cura.icns"
Linux: "./icons/cura-128.png"
runinfo:
entrypoint: "cura_app.py"
datas:
cura_plugins:
package: "cura"
src: "plugins"
dst: "share/cura/plugins"
cura_resources:
package: "cura"
src: "resources"
dst: "share/cura/resources"
cura_private_data:
package: "cura_private_data"
src: "resources"
dst: "share/cura/resources"
internal: true
uranium_plugins:
package: "uranium"
src: "plugins"
dst: "share/uranium/plugins"
uranium_resources:
package: "uranium"
src: "resources"
dst: "share/uranium/resources"
uranium_um_qt_qml_um:
package: "uranium"
src: "site-packages/UM/Qt/qml/UM"
dst: "PyQt6/Qt6/qml/UM"
cura_binary_data:
package: "cura_binary_data"
src: "resources/cura/resources"
dst: "share/cura/resources"
uranium_binary_data:
package: "cura_binary_data"
src: "resources/uranium/resources"
dst: "share/uranium/resources"
windows_binary_data:
package: "cura_binary_data"
src: "windows"
dst: "share/windows"
fdm_materials:
package: "fdm_materials"
src: "materials"
dst: "share/cura/resources/materials"
tcl:
package: "tcl"
src: "lib/tcl8.6"
dst: "tcl"
tk:
package: "tk"
src: "lib/tk8.6"
dst: "tk"
binaries:
curaengine:
package: "curaengine"
src: "bin"
dst: "."
binary: "CuraEngine"
hiddenimports:
- "pySavitar"
- "pyArcus"
- "pynest2d"
- "PyQt6"
- "PyQt6.QtNetwork"
- "PyQt6.sip"
- "logging.handlers"
- "zeroconf"
- "fcntl"
- "stl"
- "serial"
collect_all:
- "cura"
- "UM"
- "serial"
- "Charon"
- "sqlite3"
- "trimesh"
- "win32ctypes"
- "PyQt6"
- "PyQt6.QtNetwork"
- "PyQt6.sip"
- "stl"
icon:
Windows: "./icons/Cura.ico"
Macos: "./icons/cura.icns"
Linux: "./icons/cura-128.png"
pycharm_targets:
- jinja_path: .run_templates/pycharm_cura_run.run.xml.jinja
module_name: Cura

View file

@ -6,7 +6,7 @@ from jinja2 import Template
from conan import ConanFile
from conan.tools.files import copy, rmdir, save, mkdir
from conan.tools.microsoft import unix_path
from conan.tools.env import VirtualRunEnv, Environment
from conan.tools.env import VirtualRunEnv, Environment, VirtualBuildEnv
from conan.tools.scm import Version
from conan.errors import ConanInvalidConfiguration, ConanException
@ -19,7 +19,7 @@ class CuraConan(ConanFile):
author = "UltiMaker"
url = "https://github.com/Ultimaker/cura"
description = "3D printer / slicing GUI built on top of the Uranium framework"
topics = ("conan", "python", "pyqt5", "qt", "qml", "3d-printing", "slicer")
topics = ("conan", "python", "pyqt6", "qt", "qml", "3d-printing", "slicer")
build_policy = "missing"
exports = "LICENSE*", "UltiMaker-Cura.spec.jinja", "CuraVersion.py.jinja"
settings = "os", "compiler", "build_type", "arch"
@ -48,12 +48,6 @@ class CuraConan(ConanFile):
"cura_debug_mode": False, # Not yet implemented
"internal": False,
}
scm = {
"type": "git",
"subfolder": ".",
"url": "auto",
"revision": "auto"
}
@property
def _pycharm_targets(self):
@ -161,7 +155,7 @@ class CuraConan(ConanFile):
return "None"
def _generate_cura_version(self, location):
with open(Path(__file__).parent.joinpath("CuraVersion.py.jinja"), "r") as f:
with open(os.path.join(self.recipe_folder, "CuraVersion.py.jinja"), "r") as f:
cura_version_py = Template(f.read())
# If you want a specific Cura version to show up on the splash screen add the user configuration `user.cura:version=VERSION`
@ -172,7 +166,7 @@ class CuraConan(ConanFile):
internal_tag = f"+internal" if self.options.internal else ""
cura_version = f"{cura_version.major}.{cura_version.minor}.{cura_version.patch}{pre_tag}{build_tag}{internal_tag}"
with open(Path(location, "CuraVersion.py"), "w") as f:
with open(os.path.join(location, "CuraVersion.py"), "w") as f:
f.write(cura_version_py.render(
cura_app_name = self.name,
cura_app_display_name = self._app_name,
@ -196,33 +190,33 @@ class CuraConan(ConanFile):
if "package" in data: # get the paths from conan package
if data["package"] == self.name:
if self.in_local_cache:
src_path = Path(self.package_folder, data["src"])
src_path = os.path.join(self.package_folder, data["src"])
else:
src_path = Path(self.source_folder, data["src"])
src_path = os.path.join(self.source_folder, data["src"])
else:
src_path = Path(self.deps_cpp_info[data["package"]].rootpath, data["src"])
src_path = os.path.join(self.deps_cpp_info[data["package"]].rootpath, data["src"])
elif "root" in data: # get the paths relative from the sourcefolder
src_path = Path(self.source_folder, data["root"], data["src"])
src_path = os.path.join(self.source_folder, data["root"], data["src"])
else:
continue
if src_path.exists():
if Path(src_path).exists():
datas.append((str(src_path), data["dst"]))
binaries = []
for binary in pyinstaller_metadata["binaries"].values():
if "package" in binary: # get the paths from conan package
src_path = Path(self.deps_cpp_info[binary["package"]].rootpath, binary["src"])
src_path = os.path.join(self.deps_cpp_info[binary["package"]].rootpath, binary["src"])
elif "root" in binary: # get the paths relative from the sourcefolder
src_path = Path(self.source_folder, binary["root"], binary["src"])
src_path = os.path.join(self.source_folder, binary["root"], binary["src"])
else:
continue
if not src_path.exists():
if not Path(src_path).exists():
self.output.warning(f"Source path for binary {binary['binary']} does not exist")
continue
for bin in src_path.glob(binary["binary"] + "*[.exe|.dll|.so|.dylib|.so.]*"):
for bin in Path(src_path).glob(binary["binary"] + "*[.exe|.dll|.so|.dylib|.so.]*"):
binaries.append((str(bin), binary["dst"]))
for bin in src_path.glob(binary["binary"]):
for bin in Path(src_path).glob(binary["binary"]):
binaries.append((str(bin), binary["dst"]))
# Make sure all Conan dependencies which are shared are added to the binary list for pyinstaller
@ -240,13 +234,13 @@ class CuraConan(ConanFile):
# Collect all dll's from PyQt6 and place them in the root
binaries.extend([(f"{p}", ".") for p in Path(self._site_packages, "PyQt6", "Qt6").glob("**/*.dll")])
with open(Path(__file__).parent.joinpath("UltiMaker-Cura.spec.jinja"), "r") as f:
with open(os.path.join(self.recipe_folder, "UltiMaker-Cura.spec.jinja"), "r") as f:
pyinstaller = Template(f.read())
version = self.conf_info.get("user.cura:version", default = self.version, check_type = str)
cura_version = Version(version)
with open(Path(location, "UltiMaker-Cura.spec"), "w") as f:
with open(os.path.join(location, "UltiMaker-Cura.spec"), "w") as f:
f.write(pyinstaller.render(
name = str(self.options.display_name).replace(" ", "-"),
display_name = self._app_name,
@ -267,6 +261,20 @@ class CuraConan(ConanFile):
short_version = f"'{cura_version.major}.{cura_version.minor}.{cura_version.patch}'",
))
def export_sources(self):
copy(self, "*", os.path.join(self.recipe_folder, "plugins"), os.path.join(self.export_sources_folder, "plugins"))
copy(self, "*", os.path.join(self.recipe_folder, "resources"), os.path.join(self.export_sources_folder, "resources"), excludes = "*.mo")
copy(self, "*", os.path.join(self.recipe_folder, "tests"), os.path.join(self.export_sources_folder, "tests"))
copy(self, "*", os.path.join(self.recipe_folder, "cura"), os.path.join(self.export_sources_folder, "cura"), excludes="CuraVersion.py")
copy(self, "*", os.path.join(self.recipe_folder, "packaging"), os.path.join(self.export_sources_folder, "packaging"))
copy(self, "*", os.path.join(self.recipe_folder, ".run_templates"), os.path.join(self.export_sources_folder, "run_templates"))
copy(self, "requirements.txt", self.recipe_folder, self.export_sources_folder)
copy(self, "requirements-dev.txt", self.recipe_folder, self.export_sources_folder)
copy(self, "requirements-ultimaker.txt", self.recipe_folder, self.export_sources_folder)
copy(self, "UltiMaker-Cura.spec.jinja", self.recipe_folder, self.export_sources_folder)
copy(self, "CuraVersion.py.jinja", self.recipe_folder, self.export_sources_folder)
copy(self, "cura_app.py", self.recipe_folder, self.export_sources_folder)
def set_version(self):
if self.version is None:
self.version = self._umdefault_version()
@ -303,45 +311,54 @@ class CuraConan(ConanFile):
def layout(self):
self.folders.source = "."
self.folders.build = "venv"
self.folders.generators = Path(self.folders.build, "conan")
self.folders.generators = os.path.join(self.folders.build, "conan")
self.cpp.package.libdirs = [os.path.join("site-packages", "cura")]
self.cpp.package.bindirs = ["bin"]
self.cpp.package.resdirs = ["resources", "plugins", "packaging", "pip_requirements"] # pip_requirements should be the last item in the list
def build(self):
if self.options.devtools:
if self.settings.os != "Windows" or self.conf.get("tools.microsoft.bash:path", check_type = str):
# FIXME: once m4, autoconf, automake are Conan V2 ready use self.win_bash and add gettext as base tool_requirement
cpp_info = self.dependencies["gettext"].cpp_info
for po_file in self.source_path.joinpath("resources", "i18n").glob("**/*.po"):
mo_file = self.build_path.joinpath(po_file.with_suffix('.mo').relative_to(self.source_path))
mkdir(self, str(unix_path(self, mo_file.parent)))
self.run(f"{cpp_info.bindirs[0]}/msgfmt {po_file} -o {mo_file} -f", env="conanbuild", ignore_errors=True)
def generate(self):
copy(self, "cura_app.py", self.source_folder, str(self._script_dir))
cura_run_envvars = self._cura_run_env.vars(self, scope = "run")
ext = ".ps1" if self.settings.os == "Windows" else ".sh"
cura_run_envvars.save_script(self.folders.generators.joinpath(f"cura_run_environment{ext}"))
cura_run_envvars.save_script(os.path.join(self.folders.generators, f"cura_run_environment{ext}"))
vr = VirtualRunEnv(self)
vr.generate()
self._generate_cura_version(Path(self.source_folder, "cura"))
self._generate_cura_version(os.path.join(self.source_folder, "cura"))
if self.options.devtools:
entitlements_file = "'{}'".format(Path(self.source_folder, "packaging", "MacOS", "cura.entitlements"))
entitlements_file = "'{}'".format(os.path.join(self.source_folder, "packaging", "MacOS", "cura.entitlements"))
self._generate_pyinstaller_spec(location = self.generators_folder,
entrypoint_location = "'{}'".format(Path(self.source_folder, self.conan_data["runinfo"]["entrypoint"])).replace("\\", "\\\\"),
icon_path = "'{}'".format(Path(self.source_folder, "packaging", self.conan_data["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"),
entrypoint_location = "'{}'".format(os.path.join(self.source_folder, self.conan_data["pyinstaller"]["runinfo"]["entrypoint"])).replace("\\", "\\\\"),
icon_path = "'{}'".format(os.path.join(self.source_folder, "packaging", self.conan_data["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"),
entitlements_file = entitlements_file if self.settings.os == "Macos" else "None")
# Update the po files
if self.settings.os != "Windows" or self.conf.get("tools.microsoft.bash:path", check_type=str):
vb = VirtualBuildEnv(self)
vb.generate()
# FIXME: once m4, autoconf, automake are Conan V2 ready use self.win_bash and add gettext as base tool_requirement
cpp_info = self.dependencies["gettext"].cpp_info
for po_file in self.source_path.joinpath("resources", "i18n").glob("**/*.po"):
pot_file = self.source_path.joinpath("resources", "i18n", po_file.with_suffix('.pot').name)
mkdir(self, str(unix_path(self, pot_file.parent)))
self.run(
f"{cpp_info.bindirs[0]}/msgmerge --no-wrap --no-fuzzy-matching -width=140 -o {po_file} {po_file} {pot_file}",
env="conanbuild", ignore_errors=True)
def build(self):
if self.options.devtools:
if self.settings.os != "Windows" or self.conf.get("tools.microsoft.bash:path", check_type = str):
# FIXME: once m4, autoconf, automake are Conan V2 ready use self.win_bash and add gettext as base tool_requirement
# Extract all the new strings and update the existing po files
extractTool = self.python_requires["translationextractor"].module.ExtractTranslations(self, self.source_path.joinpath("resources", "i18n"), "cura.pot")
extractTool.generate()
for po_file in self.source_path.joinpath("resources", "i18n").glob("**/*.po"):
mo_file = Path(self.build_folder, po_file.with_suffix('.mo').relative_to(self.source_path))
mo_file = mo_file.parent.joinpath("LC_MESSAGES", mo_file.name)
mkdir(self, str(unix_path(self, Path(mo_file).parent)))
cpp_info = self.dependencies["gettext"].cpp_info
self.run(f"{cpp_info.bindirs[0]}/msgfmt {po_file} -o {mo_file} -f", env="conanbuild", ignore_errors=True)
def imports(self):
self.copy("CuraEngine.exe", root_package = "curaengine", src = "@bindirs", dst = "", keep_path = False)
@ -402,7 +419,7 @@ class CuraConan(ConanFile):
self.copy_deps("*", root_package = "uranium", src = self.deps_cpp_info["uranium"].libdirs[0],
dst = self._site_packages.joinpath("UM"),
keep_path = True)
self.copy_deps("*", root_package = "uranium", src = str(Path(self.deps_cpp_info["uranium"].libdirs[0], "Qt", "qml", "UM")),
self.copy_deps("*", root_package = "uranium", src = str(os.path.join(self.deps_cpp_info["uranium"].libdirs[0], "Qt", "qml", "UM")),
dst = self._site_packages.joinpath("PyQt6", "Qt6", "qml", "UM"),
keep_path = True)
@ -445,24 +462,24 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV
env_prefix = env_prefix)
ext = ".sh" if self.settings.os != "Windows" else ".ps1"
save(self, self._script_dir.joinpath(f"activate_github_actions_version_env{ext}"), activate_github_actions_version_env)
save(self, os.path.join(self._script_dir, f"activate_github_actions_version_env{ext}"), activate_github_actions_version_env)
self._generate_cura_version(Path(self._site_packages, "cura"))
self._generate_cura_version(os.path.join(self._site_packages, "cura"))
entitlements_file = "'{}'".format(Path(self.cpp_info.res_paths[2], "MacOS", "cura.entitlements"))
self._generate_pyinstaller_spec(location = self._base_dir,
entrypoint_location = "'{}'".format(Path(self.cpp_info.bin_paths[0], self.conan_data["runinfo"]["entrypoint"])).replace("\\", "\\\\"),
icon_path = "'{}'".format(Path(self.cpp_info.res_paths[2], self.conan_data["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"),
entrypoint_location = "'{}'".format(os.path.join(self.package_folder, self.cpp_info.bindirs[0], self.conan_data["pyinstaller"]["runinfo"]["entrypoint"])).replace("\\", "\\\\"),
icon_path = "'{}'".format(os.path.join(self.package_folder, self.cpp_info.resdirs[2], self.conan_data["pyinstaller"]["icon"][str(self.settings.os)])).replace("\\", "\\\\"),
entitlements_file = entitlements_file if self.settings.os == "Macos" else "None")
def package(self):
copy(self, "cura_app.py", src = self.source_path, dst = self.package_path.joinpath(self.cpp.package.bindirs[0]))
copy(self, "*", src = self.source_path.joinpath("cura"), dst = self.package_path.joinpath(self.cpp.package.libdirs[0]))
copy(self, "*", src = self.source_path.joinpath("resources"), dst = self.package_path.joinpath(self.cpp.package.resdirs[0]), excludes="*.po")
copy(self, "*", src = self.build_path.joinpath("resources"), dst = self.package_path.joinpath(self.cpp.package.resdirs[0]))
copy(self, "*", src = self.source_path.joinpath("plugins"), dst = self.package_path.joinpath(self.cpp.package.resdirs[1]))
copy(self, "requirement*.txt", src = self.source_path, dst = self.package_path.joinpath(self.cpp.package.resdirs[-1]))
copy(self, "*", src = self.source_path.joinpath("packaging"), dst = self.package_path.joinpath(self.cpp.package.resdirs[2]))
copy(self, "cura_app.py", src = self.source_folder, dst = os.path.join(self.package_folder, self.cpp.package.bindirs[0]))
copy(self, "*", src = os.path.join(self.source_folder, "cura"), dst = os.path.join(self.package_folder, self.cpp.package.libdirs[0]))
copy(self, "*", src = os.path.join(self.source_folder, "resources"), dst = os.path.join(self.package_folder, self.cpp.package.resdirs[0]))
copy(self, "*.mo", os.path.join(self.build_folder, "resources"), os.path.join(self.package_folder, "resources"))
copy(self, "*", src = os.path.join(self.source_folder, "plugins"), dst = os.path.join(self.package_folder, self.cpp.package.resdirs[1]))
copy(self, "requirement*.txt", src = self.source_folder, dst = os.path.join(self.package_folder, self.cpp.package.resdirs[-1]))
copy(self, "*", src = os.path.join(self.source_folder, "packaging"), dst = os.path.join(self.package_folder, self.cpp.package.resdirs[2]))
def package_info(self):
self.user_info.pip_requirements = "requirements.txt"
@ -470,8 +487,8 @@ echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV
self.user_info.pip_requirements_build = "requirements-dev.txt"
if self.in_local_cache:
self.runenv_info.append_path("PYTHONPATH", str(Path(self.cpp_info.lib_paths[0]).parent))
self.runenv_info.append_path("PYTHONPATH", self.cpp_info.res_paths[1]) # Add plugins to PYTHONPATH
self.runenv_info.append_path("PYTHONPATH", os.path.join(self.package_folder, "site-packages"))
self.runenv_info.append_path("PYTHONPATH", os.path.join(self.package_folder, "plugins"))
else:
self.runenv_info.append_path("PYTHONPATH", self.source_folder)
self.runenv_info.append_path("PYTHONPATH", os.path.join(self.source_folder, "plugins"))

View file

@ -32,6 +32,7 @@ class FlavorParser:
"""This parser is intended to interpret the common firmware codes among all the different flavors"""
MAX_EXTRUDER_COUNT = 16
DEFAULT_FILAMENT_DIAMETER = 2.85
def __init__(self) -> None:
CuraApplication.getInstance().hideMessageSignal.connect(self._onHideMessage)
@ -48,7 +49,7 @@ class FlavorParser:
self._is_layers_in_file = False # Does the Gcode have the layers comment?
self._extruder_offsets = {} # type: Dict[int, List[float]] # Offsets for multi extruders. key is index, value is [x-offset, y-offset]
self._current_layer_thickness = 0.2 # default
self._filament_diameter = 2.85 # default
self._current_filament_diameter = 2.85 # default
self._previous_extrusion_value = 0.0 # keep track of the filament retractions
CuraApplication.getInstance().getPreferences().addPreference("gcodereader/show_caution", True)
@ -152,7 +153,7 @@ class FlavorParser:
def _calculateLineWidth(self, current_point: Position, previous_point: Position, current_extrusion: float, previous_extrusion: float, layer_thickness: float) -> float:
# Area of the filament
Af = (self._filament_diameter / 2) ** 2 * numpy.pi
Af = (self._current_filament_diameter / 2) ** 2 * numpy.pi
# Length of the extruded filament
de = current_extrusion - previous_extrusion
# Volume of the extruded filament
@ -287,7 +288,11 @@ class FlavorParser:
def processTCode(self, global_stack, T: int, line: str, position: Position, path: List[List[Union[float, int]]]) -> Position:
self._extruder_number = T
self._filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
try:
self._current_filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
except IndexError:
self._current_filament_diameter = self.DEFAULT_FILAMENT_DIAMETER
if self._extruder_number + 1 > len(position.e):
self._extrusion_length_offset.extend([0] * (self._extruder_number - len(position.e) + 1))
position.e.extend([0] * (self._extruder_number - len(position.e) + 1))
@ -323,7 +328,11 @@ class FlavorParser:
if not global_stack:
return None
self._filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
try:
self._current_filament_diameter = global_stack.extruderList[self._extruder_number].getProperty("material_diameter", "value")
except IndexError:
# There can be a mismatch between the number of extruders in the G-Code file and the number of extruders in the current machine.
self._current_filament_diameter = self.DEFAULT_FILAMENT_DIAMETER
scene_node = CuraSceneNode()

View file

@ -133,7 +133,6 @@
"support_interface_pattern": { "value": "zigzag" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 0 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -134,7 +134,6 @@
"support_interface_pattern": { "value": "zigzag" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 0 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -121,7 +121,6 @@
"support_interface_pattern": { "value": "zigzag" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 0 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -115,7 +115,6 @@
"support_structure": { "value": "'tree'" },
"support_top_distance": { "value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'support_z_distance') + (layer_height if support_structure == 'tree' else 0)" },
"support_type": { "value": "'buildplate' if support_structure == 'tree' else 'everywhere'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -156,7 +156,6 @@
"support_interface_height": { "value": "layer_height * 4" },
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_use_towers": { "value": false },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_xy_overrides_z": { "value": "'xy_overrides_z'" },

View file

@ -221,7 +221,6 @@
"support_offset": { "value": "1.5" },
"support_pattern": { "default_value": "zigzag" },
"support_top_distance": { "value": "support_z_distance" },
"support_use_towers": { "value": "True" },
"support_xy_distance": { "value": "wall_line_width_0 * 2.5" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "layer_height" },

View file

@ -110,7 +110,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -99,7 +99,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_xy_overrides_z": { "value": "'xy_overrides_z'" },

View file

@ -160,7 +160,6 @@
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_top_distance": { "value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'support_z_distance') + (layer_height if support_structure == 'tree' else 0)" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -78,7 +78,6 @@
"speed_z_hop": { "value": "speed_travel" },
"support_bottom_distance": { "value": "layer_height" },
"support_bottom_enable": { "value": false },
"support_use_towers": { "default_value": false },
"support_wall_count": { "value": "1" },
"support_z_distance": { "value": "layer_height" },
"switch_extruder_retraction_amount": { "value": 10 },

View file

@ -123,11 +123,9 @@
"support_interface_density": { "default_value": 33.333 },
"support_interface_pattern": { "default_value": "lines" },
"support_material_flow": { "value": "material_flow * 0.95" },
"support_offset": { "default_value": 0.3 },
"support_roof_pattern": { "value": "'grid'" },
"support_top_distance": { "value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'layer_height') + (0 if support_structure == 'tree' else 0)" },
"support_tower_maximum_supported_diameter": { "value": "1" },
"support_use_towers": { "default_value": false },
"support_xy_distance": { "value": "machine_nozzle_size * 1.7" },
"support_xy_distance_overhang": { "value": "machine_nozzle_size * 1.2 if support_interface_enable else machine_nozzle_size * 0.8" },
"support_z_distance": { "value": "layer_height * 1.2 if (support_interface_enable and support_bottom_enable and layer_height < 0.16) or support_bottom_enable else layer_height" },

View file

@ -95,7 +95,6 @@
"support_pattern": { "value": "'triangles'" },
"support_roof_enable": { "value": true },
"support_type": { "value": "'everywhere'" },
"support_use_towers": { "value": false },
"support_xy_distance": { "value": 0.7 },
"support_xy_distance_overhang": { "value": 0.2 },
"support_z_distance": { "value": 0.3 },

View file

@ -115,7 +115,6 @@
"support_interface_enable": { "value": true },
"support_pattern": { "value": "'triangles'" },
"support_roof_enable": { "value": true },
"support_use_towers": { "value": false },
"support_z_distance": { "value": 0.3 },
"top_layers": { "value": 6 },
"top_thickness": { "value": "layer_height * top_layers" },

View file

@ -4419,7 +4419,7 @@
"type": "float",
"value": "material_print_temperature",
"enabled": "cool_min_layer_time > 0",
"minimum_value": "material_final_print_temperature",
"minimum_value": "max(material_final_print_temperature, material_initial_print_temperature)",
"maximum_value": "material_print_temperature",
"settable_per_mesh": false,
"settable_per_extruder": true
@ -4698,7 +4698,7 @@
"maximum_value": "999999",
"type": "int",
"value": "1 if (support_interface_pattern == 'zigzag') else 0",
"enabled": "support_interface_enable or support_meshes_present",
"enabled": "(support_enable and support_interface_enable) or support_meshes_present",
"limit_to_extruder": "support_interface_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true,
@ -4715,7 +4715,7 @@
"maximum_value": "999999",
"type": "int",
"value": "support_interface_wall_count",
"enabled": "support_interface_enable or support_meshes_present",
"enabled": "(support_enable and support_interface_enable) or support_meshes_present",
"limit_to_extruder": "support_interface_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
@ -4731,7 +4731,7 @@
"maximum_value": "999999",
"type": "int",
"value": "support_interface_wall_count",
"enabled": "support_interface_enable or support_meshes_present",
"enabled": "(support_enable and support_interface_enable) or support_meshes_present",
"limit_to_extruder": "support_interface_extruder_nr",
"settable_per_mesh": false,
"settable_per_extruder": true
@ -4957,6 +4957,7 @@
"unit": "mm",
"type": "float",
"default_value": 0.3,
"value": "0 if support_bottom_enable else 0.3",
"limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
"minimum_value": "0",
"maximum_value_warning": "1.0",
@ -4970,10 +4971,10 @@
"unit": "mm",
"type": "float",
"default_value": 5.0,
"limit_to_extruder": "support_interface_extruder_nr if support_interface_enable else support_infill_extruder_nr",
"limit_to_extruder": "support_interface_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
"minimum_value": "0",
"maximum_value_warning": "10.0",
"enabled": "support_enable or support_meshes_present",
"enabled": "(support_enable or support_meshes_present) and support_bottom_stair_step_height > 0",
"settable_per_mesh": true
},
"support_bottom_stair_step_min_slope":
@ -4986,7 +4987,7 @@
"limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
"minimum_value": "0.01",
"maximum_value": "89.99",
"enabled": "support_enable or support_meshes_present",
"enabled": "(support_enable or support_meshes_present) and support_bottom_stair_step_height > 0",
"settable_per_mesh": true
},
"support_join_distance":
@ -5009,7 +5010,8 @@
"description": "Amount of offset applied to all support polygons in each layer. Positive values can smooth out the support areas and result in more sturdy support.",
"unit": "mm",
"type": "float",
"default_value": 0,
"default_value": 0.8,
"value": "support_line_width + 0.4",
"limit_to_extruder": "support_infill_extruder_nr",
"minimum_value_warning": "-1 * machine_nozzle_size",
"maximum_value_warning": "10 * machine_nozzle_size",
@ -5093,7 +5095,7 @@
"default_value": false,
"value": "extruderValue(support_roof_extruder_nr, 'support_interface_enable')",
"limit_to_extruder": "support_roof_extruder_nr",
"enabled": "support_enable or support_meshes_present",
"enabled": "(support_enable or support_meshes_present) and support_interface_enable",
"settable_per_mesh": true
},
"support_bottom_enable":
@ -5104,7 +5106,7 @@
"default_value": false,
"value": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable')",
"limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "support_enable or support_meshes_present",
"enabled": "(support_enable or support_meshes_present) and support_interface_enable",
"settable_per_mesh": true
}
}
@ -5162,7 +5164,8 @@
"description": "When checking where there's model above and below the support, take steps of the given height. Lower values will slice slower, while higher values may cause normal support to be printed in some places where there should have been support interface.",
"unit": "mm",
"type": "float",
"default_value": 0.3,
"default_value": 0.2,
"value": "layer_height",
"minimum_value": "0",
"maximum_value_warning": "support_interface_height",
"limit_to_extruder": "support_interface_extruder_nr",

View file

@ -166,7 +166,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -114,7 +114,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 0 },
"support_xy_distance": { "value": "wall_line_width_0 * 3" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -316,7 +316,6 @@
"support_join_distance": { "value": 5.0 },
"support_offset": { "value": 3.0 },
"support_tree_angle": { "value": 60 },
"support_use_towers": { "value": false },
"support_wall_count": { "value": "1 if (support_structure == 'tree') else 0" },
"support_z_distance": { "value": "layer_height if (2*layer_height > 0.8*machine_nozzle_size) else (2*layer_height)" },
"top_bottom_pattern": { "value": "'zigzag'" },

View file

@ -226,7 +226,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -72,7 +72,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -90,7 +90,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -90,7 +90,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -142,7 +142,6 @@
"speed_wall_x": { "value": "speed_wall" },
"support_angle": { "value": "45" },
"support_pattern": { "value": "'triangles'" },
"support_use_towers": { "value": "False" },
"support_xy_distance": { "value": "wall_line_width_0 * 2.5" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "0" },

View file

@ -111,7 +111,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -61,7 +61,6 @@
"speed_wall_x": { "value": 32 },
"support_infill_rate": { "value": 5 },
"support_pattern": { "default_value": "lines" },
"support_use_towers": { "value": false },
"switch_extruder_retraction_amount": { "value": 100 },
"switch_extruder_retraction_speeds": { "value": 60 },
"wall_overhang_speed_factor": { "value": 50 },

View file

@ -124,7 +124,6 @@
"support_tower_diameter": { "value": 3 },
"support_tower_roof_angle": { "value": "65" },
"support_type": { "value": "'everywhere'" },
"support_use_towers": { "value": true },
"support_wall_count": { "value": "1 if (support_structure == 'tree') else 0" },
"support_xy_distance": { "value": 0.7 },
"support_xy_distance_overhang": { "value": 0.2 },

View file

@ -162,7 +162,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -132,10 +132,8 @@
"support_interface_enable": { "default_value": true },
"support_interface_height": { "value": "layer_height * 4" },
"support_interface_pattern": { "default_value": "grid" },
"support_interface_skip_height": { "default_value": 0.24 },
"support_pattern": { "default_value": "zigzag" },
"support_type": { "default_value": "buildplate" },
"support_use_towers": { "default_value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -75,7 +75,6 @@
"support_interface_density": { "value": 40 },
"support_interface_enable": { "value": true },
"support_interface_height": { "value": "layer_height * 3" },
"support_use_towers": { "value": false },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "layer_height if layer_height >= 0.2 else layer_height * 2" },

View file

@ -75,7 +75,6 @@
"support_interface_density": { "value": 40 },
"support_interface_enable": { "value": true },
"support_interface_height": { "value": "layer_height * 3" },
"support_use_towers": { "value": false },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "layer_height if layer_height >= 0.2 else layer_height * 2" },

View file

@ -228,7 +228,6 @@
"support_interface_material_flow": { "value": "99" },
"support_line_distance": { "value": "0 if support_infill_rate == 0 else (support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))" },
"support_material_flow": { "value": "98" },
"support_offset": { "default_value": 0.2 },
"support_roof_density": { "value": "70" },
"support_roof_extruder_nr": { "value": "0" },
"support_roof_height": { "value": "0.4" },
@ -238,7 +237,6 @@
"support_skip_zag_per_mm": { "default_value": 10 },
"support_top_distance": { "value": "0.2" },
"support_tree_collision_resolution": { "value": "0.2" },
"support_use_towers": { "default_value": false },
"support_xy_distance": { "default_value": 0.6 },
"support_xy_distance_overhang": { "value": "0.5" },
"support_z_distance": { "default_value": 0.2 },

View file

@ -277,7 +277,6 @@
"maximum_value_warning": "machine_nozzle_size*1.5",
"value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'support_z_distance')"
},
"support_use_towers": { "default_value": true },
"support_xy_distance": { "value": "line_width * 1.7" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance":

View file

@ -72,7 +72,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -113,7 +113,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": "1 if (support_structure == 'tree') else 0" },
"support_xy_distance": { "value": "wall_line_width_0 * 3" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -70,7 +70,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": "1 if (support_structure == 'tree') else 0" },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -41,7 +41,7 @@
"cool_min_layer_time": { "value": 6 },
"cool_min_layer_time_fan_speed_max": { "value": "cool_min_layer_time + 5" },
"cool_min_speed": { "value": "round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5)" },
"cool_min_temperature": { "value": "material_print_temperature - 15" },
"cool_min_temperature": { "value": "max([material_final_print_temperature, material_initial_print_temperature, material_print_temperature - 15])" },
"gradual_support_infill_step_height": { "value": "4 * layer_height" },
"gradual_support_infill_steps": { "value": "2 if support_interface_enable else 0" },
"infill_material_flow": { "value": "(1.95-infill_sparse_density / 100 if infill_sparse_density > 95 else 1) * material_flow" },
@ -81,7 +81,6 @@
},
"meshfix_maximum_deviation": { "value": "machine_nozzle_size / 10" },
"meshfix_maximum_resolution": { "value": "max(speed_wall_0 / 75, 0.5)" },
"minimum_support_area": { "value": "2" },
"raft_base_speed": { "value": "raft_speed" },
"raft_base_thickness": { "value": "min(machine_nozzle_size * 0.75, 0.3)" },
"raft_interface_fan_speed": { "value": "(raft_base_fan_speed + raft_surface_fan_speed) / 2" },
@ -117,12 +116,10 @@
"support_interface_material_flow": { "value": "skin_material_flow" },
"support_interface_offset": { "value": "support_offset" },
"support_interface_pattern": { "value": "'zigzag'" },
"support_interface_skip_height": { "value": "layer_height" },
"support_line_distance": { "minimum_value_warning": "0 if support_structure == 'tree' else support_line_width" },
"support_offset": { "value": "0.9 if support_interface_enable else 0" },
"support_tower_maximum_supported_diameter": { "value": "support_tower_diameter" },
"support_tower_roof_angle": { "value": "0 if support_interface_enable else 65" },
"support_wall_count": { "value": "1 if support_structure == 'tree' else 0" },
"support_xy_distance": { "value": "1" },
"support_xy_distance_overhang": { "value": "0.2" },
"support_z_distance": { "value": "0" },
"top_layers": { "value": "math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))" },

View file

@ -101,11 +101,6 @@
"machine_width": { "default_value": 223 },
"material_bed_temperature": { "maximum_value": 110 },
"material_bed_temperature_layer_0": { "maximum_value": 110 },
"material_initial_print_temperature":
{
"maximum_value": 260,
"value": "material_print_temperature"
},
"material_print_temperature": { "maximum_value": 260 },
"material_print_temperature_layer_0": { "maximum_value": 260 },
"meshfix_maximum_deviation": { "value": "(layer_height / 3) if magic_spiralize else (layer_height / 4)" },

View file

@ -101,7 +101,6 @@
"support_interface_pattern": { "value": "'grid'" },
"support_interface_skip_height": { "value": 0.2 },
"support_pattern": { "value": "'zigzag'" },
"support_use_towers": { "value": false },
"support_wall_count": { "value": 1 },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },

View file

@ -262,7 +262,6 @@
"support_fan_enable": { "value": true },
"support_pattern": { "value": "'zigzag'" },
"support_supported_skin_fan_speed": { "value": 100 },
"support_use_towers": { "value": true },
"support_xy_distance": { "value": "wall_line_width_0 * 2" },
"support_xy_distance_overhang": { "value": "wall_line_width_0" },
"support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" },

View file

@ -714,7 +714,7 @@ UM.Window
{
if(!materialsSyncDialog.hasExportedUsb)
{
exportUsbDialog.currentFolder = syncModel.getPreferredExportAllPath();
exportUsbDialog.currentFolder = `${syncModel.getPreferredExportAllPath()}/materials.umm`;
exportUsbDialog.open();
}
else

View file

@ -17,7 +17,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = 190
retraction_hop = 0.2
skin_overlap = 5

View file

@ -14,12 +14,11 @@ weight = 0
[values]
brim_width = 10
cool_min_temperature = =material_print_temperature - 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 15
multiple_mesh_overlap = 0
prime_tower_enable = False

View file

@ -17,7 +17,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature - 15
skin_overlap = 5
speed_print = 30

View file

@ -14,7 +14,6 @@ weight = -2
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = False
skin_overlap = 20

View file

@ -14,7 +14,6 @@ weight = -1
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
speed_print = 60

View file

@ -14,7 +14,6 @@ weight = 1
[values]
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature - 5
prime_tower_enable = False
speed_print = 50

View file

@ -14,7 +14,6 @@ weight = 0
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
prime_tower_enable = False
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)

View file

@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
layer_height = 0.2
machine_min_cool_heat_time_window = 15
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
prime_tower_enable = True

View file

@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
infill_wipe_dist = 0
layer_height = 0.15
machine_min_cool_heat_time_window = 15
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
prime_tower_enable = True

View file

@ -19,7 +19,6 @@ layer_height = 0.06
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 2
multiple_mesh_overlap = 0
prime_tower_enable = True

View file

@ -18,7 +18,6 @@ infill_wipe_dist = 0
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 5
multiple_mesh_overlap = 0
prime_tower_enable = True

View file

@ -12,7 +12,6 @@ variant = AA 0.4
weight = -2
[values]
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
skin_overlap = 20
speed_print = 60

View file

@ -12,7 +12,6 @@ variant = AA 0.4
weight = -1
[values]
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 5
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)

View file

@ -14,7 +14,6 @@ weight = 1
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature - 5
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)

View file

@ -14,7 +14,6 @@ weight = 0
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 30 / 55)
speed_wall = =math.ceil(speed_print * 30 / 55)

View file

@ -13,7 +13,6 @@ weight = -2
[values]
adhesion_type = brim
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
ooze_shield_angle = 40
raft_airgap = 0.25

View file

@ -13,7 +13,6 @@ weight = -1
[values]
adhesion_type = brim
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 5
ooze_shield_angle = 40
raft_airgap = 0.25

View file

@ -13,7 +13,6 @@ weight = 1
[values]
adhesion_type = brim
material_initial_print_temperature = =material_print_temperature - 5
ooze_shield_angle = 40
raft_airgap = 0.25
skin_overlap = 50

View file

@ -13,7 +13,6 @@ weight = 0
[values]
adhesion_type = brim
material_initial_print_temperature = =material_print_temperature - 5
ooze_shield_angle = 40
raft_airgap = 0.25
skin_overlap = 50

View file

@ -22,7 +22,6 @@ layer_height = 0.2
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
ooze_shield_angle = 40

View file

@ -21,7 +21,6 @@ layer_height = 0.15
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
ooze_shield_angle = 40

View file

@ -22,7 +22,6 @@ layer_height = 0.06
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature - 10
multiple_mesh_overlap = 0
ooze_shield_angle = 40

View file

@ -20,7 +20,6 @@ infill_wipe_dist = 0.1
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
multiple_mesh_overlap = 0
ooze_shield_angle = 40
prime_tower_enable = True

View file

@ -12,7 +12,6 @@ variant = AA 0.4
weight = -2
[values]
material_initial_print_temperature = =material_print_temperature
material_print_temperature = =default_material_print_temperature + 5
retraction_combing = all
skin_overlap = 20

View file

@ -12,7 +12,6 @@ variant = AA 0.4
weight = -1
[values]
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature
retraction_combing = all
speed_infill = =math.ceil(speed_print * 50 / 60)

View file

@ -14,7 +14,6 @@ weight = 0
[values]
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 5
retraction_combing = all
speed_infill = =math.ceil(speed_print * 45 / 55)

View file

@ -13,7 +13,6 @@ weight = -2
[values]
brim_width = 20
cool_min_temperature = =material_print_temperature - 10
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
@ -22,7 +21,7 @@ machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 5
multiple_mesh_overlap = 0
prime_tower_enable = False

View file

@ -13,7 +13,6 @@ weight = -1
[values]
brim_width = 20
cool_min_temperature = =material_print_temperature - 10
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
@ -21,8 +20,8 @@ layer_height = 0.15
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_final_print_temperature = =material_print_temperature - 12
material_initial_print_temperature = =material_print_temperature - 2
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 13
multiple_mesh_overlap = 0
prime_tower_enable = False

View file

@ -13,7 +13,6 @@ weight = 0
[values]
brim_width = 20
cool_min_temperature = =material_print_temperature - 10
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
@ -21,7 +20,7 @@ machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 15
multiple_mesh_overlap = 0
prime_tower_enable = False

View file

@ -13,7 +13,6 @@ weight = -2
[values]
brim_width = 8.75
cool_min_temperature = =material_print_temperature - 10
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
@ -25,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature - 10
material_flow = 106
material_initial_print_temperature = =material_print_temperature
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature + 2
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True

View file

@ -13,7 +13,6 @@ weight = -1
[values]
brim_width = 8.75
cool_min_temperature = =material_print_temperature - 10
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
@ -25,7 +24,7 @@ machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature - 10
material_flow = 106
material_initial_print_temperature = =material_print_temperature
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature + 2
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True

View file

@ -13,7 +13,6 @@ weight = 0
[values]
brim_width = 8.75
cool_min_temperature = =material_print_temperature - 10
gradual_infill_step_height = =5 * layer_height
infill_overlap = 0
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
@ -24,7 +23,7 @@ machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature - 10
material_flow = 106
material_initial_print_temperature = =material_print_temperature
material_initial_print_temperature = =material_print_temperature - 10
multiple_mesh_overlap = 0
prime_tower_wipe_enabled = True
retraction_count_max = 15

View file

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45

View file

@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
layer_height = 0.4
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 15
prime_tower_enable = True
speed_infill = =math.ceil(speed_print * 35 / 45)

View file

@ -17,7 +17,6 @@ infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'triangles'
layer_height = 0.3
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = True
speed_print = 45

View file

@ -13,7 +13,6 @@ weight = -2
[values]
brim_width = 25
cool_min_temperature = =material_print_temperature - 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_print_temperature = =default_material_print_temperature - 2
multiple_mesh_overlap = 0.2

View file

@ -13,7 +13,6 @@ weight = -4
[values]
brim_width = 25
cool_min_temperature = =material_print_temperature - 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
material_print_temperature = =default_material_print_temperature + 2
multiple_mesh_overlap = 0.2

View file

@ -13,7 +13,6 @@ weight = -3
[values]
brim_width = 25
cool_min_temperature = =material_print_temperature - 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
layer_height = 0.3
multiple_mesh_overlap = 0.2

View file

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 0
prime_tower_enable = False
speed_print = 45

View file

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
speed_infill = =math.ceil(speed_print * 30 / 30)

View file

@ -16,7 +16,6 @@ gradual_infill_step_height = =3 * layer_height
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cubic'
machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_initial_print_temperature = =max(-273.15, material_print_temperature - 10)
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
speed_infill = =math.ceil(speed_print * 30 / 35)

View file

@ -13,7 +13,6 @@ weight = -2
[values]
brim_width = 8.75
cool_min_temperature = =material_print_temperature - 10
gradual_infill_step_height = =4 * layer_height
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 15
@ -21,7 +20,7 @@ machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature - 10
material_flow = 105
material_initial_print_temperature = =material_print_temperature
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 2
multiple_mesh_overlap = 0.2
prime_tower_enable = True

View file

@ -13,7 +13,6 @@ weight = -4
[values]
brim_width = 8.75
cool_min_temperature = =material_print_temperature - 10
gradual_infill_step_height = =4 * layer_height
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 15
@ -22,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature - 10
material_flow = 105
material_initial_print_temperature = =material_print_temperature
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature + 2
multiple_mesh_overlap = 0.2
prime_tower_enable = True

View file

@ -13,7 +13,6 @@ weight = -3
[values]
brim_width = 8.75
cool_min_temperature = =material_print_temperature - 10
gradual_infill_step_height = =4 * layer_height
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'cross_3d'
infill_sparse_density = 15
@ -22,7 +21,7 @@ machine_nozzle_cool_down_speed = 0.5
machine_nozzle_heat_up_speed = 2.5
material_final_print_temperature = =material_print_temperature - 10
material_flow = 105
material_initial_print_temperature = =material_print_temperature
material_initial_print_temperature = =material_print_temperature - 10
multiple_mesh_overlap = 0.2
prime_tower_enable = True
prime_tower_flow = 100

View file

@ -17,7 +17,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = 190
retraction_hop = 0.2
skin_overlap = 5

View file

@ -14,12 +14,11 @@ weight = 0
[values]
brim_width = 10
cool_min_temperature = =material_print_temperature - 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'tetrahedral'
infill_wipe_dist = 0.1
machine_min_cool_heat_time_window = 15
material_final_print_temperature = =material_print_temperature - 10
material_initial_print_temperature = =material_print_temperature - 5
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 15
multiple_mesh_overlap = 0
prime_tower_enable = False

View file

@ -17,7 +17,6 @@ infill_overlap = =0 if infill_sparse_density > 80 else 10
infill_pattern = ='zigzag' if infill_sparse_density > 80 else 'grid'
machine_nozzle_cool_down_speed = 0.9
machine_nozzle_heat_up_speed = 1.4
material_initial_print_temperature = =material_print_temperature - 10
material_print_temperature = =default_material_print_temperature - 15
skin_overlap = 5
speed_print = 30

View file

@ -15,7 +15,6 @@ weight = 1
machine_nozzle_cool_down_speed = 0.8
machine_nozzle_heat_up_speed = 1.5
material_final_print_temperature = =material_print_temperature - 20
material_initial_print_temperature = =material_print_temperature - 15
material_print_temperature = =default_material_print_temperature + 5
prime_tower_enable = False
raft_airgap = 0.15

View file

@ -15,7 +15,6 @@ weight = -1
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_final_print_temperature = =material_print_temperature - 20
material_initial_print_temperature = =material_print_temperature - 15
material_print_temperature = =default_material_print_temperature + 15
prime_tower_enable = False
raft_airgap = 0.15

View file

@ -15,7 +15,6 @@ weight = 0
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_final_print_temperature = =material_print_temperature - 20
material_initial_print_temperature = =material_print_temperature - 15
material_print_temperature = =default_material_print_temperature + 10
prime_tower_enable = False
raft_airgap = 0.15

View file

@ -15,7 +15,6 @@ weight = -2
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_final_print_temperature = =material_print_temperature - 20
material_initial_print_temperature = =material_print_temperature - 15
material_print_temperature = =default_material_print_temperature + 20
prime_tower_enable = False
raft_airgap = 0.15

View file

@ -17,7 +17,6 @@ infill_wipe_dist = 0
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 2
multiple_mesh_overlap = 0
prime_tower_enable = True

View file

@ -15,7 +15,6 @@ weight = -1
infill_overlap = 0
infill_wipe_dist = 0
machine_min_cool_heat_time_window = 15
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 10
multiple_mesh_overlap = 0
prime_tower_enable = True

View file

@ -17,7 +17,6 @@ infill_wipe_dist = 0
machine_min_cool_heat_time_window = 15
machine_nozzle_cool_down_speed = 0.85
machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_print_temperature = =default_material_print_temperature + 5
multiple_mesh_overlap = 0
prime_tower_enable = True

Some files were not shown because too many files have changed in this diff Show more