mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-17 19:57:51 -06:00
Merge remote-tracking branch 'origin/main' into CURA-11622_conan_v2
This commit is contained in:
commit
8e25302753
7873 changed files with 72834 additions and 12236 deletions
|
@ -1,20 +1,18 @@
|
||||||
version: "5.9.0-alpha.0"
|
version: "5.10.0-alpha.0"
|
||||||
|
|
||||||
requirements:
|
requirements:
|
||||||
- "cura_resources/5.9.0-alpha.0@ultimaker/cura_11622"
|
- "cura_resources/5.10.0-alpha.0@ultimaker/cura_11622"
|
||||||
- "uranium/5.9.0-alpha.0@ultimaker/cura_11622"
|
- "uranium/5.10.0-alpha.0@ultimaker/cura_11622"
|
||||||
- "curaengine/5.9.0-alpha.0@ultimaker/cura_11622"
|
- "curaengine/5.10.0-alpha.0@ultimaker/cura_11622"
|
||||||
- "cura_binary_data/5.9.0-alpha.0@ultimaker/cura_11622"
|
- "cura_binary_data/5.10.0-alpha.0@ultimaker/cura_11622"
|
||||||
- "fdm_materials/5.9.0-alpha.0@ultimaker/cura_11622"
|
- "fdm_materials/5.10.0-alpha.0@ultimaker/cura_11622"
|
||||||
- "dulcificum/0.2.0-alpha.0@ultimaker/cura_11622"
|
- "dulcificum/0.2.0-alpha.0@ultimaker/cura_11622"
|
||||||
- "pysavitar/5.4.0-alpha.0@ultimaker/cura_11622"
|
- "pysavitar/5.4.0-alpha.0@ultimaker/cura_11622"
|
||||||
- "pynest2d/5.4.0-alpha.0@ultimaker/cura_11622"
|
- "pynest2d/5.4.0-alpha.0@ultimaker/cura_11622"
|
||||||
requirements_internal:
|
requirements_internal:
|
||||||
- "fdm_materials/5.8.1"
|
- "fdm_materials/5.8.1"
|
||||||
- "cura_private_data/5.9.0-alpha.0@internal/cura_11622"
|
- "cura_private_data/5.10.0-alpha.0@internal/cura_11622"
|
||||||
requirements_enterprise:
|
requirements_enterprise:
|
||||||
- "native_cad_plugin/2.0.0"
|
- "native_cad_plugin/2.0.0"
|
||||||
|
|
||||||
urls:
|
urls:
|
||||||
default:
|
default:
|
||||||
cloud_api_root: "https://api.ultimaker.com"
|
cloud_api_root: "https://api.ultimaker.com"
|
||||||
|
@ -124,6 +122,19 @@ pyinstaller:
|
||||||
Windows: "./icons/Cura.ico"
|
Windows: "./icons/Cura.ico"
|
||||||
Macos: "./icons/cura.icns"
|
Macos: "./icons/cura.icns"
|
||||||
Linux: "./icons/cura-128.png"
|
Linux: "./icons/cura-128.png"
|
||||||
|
blacklist:
|
||||||
|
- [ "assimp" ]
|
||||||
|
- [ "qt", "charts" ]
|
||||||
|
- [ "qt", "coap" ]
|
||||||
|
- [ "qt", "data", "vis" ]
|
||||||
|
- [ "qt", "lab", "animat" ]
|
||||||
|
- [ "qt", "mqtt" ]
|
||||||
|
- [ "qt", "net", "auth" ]
|
||||||
|
- [ "qt", "quick3d" ]
|
||||||
|
- [ "qt", "timeline" ]
|
||||||
|
- [ "qt", "virt", "key" ]
|
||||||
|
- [ "qt", "wayland", "compos" ]
|
||||||
|
- [ "qt", "5", "compat" ]
|
||||||
|
|
||||||
pycharm_targets:
|
pycharm_targets:
|
||||||
- jinja_path: .run_templates/pycharm_cura_run.run.xml.jinja
|
- jinja_path: .run_templates/pycharm_cura_run.run.xml.jinja
|
||||||
|
|
102
conanfile.py
102
conanfile.py
|
@ -168,6 +168,62 @@ class CuraConan(ConanFile):
|
||||||
python_installs=self._python_installs(),
|
python_installs=self._python_installs(),
|
||||||
))
|
))
|
||||||
|
|
||||||
|
def _delete_unwanted_binaries(self, root):
|
||||||
|
dynamic_binary_file_exts = [".so", ".dylib", ".dll", ".pyd", ".pyi"]
|
||||||
|
prohibited = [
|
||||||
|
"qt5compat",
|
||||||
|
"qtcharts",
|
||||||
|
"qtcoap",
|
||||||
|
"qtdatavis3d",
|
||||||
|
"qtlottie",
|
||||||
|
"qtmqtt",
|
||||||
|
"qtnetworkauth",
|
||||||
|
"qtquick3d",
|
||||||
|
"qtquick3dphysics",
|
||||||
|
"qtquicktimeline",
|
||||||
|
"qtvirtualkeyboard",
|
||||||
|
"qtwayland"
|
||||||
|
]
|
||||||
|
forbiddens = [x.encode() for x in prohibited]
|
||||||
|
to_remove_files = []
|
||||||
|
to_remove_dirs = []
|
||||||
|
for root, dir_, files in os.walk(root):
|
||||||
|
for filename in files:
|
||||||
|
if not any([(x in filename) for x in dynamic_binary_file_exts]):
|
||||||
|
continue
|
||||||
|
pathname = os.path.join(root, filename)
|
||||||
|
still_exist = True
|
||||||
|
for forbidden in prohibited:
|
||||||
|
if forbidden.lower() in str(pathname).lower():
|
||||||
|
to_remove_files.append(pathname)
|
||||||
|
still_exist = False
|
||||||
|
break
|
||||||
|
if not still_exist:
|
||||||
|
continue
|
||||||
|
with open(pathname, "rb") as file:
|
||||||
|
bytez = file.read().lower()
|
||||||
|
for forbidden in forbiddens:
|
||||||
|
if bytez.find(forbidden) >= 0:
|
||||||
|
to_remove_files.append(pathname)
|
||||||
|
for dirname in dir_:
|
||||||
|
for forbidden in prohibited:
|
||||||
|
if forbidden.lower() == str(dirname).lower():
|
||||||
|
pathname = os.path.join(root, dirname)
|
||||||
|
to_remove_dirs.append(pathname)
|
||||||
|
break
|
||||||
|
for file in to_remove_files:
|
||||||
|
try:
|
||||||
|
os.remove(file)
|
||||||
|
print(f"deleted file: {file}")
|
||||||
|
except Exception as ex:
|
||||||
|
print(f"WARNING: Attempt to delete file {file} results in: {str(ex)}")
|
||||||
|
for dir_ in to_remove_dirs:
|
||||||
|
try:
|
||||||
|
rmdir(self, dir_)
|
||||||
|
print(f"deleted dir_: {dir_}")
|
||||||
|
except Exception as ex:
|
||||||
|
print(f"WARNING: Attempt to delete folder {dir_} results in: {str(ex)}")
|
||||||
|
|
||||||
def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file, cura_source_folder):
|
def _generate_pyinstaller_spec(self, location, entrypoint_location, icon_path, entitlements_file, cura_source_folder):
|
||||||
pyinstaller_metadata = self.conan_data["pyinstaller"]
|
pyinstaller_metadata = self.conan_data["pyinstaller"]
|
||||||
datas = []
|
datas = []
|
||||||
|
@ -240,13 +296,27 @@ class CuraConan(ConanFile):
|
||||||
version = self.conf.get("user.cura:version", default = self.version, check_type = str)
|
version = self.conf.get("user.cura:version", default = self.version, check_type = str)
|
||||||
cura_version = Version(version)
|
cura_version = Version(version)
|
||||||
|
|
||||||
|
# filter all binary files in binaries on the blacklist
|
||||||
|
blacklist = pyinstaller_metadata["blacklist"]
|
||||||
|
filtered_binaries = [b for b in binaries if not any([all([(part in b[0].lower()) for part in parts]) for parts in blacklist])]
|
||||||
|
|
||||||
|
# In case the installer isn't actually pyinstaller (Windows at the moment), outright remove the offending files:
|
||||||
|
specifically_delete = set(binaries) - set(filtered_binaries)
|
||||||
|
for (unwanted_path, _) in specifically_delete:
|
||||||
|
try:
|
||||||
|
os.remove(unwanted_path)
|
||||||
|
print(f"delete: {unwanted_path}")
|
||||||
|
except Exception as ex:
|
||||||
|
print(f"WARNING: Attempt to delete binary {unwanted_path} results in: {str(ex)}")
|
||||||
|
|
||||||
|
# Write the actual file:
|
||||||
with open(os.path.join(location, "UltiMaker-Cura.spec"), "w") as f:
|
with open(os.path.join(location, "UltiMaker-Cura.spec"), "w") as f:
|
||||||
f.write(pyinstaller.render(
|
f.write(pyinstaller.render(
|
||||||
name = str(self.options.display_name).replace(" ", "-"),
|
name = str(self.options.display_name).replace(" ", "-"),
|
||||||
display_name = self._app_name,
|
display_name = self._app_name,
|
||||||
entrypoint = entrypoint_location,
|
entrypoint = entrypoint_location,
|
||||||
datas = datas,
|
datas = datas,
|
||||||
binaries = binaries,
|
binaries = filtered_binaries,
|
||||||
venv_script_path = str(self._script_dir),
|
venv_script_path = str(self._script_dir),
|
||||||
hiddenimports = pyinstaller_metadata["hiddenimports"],
|
hiddenimports = pyinstaller_metadata["hiddenimports"],
|
||||||
collect_all = pyinstaller_metadata["collect_all"],
|
collect_all = pyinstaller_metadata["collect_all"],
|
||||||
|
@ -325,8 +395,10 @@ class CuraConan(ConanFile):
|
||||||
|
|
||||||
for dependency in self.dependencies.host.values():
|
for dependency in self.dependencies.host.values():
|
||||||
for bindir in dependency.cpp_info.bindirs:
|
for bindir in dependency.cpp_info.bindirs:
|
||||||
|
self._delete_unwanted_binaries(bindir)
|
||||||
copy(self, "*.dll", bindir, str(self._site_packages), keep_path = False)
|
copy(self, "*.dll", bindir, str(self._site_packages), keep_path = False)
|
||||||
for libdir in dependency.cpp_info.libdirs:
|
for libdir in dependency.cpp_info.libdirs:
|
||||||
|
self._delete_unwanted_binaries(libdir)
|
||||||
copy(self, "*.pyd", libdir, str(self._site_packages), keep_path = False)
|
copy(self, "*.pyd", libdir, str(self._site_packages), keep_path = False)
|
||||||
copy(self, "*.pyi", libdir, str(self._site_packages), keep_path = False)
|
copy(self, "*.pyi", libdir, str(self._site_packages), keep_path = False)
|
||||||
copy(self, "*.dylib", libdir, str(self._base_dir.joinpath("lib")), keep_path = False)
|
copy(self, "*.dylib", libdir, str(self._base_dir.joinpath("lib")), keep_path = False)
|
||||||
|
@ -383,6 +455,34 @@ class CuraConan(ConanFile):
|
||||||
copy(self, "*", uranium.resdirs[1], str(self._share_dir.joinpath("uranium", "plugins")), keep_path = True)
|
copy(self, "*", uranium.resdirs[1], str(self._share_dir.joinpath("uranium", "plugins")), keep_path = True)
|
||||||
copy(self, "*", uranium.libdirs[0], str(self._site_packages.joinpath("UM")), keep_path = True)
|
copy(self, "*", uranium.libdirs[0], str(self._site_packages.joinpath("UM")), keep_path = True)
|
||||||
|
|
||||||
|
# Generate the GitHub Action version info Environment
|
||||||
|
version = self.conf.get("user.cura:version", default = self.version, check_type = str)
|
||||||
|
cura_version = Version(version)
|
||||||
|
env_prefix = "Env:" if self.settings.os == "Windows" else ""
|
||||||
|
activate_github_actions_version_env = Template(r"""echo "CURA_VERSION_MAJOR={{ cura_version_major }}" >> ${{ env_prefix }}GITHUB_ENV
|
||||||
|
echo "CURA_VERSION_MINOR={{ cura_version_minor }}" >> ${{ env_prefix }}GITHUB_ENV
|
||||||
|
echo "CURA_VERSION_PATCH={{ cura_version_patch }}" >> ${{ env_prefix }}GITHUB_ENV
|
||||||
|
echo "CURA_VERSION_BUILD={{ cura_version_build }}" >> ${{ env_prefix }}GITHUB_ENV
|
||||||
|
echo "CURA_VERSION_FULL={{ cura_version_full }}" >> ${{ env_prefix }}GITHUB_ENV
|
||||||
|
echo "CURA_APP_NAME={{ cura_app_name }}" >> ${{ env_prefix }}GITHUB_ENV
|
||||||
|
""").render(cura_version_major = cura_version.major,
|
||||||
|
cura_version_minor = cura_version.minor,
|
||||||
|
cura_version_patch = cura_version.patch,
|
||||||
|
cura_version_build = cura_version.build if cura_version.build != "" else "0",
|
||||||
|
cura_version_full = self.version,
|
||||||
|
cura_app_name = self._app_name,
|
||||||
|
env_prefix = env_prefix)
|
||||||
|
|
||||||
|
ext = ".sh" if self.settings.os != "Windows" else ".ps1"
|
||||||
|
save(self, os.path.join(self._script_dir, f"activate_github_actions_version_env{ext}"), activate_github_actions_version_env)
|
||||||
|
|
||||||
|
self._generate_cura_version(os.path.join(self._site_packages, "cura"))
|
||||||
|
|
||||||
|
self._delete_unwanted_binaries(self._site_packages)
|
||||||
|
self._delete_unwanted_binaries(self.package_folder)
|
||||||
|
self._delete_unwanted_binaries(self._base_dir)
|
||||||
|
self._delete_unwanted_binaries(self._share_dir)
|
||||||
|
|
||||||
entitlements_file = "'{}'".format(Path(self.deploy_folder, "packaging", "MacOS", "cura.entitlements"))
|
entitlements_file = "'{}'".format(Path(self.deploy_folder, "packaging", "MacOS", "cura.entitlements"))
|
||||||
self._generate_pyinstaller_spec(location = self.deploy_folder,
|
self._generate_pyinstaller_spec(location = self.deploy_folder,
|
||||||
entrypoint_location = "'{}'".format(os.path.join(self.package_folder, self.cpp_info.bindirs[0], self.conan_data["pyinstaller"]["runinfo"]["entrypoint"])).replace("\\", "\\\\"),
|
entrypoint_location = "'{}'".format(os.path.join(self.package_folder, self.cpp_info.bindirs[0], self.conan_data["pyinstaller"]["runinfo"]["entrypoint"])).replace("\\", "\\\\"),
|
||||||
|
|
|
@ -14,7 +14,7 @@ DEFAULT_CURA_LATEST_URL = "https://software.ultimaker.com/latest.json"
|
||||||
# Each release has a fixed SDK version coupled with it. It doesn't make sense to make it configurable because, for
|
# Each release has a fixed SDK version coupled with it. It doesn't make sense to make it configurable because, for
|
||||||
# example Cura 3.2 with SDK version 6.1 will not work. So the SDK version is hard-coded here and left out of the
|
# example Cura 3.2 with SDK version 6.1 will not work. So the SDK version is hard-coded here and left out of the
|
||||||
# CuraVersion.py.in template.
|
# CuraVersion.py.in template.
|
||||||
CuraSDKVersion = "8.8.0"
|
CuraSDKVersion = "8.9.0"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from cura.CuraVersion import CuraLatestURL
|
from cura.CuraVersion import CuraLatestURL
|
||||||
|
|
|
@ -252,19 +252,23 @@ class BuildVolume(SceneNode):
|
||||||
if not self.getMeshData() or not self.isVisible():
|
if not self.getMeshData() or not self.isVisible():
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
theme = self._application.getTheme()
|
||||||
if not self._shader:
|
if not self._shader:
|
||||||
self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader"))
|
self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader"))
|
||||||
self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader"))
|
self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader"))
|
||||||
theme = self._application.getTheme()
|
|
||||||
self._grid_shader.setUniformValue("u_plateColor", Color(*theme.getColor("buildplate").getRgb()))
|
|
||||||
self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate_grid").getRgb()))
|
self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate_grid").getRgb()))
|
||||||
self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_grid_minor").getRgb()))
|
self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_grid_minor").getRgb()))
|
||||||
|
|
||||||
|
plate_color = Color(*theme.getColor("buildplate").getRgb())
|
||||||
|
if self._global_container_stack.getMetaDataEntry("has_textured_buildplate", False):
|
||||||
|
plate_color.setA(0.5)
|
||||||
|
self._grid_shader.setUniformValue("u_plateColor", plate_color)
|
||||||
|
|
||||||
renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines)
|
renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines)
|
||||||
renderer.queueNode(self, mesh = self._origin_mesh, backface_cull = True)
|
renderer.queueNode(self, mesh = self._origin_mesh, backface_cull = True)
|
||||||
renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True)
|
renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True, transparent = True, sort = -10)
|
||||||
if self._disallowed_area_mesh:
|
if self._disallowed_area_mesh:
|
||||||
renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9)
|
renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -5)
|
||||||
|
|
||||||
if self._error_mesh:
|
if self._error_mesh:
|
||||||
renderer.queueNode(self, mesh=self._error_mesh, shader=self._shader, transparent=True,
|
renderer.queueNode(self, mesh=self._error_mesh, shader=self._shader, transparent=True,
|
||||||
|
|
|
@ -139,7 +139,7 @@ class CuraApplication(QtApplication):
|
||||||
# SettingVersion represents the set of settings available in the machine/extruder definitions.
|
# SettingVersion represents the set of settings available in the machine/extruder definitions.
|
||||||
# You need to make sure that this version number needs to be increased if there is any non-backwards-compatible
|
# You need to make sure that this version number needs to be increased if there is any non-backwards-compatible
|
||||||
# changes of the settings.
|
# changes of the settings.
|
||||||
SettingVersion = 23
|
SettingVersion = 24
|
||||||
|
|
||||||
Created = False
|
Created = False
|
||||||
|
|
||||||
|
@ -1895,23 +1895,20 @@ class CuraApplication(QtApplication):
|
||||||
def on_finish(response):
|
def on_finish(response):
|
||||||
content_disposition_header_key = QByteArray("content-disposition".encode())
|
content_disposition_header_key = QByteArray("content-disposition".encode())
|
||||||
|
|
||||||
if not response.hasRawHeader(content_disposition_header_key):
|
|
||||||
Logger.log("w", "Could not find Content-Disposition header in response from {0}".format(
|
|
||||||
model_url.url()))
|
|
||||||
# Use the last part of the url as the filename, and assume it is an STL file
|
|
||||||
filename = model_url.path().split("/")[-1] + ".stl"
|
filename = model_url.path().split("/")[-1] + ".stl"
|
||||||
else:
|
|
||||||
|
if response.hasRawHeader(content_disposition_header_key):
|
||||||
# content_disposition is in the format
|
# content_disposition is in the format
|
||||||
# ```
|
# ```
|
||||||
# content_disposition attachment; "filename=[FILENAME]"
|
# content_disposition attachment; filename="[FILENAME]"
|
||||||
# ```
|
# ```
|
||||||
# Use a regex to extract the filename
|
# Use a regex to extract the filename
|
||||||
content_disposition = str(response.rawHeader(content_disposition_header_key).data(),
|
content_disposition = str(response.rawHeader(content_disposition_header_key).data(),
|
||||||
encoding='utf-8')
|
encoding='utf-8')
|
||||||
content_disposition_match = re.match(r'attachment; filename="(?P<filename>.*)"',
|
content_disposition_match = re.match(r'attachment; filename=(?P<filename>.*)',
|
||||||
content_disposition)
|
content_disposition)
|
||||||
assert content_disposition_match is not None
|
if content_disposition_match is not None:
|
||||||
filename = content_disposition_match.group("filename")
|
filename = content_disposition_match.group("filename").strip("\"")
|
||||||
|
|
||||||
tmp = tempfile.NamedTemporaryFile(suffix=filename, delete=False)
|
tmp = tempfile.NamedTemporaryFile(suffix=filename, delete=False)
|
||||||
with open(tmp.name, "wb") as f:
|
with open(tmp.name, "wb") as f:
|
||||||
|
|
|
@ -48,6 +48,7 @@ class MachineNode(ContainerNode):
|
||||||
self.preferred_variant_name = my_metadata.get("preferred_variant_name", "")
|
self.preferred_variant_name = my_metadata.get("preferred_variant_name", "")
|
||||||
self.preferred_material = my_metadata.get("preferred_material", "")
|
self.preferred_material = my_metadata.get("preferred_material", "")
|
||||||
self.preferred_quality_type = my_metadata.get("preferred_quality_type", "")
|
self.preferred_quality_type = my_metadata.get("preferred_quality_type", "")
|
||||||
|
self.supports_abstract_color = parseBool(my_metadata.get("supports_abstract_color", "false"))
|
||||||
|
|
||||||
self._loadAll()
|
self._loadAll()
|
||||||
|
|
||||||
|
|
|
@ -127,13 +127,12 @@ class QualityManagementModel(ListModel):
|
||||||
# have no container for the global stack, because "my_profile" just got renamed to "my_new_profile". This results
|
# have no container for the global stack, because "my_profile" just got renamed to "my_new_profile". This results
|
||||||
# in crashes because the rest of the system assumes that all data in a QualityChangesGroup will be correct.
|
# in crashes because the rest of the system assumes that all data in a QualityChangesGroup will be correct.
|
||||||
#
|
#
|
||||||
# Renaming the container for the global stack in the end seems to be ok, because the assumption is mostly based
|
# This is why we use the "supress_signals" flag for the set name. This basically makes the change silent.
|
||||||
# on the quality changes container for the global stack.
|
|
||||||
for metadata in quality_changes_group.metadata_per_extruder.values():
|
for metadata in quality_changes_group.metadata_per_extruder.values():
|
||||||
extruder_container = cast(InstanceContainer, container_registry.findContainers(id = metadata["id"])[0])
|
extruder_container = cast(InstanceContainer, container_registry.findContainers(id = metadata["id"])[0])
|
||||||
extruder_container.setName(new_name)
|
extruder_container.setName(new_name, supress_signals=True)
|
||||||
global_container = cast(InstanceContainer, container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"])[0])
|
global_container = cast(InstanceContainer, container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"])[0])
|
||||||
global_container.setName(new_name)
|
global_container.setName(new_name, supress_signals=True)
|
||||||
|
|
||||||
quality_changes_group.name = new_name
|
quality_changes_group.name = new_name
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,8 @@ class VariantNode(ContainerNode):
|
||||||
filtered_materials = [material for material in materials if not self.machine.isExcludedMaterialBaseFile(material["id"])]
|
filtered_materials = [material for material in materials if not self.machine.isExcludedMaterialBaseFile(material["id"])]
|
||||||
|
|
||||||
for material in filtered_materials:
|
for material in filtered_materials:
|
||||||
|
if material.get("abstract_color", False) and not self.machine.supports_abstract_color:
|
||||||
|
continue # do not show abstract color profiles if the machine does not support them
|
||||||
base_file = material["base_file"]
|
base_file = material["base_file"]
|
||||||
if base_file not in self.materials:
|
if base_file not in self.materials:
|
||||||
self.materials[base_file] = MaterialNode(material["id"], variant = self)
|
self.materials[base_file] = MaterialNode(material["id"], variant = self)
|
||||||
|
@ -126,6 +128,8 @@ class VariantNode(ContainerNode):
|
||||||
return # We won't add any materials.
|
return # We won't add any materials.
|
||||||
material_definition = container.getMetaDataEntry("definition")
|
material_definition = container.getMetaDataEntry("definition")
|
||||||
|
|
||||||
|
if (not self.machine.supports_abstract_color) and container.getMetaDataEntry("abstract_color", False):
|
||||||
|
return
|
||||||
base_file = container.getMetaDataEntry("base_file")
|
base_file = container.getMetaDataEntry("base_file")
|
||||||
if self.machine.isExcludedMaterialBaseFile(base_file):
|
if self.machine.isExcludedMaterialBaseFile(base_file):
|
||||||
return # Material is forbidden for this printer.
|
return # Material is forbidden for this printer.
|
||||||
|
|
|
@ -28,23 +28,19 @@ class FormatMaps:
|
||||||
|
|
||||||
# A map from the material-name in their native file-formats to some info, including the internal name we use.
|
# A map from the material-name in their native file-formats to some info, including the internal name we use.
|
||||||
MATERIAL_MAP = {
|
MATERIAL_MAP = {
|
||||||
"abs": {"name": "ABS", "guid": "2780b345-577b-4a24-a2c5-12e6aad3e690"},
|
"abs": {"name": "ABS", "guid": "e0f1d581-cc6b-4e36-8f3c-3f5601ecba5f"},
|
||||||
"abs-cf10": {"name": "ABS-CF", "guid": "495a0ce5-9daf-4a16-b7b2-06856d82394d"},
|
"abs-cf10": {"name": "ABS-CF", "guid": "495a0ce5-9daf-4a16-b7b2-06856d82394d"},
|
||||||
"abs-wss1": {"name": "ABS-R", "guid": "88c8919c-6a09-471a-b7b6-e801263d862d"},
|
"abs-wss1": {"name": "ABS-R", "guid": "88c8919c-6a09-471a-b7b6-e801263d862d"},
|
||||||
"asa": {"name": "ASA", "guid": "f79bc612-21eb-482e-ad6c-87d75bdde066"},
|
"asa": {"name": "ASA", "guid": "f79bc612-21eb-482e-ad6c-87d75bdde066"},
|
||||||
"nylon12-cf": {"name": "Nylon 12 CF", "guid": "3c6f2877-71cc-4760-84e6-4b89ab243e3b"},
|
"nylon12-cf": {"name": "Nylon 12 CF", "guid": "3c6f2877-71cc-4760-84e6-4b89ab243e3b"},
|
||||||
"nylon": {"name": "Nylon", "guid": "283d439a-3490-4481-920c-c51d8cdecf9c"},
|
"nylon-cf": {"name": "Nylon CF", "guid": "17abb865-ca73-4ccd-aeda-38e294c9c60b"},
|
||||||
"pc": {"name": "PC", "guid": "62414577-94d1-490d-b1e4-7ef3ec40db02"},
|
"pet": {"name": "PETG", "guid": "2d004bbd-d1bb-47f8-beac-b066702d5273"},
|
||||||
"petg": {"name": "PETG", "guid": "69386c85-5b6c-421a-bec5-aeb1fb33f060"},
|
|
||||||
"pla": {"name": "PLA", "guid": "abb9c58e-1f56-48d1-bd8f-055fde3a5b56"},
|
"pla": {"name": "PLA", "guid": "abb9c58e-1f56-48d1-bd8f-055fde3a5b56"},
|
||||||
"pva": {"name": "PVA", "guid": "add51ef2-86eb-4c39-afd5-5586564f0715"},
|
"pva": {"name": "PVA", "guid": "add51ef2-86eb-4c39-afd5-5586564f0715"},
|
||||||
"wss1": {"name": "RapidRinse", "guid": "a140ef8f-4f26-4e73-abe0-cfc29d6d1024"},
|
"wss1": {"name": "RapidRinse", "guid": "a140ef8f-4f26-4e73-abe0-cfc29d6d1024"},
|
||||||
"sr30": {"name": "SR-30", "guid": "77873465-83a9-4283-bc44-4e542b8eb3eb"},
|
"sr30": {"name": "SR-30", "guid": "77873465-83a9-4283-bc44-4e542b8eb3eb"},
|
||||||
"bvoh": {"name": "BVOH", "guid": "923e604c-8432-4b09-96aa-9bbbd42207f4"},
|
|
||||||
"cpe": {"name": "CPE", "guid": "da1872c1-b991-4795-80ad-bdac0f131726"},
|
|
||||||
"hips": {"name": "HIPS", "guid": "a468d86a-220c-47eb-99a5-bbb47e514eb0"},
|
|
||||||
"tpu": {"name": "TPU 95A", "guid": "19baa6a9-94ff-478b-b4a1-8157b74358d2"},
|
|
||||||
"im-pla": {"name": "Tough", "guid": "de031137-a8ca-4a72-bd1b-17bb964033ad"}
|
"im-pla": {"name": "Tough", "guid": "de031137-a8ca-4a72-bd1b-17bb964033ad"}
|
||||||
|
# /!\ When changing this list, make sure the changes are reported accordingly on Digital Factory
|
||||||
}
|
}
|
||||||
|
|
||||||
__inverse_printer_name: Optional[Dict[str, str]] = None
|
__inverse_printer_name: Optional[Dict[str, str]] = None
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2018 Ultimaker B.V.
|
# Copyright (c) 2024 UltiMaker
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
from typing import Any, Dict, TYPE_CHECKING, Optional
|
from typing import Any, Dict, TYPE_CHECKING, Optional
|
||||||
|
@ -12,11 +12,8 @@ from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
from UM.Settings.Interfaces import ContainerInterface, PropertyEvaluationContext
|
from UM.Settings.Interfaces import ContainerInterface, PropertyEvaluationContext
|
||||||
from UM.Util import parseBool
|
from UM.Util import parseBool
|
||||||
|
|
||||||
import cura.CuraApplication
|
|
||||||
|
|
||||||
from . import Exceptions
|
from . import Exceptions
|
||||||
from .CuraContainerStack import CuraContainerStack, _ContainerIndexes
|
from .CuraContainerStack import CuraContainerStack, _ContainerIndexes
|
||||||
from .ExtruderManager import ExtruderManager
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from cura.Settings.GlobalStack import GlobalStack
|
from cura.Settings.GlobalStack import GlobalStack
|
||||||
|
@ -141,7 +138,11 @@ class ExtruderStack(CuraContainerStack):
|
||||||
context.popContainer()
|
context.popContainer()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
limit_to_extruder = super().getProperty(key, "limit_to_extruder", context)
|
if not context:
|
||||||
|
context = PropertyEvaluationContext(self)
|
||||||
|
if "extruder_position" not in context.context:
|
||||||
|
context.context["extruder_position"] = super().getProperty(key, "limit_to_extruder", context)
|
||||||
|
limit_to_extruder = context.context["extruder_position"]
|
||||||
if limit_to_extruder is not None:
|
if limit_to_extruder is not None:
|
||||||
limit_to_extruder = str(limit_to_extruder)
|
limit_to_extruder = str(limit_to_extruder)
|
||||||
|
|
||||||
|
|
|
@ -398,7 +398,7 @@ class MachineManager(QObject):
|
||||||
self.setVariantByName(extruder.getMetaDataEntry("position"), machine_node.preferred_variant_name)
|
self.setVariantByName(extruder.getMetaDataEntry("position"), machine_node.preferred_variant_name)
|
||||||
variant_node = machine_node.variants.get(machine_node.preferred_variant_name)
|
variant_node = machine_node.variants.get(machine_node.preferred_variant_name)
|
||||||
|
|
||||||
material_node = variant_node.materials.get(extruder.material.getMetaDataEntry("base_file"))
|
material_node = variant_node.materials.get(extruder.material.getMetaDataEntry("base_file")) if variant_node else None
|
||||||
if material_node is None:
|
if material_node is None:
|
||||||
Logger.log("w", "An extruder has an unknown material, switching it to the preferred material")
|
Logger.log("w", "An extruder has an unknown material, switching it to the preferred material")
|
||||||
if not self.setMaterialById(extruder.getMetaDataEntry("position"), machine_node.preferred_material):
|
if not self.setMaterialById(extruder.getMetaDataEntry("position"), machine_node.preferred_material):
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# Copyright (c) 2020 Ultimaker B.V.
|
# Copyright (c) 2020 Ultimaker B.V.
|
||||||
# Uranium is released under the terms of the LGPLv3 or higher.
|
# Uranium is released under the terms of the LGPLv3 or higher.
|
||||||
|
import math
|
||||||
|
|
||||||
from PyQt6.QtCore import Qt, QCoreApplication, QTimer
|
from PyQt6.QtCore import Qt, QCoreApplication, QTimer
|
||||||
from PyQt6.QtGui import QPixmap, QColor, QFont, QPen, QPainter
|
from PyQt6.QtGui import QPixmap, QColor, QFont, QPen, QPainter
|
||||||
|
@ -51,6 +52,7 @@ class CuraSplashScreen(QSplashScreen):
|
||||||
self._last_update_time = time.time()
|
self._last_update_time = time.time()
|
||||||
# Since we don't know how much time actually passed, check how many intervals of 50 we had.
|
# Since we don't know how much time actually passed, check how many intervals of 50 we had.
|
||||||
self._loading_image_rotation_angle -= 10 * (time_since_last_update * 1000 / 50)
|
self._loading_image_rotation_angle -= 10 * (time_since_last_update * 1000 / 50)
|
||||||
|
self._loading_image_rotation_angle = math.fmod(self._loading_image_rotation_angle, 360)
|
||||||
self.repaint()
|
self.repaint()
|
||||||
|
|
||||||
# Override the mousePressEvent so the splashscreen doesn't disappear when clicked
|
# Override the mousePressEvent so the splashscreen doesn't disappear when clicked
|
||||||
|
|
|
@ -217,8 +217,7 @@ class WelcomePagesModel(ListModel):
|
||||||
def _getBuiltinWelcomePagePath(page_filename: str) -> QUrl:
|
def _getBuiltinWelcomePagePath(page_filename: str) -> QUrl:
|
||||||
"""Convenience function to get QUrl path to pages that's located in "resources/qml/WelcomePages"."""
|
"""Convenience function to get QUrl path to pages that's located in "resources/qml/WelcomePages"."""
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
return QUrl.fromLocalFile(Resources.getPath(CuraApplication.ResourceTypes.QmlFiles,
|
return QUrl.fromLocalFile(Resources.getPath(CuraApplication.ResourceTypes.QmlFiles, "WelcomePages", page_filename))
|
||||||
os.path.join("WelcomePages", page_filename)))
|
|
||||||
|
|
||||||
# FIXME: HACKs for optimization that we don't update the model every time the active machine gets changed.
|
# FIXME: HACKs for optimization that we don't update the model every time the active machine gets changed.
|
||||||
def _onActiveMachineChanged(self) -> None:
|
def _onActiveMachineChanged(self) -> None:
|
||||||
|
|
|
@ -47,6 +47,7 @@ AppDir:
|
||||||
QT_PLUGIN_PATH: "$APPDIR/qt/plugins"
|
QT_PLUGIN_PATH: "$APPDIR/qt/plugins"
|
||||||
QML2_IMPORT_PATH: "$APPDIR/qt/qml"
|
QML2_IMPORT_PATH: "$APPDIR/qt/qml"
|
||||||
QT_QPA_PLATFORMTHEME: xdgdesktopportal
|
QT_QPA_PLATFORMTHEME: xdgdesktopportal
|
||||||
|
QT_QPA_PLATFORM: xcb
|
||||||
GDK_PIXBUF_MODULEDIR: $APPDIR/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders
|
GDK_PIXBUF_MODULEDIR: $APPDIR/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders
|
||||||
GDK_PIXBUF_MODULE_FILE: $APPDIR/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
GDK_PIXBUF_MODULE_FILE: $APPDIR/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache
|
||||||
path_mappings:
|
path_mappings:
|
||||||
|
|
|
@ -133,6 +133,7 @@ CreateShortCut "$SMPROGRAMS\{{ app_name }}\UltiMaker Cura website.lnk" "$INSTDIR
|
||||||
WriteRegStr ${REG_ROOT} "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}"
|
WriteRegStr ${REG_ROOT} "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}"
|
||||||
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "${APP_NAME}"
|
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "${APP_NAME}"
|
||||||
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\uninstall.exe"
|
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\uninstall.exe"
|
||||||
|
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "QuietUninstallString" '"$INSTDIR\uninstall.exe" /S'
|
||||||
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayIcon" "$INSTDIR\${MAIN_APP_EXE}"
|
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayIcon" "$INSTDIR\${MAIN_APP_EXE}"
|
||||||
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "${VERSION}"
|
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "${VERSION}"
|
||||||
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "${COMP_NAME}"
|
WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "${COMP_NAME}"
|
||||||
|
|
|
@ -132,6 +132,7 @@ class ThreeMFReader(MeshReader):
|
||||||
vertices = numpy.resize(data, (int(data.size / 3), 3))
|
vertices = numpy.resize(data, (int(data.size / 3), 3))
|
||||||
mesh_builder.setVertices(vertices)
|
mesh_builder.setVertices(vertices)
|
||||||
mesh_builder.calculateNormals(fast=True)
|
mesh_builder.calculateNormals(fast=True)
|
||||||
|
mesh_builder.setMeshId(node_id)
|
||||||
if file_name:
|
if file_name:
|
||||||
# The filename is used to give the user the option to reload the file if it is changed on disk
|
# The filename is used to give the user the option to reload the file if it is changed on disk
|
||||||
# It is only set for the root node of the 3mf file
|
# It is only set for the root node of the 3mf file
|
||||||
|
|
|
@ -1354,7 +1354,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||||
return
|
return
|
||||||
machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True)
|
machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True)
|
||||||
else:
|
else:
|
||||||
self._quality_type_to_apply = self._quality_type_to_apply.lower() if self._quality_type_to_apply else None
|
|
||||||
quality_group_dict = container_tree.getCurrentQualityGroups()
|
quality_group_dict = container_tree.getCurrentQualityGroups()
|
||||||
if self._quality_type_to_apply in quality_group_dict:
|
if self._quality_type_to_apply in quality_group_dict:
|
||||||
quality_group = quality_group_dict[self._quality_type_to_apply]
|
quality_group = quality_group_dict[self._quality_type_to_apply]
|
||||||
|
|
|
@ -8,9 +8,12 @@ from io import StringIO
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
import zipfile
|
import zipfile
|
||||||
from typing import Dict, Any
|
from typing import Dict, Any
|
||||||
|
from pathlib import Path
|
||||||
|
from zipfile import ZipFile
|
||||||
|
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
from UM.PluginRegistry import PluginRegistry
|
||||||
from UM.Preferences import Preferences
|
from UM.Preferences import Preferences
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
from UM.Workspace.WorkspaceWriter import WorkspaceWriter
|
from UM.Workspace.WorkspaceWriter import WorkspaceWriter
|
||||||
|
@ -33,7 +36,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
|
||||||
if self._ucp_model != model:
|
if self._ucp_model != model:
|
||||||
self._ucp_model = model
|
self._ucp_model = model
|
||||||
|
|
||||||
def _write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode):
|
def _write(self, stream, nodes, mode, include_log):
|
||||||
application = Application.getInstance()
|
application = Application.getInstance()
|
||||||
machine_manager = application.getMachineManager()
|
machine_manager = application.getMachineManager()
|
||||||
|
|
||||||
|
@ -79,6 +82,11 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
|
||||||
if self._ucp_model is not None:
|
if self._ucp_model is not None:
|
||||||
user_settings_data = self._getUserSettings(self._ucp_model)
|
user_settings_data = self._getUserSettings(self._ucp_model)
|
||||||
ThreeMFWriter._storeMetadataJson(user_settings_data, archive, USER_SETTINGS_PATH)
|
ThreeMFWriter._storeMetadataJson(user_settings_data, archive, USER_SETTINGS_PATH)
|
||||||
|
|
||||||
|
# Write log file
|
||||||
|
if include_log:
|
||||||
|
ThreeMFWorkspaceWriter._writeLogFile(archive)
|
||||||
|
|
||||||
except PermissionError:
|
except PermissionError:
|
||||||
self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here."))
|
self.setInformation(catalog.i18nc("@error:zip", "No permission to write the workspace here."))
|
||||||
Logger.error("No permission to write workspace to this stream.")
|
Logger.error("No permission to write workspace to this stream.")
|
||||||
|
@ -125,8 +133,8 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode):
|
def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode, **kwargs):
|
||||||
success = self._write(stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode)
|
success = self._write(stream, nodes, WorkspaceWriter.OutputMode.BinaryMode, kwargs.get("include_log", False))
|
||||||
self._ucp_model = None
|
self._ucp_model = None
|
||||||
return success
|
return success
|
||||||
|
|
||||||
|
@ -191,6 +199,17 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter):
|
||||||
Logger.error("File became inaccessible while writing to it: {archive_filename}".format(archive_filename = archive.fp.name))
|
Logger.error("File became inaccessible while writing to it: {archive_filename}".format(archive_filename = archive.fp.name))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _writeLogFile(archive: ZipFile) -> None:
|
||||||
|
"""Helper function that writes the Cura log file to the archive.
|
||||||
|
|
||||||
|
:param archive: The archive to write to.
|
||||||
|
"""
|
||||||
|
file_logger = PluginRegistry.getInstance().getPluginObject("FileLogger")
|
||||||
|
file_logger.flush()
|
||||||
|
for file_path in file_logger.getFilesPaths():
|
||||||
|
archive.write(file_path, arcname=f"log/{Path(file_path).name}")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _getUserSettings(model: SettingsExportModel) -> Dict[str, Dict[str, Any]]:
|
def _getUserSettings(model: SettingsExportModel) -> Dict[str, Dict[str, Any]]:
|
||||||
user_settings = {}
|
user_settings = {}
|
||||||
|
|
|
@ -68,6 +68,9 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
self._init_done = False
|
||||||
|
self._immediate_slice_after_init = False
|
||||||
|
|
||||||
# Find out where the engine is located, and how it is called.
|
# Find out where the engine is located, and how it is called.
|
||||||
# This depends on how Cura is packaged and which OS we are running on.
|
# This depends on how Cura is packaged and which OS we are running on.
|
||||||
executable_name = "CuraEngine"
|
executable_name = "CuraEngine"
|
||||||
|
@ -198,6 +201,7 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
|
|
||||||
self._resetLastSliceTimeStats()
|
self._resetLastSliceTimeStats()
|
||||||
self._snapshot: Optional[QImage] = None
|
self._snapshot: Optional[QImage] = None
|
||||||
|
self._last_socket_error: Optional[Arcus.Error] = None
|
||||||
|
|
||||||
application.initializationFinished.connect(self.initialize)
|
application.initializationFinished.connect(self.initialize)
|
||||||
|
|
||||||
|
@ -267,6 +271,10 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
self._machine_error_checker = application.getMachineErrorChecker()
|
self._machine_error_checker = application.getMachineErrorChecker()
|
||||||
self._machine_error_checker.errorCheckFinished.connect(self._onStackErrorCheckFinished)
|
self._machine_error_checker.errorCheckFinished.connect(self._onStackErrorCheckFinished)
|
||||||
|
|
||||||
|
self._init_done = True
|
||||||
|
if self._immediate_slice_after_init:
|
||||||
|
self.slice()
|
||||||
|
|
||||||
def close(self) -> None:
|
def close(self) -> None:
|
||||||
"""Terminate the engine process.
|
"""Terminate the engine process.
|
||||||
|
|
||||||
|
@ -341,6 +349,11 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
def slice(self) -> None:
|
def slice(self) -> None:
|
||||||
"""Perform a slice of the scene."""
|
"""Perform a slice of the scene."""
|
||||||
|
|
||||||
|
if not self._init_done:
|
||||||
|
self._immediate_slice_after_init = True
|
||||||
|
return
|
||||||
|
self._immediate_slice_after_init = False
|
||||||
|
|
||||||
self._createSnapshot()
|
self._createSnapshot()
|
||||||
|
|
||||||
self.startPlugins()
|
self.startPlugins()
|
||||||
|
@ -569,7 +582,20 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Preparation completed, send it to the backend.
|
# Preparation completed, send it to the backend.
|
||||||
self._socket.sendMessage(job.getSliceMessage())
|
immediate_success = self._socket.sendMessage(job.getSliceMessage())
|
||||||
|
if (not CuraApplication.getInstance().getUseExternalBackend()) and (not immediate_success):
|
||||||
|
if self._last_socket_error is not None and self._last_socket_error.getErrorCode() == Arcus.ErrorCode.MessageTooBigError:
|
||||||
|
error_txt = catalog.i18nc("@info:status", "Unable to send the model data to the engine. Please try to use a less detailed model, or reduce the number of instances.")
|
||||||
|
else:
|
||||||
|
error_txt = catalog.i18nc("@info:status", "Unable to send the model data to the engine. Please try again, or contact support.")
|
||||||
|
|
||||||
|
self._error_message = Message(error_txt,
|
||||||
|
title=catalog.i18nc("@info:title", "Unable to slice"),
|
||||||
|
message_type=Message.MessageType.WARNING)
|
||||||
|
self._error_message.show()
|
||||||
|
self.setState(BackendState.Error)
|
||||||
|
self.backendError.emit(job)
|
||||||
|
return
|
||||||
|
|
||||||
# Notify the user that it's now up to the backend to do its job
|
# Notify the user that it's now up to the backend to do its job
|
||||||
self.setState(BackendState.Processing)
|
self.setState(BackendState.Processing)
|
||||||
|
@ -691,6 +717,7 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
if error.getErrorCode() == Arcus.ErrorCode.Debug:
|
if error.getErrorCode() == Arcus.ErrorCode.Debug:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self._last_socket_error = error
|
||||||
self._terminate()
|
self._terminate()
|
||||||
self._createSocket()
|
self._createSocket()
|
||||||
|
|
||||||
|
|
|
@ -614,6 +614,7 @@ class StartSliceJob(Job):
|
||||||
|
|
||||||
# Replace the setting tokens in start and end g-code.
|
# Replace the setting tokens in start and end g-code.
|
||||||
extruder_nr = stack.getProperty("extruder_nr", "value")
|
extruder_nr = stack.getProperty("extruder_nr", "value")
|
||||||
|
settings["machine_extruder_prestart_code"] = self._expandGcodeTokens(settings["machine_extruder_prestart_code"], extruder_nr)
|
||||||
settings["machine_extruder_start_code"] = self._expandGcodeTokens(settings["machine_extruder_start_code"], extruder_nr)
|
settings["machine_extruder_start_code"] = self._expandGcodeTokens(settings["machine_extruder_start_code"], extruder_nr)
|
||||||
settings["machine_extruder_end_code"] = self._expandGcodeTokens(settings["machine_extruder_end_code"], extruder_nr)
|
settings["machine_extruder_end_code"] = self._expandGcodeTokens(settings["machine_extruder_end_code"], extruder_nr)
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@ class DigitalFactoryApiClient:
|
||||||
url = "{}/projects/{}/files".format(self.CURA_API_ROOT, library_project_id)
|
url = "{}/projects/{}/files".format(self.CURA_API_ROOT, library_project_id)
|
||||||
self._http.get(url,
|
self._http.get(url,
|
||||||
scope = self._scope,
|
scope = self._scope,
|
||||||
callback = self._parseCallback(on_finished, DigitalFactoryFileResponse, failed),
|
callback = self._parseCallback(on_finished, DigitalFactoryFileResponse, failed, default_values = {'username': ''}),
|
||||||
error_callback = failed,
|
error_callback = failed,
|
||||||
timeout = self.DEFAULT_REQUEST_TIMEOUT)
|
timeout = self.DEFAULT_REQUEST_TIMEOUT)
|
||||||
|
|
||||||
|
@ -205,7 +205,8 @@ class DigitalFactoryApiClient:
|
||||||
Callable[[List[CloudApiClientModel]], Any]],
|
Callable[[List[CloudApiClientModel]], Any]],
|
||||||
model: Type[CloudApiClientModel],
|
model: Type[CloudApiClientModel],
|
||||||
on_error: Optional[Callable] = None,
|
on_error: Optional[Callable] = None,
|
||||||
pagination_manager: Optional[PaginationManager] = None) -> Callable[[QNetworkReply], None]:
|
pagination_manager: Optional[PaginationManager] = None,
|
||||||
|
default_values: Dict[str, str] = None) -> Callable[[QNetworkReply], None]:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Creates a callback function so that it includes the parsing of the response into the correct model.
|
Creates a callback function so that it includes the parsing of the response into the correct model.
|
||||||
|
@ -234,7 +235,7 @@ class DigitalFactoryApiClient:
|
||||||
if status_code >= 300 and on_error is not None:
|
if status_code >= 300 and on_error is not None:
|
||||||
on_error()
|
on_error()
|
||||||
else:
|
else:
|
||||||
self._parseModels(response, on_finished, model, pagination_manager = pagination_manager)
|
self._parseModels(response, on_finished, model, pagination_manager = pagination_manager, default_values = default_values)
|
||||||
|
|
||||||
self._anti_gc_callbacks.append(parse)
|
self._anti_gc_callbacks.append(parse)
|
||||||
return parse
|
return parse
|
||||||
|
@ -262,7 +263,8 @@ class DigitalFactoryApiClient:
|
||||||
on_finished: Union[Callable[[CloudApiClientModel], Any],
|
on_finished: Union[Callable[[CloudApiClientModel], Any],
|
||||||
Callable[[List[CloudApiClientModel]], Any]],
|
Callable[[List[CloudApiClientModel]], Any]],
|
||||||
model_class: Type[CloudApiClientModel],
|
model_class: Type[CloudApiClientModel],
|
||||||
pagination_manager: Optional[PaginationManager] = None) -> None:
|
pagination_manager: Optional[PaginationManager] = None,
|
||||||
|
default_values: Dict[str, str] = None) -> None:
|
||||||
"""Parses the given models and calls the correct callback depending on the result.
|
"""Parses the given models and calls the correct callback depending on the result.
|
||||||
|
|
||||||
:param response: The response from the server, after being converted to a dict.
|
:param response: The response from the server, after being converted to a dict.
|
||||||
|
@ -279,7 +281,10 @@ class DigitalFactoryApiClient:
|
||||||
if "links" in response and pagination_manager:
|
if "links" in response and pagination_manager:
|
||||||
pagination_manager.setLinks(response["links"])
|
pagination_manager.setLinks(response["links"])
|
||||||
if isinstance(data, list):
|
if isinstance(data, list):
|
||||||
results = [model_class(**c) for c in data] # type: List[CloudApiClientModel]
|
results = [] # type: List[CloudApiClientModel]
|
||||||
|
for model_data in data:
|
||||||
|
complete_model_data = (default_values | model_data) if default_values is not None else model_data
|
||||||
|
results.append(model_class(**complete_model_data))
|
||||||
on_finished_list = cast(Callable[[List[CloudApiClientModel]], Any], on_finished)
|
on_finished_list = cast(Callable[[List[CloudApiClientModel]], Any], on_finished)
|
||||||
on_finished_list(results)
|
on_finished_list(results)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -54,7 +54,7 @@ Item
|
||||||
{
|
{
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
width: parent.width * 2 / 3
|
width: parent.width / 2
|
||||||
|
|
||||||
spacing: base.columnSpacing
|
spacing: base.columnSpacing
|
||||||
|
|
||||||
|
@ -139,6 +139,39 @@ Item
|
||||||
decimals: 0
|
decimals: 0
|
||||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// =======================================
|
||||||
|
// Right-side column "Nozzle Settings"
|
||||||
|
// =======================================
|
||||||
|
Column
|
||||||
|
{
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.right: parent.right
|
||||||
|
width: parent.width / 2
|
||||||
|
|
||||||
|
spacing: base.columnSpacing
|
||||||
|
|
||||||
|
UM.Label // Title Label
|
||||||
|
{
|
||||||
|
text: catalog.i18nc("@title:label", " ")
|
||||||
|
font: UM.Theme.getFont("medium_bold")
|
||||||
|
}
|
||||||
|
|
||||||
|
Cura.NumericTextFieldWithUnit
|
||||||
|
{
|
||||||
|
id: extruderChangeDurationFieldId
|
||||||
|
containerStackId: base.extruderStackId
|
||||||
|
settingKey: "machine_extruder_change_duration"
|
||||||
|
settingStoreIndex: propertyStoreIndex
|
||||||
|
labelText: catalog.i18nc("@label", "Extruder Change duration")
|
||||||
|
labelFont: base.labelFont
|
||||||
|
labelWidth: base.labelWidth
|
||||||
|
controlWidth: base.controlWidth
|
||||||
|
unitText: catalog.i18nc("@label", "s")
|
||||||
|
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||||
|
}
|
||||||
|
|
||||||
Cura.NumericTextFieldWithUnit
|
Cura.NumericTextFieldWithUnit
|
||||||
{
|
{
|
||||||
|
@ -179,12 +212,35 @@ Item
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.margins: UM.Theme.getSize("default_margin").width
|
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
Cura.GcodeTextArea // "Extruder Start G-code"
|
Column
|
||||||
{
|
{
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
anchors.left: parent.left
|
||||||
anchors.bottom: buttonLearnMore.top
|
anchors.bottom: buttonLearnMore.top
|
||||||
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
|
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
|
||||||
|
|
||||||
|
width: parent.width / 2
|
||||||
|
|
||||||
|
spacing: base.columnSpacing
|
||||||
|
|
||||||
|
Cura.GcodeTextArea // "Extruder Prestart G-code"
|
||||||
|
{
|
||||||
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
height: (parent.height / 2) - UM.Theme.getSize("default_margin").height
|
||||||
|
width: base.columnWidth - UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
|
labelText: catalog.i18nc("@title:label", "Extruder Prestart G-code")
|
||||||
|
containerStackId: base.extruderStackId
|
||||||
|
settingKey: "machine_extruder_prestart_code"
|
||||||
|
settingStoreIndex: propertyStoreIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
Cura.GcodeTextArea // "Extruder Start G-code"
|
||||||
|
{
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.left: parent.left
|
||||||
|
height: (parent.height / 2) - UM.Theme.getSize("default_margin").height
|
||||||
width: base.columnWidth - UM.Theme.getSize("default_margin").width
|
width: base.columnWidth - UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
labelText: catalog.i18nc("@title:label", "Extruder Start G-code")
|
labelText: catalog.i18nc("@title:label", "Extruder Start G-code")
|
||||||
|
@ -192,6 +248,7 @@ Item
|
||||||
settingKey: "machine_extruder_start_code"
|
settingKey: "machine_extruder_start_code"
|
||||||
settingStoreIndex: propertyStoreIndex
|
settingStoreIndex: propertyStoreIndex
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Cura.GcodeTextArea // "Extruder End G-code"
|
Cura.GcodeTextArea // "Extruder End G-code"
|
||||||
{
|
{
|
||||||
|
|
|
@ -345,6 +345,21 @@ Item
|
||||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
- Allows user to toggle if Start Gcode is the absolute first gcode.
|
||||||
|
*/
|
||||||
|
Cura.SimpleCheckBox // "Make sure Start Code is before all gcodes"
|
||||||
|
{
|
||||||
|
id: applyStartGcodeFirstCheckbox
|
||||||
|
containerStackId: machineStackId
|
||||||
|
settingKey: "machine_start_gcode_first"
|
||||||
|
settingStoreIndex: propertyStoreIndex
|
||||||
|
labelText: catalog.i18nc("@label", "Start GCode must be first")
|
||||||
|
labelFont: base.labelFont
|
||||||
|
labelWidth: base.labelWidth
|
||||||
|
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* The "Shared Heater" feature is temporarily disabled because its
|
/* The "Shared Heater" feature is temporarily disabled because its
|
||||||
implementation is incomplete. Printers with multiple filaments going
|
implementation is incomplete. Printers with multiple filaments going
|
||||||
|
|
|
@ -112,15 +112,13 @@ class MakerbotWriter(MeshWriter):
|
||||||
match file_format:
|
match file_format:
|
||||||
case "application/x-makerbot-sketch":
|
case "application/x-makerbot-sketch":
|
||||||
filename, filedata = "print.gcode", gcode_text_io.getvalue()
|
filename, filedata = "print.gcode", gcode_text_io.getvalue()
|
||||||
self._PNG_FORMATS = self._PNG_FORMAT
|
|
||||||
case "application/x-makerbot":
|
case "application/x-makerbot":
|
||||||
filename, filedata = "print.jsontoolpath", du.gcode_2_miracle_jtp(gcode_text_io.getvalue())
|
filename, filedata = "print.jsontoolpath", du.gcode_2_miracle_jtp(gcode_text_io.getvalue())
|
||||||
self._PNG_FORMATS = self._PNG_FORMAT + self._PNG_FORMAT_METHOD
|
|
||||||
case _:
|
case _:
|
||||||
raise Exception("Unsupported Mime type")
|
raise Exception("Unsupported Mime type")
|
||||||
|
|
||||||
png_files = []
|
png_files = []
|
||||||
for png_format in self._PNG_FORMATS:
|
for png_format in (self._PNG_FORMAT + self._PNG_FORMAT_METHOD):
|
||||||
width, height, prefix = png_format["width"], png_format["height"], png_format["prefix"]
|
width, height, prefix = png_format["width"], png_format["height"], png_format["prefix"]
|
||||||
thumbnail_buffer = self._createThumbnail(width, height)
|
thumbnail_buffer = self._createThumbnail(width, height)
|
||||||
if thumbnail_buffer is None:
|
if thumbnail_buffer is None:
|
||||||
|
@ -252,7 +250,7 @@ class MakerbotWriter(MeshWriter):
|
||||||
meta["preferences"] = dict()
|
meta["preferences"] = dict()
|
||||||
bounds = application.getBuildVolume().getBoundingBox()
|
bounds = application.getBuildVolume().getBoundingBox()
|
||||||
meta["preferences"]["instance0"] = {
|
meta["preferences"]["instance0"] = {
|
||||||
"machineBounds": [bounds.right, bounds.back, bounds.left, bounds.front] if bounds is not None else None,
|
"machineBounds": [bounds.right, bounds.front, bounds.left, bounds.back] if bounds is not None else None,
|
||||||
"printMode": CuraApplication.getInstance().getIntentManager().currentIntentCategory,
|
"printMode": CuraApplication.getInstance().getIntentManager().currentIntentCategory,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,65 +1,217 @@
|
||||||
# Copyright (c) 2020 Ultimaker B.V.
|
# Copyright (c) 2020 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
|
||||||
# Created by Wayne Porter
|
# Created by Wayne Porter
|
||||||
|
# Re-write in April of 2024 by GregValiant (Greg Foresi)
|
||||||
|
# Changes:
|
||||||
|
# Added an 'Enable' setting
|
||||||
|
# Added support for multi-line insertions (comma delimited)
|
||||||
|
# Added insertions in a range of layers or a single insertion at a layer. Numbers are consistent with the Cura Preview (base1)
|
||||||
|
# Added frequency of Insertion (once only, every layer, every 2nd, 3rd, 5th, 10th, 25th, 50th, 100th)
|
||||||
|
# Added support for 'One at a Time' print sequence
|
||||||
|
# Rafts are allowed and accounted for but no insertions are made in raft layers
|
||||||
|
|
||||||
from ..Script import Script
|
from ..Script import Script
|
||||||
|
import re
|
||||||
|
from UM.Application import Application
|
||||||
|
|
||||||
class InsertAtLayerChange(Script):
|
class InsertAtLayerChange(Script):
|
||||||
def __init__(self):
|
|
||||||
super().__init__()
|
|
||||||
|
|
||||||
def getSettingDataString(self):
|
def getSettingDataString(self):
|
||||||
return """{
|
return """{
|
||||||
"name": "Insert at layer change",
|
"name": "Insert at Layer Change",
|
||||||
"key": "InsertAtLayerChange",
|
"key": "InsertAtLayerChange",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"settings":
|
"settings":
|
||||||
{
|
{
|
||||||
"insert_location":
|
"enabled":
|
||||||
{
|
{
|
||||||
"label": "When to insert",
|
"label": "Enable this script",
|
||||||
"description": "Whether to insert code before or after layer change.",
|
"description": "You must enable the script for it to run.",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": true,
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"insert_frequency":
|
||||||
|
{
|
||||||
|
"label": "How often to insert",
|
||||||
|
"description": "Every so many layers starting with the Start Layer OR as single insertion at a specific layer. If the print sequence is 'one_at_a_time' then the insertions will be made for every model. Insertions are made at the beginning of a layer.",
|
||||||
"type": "enum",
|
"type": "enum",
|
||||||
"options": {"before": "Before", "after": "After"},
|
"options": {
|
||||||
"default_value": "before"
|
"once_only": "One insertion only",
|
||||||
|
"every_layer": "Every Layer",
|
||||||
|
"every_2nd": "Every 2nd",
|
||||||
|
"every_3rd": "Every 3rd",
|
||||||
|
"every_5th": "Every 5th",
|
||||||
|
"every_10th": "Every 10th",
|
||||||
|
"every_25th": "Every 25th",
|
||||||
|
"every_50th": "Every 50th",
|
||||||
|
"every_100th": "Every 100th"},
|
||||||
|
"default_value": "every_layer",
|
||||||
|
"enabled": "enabled"
|
||||||
|
},
|
||||||
|
"start_layer":
|
||||||
|
{
|
||||||
|
"label": "Starting Layer",
|
||||||
|
"description": "The layer before which the first insertion will take place. If the Print_Sequence is 'All at Once' then use the layer numbers from the Cura Preview. Enter '1' to start at gcode LAYER:0. In 'One at a Time' mode use the layer numbers from the first model that prints AND all models will receive the same insertions. NOTE: There is never an insertion for raft layers.",
|
||||||
|
"type": "int",
|
||||||
|
"default_value": 1,
|
||||||
|
"minimum_value": 1,
|
||||||
|
"enabled": "insert_frequency != 'once_only' and enabled"
|
||||||
|
},
|
||||||
|
"end_layer":
|
||||||
|
{
|
||||||
|
"label": "Ending Layer",
|
||||||
|
"description": "The layer before which the last insertion will take place. Enter '-1' to indicate the entire file. Use layer numbers from the Cura Preview.",
|
||||||
|
"type": "int",
|
||||||
|
"default_value": -1,
|
||||||
|
"minimum_value": -1,
|
||||||
|
"enabled": "insert_frequency != 'once_only' and enabled"
|
||||||
|
},
|
||||||
|
"single_end_layer":
|
||||||
|
{
|
||||||
|
"label": "Layer # for Single Insertion.",
|
||||||
|
"description": "The layer before which the Gcode insertion will take place. Use the layer numbers from the Cura Preview.",
|
||||||
|
"type": "str",
|
||||||
|
"default_value": "",
|
||||||
|
"enabled": "insert_frequency == 'once_only' and enabled"
|
||||||
},
|
},
|
||||||
"gcode_to_add":
|
"gcode_to_add":
|
||||||
{
|
{
|
||||||
"label": "G-code to insert",
|
"label": "G-code to insert.",
|
||||||
"description": "G-code to add before or after layer change.",
|
"description": "G-code to add at start of the layer. Use a comma to delimit multi-line commands. EX: G28 X Y,M220 S100,M117 HELL0. NOTE: All inserted text will be converted to upper-case as some firmwares don't understand lower-case.",
|
||||||
"type": "str",
|
"type": "str",
|
||||||
"default_value": ""
|
"default_value": "",
|
||||||
},
|
"enabled": "enabled"
|
||||||
"skip_layers":
|
|
||||||
{
|
|
||||||
"label": "Skip layers",
|
|
||||||
"description": "Number of layers to skip between insertions (0 for every layer).",
|
|
||||||
"type": "int",
|
|
||||||
"default_value": 0,
|
|
||||||
"minimum_value": 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}"""
|
}"""
|
||||||
|
|
||||||
def execute(self, data):
|
def execute(self, data):
|
||||||
gcode_to_add = self.getSettingValueByKey("gcode_to_add") + "\n"
|
# Exit if the script is not enabled
|
||||||
skip_layers = self.getSettingValueByKey("skip_layers")
|
if not bool(self.getSettingValueByKey("enabled")):
|
||||||
count = 0
|
return data
|
||||||
for layer in data:
|
#Initialize variables
|
||||||
# Check that a layer is being printed
|
mycode = self.getSettingValueByKey("gcode_to_add").upper()
|
||||||
|
start_layer = int(self.getSettingValueByKey("start_layer"))
|
||||||
|
end_layer = int(self.getSettingValueByKey("end_layer"))
|
||||||
|
when_to_insert = self.getSettingValueByKey("insert_frequency")
|
||||||
|
end_list = [0]
|
||||||
|
print_sequence = Application.getInstance().getGlobalContainerStack().getProperty("print_sequence", "value")
|
||||||
|
# Get the topmost layer number and adjust the end_list
|
||||||
|
if end_layer == -1:
|
||||||
|
if print_sequence == "all_at_once":
|
||||||
|
for lnum in range(0, len(data) - 1):
|
||||||
|
if ";LAYER:" in data[lnum]:
|
||||||
|
the_top = int(data[lnum].split(";LAYER:")[1].split("\n")[0])
|
||||||
|
end_list[0] = the_top
|
||||||
|
# Get the topmost layer number for each model and append it to the end_list
|
||||||
|
if print_sequence == "one_at_a_time":
|
||||||
|
for lnum in range(0, 10):
|
||||||
|
if ";LAYER:0" in data[lnum]:
|
||||||
|
start_at = lnum + 1
|
||||||
|
break
|
||||||
|
for lnum in range(start_at, len(data)-1, 1):
|
||||||
|
if ";LAYER:" in data[lnum] and not ";LAYER:0" in data[lnum] and not ";LAYER:-" in data[lnum]:
|
||||||
|
end_list[len(end_list) - 1] = int(data[lnum].split(";LAYER:")[1].split("\n")[0])
|
||||||
|
continue
|
||||||
|
if ";LAYER:0" in data[lnum]:
|
||||||
|
end_list.append(0)
|
||||||
|
elif end_layer != -1:
|
||||||
|
if print_sequence == "all_at_once":
|
||||||
|
# Catch an error if the entered End_Layer > the top layer in the gcode
|
||||||
|
for e_num, layer in enumerate(data):
|
||||||
|
if ";LAYER:" in layer:
|
||||||
|
top_layer = int(data[e_num].split(";LAYER:")[1].split("\n")[0])
|
||||||
|
end_list[0] = end_layer - 1
|
||||||
|
if top_layer < end_layer - 1:
|
||||||
|
end_list[0] = top_layer
|
||||||
|
elif print_sequence == "one_at_a_time":
|
||||||
|
# Find the index of the first Layer:0
|
||||||
|
for lnum in range(0, 10):
|
||||||
|
if ";LAYER:0" in data[lnum]:
|
||||||
|
start_at = lnum + 1
|
||||||
|
break
|
||||||
|
# Get the top layer number for each model
|
||||||
|
for lnum in range(start_at, len(data)-1):
|
||||||
|
if ";LAYER:" in data[lnum] and not ";LAYER:0" in data[lnum] and not ";LAYER:-" in data[lnum]:
|
||||||
|
end_list[len(end_list) - 1] = int(data[lnum].split(";LAYER:")[1].split("\n")[0])
|
||||||
|
if ";LAYER:0" in data[lnum]:
|
||||||
|
end_list.append(0)
|
||||||
|
# Adjust the end list if an end layer was named
|
||||||
|
for index, num in enumerate(end_list):
|
||||||
|
if num > end_layer - 1:
|
||||||
|
end_list[index] = end_layer - 1
|
||||||
|
#If the gcode_to_enter is multi-line then replace the commas with newline characters
|
||||||
|
if mycode != "":
|
||||||
|
if "," in mycode:
|
||||||
|
mycode = re.sub(",", "\n",mycode)
|
||||||
|
gcode_to_add = mycode
|
||||||
|
#Get the insertion frequency
|
||||||
|
match when_to_insert:
|
||||||
|
case "every_layer":
|
||||||
|
freq = 1
|
||||||
|
case "every_2nd":
|
||||||
|
freq = 2
|
||||||
|
case "every_3rd":
|
||||||
|
freq = 3
|
||||||
|
case "every_5th":
|
||||||
|
freq = 5
|
||||||
|
case "every_10th":
|
||||||
|
freq = 10
|
||||||
|
case "every_25th":
|
||||||
|
freq = 25
|
||||||
|
case "every_50th":
|
||||||
|
freq = 50
|
||||||
|
case "every_100th":
|
||||||
|
freq = 100
|
||||||
|
case "once_only":
|
||||||
|
the_insert_layer = int(self.getSettingValueByKey("single_end_layer"))-1
|
||||||
|
case _:
|
||||||
|
raise ValueError(f"Unexpected insertion frequency {when_to_insert}")
|
||||||
|
#Single insertion
|
||||||
|
if when_to_insert == "once_only":
|
||||||
|
# For print sequence 'All at once'
|
||||||
|
if print_sequence == "all_at_once":
|
||||||
|
for index, layer in enumerate(data):
|
||||||
|
if ";LAYER:" + str(the_insert_layer) + "\n" in layer:
|
||||||
lines = layer.split("\n")
|
lines = layer.split("\n")
|
||||||
for line in lines:
|
lines.insert(1,gcode_to_add)
|
||||||
if ";LAYER:" in line:
|
data[index] = "\n".join(lines)
|
||||||
index = data.index(layer)
|
return data
|
||||||
if count == 0:
|
# For print sequence 'One at a time'
|
||||||
if self.getSettingValueByKey("insert_location") == "before":
|
|
||||||
layer = gcode_to_add + layer
|
|
||||||
else:
|
else:
|
||||||
layer = layer + gcode_to_add
|
for index, layer in enumerate(data):
|
||||||
|
if ";LAYER:" + str(the_insert_layer) + "\n" in layer:
|
||||||
data[index] = layer
|
lines = layer.split("\n")
|
||||||
|
lines.insert(1,gcode_to_add)
|
||||||
count = (count + 1) % (skip_layers + 1)
|
data[index] = "\n".join(lines)
|
||||||
|
return data
|
||||||
|
# For multiple insertions
|
||||||
|
if when_to_insert != "once_only":
|
||||||
|
# Search from the line after the first Layer:0 so we know when a model ends if in One at a Time mode.
|
||||||
|
first_0 = True
|
||||||
|
next_layer = start_layer - 1
|
||||||
|
end_layer = end_list.pop(0)
|
||||||
|
for index, layer in enumerate(data):
|
||||||
|
lines = layer.split("\n")
|
||||||
|
for l_index, line in enumerate(lines):
|
||||||
|
if ";LAYER:" in line:
|
||||||
|
layer_number = int(line.split(":")[1])
|
||||||
|
if layer_number == next_layer and layer_number <= end_layer:
|
||||||
|
lines.insert(l_index + 1,gcode_to_add)
|
||||||
|
data[index] = "\n".join(lines)
|
||||||
|
next_layer += freq
|
||||||
|
# Reset the next_layer for one-at-a-time
|
||||||
|
if next_layer > int(end_layer):
|
||||||
|
next_layer = start_layer - 1
|
||||||
|
# Index to the next end_layer when a Layer:0 is encountered
|
||||||
|
try:
|
||||||
|
if not first_0 and layer_number == 0:
|
||||||
|
end_layer = end_list.pop(0)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Beyond the initial Layer:0 futher Layer:0's indicate the top layer of a model.
|
||||||
|
if layer_number == 0:
|
||||||
|
first_0 = False
|
||||||
break
|
break
|
||||||
return data
|
return data
|
|
@ -1,9 +1,15 @@
|
||||||
# Copyright (c) 2020 Ultimaker B.V.
|
# Modified 5/15/2023 - Greg Valiant (Greg Foresi)
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
|
||||||
# Created by Wayne Porter
|
# Created by Wayne Porter
|
||||||
|
# Added insertion frequency
|
||||||
|
# Adjusted for use with Relative Extrusion
|
||||||
|
# Changed Retract to a boolean and when true use the regular Cura retract settings.
|
||||||
|
# Use the regular Cura settings for Travel Speed and Speed_Z instead of asking.
|
||||||
|
# Added code to check the E location to prevent retracts if the filament was already retracted.
|
||||||
|
# Added 'Pause before image' per LemanRus
|
||||||
|
|
||||||
from ..Script import Script
|
from ..Script import Script
|
||||||
|
from UM.Application import Application
|
||||||
|
from UM.Logger import Logger
|
||||||
|
|
||||||
class TimeLapse(Script):
|
class TimeLapse(Script):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -11,7 +17,7 @@ class TimeLapse(Script):
|
||||||
|
|
||||||
def getSettingDataString(self):
|
def getSettingDataString(self):
|
||||||
return """{
|
return """{
|
||||||
"name": "Time Lapse",
|
"name": "Time Lapse Camera",
|
||||||
"key": "TimeLapse",
|
"key": "TimeLapse",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"version": 2,
|
"version": 2,
|
||||||
|
@ -19,24 +25,49 @@ class TimeLapse(Script):
|
||||||
{
|
{
|
||||||
"trigger_command":
|
"trigger_command":
|
||||||
{
|
{
|
||||||
"label": "Trigger camera command",
|
"label": "Camera Trigger Command",
|
||||||
"description": "G-code command used to trigger camera.",
|
"description": "G-code command used to trigger the camera. The setting box will take any command and parameters.",
|
||||||
"type": "str",
|
"type": "str",
|
||||||
"default_value": "M240"
|
"default_value": "M240"
|
||||||
},
|
},
|
||||||
|
"insert_frequency":
|
||||||
|
{
|
||||||
|
"label": "How often (layers)",
|
||||||
|
"description": "Every so many layers (always starts at the first layer whether it's the model or a raft).",
|
||||||
|
"type": "enum",
|
||||||
|
"options": {
|
||||||
|
"every_layer": "Every Layer",
|
||||||
|
"every_2nd": "Every 2nd",
|
||||||
|
"every_3rd": "Every 3rd",
|
||||||
|
"every_5th": "Every 5th",
|
||||||
|
"every_10th": "Every 10th",
|
||||||
|
"every_25th": "Every 25th",
|
||||||
|
"every_50th": "Every 50th",
|
||||||
|
"every_100th": "Every 100th"},
|
||||||
|
"default_value": "every_layer"
|
||||||
|
},
|
||||||
|
"anti_shake_length":
|
||||||
|
{
|
||||||
|
"label": "Pause before image",
|
||||||
|
"description": "How long to wait (in ms) before capturing the image. This is to allow the printer to 'settle down' after movement. To disable set this to '0'.",
|
||||||
|
"type": "int",
|
||||||
|
"default_value": 0,
|
||||||
|
"minimum_value": 0,
|
||||||
|
"unit": "ms"
|
||||||
|
},
|
||||||
"pause_length":
|
"pause_length":
|
||||||
{
|
{
|
||||||
"label": "Pause length",
|
"label": "Pause after image",
|
||||||
"description": "How long to wait (in ms) after camera was triggered.",
|
"description": "How long to wait (in ms) after camera was triggered.",
|
||||||
"type": "int",
|
"type": "int",
|
||||||
"default_value": 700,
|
"default_value": 500,
|
||||||
"minimum_value": 0,
|
"minimum_value": 0,
|
||||||
"unit": "ms"
|
"unit": "ms"
|
||||||
},
|
},
|
||||||
"park_print_head":
|
"park_print_head":
|
||||||
{
|
{
|
||||||
"label": "Park Print Head",
|
"label": "Park Print Head",
|
||||||
"description": "Park the print head out of the way. Assumes absolute positioning.",
|
"description": "Park the print head out of the way.",
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default_value": true
|
"default_value": true
|
||||||
},
|
},
|
||||||
|
@ -55,90 +86,166 @@ class TimeLapse(Script):
|
||||||
"description": "What Y location does the head move to for photo.",
|
"description": "What Y location does the head move to for photo.",
|
||||||
"unit": "mm",
|
"unit": "mm",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 190,
|
"default_value": 0,
|
||||||
"enabled": "park_print_head"
|
|
||||||
},
|
|
||||||
"park_feed_rate":
|
|
||||||
{
|
|
||||||
"label": "Park Feed Rate",
|
|
||||||
"description": "How fast does the head move to the park coordinates.",
|
|
||||||
"unit": "mm/s",
|
|
||||||
"type": "float",
|
|
||||||
"default_value": 9000,
|
|
||||||
"enabled": "park_print_head"
|
"enabled": "park_print_head"
|
||||||
},
|
},
|
||||||
"retract":
|
"retract":
|
||||||
{
|
{
|
||||||
"label": "Retraction Distance",
|
"label": "Retract when required",
|
||||||
"description": "Filament retraction distance for camera trigger.",
|
"description": "Retract if there isn't already a retraction. If unchecked then there will be no retraction even if there is none in the gcode. If retractions are not enabled in Cura there won't be a retraction. regardless of this setting.",
|
||||||
"unit": "mm",
|
"type": "bool",
|
||||||
"type": "int",
|
"default_value": true
|
||||||
"default_value": 0
|
|
||||||
},
|
},
|
||||||
"zhop":
|
"zhop":
|
||||||
{
|
{
|
||||||
"label": "Z-Hop Height When Parking",
|
"label": "Z-Hop Height When Parking",
|
||||||
"description": "Z-hop length before parking",
|
"description": "The height to lift the nozzle off the print before parking.",
|
||||||
"unit": "mm",
|
"unit": "mm",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"default_value": 0
|
"default_value": 2.0,
|
||||||
|
"minimum_value": 0.0
|
||||||
|
},
|
||||||
|
"ensure_final_image":
|
||||||
|
{
|
||||||
|
"label": "Ensure Final Image",
|
||||||
|
"description": "Depending on how the layer numbers work out with the 'How Often' frequency there might not be an image taken at the end of the last layer. This will ensure that one is taken. There is no parking as the Ending Gcode comes right up.",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}"""
|
}"""
|
||||||
|
|
||||||
def execute(self, data):
|
def execute(self, data):
|
||||||
feed_rate = self.getSettingValueByKey("park_feed_rate")
|
mycura = Application.getInstance().getGlobalContainerStack()
|
||||||
|
relative_extrusion = bool(mycura.getProperty("relative_extrusion", "value"))
|
||||||
|
extruder = mycura.extruderList
|
||||||
|
retract_speed = int(extruder[0].getProperty("retraction_speed", "value"))*60
|
||||||
|
retract_dist = round(float(extruder[0].getProperty("retraction_amount", "value")), 2)
|
||||||
|
retract_enabled = bool(extruder[0].getProperty("retraction_enable", "value"))
|
||||||
|
firmware_retract = bool(mycura.getProperty("machine_firmware_retract", "value"))
|
||||||
|
speed_z = int(extruder[0].getProperty("speed_z_hop", "value"))*60
|
||||||
|
if relative_extrusion:
|
||||||
|
rel_cmd = 83
|
||||||
|
else:
|
||||||
|
rel_cmd = 82
|
||||||
|
travel_speed = int(extruder[0].getProperty("speed_travel", "value"))*60
|
||||||
park_print_head = self.getSettingValueByKey("park_print_head")
|
park_print_head = self.getSettingValueByKey("park_print_head")
|
||||||
x_park = self.getSettingValueByKey("head_park_x")
|
x_park = self.getSettingValueByKey("head_park_x")
|
||||||
y_park = self.getSettingValueByKey("head_park_y")
|
y_park = self.getSettingValueByKey("head_park_y")
|
||||||
trigger_command = self.getSettingValueByKey("trigger_command")
|
trigger_command = self.getSettingValueByKey("trigger_command")
|
||||||
pause_length = self.getSettingValueByKey("pause_length")
|
pause_length = self.getSettingValueByKey("pause_length")
|
||||||
retract = int(self.getSettingValueByKey("retract"))
|
retract = bool(self.getSettingValueByKey("retract"))
|
||||||
zhop = self.getSettingValueByKey("zhop")
|
zhop = self.getSettingValueByKey("zhop")
|
||||||
gcode_to_append = ";TimeLapse Begin\n"
|
ensure_final_image = bool(self.getSettingValueByKey("ensure_final_image"))
|
||||||
|
when_to_insert = self.getSettingValueByKey("insert_frequency")
|
||||||
last_x = 0
|
last_x = 0
|
||||||
last_y = 0
|
last_y = 0
|
||||||
last_z = 0
|
last_z = 0
|
||||||
|
last_e = 0
|
||||||
|
prev_e = 0
|
||||||
|
is_retracted = False
|
||||||
|
gcode_to_append = ""
|
||||||
if park_print_head:
|
if park_print_head:
|
||||||
gcode_to_append += self.putValue(G=1, F=feed_rate,
|
gcode_to_append += f"G0 F{travel_speed} X{x_park} Y{y_park} ;Park print head\n"
|
||||||
X=x_park, Y=y_park) + " ;Park print head\n"
|
gcode_to_append += "M400 ;Wait for moves to finish\n"
|
||||||
gcode_to_append += self.putValue(M=400) + " ;Wait for moves to finish\n"
|
anti_shake_length = self.getSettingValueByKey("anti_shake_length")
|
||||||
gcode_to_append += trigger_command + " ;Snap Photo\n"
|
if anti_shake_length > 0:
|
||||||
gcode_to_append += self.putValue(G=4, P=pause_length) + " ;Wait for camera\n"
|
gcode_to_append += f"G4 P{anti_shake_length} ;Wait for printer to settle down\n"
|
||||||
|
gcode_to_append += trigger_command + " ;Snap the Image\n"
|
||||||
for idx, layer in enumerate(data):
|
gcode_to_append += f"G4 P{pause_length} ;Wait for camera to finish\n"
|
||||||
|
match when_to_insert:
|
||||||
|
case "every_layer":
|
||||||
|
step_freq = 1
|
||||||
|
case "every_2nd":
|
||||||
|
step_freq = 2
|
||||||
|
case "every_3rd":
|
||||||
|
step_freq = 3
|
||||||
|
case "every_5th":
|
||||||
|
step_freq = 5
|
||||||
|
case "every_10th":
|
||||||
|
step_freq = 10
|
||||||
|
case "every_25th":
|
||||||
|
step_freq = 25
|
||||||
|
case "every_50th":
|
||||||
|
step_freq = 50
|
||||||
|
case "every_100th":
|
||||||
|
step_freq = 100
|
||||||
|
case _:
|
||||||
|
step_freq = 1
|
||||||
|
# Use the step_freq to index through the layers----------------------------------------
|
||||||
|
for num in range(2,len(data)-1,step_freq):
|
||||||
|
layer = data[num]
|
||||||
|
try:
|
||||||
|
# Track X,Y,Z location.--------------------------------------------------------
|
||||||
for line in layer.split("\n"):
|
for line in layer.split("\n"):
|
||||||
if self.getValue(line, "G") in {0, 1}: # Track X,Y,Z location.
|
if self.getValue(line, "G") in {0, 1}:
|
||||||
last_x = self.getValue(line, "X", last_x)
|
last_x = self.getValue(line, "X", last_x)
|
||||||
last_y = self.getValue(line, "Y", last_y)
|
last_y = self.getValue(line, "Y", last_y)
|
||||||
last_z = self.getValue(line, "Z", last_z)
|
last_z = self.getValue(line, "Z", last_z)
|
||||||
# Check that a layer is being printed
|
#Track the E location so that if there is already a retraction we don't double dip.
|
||||||
|
if rel_cmd == 82:
|
||||||
|
if " E" in line:
|
||||||
|
last_e = line.split("E")[1]
|
||||||
|
if float(last_e) < float(prev_e):
|
||||||
|
is_retracted = True
|
||||||
|
else:
|
||||||
|
is_retracted = False
|
||||||
|
prev_e = last_e
|
||||||
|
elif rel_cmd == 83:
|
||||||
|
if " E" in line:
|
||||||
|
last_e = line.split("E")[1]
|
||||||
|
if float(last_e) < 0:
|
||||||
|
is_retracted = True
|
||||||
|
else:
|
||||||
|
is_retracted = False
|
||||||
|
prev_e = last_e
|
||||||
|
if firmware_retract and self.getValue(line, "G") in {10, 11}:
|
||||||
|
if self.getValue(line, "G") == 10:
|
||||||
|
is_retracted = True
|
||||||
|
last_e = float(prev_e) - float(retract_dist)
|
||||||
|
if self.getValue(line, "G") == 11:
|
||||||
|
is_retracted = False
|
||||||
|
last_e = float(prev_e) + float(retract_dist)
|
||||||
|
prev_e = last_e
|
||||||
lines = layer.split("\n")
|
lines = layer.split("\n")
|
||||||
|
# Insert the code----------------------------------------------------
|
||||||
|
camera_code = ""
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if ";LAYER:" in line:
|
if ";LAYER:" in line:
|
||||||
if retract != 0: # Retract the filament so no stringing happens
|
if retract and not is_retracted and retract_enabled: # Retract unless already retracted
|
||||||
layer += self.putValue(M=83) + " ;Extrude Relative\n"
|
camera_code += ";TYPE:CUSTOM-----------------TimeLapse Begin\n"
|
||||||
layer += self.putValue(G=1, E=-retract, F=3000) + " ;Retract filament\n"
|
camera_code += "M83 ;Extrude Relative\n"
|
||||||
layer += self.putValue(M=82) + " ;Extrude Absolute\n"
|
if not firmware_retract:
|
||||||
layer += self.putValue(M=400) + " ;Wait for moves to finish\n" # Wait to fully retract before hopping
|
camera_code += f"G1 F{retract_speed} E-{retract_dist} ;Retract filament\n"
|
||||||
|
|
||||||
if zhop != 0:
|
|
||||||
layer += self.putValue(G=1, Z=last_z+zhop, F=3000) + " ;Z-Hop\n"
|
|
||||||
|
|
||||||
layer += gcode_to_append
|
|
||||||
|
|
||||||
if zhop != 0:
|
|
||||||
layer += self.putValue(G=0, X=last_x, Y=last_y, Z=last_z) + "; Restore position \n"
|
|
||||||
else:
|
else:
|
||||||
layer += self.putValue(G=0, X=last_x, Y=last_y) + "; Restore position \n"
|
camera_code += "G10 ;Retract filament\n"
|
||||||
|
else:
|
||||||
if retract != 0:
|
camera_code += ";TYPE:CUSTOM-----------------TimeLapse Begin\n"
|
||||||
layer += self.putValue(M=400) + " ;Wait for moves to finish\n"
|
if zhop != 0:
|
||||||
layer += self.putValue(M=83) + " ;Extrude Relative\n"
|
camera_code += f"G1 F{speed_z} Z{round(last_z + zhop,2)} ;Z-Hop\n"
|
||||||
layer += self.putValue(G=1, E=retract, F=3000) + " ;Retract filament\n"
|
camera_code += gcode_to_append
|
||||||
layer += self.putValue(M=82) + " ;Extrude Absolute\n"
|
camera_code += f"G0 F{travel_speed} X{last_x} Y{last_y} ;Restore XY position\n"
|
||||||
|
if zhop != 0:
|
||||||
data[idx] = layer
|
camera_code += f"G0 F{speed_z} Z{last_z} ;Restore Z position\n"
|
||||||
|
if retract and not is_retracted and retract_enabled:
|
||||||
|
if not firmware_retract:
|
||||||
|
camera_code += f"G1 F{retract_speed} E{retract_dist} ;Un-Retract filament\n"
|
||||||
|
else:
|
||||||
|
camera_code += "G11 ;Un-Retract filament\n"
|
||||||
|
camera_code += f"M{rel_cmd} ;Extrude Mode\n"
|
||||||
|
camera_code += f";{'-' * 28}TimeLapse End"
|
||||||
|
# Format the camera code to be inserted
|
||||||
|
temp_lines = camera_code.split("\n")
|
||||||
|
for temp_index, temp_line in enumerate(temp_lines):
|
||||||
|
if ";" in temp_line and not temp_line.startswith(";"):
|
||||||
|
temp_lines[temp_index] = temp_line.replace(temp_line.split(";")[0], temp_line.split(";")[0] + str(" " * (29 - len(temp_line.split(";")[0]))),1)
|
||||||
|
temp_lines = "\n".join(temp_lines)
|
||||||
|
lines.insert(len(lines) - 2, temp_lines)
|
||||||
|
data[num] = "\n".join(lines)
|
||||||
break
|
break
|
||||||
|
except Exception as e:
|
||||||
|
Logger.log("w", "TimeLapse Error: " + repr(e))
|
||||||
|
# Take a final image if there was no camera shot at the end of the last layer.
|
||||||
|
if "TimeLapse Begin" not in data[len(data) - (3 if retract_enabled else 2)] and ensure_final_image:
|
||||||
|
data[len(data)-1] = "M400 ; Wait for all moves to finish\n" + trigger_command + " ;Snap the final Image\n" + f"G4 P{pause_length} ;Wait for camera\n" + data[len(data)-1]
|
||||||
return data
|
return data
|
||||||
|
|
|
@ -256,9 +256,19 @@ class SimulationView(CuraView):
|
||||||
polylines = self.getLayerData()
|
polylines = self.getLayerData()
|
||||||
if polylines is not None:
|
if polylines is not None:
|
||||||
for polyline in polylines.polygons:
|
for polyline in polylines.polygons:
|
||||||
for line_duration in list((polyline.lineLengths / polyline.lineFeedrates)[0]):
|
for line_index in range(len(polyline.lineLengths)):
|
||||||
|
line_length = polyline.lineLengths[line_index]
|
||||||
|
line_feedrate = polyline.lineFeedrates[line_index][0]
|
||||||
|
|
||||||
|
if line_feedrate > 0.0:
|
||||||
|
line_duration = line_length / line_feedrate
|
||||||
|
else:
|
||||||
|
# Something is wrong with this line, set an arbitrary non-null duration
|
||||||
|
line_duration = 0.1
|
||||||
|
|
||||||
total_duration += line_duration / SimulationView.SIMULATION_FACTOR
|
total_duration += line_duration / SimulationView.SIMULATION_FACTOR
|
||||||
self._cumulative_line_duration.append(total_duration)
|
self._cumulative_line_duration.append(total_duration)
|
||||||
|
|
||||||
# for tool change we add an extra tool path
|
# for tool change we add an extra tool path
|
||||||
self._cumulative_line_duration.append(total_duration)
|
self._cumulative_line_duration.append(total_duration)
|
||||||
# set current cached layer
|
# set current cached layer
|
||||||
|
@ -583,7 +593,7 @@ class SimulationView(CuraView):
|
||||||
self._max_thickness = sys.float_info.min
|
self._max_thickness = sys.float_info.min
|
||||||
self._min_flow_rate = sys.float_info.max
|
self._min_flow_rate = sys.float_info.max
|
||||||
self._max_flow_rate = sys.float_info.min
|
self._max_flow_rate = sys.float_info.min
|
||||||
self._cumulative_line_duration = {}
|
self._cumulative_line_duration = []
|
||||||
|
|
||||||
# The colour scheme is only influenced by the visible lines, so filter the lines by if they should be visible.
|
# The colour scheme is only influenced by the visible lines, so filter the lines by if they should be visible.
|
||||||
visible_line_types = []
|
visible_line_types = []
|
||||||
|
|
|
@ -360,8 +360,8 @@ geometry41core =
|
||||||
((v_prev_line_type[0] != 1) && (v_line_type[0] == 1)) ||
|
((v_prev_line_type[0] != 1) && (v_line_type[0] == 1)) ||
|
||||||
((v_prev_line_type[0] != 4) && (v_line_type[0] == 4))
|
((v_prev_line_type[0] != 4) && (v_line_type[0] == 4))
|
||||||
)) {
|
)) {
|
||||||
float w = size_x;
|
float w = max(0.05, size_x);
|
||||||
float h = size_y;
|
float h = max(0.05, size_y);
|
||||||
|
|
||||||
myEmitVertex(v_vertex[0] + vec3( w, h, w), u_starts_color, normalize(vec3( 1.0, 1.0, 1.0)), viewProjectionMatrix * (gl_in[0].gl_Position + vec4( w, h, w, 0.0))); // Front-top-left
|
myEmitVertex(v_vertex[0] + vec3( w, h, w), u_starts_color, normalize(vec3( 1.0, 1.0, 1.0)), viewProjectionMatrix * (gl_in[0].gl_Position + vec4( w, h, w, 0.0))); // Front-top-left
|
||||||
myEmitVertex(v_vertex[0] + vec3(-w, h, w), u_starts_color, normalize(vec3(-1.0, 1.0, 1.0)), viewProjectionMatrix * (gl_in[0].gl_Position + vec4(-w, h, w, 0.0))); // Front-top-right
|
myEmitVertex(v_vertex[0] + vec3(-w, h, w), u_starts_color, normalize(vec3(-1.0, 1.0, 1.0)), viewProjectionMatrix * (gl_in[0].gl_Position + vec4(-w, h, w, 0.0))); // Front-top-right
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
# Copyright (c) 2023 UltiMaker
|
# Copyright (c) 2023 UltiMaker
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
import datetime
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
import time
|
import time
|
||||||
from typing import Optional, Set, TYPE_CHECKING
|
from typing import Any, Optional, Set, TYPE_CHECKING
|
||||||
|
|
||||||
from PyQt6.QtCore import pyqtSlot, QObject
|
from PyQt6.QtCore import pyqtSlot, QObject
|
||||||
from PyQt6.QtNetwork import QNetworkRequest
|
from PyQt6.QtNetwork import QNetworkRequest
|
||||||
|
@ -33,7 +34,18 @@ class SliceInfo(QObject, Extension):
|
||||||
no model files are being sent (Just a SHA256 hash of the model).
|
no model files are being sent (Just a SHA256 hash of the model).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
info_url = "https://stats.ultimaker.com/api/cura"
|
info_url = "https://statistics.ultimaker.com/api/v2/cura/slice"
|
||||||
|
|
||||||
|
_adjust_flattened_names = {
|
||||||
|
"extruders_extruder": "extruders",
|
||||||
|
"extruders_settings": "extruders",
|
||||||
|
"models_model": "models",
|
||||||
|
"models_transformation_data": "models_transformation",
|
||||||
|
"print_settings_": "",
|
||||||
|
"print_times": "print_time",
|
||||||
|
"active_machine_": "",
|
||||||
|
"slice_uuid": "slice_id",
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self, parent = None):
|
def __init__(self, parent = None):
|
||||||
QObject.__init__(self, parent)
|
QObject.__init__(self, parent)
|
||||||
|
@ -112,6 +124,26 @@ class SliceInfo(QObject, Extension):
|
||||||
|
|
||||||
return list(sorted(user_modified_setting_keys))
|
return list(sorted(user_modified_setting_keys))
|
||||||
|
|
||||||
|
def _flattenData(self, data: Any, result: dict, current_flat_key: Optional[str] = None, lift_list: bool = False) -> None:
|
||||||
|
if isinstance(data, dict):
|
||||||
|
for key, value in data.items():
|
||||||
|
total_flat_key = key if current_flat_key is None else f"{current_flat_key}_{key}"
|
||||||
|
self._flattenData(value, result, total_flat_key, lift_list)
|
||||||
|
elif isinstance(data, list):
|
||||||
|
for item in data:
|
||||||
|
self._flattenData(item, result, current_flat_key, True)
|
||||||
|
else:
|
||||||
|
actual_flat_key = current_flat_key.lower()
|
||||||
|
for key, value in self._adjust_flattened_names.items():
|
||||||
|
if actual_flat_key.startswith(key):
|
||||||
|
actual_flat_key = actual_flat_key.replace(key, value)
|
||||||
|
if lift_list:
|
||||||
|
if actual_flat_key not in result:
|
||||||
|
result[actual_flat_key] = []
|
||||||
|
result[actual_flat_key].append(data)
|
||||||
|
else:
|
||||||
|
result[actual_flat_key] = data
|
||||||
|
|
||||||
def _onWriteStarted(self, output_device):
|
def _onWriteStarted(self, output_device):
|
||||||
try:
|
try:
|
||||||
if not self._application.getPreferences().getValue("info/send_slice_info"):
|
if not self._application.getPreferences().getValue("info/send_slice_info"):
|
||||||
|
@ -125,8 +157,7 @@ class SliceInfo(QObject, Extension):
|
||||||
global_stack = machine_manager.activeMachine
|
global_stack = machine_manager.activeMachine
|
||||||
|
|
||||||
data = dict() # The data that we're going to submit.
|
data = dict() # The data that we're going to submit.
|
||||||
data["time_stamp"] = time.time()
|
data["schema_version"] = 1000
|
||||||
data["schema_version"] = 0
|
|
||||||
data["cura_version"] = self._application.getVersion()
|
data["cura_version"] = self._application.getVersion()
|
||||||
data["cura_build_type"] = ApplicationMetadata.CuraBuildType
|
data["cura_build_type"] = ApplicationMetadata.CuraBuildType
|
||||||
org_id = user_profile.get("organization_id", None) if user_profile else None
|
org_id = user_profile.get("organization_id", None) if user_profile else None
|
||||||
|
@ -298,6 +329,11 @@ class SliceInfo(QObject, Extension):
|
||||||
"time_backend": int(round(time_backend)),
|
"time_backend": int(round(time_backend)),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Massage data into format used in the DB:
|
||||||
|
flat_data = dict()
|
||||||
|
self._flattenData(data, flat_data)
|
||||||
|
data = flat_data
|
||||||
|
|
||||||
# Convert data to bytes
|
# Convert data to bytes
|
||||||
binary_data = json.dumps(data).encode("utf-8")
|
binary_data = json.dumps(data).encode("utf-8")
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
# Copyright (c) 2024 UltiMaker
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
import configparser
|
||||||
|
from typing import Dict, List, Tuple
|
||||||
|
import io
|
||||||
|
from UM.VersionUpgrade import VersionUpgrade
|
||||||
|
|
||||||
|
# Just to be sure, since in my testing there were both 0.1.0 and 0.2.0 settings about.
|
||||||
|
_PLUGIN_NAME = "_plugin__curaenginegradualflow"
|
||||||
|
_FROM_PLUGINS_SETTINGS = {
|
||||||
|
"gradual_flow_enabled",
|
||||||
|
"max_flow_acceleration",
|
||||||
|
"layer_0_max_flow_acceleration",
|
||||||
|
"gradual_flow_discretisation_step_size",
|
||||||
|
"reset_flow_duration",
|
||||||
|
} # type: Set[str]
|
||||||
|
|
||||||
|
_NEW_SETTING_VERSION = "24"
|
||||||
|
|
||||||
|
|
||||||
|
class VersionUpgrade58to59(VersionUpgrade):
|
||||||
|
def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
|
||||||
|
"""
|
||||||
|
Upgrades preferences to remove from the visibility list the settings that were removed in this version.
|
||||||
|
It also changes the preferences to have the new version number.
|
||||||
|
|
||||||
|
This removes any settings that were removed in the new Cura version.
|
||||||
|
:param serialized: The original contents of the preferences file.
|
||||||
|
:param filename: The file name of the preferences file.
|
||||||
|
:return: A list of new file names, and a list of the new contents for
|
||||||
|
those files.
|
||||||
|
"""
|
||||||
|
parser = configparser.ConfigParser(interpolation = None)
|
||||||
|
parser.read_string(serialized)
|
||||||
|
|
||||||
|
# Update version number.
|
||||||
|
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
|
||||||
|
|
||||||
|
# Fix renamed settings for visibility
|
||||||
|
if "visible_settings" in parser["general"]:
|
||||||
|
all_setting_keys = parser["general"]["visible_settings"].strip().split(";")
|
||||||
|
if all_setting_keys:
|
||||||
|
for idx, key in enumerate(all_setting_keys):
|
||||||
|
if key.startswith(_PLUGIN_NAME):
|
||||||
|
all_setting_keys[idx] = key.split("__")[-1]
|
||||||
|
parser["general"]["visible_settings"] = ";".join(all_setting_keys)
|
||||||
|
|
||||||
|
result = io.StringIO()
|
||||||
|
parser.write(result)
|
||||||
|
return [filename], [result.getvalue()]
|
||||||
|
|
||||||
|
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
|
||||||
|
"""
|
||||||
|
Upgrades instance containers to remove the settings that were removed in this version.
|
||||||
|
It also changes the instance containers to have the new version number.
|
||||||
|
|
||||||
|
This removes any settings that were removed in the new Cura version and updates settings that need to be updated
|
||||||
|
with a new value.
|
||||||
|
|
||||||
|
:param serialized: The original contents of the instance container.
|
||||||
|
:param filename: The original file name of the instance container.
|
||||||
|
:return: A list of new file names, and a list of the new contents for
|
||||||
|
those files.
|
||||||
|
"""
|
||||||
|
parser = configparser.ConfigParser(interpolation = None, comment_prefixes = ())
|
||||||
|
parser.read_string(serialized)
|
||||||
|
|
||||||
|
# Update version number.
|
||||||
|
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
|
||||||
|
|
||||||
|
# Rename settings.
|
||||||
|
if "values" in parser:
|
||||||
|
for key, value in parser["values"].items():
|
||||||
|
if key.startswith(_PLUGIN_NAME):
|
||||||
|
parser["values"][key.split("__")[-1]] = parser["values"][key]
|
||||||
|
del parser["values"][key]
|
||||||
|
|
||||||
|
result = io.StringIO()
|
||||||
|
parser.write(result)
|
||||||
|
return [filename], [result.getvalue()]
|
||||||
|
|
||||||
|
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
|
||||||
|
"""
|
||||||
|
Upgrades stacks to have the new version number.
|
||||||
|
|
||||||
|
:param serialized: The original contents of the stack.
|
||||||
|
:param filename: The original file name of the stack.
|
||||||
|
:return: A list of new file names, and a list of the new contents for
|
||||||
|
those files.
|
||||||
|
"""
|
||||||
|
parser = configparser.ConfigParser(interpolation = None)
|
||||||
|
parser.read_string(serialized)
|
||||||
|
|
||||||
|
# Update version number.
|
||||||
|
if "metadata" not in parser:
|
||||||
|
parser["metadata"] = {}
|
||||||
|
|
||||||
|
parser["metadata"]["setting_version"] = _NEW_SETTING_VERSION
|
||||||
|
|
||||||
|
result = io.StringIO()
|
||||||
|
parser.write(result)
|
||||||
|
return [filename], [result.getvalue()]
|
61
plugins/VersionUpgrade/VersionUpgrade58to59/__init__.py
Normal file
61
plugins/VersionUpgrade/VersionUpgrade58to59/__init__.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# Copyright (c) 2024 UltiMaker
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
from typing import Any, Dict, TYPE_CHECKING
|
||||||
|
|
||||||
|
from . import VersionUpgrade58to59
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from UM.Application import Application
|
||||||
|
|
||||||
|
upgrade = VersionUpgrade58to59.VersionUpgrade58to59()
|
||||||
|
|
||||||
|
|
||||||
|
def getMetaData() -> Dict[str, Any]:
|
||||||
|
return {
|
||||||
|
"version_upgrade": {
|
||||||
|
# From To Upgrade function
|
||||||
|
("preferences", 7000023): ("preferences", 7000024, upgrade.upgradePreferences),
|
||||||
|
("machine_stack", 6000023): ("machine_stack", 6000024, upgrade.upgradeStack),
|
||||||
|
("extruder_train", 6000023): ("extruder_train", 6000024, upgrade.upgradeStack),
|
||||||
|
("definition_changes", 4000023): ("definition_changes", 4000024, upgrade.upgradeInstanceContainer),
|
||||||
|
("quality_changes", 4000023): ("quality_changes", 4000024, upgrade.upgradeInstanceContainer),
|
||||||
|
("quality", 4000023): ("quality", 4000024, upgrade.upgradeInstanceContainer),
|
||||||
|
("user", 4000023): ("user", 4000024, upgrade.upgradeInstanceContainer),
|
||||||
|
("intent", 4000023): ("intent", 4000024, upgrade.upgradeInstanceContainer),
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"preferences": {
|
||||||
|
"get_version": upgrade.getCfgVersion,
|
||||||
|
"location": {"."}
|
||||||
|
},
|
||||||
|
"machine_stack": {
|
||||||
|
"get_version": upgrade.getCfgVersion,
|
||||||
|
"location": {"./machine_instances"}
|
||||||
|
},
|
||||||
|
"extruder_train": {
|
||||||
|
"get_version": upgrade.getCfgVersion,
|
||||||
|
"location": {"./extruders"}
|
||||||
|
},
|
||||||
|
"definition_changes": {
|
||||||
|
"get_version": upgrade.getCfgVersion,
|
||||||
|
"location": {"./definition_changes"}
|
||||||
|
},
|
||||||
|
"quality_changes": {
|
||||||
|
"get_version": upgrade.getCfgVersion,
|
||||||
|
"location": {"./quality_changes"}
|
||||||
|
},
|
||||||
|
"quality": {
|
||||||
|
"get_version": upgrade.getCfgVersion,
|
||||||
|
"location": {"./quality"}
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"get_version": upgrade.getCfgVersion,
|
||||||
|
"location": {"./user"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def register(app: "Application") -> Dict[str, Any]:
|
||||||
|
return {"version_upgrade": upgrade}
|
8
plugins/VersionUpgrade/VersionUpgrade58to59/plugin.json
Normal file
8
plugins/VersionUpgrade/VersionUpgrade58to59/plugin.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"name": "Version Upgrade 5.8 to 5.9",
|
||||||
|
"author": "UltiMaker",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Upgrades configurations from Cura 5.8 to Cura 5.9.",
|
||||||
|
"api": 8,
|
||||||
|
"i18n-catalog": "cura"
|
||||||
|
}
|
|
@ -918,9 +918,6 @@ class XmlMaterialProfile(InstanceContainer):
|
||||||
base_metadata["properties"] = property_values
|
base_metadata["properties"] = property_values
|
||||||
base_metadata["definition"] = "fdmprinter"
|
base_metadata["definition"] = "fdmprinter"
|
||||||
|
|
||||||
# Certain materials are loaded but should not be visible / selectable to the user.
|
|
||||||
base_metadata["visible"] = not base_metadata.get("abstract_color", False)
|
|
||||||
|
|
||||||
compatible_entries = data.iterfind("./um:settings/um:setting[@key='hardware compatible']", cls.__namespaces)
|
compatible_entries = data.iterfind("./um:settings/um:setting[@key='hardware compatible']", cls.__namespaces)
|
||||||
try:
|
try:
|
||||||
common_compatibility = cls._parseCompatibleValue(next(compatible_entries).text) # type: ignore
|
common_compatibility = cls._parseCompatibleValue(next(compatible_entries).text) # type: ignore
|
||||||
|
|
|
@ -1429,6 +1429,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"BASFUltrafuse316L": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "BASFUltrafuse316L",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "BASF Ultrafuse 316L",
|
||||||
|
"description": "An innovative filament to produce 316L grade stainless steel parts.",
|
||||||
|
"package_version": "1.0.1",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://forward-am.com/material-portfolio/ultrafuse-filaments-for-fused-filaments-fabrication-fff/metal-filaments/ultrafuse-316l/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "BASF",
|
||||||
|
"display_name": "BASF",
|
||||||
|
"email": null,
|
||||||
|
"website": "https://forward-am.com/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"DagomaChromatikPLA": {
|
"DagomaChromatikPLA": {
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "DagomaChromatikPLA",
|
"package_id": "DagomaChromatikPLA",
|
||||||
|
@ -1582,6 +1599,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"JabilTPE_SEBS1300_95a": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "JabilTPE_SEBS1300_95a",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "Jabil TPE SEBS 1300 95a",
|
||||||
|
"description": "Soft material great for prototyping where rubber-like or elastomeric properties and durability are required.",
|
||||||
|
"package_version": "1.0.1",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://www.jabil.com/services/additive-manufacturing/additive-materials/compare-filaments/tpe-sebs-95a.html",
|
||||||
|
"author": {
|
||||||
|
"author_id": "Jabil",
|
||||||
|
"display_name": "Jabil",
|
||||||
|
"email": null,
|
||||||
|
"website": "https://www.jabil.com/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"OctofiberPLA": {
|
"OctofiberPLA": {
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "OctofiberPLA",
|
"package_id": "OctofiberPLA",
|
||||||
|
@ -1616,6 +1650,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"PolyMaxPC": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "PolyMaxPC",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "PolyMax™ PC",
|
||||||
|
"description": "PolyMax™ PC is an engineered PC filament combining excellent strength, toughness, heat resistance and printing quality. It is the ideal choice for a wide range of engineering applications.",
|
||||||
|
"package_version": "1.0.1",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "http://www.polymaker.com/shop/polymax/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "Polymaker",
|
||||||
|
"display_name": "Polymaker L.L.C.",
|
||||||
|
"email": "inquiry@polymaker.com",
|
||||||
|
"website": "https://www.polymaker.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"PolyMaxPLA": {
|
"PolyMaxPLA": {
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "PolyMaxPLA",
|
"package_id": "PolyMaxPLA",
|
||||||
|
@ -1933,11 +1984,201 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ULTIMAKERABSMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "ULTIMAKERABSMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "ABS",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-series-abs/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ULTIMAKERNYLONMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "ULTIMAKERNYLONMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "Nylon",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-series-nylon/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ULTIMAKERNYLONCFMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "ULTIMAKERNYLONCFMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "Nylon Carbon Fiber",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-series-nylon-carbon-fiber/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ULTIMAKERPLAMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "ULTIMAKERPLAMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "PLA",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-series-pla/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ULTIMAKERPVAMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "ULTIMAKERPVAMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "PVA",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-series-pva/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ULTIMAKERPETGMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "ULTIMAKERPETGMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "PETG",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-series-petg/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ULTIMAKERTOUGHMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "ULTIMAKERTOUGHMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "Tough PLA",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-series-tough/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BASFMETALMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "BASFMETALMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "BASF Ultrafuse 316L",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-materials/#metal",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"JABILSEBSMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "JABILSEBSMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "Jabil TPE SEBS 95A",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-materials/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"POLYMAKERPCMETHOD": {
|
||||||
|
"package_info": {
|
||||||
|
"package_id": "POLYMAKERPCMETHOD",
|
||||||
|
"package_type": "material",
|
||||||
|
"display_name": "Polymaker PolyMax PC",
|
||||||
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
|
"package_version": "2.0.0",
|
||||||
|
"sdk_version": "8.6.0",
|
||||||
|
"website": "https://ultimaker.com/materials/method-materials/",
|
||||||
|
"author": {
|
||||||
|
"author_id": "UltimakerPackages",
|
||||||
|
"display_name": "UltiMaker",
|
||||||
|
"email": "materials@ultimaker.com",
|
||||||
|
"website": "https://ultimaker.com",
|
||||||
|
"description": "Professional 3D printing made accessible.",
|
||||||
|
"support_website": "https://ultimaker.com/materials/method-materials/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"ULTIMAKERBASCFMETHOD": {
|
"ULTIMAKERBASCFMETHOD": {
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "ULTIMAKERBASCFMETHOD",
|
"package_id": "ULTIMAKERBASCFMETHOD",
|
||||||
"package_type": "material",
|
"package_type": "material",
|
||||||
"display_name": "Ultimaker ABS-CF",
|
"display_name": "ABS-CF",
|
||||||
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
"package_version": "2.0.0",
|
"package_version": "2.0.0",
|
||||||
"sdk_version": "8.6.0",
|
"sdk_version": "8.6.0",
|
||||||
|
@ -1956,7 +2197,7 @@
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "ULTIMAKERABSRMETHOD",
|
"package_id": "ULTIMAKERABSRMETHOD",
|
||||||
"package_type": "material",
|
"package_type": "material",
|
||||||
"display_name": "Ultimaker ABS-R",
|
"display_name": "ABS-R",
|
||||||
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
"package_version": "2.0.0",
|
"package_version": "2.0.0",
|
||||||
"sdk_version": "8.6.0",
|
"sdk_version": "8.6.0",
|
||||||
|
@ -1975,7 +2216,7 @@
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "ULTIMAKERASAMETHOD",
|
"package_id": "ULTIMAKERASAMETHOD",
|
||||||
"package_type": "material",
|
"package_type": "material",
|
||||||
"display_name": "Ultimaker ASA",
|
"display_name": "ASA",
|
||||||
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
"package_version": "2.0.0",
|
"package_version": "2.0.0",
|
||||||
"sdk_version": "8.6.0",
|
"sdk_version": "8.6.0",
|
||||||
|
@ -1994,7 +2235,7 @@
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "ULTIMAKERNYLON12CFMETHOD",
|
"package_id": "ULTIMAKERNYLON12CFMETHOD",
|
||||||
"package_type": "material",
|
"package_type": "material",
|
||||||
"display_name": "Ultimaker Nylon12 Carbon Fiber",
|
"display_name": "Nylon12 Carbon Fiber",
|
||||||
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
"package_version": "2.0.0",
|
"package_version": "2.0.0",
|
||||||
"sdk_version": "8.6.0",
|
"sdk_version": "8.6.0",
|
||||||
|
@ -2013,7 +2254,7 @@
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "ULTIMAKERRAPIDRINSEMETHOD",
|
"package_id": "ULTIMAKERRAPIDRINSEMETHOD",
|
||||||
"package_type": "material",
|
"package_type": "material",
|
||||||
"display_name": "Ultimaker RapidRinse",
|
"display_name": "RapidRinse",
|
||||||
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
"package_version": "2.0.0",
|
"package_version": "2.0.0",
|
||||||
"sdk_version": "8.6.0",
|
"sdk_version": "8.6.0",
|
||||||
|
@ -2032,7 +2273,7 @@
|
||||||
"package_info": {
|
"package_info": {
|
||||||
"package_id": "ULTIMAKERSR30METHOD",
|
"package_id": "ULTIMAKERSR30METHOD",
|
||||||
"package_type": "material",
|
"package_type": "material",
|
||||||
"display_name": "Ultimaker SR-30",
|
"display_name": "SR-30",
|
||||||
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
"description": "Example package for material and quality profiles for Ultimaker materials.",
|
||||||
"package_version": "2.0.0",
|
"package_version": "2.0.0",
|
||||||
"sdk_version": "8.6.0",
|
"sdk_version": "8.6.0",
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
version: "5.9.0-alpha.0"
|
version: "5.9.0"
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "ankermake_m5_platform.obj",
|
"platform": "ankermake_m5_platform.obj",
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "ankermake_m5_extruder_0" },
|
"machine_extruder_trains": { "0": "ankermake_m5_extruder_0" },
|
||||||
"platform_texture": "ankermake_m5.png",
|
"platform_texture": "ankermake_m5.png",
|
||||||
"preferred_material": "generic_pla",
|
"preferred_material": "generic_pla",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "ankermake_m5c_platform.obj",
|
"platform": "ankermake_m5c_platform.obj",
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "ankermake_m5c_extruder_0" },
|
"machine_extruder_trains": { "0": "ankermake_m5c_extruder_0" },
|
||||||
"platform_texture": "ankermake_m5c.png",
|
"platform_texture": "ankermake_m5c.png",
|
||||||
"preferred_material": "generic_pla",
|
"preferred_material": "generic_pla",
|
||||||
|
@ -67,7 +68,6 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"infill_extruder_nr": { "value": -1 },
|
"infill_extruder_nr": { "value": -1 },
|
||||||
"infill_line_distance": { "value": 8 },
|
|
||||||
"infill_material_flow": { "value": 90 },
|
"infill_material_flow": { "value": 90 },
|
||||||
"infill_pattern": { "value": "'lines' if infill_sparse_density >= 25 else 'grid'" },
|
"infill_pattern": { "value": "'lines' if infill_sparse_density >= 25 else 'grid'" },
|
||||||
"infill_sparse_density": { "value": 10 },
|
"infill_sparse_density": { "value": 10 },
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"platform": "dagoma_sigma_pro.obj",
|
"platform": "dagoma_sigma_pro.obj",
|
||||||
"first_start_actions": [ "MachineSettingsAction" ],
|
"first_start_actions": [ "MachineSettingsAction" ],
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"has_variants": true,
|
"has_variants": true,
|
||||||
"machine_extruder_trains": { "0": "dagoma_sigma_pro_extruder" },
|
"machine_extruder_trains": { "0": "dagoma_sigma_pro_extruder" },
|
||||||
"platform_texture": "dagoma_sigma_pro.png",
|
"platform_texture": "dagoma_sigma_pro.png",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"platform": "dagoma_sigma_pro.obj",
|
"platform": "dagoma_sigma_pro.obj",
|
||||||
"first_start_actions": [ "MachineSettingsAction" ],
|
"first_start_actions": [ "MachineSettingsAction" ],
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"has_variants": true,
|
"has_variants": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
"manufacturer": "Eazao",
|
"manufacturer": "Eazao",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_machine_quality": false,
|
"has_machine_quality": false,
|
||||||
"has_materials": false,
|
|
||||||
"machine_extruder_trains": { "0": "eazao_m500_extruder_0" },
|
"machine_extruder_trains": { "0": "eazao_m500_extruder_0" },
|
||||||
|
"preferred_material": "eazao_clay",
|
||||||
"preferred_quality_type": "normal"
|
"preferred_quality_type": "normal"
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
@ -19,7 +19,6 @@
|
||||||
"acceleration_travel": { "value": 300 },
|
"acceleration_travel": { "value": 300 },
|
||||||
"adhesion_type": { "default_value": "'none'" },
|
"adhesion_type": { "default_value": "'none'" },
|
||||||
"bottom_layers": { "value": 2 },
|
"bottom_layers": { "value": 2 },
|
||||||
"cool_fan_enabled": { "value": false },
|
|
||||||
"infill_sparse_density": { "value": 0 },
|
"infill_sparse_density": { "value": 0 },
|
||||||
"initial_bottom_layers": { "value": 2 },
|
"initial_bottom_layers": { "value": 2 },
|
||||||
"jerk_print": { "value": 10 },
|
"jerk_print": { "value": 10 },
|
||||||
|
@ -58,7 +57,6 @@
|
||||||
"retraction_amount": { "value": 7 },
|
"retraction_amount": { "value": 7 },
|
||||||
"retraction_combing": { "value": "'noskin'" },
|
"retraction_combing": { "value": "'noskin'" },
|
||||||
"retraction_count_max": { "value": 100 },
|
"retraction_count_max": { "value": 100 },
|
||||||
"retraction_enable": { "value": false },
|
|
||||||
"retraction_extrusion_window": { "value": 10 },
|
"retraction_extrusion_window": { "value": 10 },
|
||||||
"retraction_hop": { "value": 0.2 },
|
"retraction_hop": { "value": 0.2 },
|
||||||
"speed_print": { "value": 20.0 },
|
"speed_print": { "value": 20.0 },
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
"manufacturer": "Eazao",
|
"manufacturer": "Eazao",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_machine_quality": false,
|
"has_machine_quality": false,
|
||||||
"has_materials": false,
|
|
||||||
"machine_extruder_trains": { "0": "eazao_m600_extruder_0" },
|
"machine_extruder_trains": { "0": "eazao_m600_extruder_0" },
|
||||||
|
"preferred_material": "eazao_clay",
|
||||||
"preferred_quality_type": "normal"
|
"preferred_quality_type": "normal"
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
@ -19,7 +19,6 @@
|
||||||
"acceleration_travel": { "value": 300 },
|
"acceleration_travel": { "value": 300 },
|
||||||
"adhesion_type": { "default_value": "'none'" },
|
"adhesion_type": { "default_value": "'none'" },
|
||||||
"bottom_layers": { "value": 2 },
|
"bottom_layers": { "value": 2 },
|
||||||
"cool_fan_enabled": { "value": false },
|
|
||||||
"infill_sparse_density": { "value": 0 },
|
"infill_sparse_density": { "value": 0 },
|
||||||
"initial_bottom_layers": { "value": 2 },
|
"initial_bottom_layers": { "value": 2 },
|
||||||
"jerk_print": { "value": 10 },
|
"jerk_print": { "value": 10 },
|
||||||
|
@ -58,7 +57,6 @@
|
||||||
"retraction_amount": { "value": 7 },
|
"retraction_amount": { "value": 7 },
|
||||||
"retraction_combing": { "value": "'noskin'" },
|
"retraction_combing": { "value": "'noskin'" },
|
||||||
"retraction_count_max": { "value": 100 },
|
"retraction_count_max": { "value": 100 },
|
||||||
"retraction_enable": { "value": false },
|
|
||||||
"retraction_extrusion_window": { "value": 10 },
|
"retraction_extrusion_window": { "value": 10 },
|
||||||
"retraction_hop": { "value": 0.2 },
|
"retraction_hop": { "value": 0.2 },
|
||||||
"speed_print": { "value": 20.0 },
|
"speed_print": { "value": 20.0 },
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
"manufacturer": "Eazao",
|
"manufacturer": "Eazao",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_machine_quality": false,
|
"has_machine_quality": false,
|
||||||
"has_materials": false,
|
|
||||||
"machine_extruder_trains": { "0": "eazao_m700_extruder_0" },
|
"machine_extruder_trains": { "0": "eazao_m700_extruder_0" },
|
||||||
|
"preferred_material": "eazao_clay",
|
||||||
"preferred_quality_type": "normal"
|
"preferred_quality_type": "normal"
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
@ -19,7 +19,6 @@
|
||||||
"acceleration_travel": { "value": 300 },
|
"acceleration_travel": { "value": 300 },
|
||||||
"adhesion_type": { "default_value": "none" },
|
"adhesion_type": { "default_value": "none" },
|
||||||
"bottom_layers": { "value": 2 },
|
"bottom_layers": { "value": 2 },
|
||||||
"cool_fan_enabled": { "value": false },
|
|
||||||
"infill_sparse_density": { "value": 0 },
|
"infill_sparse_density": { "value": 0 },
|
||||||
"initial_bottom_layers": { "value": 2 },
|
"initial_bottom_layers": { "value": 2 },
|
||||||
"jerk_print": { "value": 10 },
|
"jerk_print": { "value": 10 },
|
||||||
|
@ -58,7 +57,6 @@
|
||||||
"retraction_amount": { "value": 7 },
|
"retraction_amount": { "value": 7 },
|
||||||
"retraction_combing": { "value": "'noskin'" },
|
"retraction_combing": { "value": "'noskin'" },
|
||||||
"retraction_count_max": { "value": 100 },
|
"retraction_count_max": { "value": 100 },
|
||||||
"retraction_enable": { "value": false },
|
|
||||||
"retraction_extrusion_window": { "value": 10 },
|
"retraction_extrusion_window": { "value": 10 },
|
||||||
"retraction_hop": { "value": 0.2 },
|
"retraction_hop": { "value": 0.2 },
|
||||||
"speed_print": { "value": 20.0 },
|
"speed_print": { "value": 20.0 },
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
"manufacturer": "Eazao",
|
"manufacturer": "Eazao",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_machine_quality": false,
|
"has_machine_quality": false,
|
||||||
"has_materials": false,
|
|
||||||
"machine_extruder_trains": { "0": "eazao_potter_extruder_0" },
|
"machine_extruder_trains": { "0": "eazao_potter_extruder_0" },
|
||||||
|
"preferred_material": "eazao_clay",
|
||||||
"preferred_quality_type": "normal"
|
"preferred_quality_type": "normal"
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
@ -19,7 +19,6 @@
|
||||||
"acceleration_travel": { "value": 300 },
|
"acceleration_travel": { "value": 300 },
|
||||||
"adhesion_type": { "default_value": "'none'" },
|
"adhesion_type": { "default_value": "'none'" },
|
||||||
"bottom_layers": { "value": 3 },
|
"bottom_layers": { "value": 3 },
|
||||||
"cool_fan_enabled": { "value": false },
|
|
||||||
"infill_sparse_density": { "value": 0 },
|
"infill_sparse_density": { "value": 0 },
|
||||||
"initial_bottom_layers": { "value": 3 },
|
"initial_bottom_layers": { "value": 3 },
|
||||||
"jerk_print": { "value": 10 },
|
"jerk_print": { "value": 10 },
|
||||||
|
@ -58,7 +57,6 @@
|
||||||
"retraction_amount": { "value": 7 },
|
"retraction_amount": { "value": 7 },
|
||||||
"retraction_combing": { "value": "'noskin'" },
|
"retraction_combing": { "value": "'noskin'" },
|
||||||
"retraction_count_max": { "value": 100 },
|
"retraction_count_max": { "value": 100 },
|
||||||
"retraction_enable": { "value": false },
|
|
||||||
"retraction_extrusion_window": { "value": 10 },
|
"retraction_extrusion_window": { "value": 10 },
|
||||||
"retraction_hop": { "value": 0.2 },
|
"retraction_hop": { "value": 0.2 },
|
||||||
"speed_print": { "value": 25.0 },
|
"speed_print": { "value": 25.0 },
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
"manufacturer": "Eazao",
|
"manufacturer": "Eazao",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"has_machine_quality": false,
|
"has_machine_quality": false,
|
||||||
"has_materials": false,
|
|
||||||
"machine_extruder_trains": { "0": "eazao_zero_extruder_0" },
|
"machine_extruder_trains": { "0": "eazao_zero_extruder_0" },
|
||||||
|
"preferred_material": "eazao_clay",
|
||||||
"preferred_quality_type": "normal"
|
"preferred_quality_type": "normal"
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
@ -20,7 +20,6 @@
|
||||||
"acceleration_travel": { "value": 300 },
|
"acceleration_travel": { "value": 300 },
|
||||||
"adhesion_type": { "default_value": "none" },
|
"adhesion_type": { "default_value": "none" },
|
||||||
"bottom_layers": { "value": 3 },
|
"bottom_layers": { "value": 3 },
|
||||||
"cool_fan_enabled": { "value": false },
|
|
||||||
"infill_sparse_density": { "value": 0 },
|
"infill_sparse_density": { "value": 0 },
|
||||||
"initial_bottom_layers": { "value": 3 },
|
"initial_bottom_layers": { "value": 3 },
|
||||||
"jerk_print": { "value": 10 },
|
"jerk_print": { "value": 10 },
|
||||||
|
@ -58,9 +57,7 @@
|
||||||
"optimize_wall_printing_order": { "value": "True" },
|
"optimize_wall_printing_order": { "value": "True" },
|
||||||
"retraction_amount": { "value": 7 },
|
"retraction_amount": { "value": 7 },
|
||||||
"retraction_combing": { "value": "'noskin'" },
|
"retraction_combing": { "value": "'noskin'" },
|
||||||
"retraction_combing_max_distance": { "value": 0 },
|
|
||||||
"retraction_count_max": { "value": 100 },
|
"retraction_count_max": { "value": 100 },
|
||||||
"retraction_enable": { "value": false },
|
|
||||||
"retraction_extrusion_window": { "value": 10 },
|
"retraction_extrusion_window": { "value": 10 },
|
||||||
"retraction_hop": { "value": 0.2 },
|
"retraction_hop": { "value": 0.2 },
|
||||||
"speed_print": { "value": 25.0 },
|
"speed_print": { "value": 25.0 },
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"author": "Ultimaker",
|
"author": "Ultimaker",
|
||||||
"manufacturer": "Unknown",
|
"manufacturer": "Unknown",
|
||||||
"position": "0",
|
"position": "0",
|
||||||
"setting_version": 23,
|
"setting_version": 24,
|
||||||
"type": "extruder"
|
"type": "extruder"
|
||||||
},
|
},
|
||||||
"settings":
|
"settings":
|
||||||
|
@ -39,6 +39,18 @@
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"unit": "mm"
|
"unit": "mm"
|
||||||
},
|
},
|
||||||
|
"machine_extruder_change_duration":
|
||||||
|
{
|
||||||
|
"default_value": 0,
|
||||||
|
"description": "When using a multi tool setup, this value is the tool change time in seconds. This value will be added to the estimate time based on the number of changes that occur.",
|
||||||
|
"label": "Extruder Change duration",
|
||||||
|
"minimum_value": "0",
|
||||||
|
"settable_globally": false,
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": false,
|
||||||
|
"settable_per_meshgroup": false,
|
||||||
|
"type": "float"
|
||||||
|
},
|
||||||
"machine_extruder_cooling_fan_number":
|
"machine_extruder_cooling_fan_number":
|
||||||
{
|
{
|
||||||
"default_value": 0,
|
"default_value": 0,
|
||||||
|
@ -109,6 +121,17 @@
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"unit": "mm"
|
"unit": "mm"
|
||||||
},
|
},
|
||||||
|
"machine_extruder_prestart_code":
|
||||||
|
{
|
||||||
|
"default_value": "",
|
||||||
|
"description": "Prestart g-code to execute before switching to this extruder.",
|
||||||
|
"label": "Extruder Prestart G-Code",
|
||||||
|
"settable_globally": false,
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": false,
|
||||||
|
"settable_per_meshgroup": false,
|
||||||
|
"type": "str"
|
||||||
|
},
|
||||||
"machine_extruder_start_code":
|
"machine_extruder_start_code":
|
||||||
{
|
{
|
||||||
"default_value": "",
|
"default_value": "",
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"type": "machine",
|
"type": "machine",
|
||||||
"author": "Unknown",
|
"author": "Unknown",
|
||||||
"manufacturer": "Unknown",
|
"manufacturer": "Unknown",
|
||||||
"setting_version": 23,
|
"setting_version": 24,
|
||||||
"file_formats": "text/x-gcode;model/stl;application/x-wavefront-obj;application/x3g",
|
"file_formats": "text/x-gcode;model/stl;application/x-wavefront-obj;application/x3g",
|
||||||
"visible": false,
|
"visible": false,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
@ -15,8 +15,11 @@
|
||||||
"preferred_material": "generic_pla",
|
"preferred_material": "generic_pla",
|
||||||
"preferred_quality_type": "normal",
|
"preferred_quality_type": "normal",
|
||||||
"machine_extruder_trains": { "0": "fdmextruder" },
|
"machine_extruder_trains": { "0": "fdmextruder" },
|
||||||
|
"has_textured_buildplate": false,
|
||||||
"supports_usb_connection": true,
|
"supports_usb_connection": true,
|
||||||
"supports_network_connection": false
|
"supports_network_connection": false,
|
||||||
|
"supports_abstract_color": false,
|
||||||
|
"variants_name_has_translation": false
|
||||||
},
|
},
|
||||||
"settings":
|
"settings":
|
||||||
{
|
{
|
||||||
|
@ -512,6 +515,16 @@
|
||||||
"settable_per_extruder": false,
|
"settable_per_extruder": false,
|
||||||
"settable_per_meshgroup": false
|
"settable_per_meshgroup": false
|
||||||
},
|
},
|
||||||
|
"machine_start_gcode_first":
|
||||||
|
{
|
||||||
|
"label": "Start GCode must be first",
|
||||||
|
"description": "This setting controls if the start-gcode is forced to always be the first g-code. Without this option other g-code, such as a T0 can be inserted before the start g-code.",
|
||||||
|
"type": "bool",
|
||||||
|
"default_value": false,
|
||||||
|
"settable_per_mesh": false,
|
||||||
|
"settable_per_extruder": false,
|
||||||
|
"settable_per_meshgroup": false
|
||||||
|
},
|
||||||
"extruder_prime_pos_z":
|
"extruder_prime_pos_z":
|
||||||
{
|
{
|
||||||
"label": "Extruder Prime Z Position",
|
"label": "Extruder Prime Z Position",
|
||||||
|
@ -1423,7 +1436,7 @@
|
||||||
"z_seam_corner_weighted": "Smart Hiding"
|
"z_seam_corner_weighted": "Smart Hiding"
|
||||||
},
|
},
|
||||||
"default_value": "z_seam_corner_inner",
|
"default_value": "z_seam_corner_inner",
|
||||||
"enabled": "z_seam_type != 'random'",
|
"enabled": "z_seam_type == 'sharpest_corner'",
|
||||||
"limit_to_extruder": "wall_0_extruder_nr",
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
"settable_per_mesh": true
|
"settable_per_mesh": true
|
||||||
},
|
},
|
||||||
|
@ -6063,7 +6076,7 @@
|
||||||
"none": "None"
|
"none": "None"
|
||||||
},
|
},
|
||||||
"default_value": "brim",
|
"default_value": "brim",
|
||||||
"resolve": "extruderValue(adhesion_extruder_nr, 'adhesion_type')",
|
"resolve": "min(extruderValues('adhesion_type'), key=('raft', 'brim', 'skirt', 'none').index)",
|
||||||
"settable_per_mesh": false,
|
"settable_per_mesh": false,
|
||||||
"settable_per_extruder": false
|
"settable_per_extruder": false
|
||||||
},
|
},
|
||||||
|
@ -8366,7 +8379,7 @@
|
||||||
"wall_overhang_angle":
|
"wall_overhang_angle":
|
||||||
{
|
{
|
||||||
"label": "Overhanging Wall Angle",
|
"label": "Overhanging Wall Angle",
|
||||||
"description": "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either.",
|
"description": "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either. Furthermore, any line that's less than half overhanging will also not be treated as overhang.",
|
||||||
"unit": "\u00b0",
|
"unit": "\u00b0",
|
||||||
"type": "float",
|
"type": "float",
|
||||||
"minimum_value": "0",
|
"minimum_value": "0",
|
||||||
|
@ -8923,6 +8936,115 @@
|
||||||
"type": "bool",
|
"type": "bool",
|
||||||
"default_value": true,
|
"default_value": true,
|
||||||
"settable_per_mesh": true
|
"settable_per_mesh": true
|
||||||
|
},
|
||||||
|
"scarf_joint_seam_length":
|
||||||
|
{
|
||||||
|
"label": "Scarf Seam Length",
|
||||||
|
"description": "Determines the length of the scarf seam, a seam type that should make the Z seam less visible. Must be higher than 0 to be effective.",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 0,
|
||||||
|
"minimum_value": "0",
|
||||||
|
"maximum_value_warning": "50.0",
|
||||||
|
"unit": "mm",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true
|
||||||
|
},
|
||||||
|
"scarf_joint_seam_start_height_ratio":
|
||||||
|
{
|
||||||
|
"label": "Scarf Seam Start Height",
|
||||||
|
"description": "The ratio of the selected layer height at which the scarf seam will begin. A lower number will result in a larger seam height. Must be lower than 100 to be effective.",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 0,
|
||||||
|
"minimum_value": 0,
|
||||||
|
"maximum_value": 100.0,
|
||||||
|
"unit": "%",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true,
|
||||||
|
"enabled": "scarf_joint_seam_length > 0"
|
||||||
|
},
|
||||||
|
"scarf_split_distance":
|
||||||
|
{
|
||||||
|
"label": "Scarf Seam Step Length",
|
||||||
|
"description": "Determines the length of each step in the flow change when extruding along the scarf seam. A smaller distance will result in a more precise but also more complex G-code.",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 1.0,
|
||||||
|
"minimum_value": 0.1,
|
||||||
|
"maximum_value": 100.0,
|
||||||
|
"maximum_value_warning": "scarf_joint_seam_length",
|
||||||
|
"unit": "mm",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true,
|
||||||
|
"enabled": "scarf_joint_seam_length > 0"
|
||||||
|
},
|
||||||
|
"wall_0_start_speed_ratio":
|
||||||
|
{
|
||||||
|
"label": "Outer Wall Start Speed Ratio",
|
||||||
|
"description": "This is the ratio of the top speed to start with when printing an outer wall.",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 100.0,
|
||||||
|
"minimum_value": 0.0,
|
||||||
|
"maximum_value": 100.0,
|
||||||
|
"unit": "%",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true
|
||||||
|
},
|
||||||
|
"wall_0_acceleration":
|
||||||
|
{
|
||||||
|
"label": "Outer Wall Start Acceleration",
|
||||||
|
"description": "This is the acceleration with which to reach the top speed when printing an outer wall.",
|
||||||
|
"enabled": "wall_0_start_speed_ratio < 100.0",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 20.0,
|
||||||
|
"minimum_value": 1.0,
|
||||||
|
"maximum_value": 100000.0,
|
||||||
|
"unit": "mm/s\u00b2",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true
|
||||||
|
},
|
||||||
|
"wall_0_end_speed_ratio":
|
||||||
|
{
|
||||||
|
"label": "Outer Wall End Speed Ratio",
|
||||||
|
"description": "This is the ratio of the top speed to end with when printing an outer wall.",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 100.0,
|
||||||
|
"minimum_value": 0.0,
|
||||||
|
"maximum_value": 100.0,
|
||||||
|
"unit": "%",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true
|
||||||
|
},
|
||||||
|
"wall_0_deceleration":
|
||||||
|
{
|
||||||
|
"label": "Outer Wall End Deceleration",
|
||||||
|
"description": "This is the deceleration with which to end printing an outer wall.",
|
||||||
|
"enabled": "wall_0_end_speed_ratio < 100.0",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 20.0,
|
||||||
|
"minimum_value": 1.0,
|
||||||
|
"maximum_value": 100000.0,
|
||||||
|
"unit": "mm/s\u00b2",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true
|
||||||
|
},
|
||||||
|
"wall_0_speed_split_distance":
|
||||||
|
{
|
||||||
|
"label": "Outer Wall Speed Split Distance",
|
||||||
|
"description": "This is the maximum length of an extrusion path when splitting a longer path to apply the outer wall acceleration/deceleration. A smaller distance will create a more precise but also more verbose G-Code.",
|
||||||
|
"type": "float",
|
||||||
|
"default_value": 1.0,
|
||||||
|
"minimum_value": 0.1,
|
||||||
|
"maximum_value": 100.0,
|
||||||
|
"unit": "mm",
|
||||||
|
"limit_to_extruder": "wall_0_extruder_nr",
|
||||||
|
"settable_per_extruder": true,
|
||||||
|
"settable_per_mesh": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "oducceu",
|
"author": "oducceu",
|
||||||
"platform": "flyingbear_platform.obj",
|
"platform": "flyingbear_platform.obj",
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"platform_texture": "flyingbear_platform.png",
|
"platform_texture": "flyingbear_platform.png",
|
||||||
"quality_definition": "flyingbear_base"
|
"quality_definition": "flyingbear_base"
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "oducceu",
|
"author": "oducceu",
|
||||||
"platform": "flyingbear_platform.obj",
|
"platform": "flyingbear_platform.obj",
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"platform_texture": "flyingbear_platform.png",
|
"platform_texture": "flyingbear_platform.png",
|
||||||
"quality_definition": "flyingbear_base"
|
"quality_definition": "flyingbear_base"
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "barrnet",
|
"author": "barrnet",
|
||||||
"platform": "flyingbear_platform.obj",
|
"platform": "flyingbear_platform.obj",
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"platform_texture": "flyingbear_platform.png",
|
"platform_texture": "flyingbear_platform.png",
|
||||||
"quality_definition": "flyingbear_base"
|
"quality_definition": "flyingbear_base"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "hellbot_adonis.obj",
|
"platform": "hellbot_adonis.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_adonis_extruder" },
|
"machine_extruder_trains": { "0": "hellbot_adonis_extruder" },
|
||||||
"platform_offset": [
|
"platform_offset": [
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "hellbot_hidra.obj",
|
"platform": "hellbot_hidra.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "hellbot_hidra_extruder_0",
|
"0": "hellbot_hidra_extruder_0",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "hellbot_hidra_plus.obj",
|
"platform": "hellbot_hidra_plus.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "hellbot_hidra_plus_extruder_0",
|
"0": "hellbot_hidra_plus_extruder_0",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_230.obj",
|
"platform": "Hellbot_Magna_2_230.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_2_230_extruder_0" },
|
"machine_extruder_trains": { "0": "hellbot_magna_2_230_extruder_0" },
|
||||||
"platform_texture": "Magna2_230.png"
|
"platform_texture": "Magna2_230.png"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_230.obj",
|
"platform": "Hellbot_Magna_2_230.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "hellbot_magna_2_230_dual_extruder_0",
|
"0": "hellbot_magna_2_230_dual_extruder_0",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_300.obj",
|
"platform": "Hellbot_Magna_2_300.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_2_300_extruder_0" },
|
"machine_extruder_trains": { "0": "hellbot_magna_2_300_extruder_0" },
|
||||||
"platform_texture": "Magna2_300.png"
|
"platform_texture": "Magna2_300.png"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_300.obj",
|
"platform": "Hellbot_Magna_2_300.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "hellbot_magna_2_300_dual_extruder_0",
|
"0": "hellbot_magna_2_300_dual_extruder_0",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_400.obj",
|
"platform": "Hellbot_Magna_2_400.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_2_400_extruder_0" },
|
"machine_extruder_trains": { "0": "hellbot_magna_2_400_extruder_0" },
|
||||||
"platform_texture": "Magna2_400.png"
|
"platform_texture": "Magna2_400.png"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_400.obj",
|
"platform": "Hellbot_Magna_2_400.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "hellbot_magna_2_400_dual_extruder_0",
|
"0": "hellbot_magna_2_400_dual_extruder_0",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_500.obj",
|
"platform": "Hellbot_Magna_2_500.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_2_500_extruder_0" },
|
"machine_extruder_trains": { "0": "hellbot_magna_2_500_extruder_0" },
|
||||||
"platform_texture": "Magna2_500.png"
|
"platform_texture": "Magna2_500.png"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_2_500.obj",
|
"platform": "Hellbot_Magna_2_500.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "hellbot_magna_2_500_dual_extruder_0",
|
"0": "hellbot_magna_2_500_dual_extruder_0",
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "hellbot_magna.obj",
|
"platform": "hellbot_magna.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_i_extruder" },
|
"machine_extruder_trains": { "0": "hellbot_magna_i_extruder" },
|
||||||
"platform_offset": [
|
"platform_offset": [
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "hellbot_magna_SE.obj",
|
"platform": "hellbot_magna_SE.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_SE_extruder" },
|
"machine_extruder_trains": { "0": "hellbot_magna_SE_extruder" },
|
||||||
"platform_texture": "hellbot_magna_SE.png"
|
"platform_texture": "hellbot_magna_SE.png"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_SE_300.obj",
|
"platform": "Hellbot_Magna_SE_300.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_SE_300_extruder" },
|
"machine_extruder_trains": { "0": "hellbot_magna_SE_300_extruder" },
|
||||||
"platform_texture": "Hellbot_Magna_SE_300.png"
|
"platform_texture": "Hellbot_Magna_SE_300.png"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "Hellbot_Magna_SE_Pro.obj",
|
"platform": "Hellbot_Magna_SE_Pro.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "hellbot_magna_SE_Pro_extruder" },
|
"machine_extruder_trains": { "0": "hellbot_magna_SE_Pro_extruder" },
|
||||||
"platform_texture": "Hellbot_magna_SE_Pro.png"
|
"platform_texture": "Hellbot_magna_SE_Pro.png"
|
||||||
},
|
},
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"platform": "hellbot_magna.obj",
|
"platform": "hellbot_magna.obj",
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "hellbot_magna_dual_extruder_1",
|
"0": "hellbot_magna_dual_extruder_1",
|
||||||
|
|
|
@ -16,7 +16,8 @@
|
||||||
"preferred_material": "generic_pla",
|
"preferred_material": "generic_pla",
|
||||||
"preferred_quality_type": "standard",
|
"preferred_quality_type": "standard",
|
||||||
"preferred_variant_name": "0.4mm",
|
"preferred_variant_name": "0.4mm",
|
||||||
"variants_name": "Extruder:"
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
"first_start_actions": [ "MachineSettingsAction" ],
|
"first_start_actions": [ "MachineSettingsAction" ],
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "koonovo_base_extruder_0" },
|
"machine_extruder_trains": { "0": "koonovo_base_extruder_0" },
|
||||||
"platform_texture": "koonovo.png",
|
"platform_texture": "koonovo.png",
|
||||||
"preferred_material": "generic_pla",
|
"preferred_material": "generic_pla",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"platform": "moai.obj",
|
"platform": "moai.obj",
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
"has_materials": false,
|
"has_materials": false,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"machine_extruder_trains": { "0": "peopoly_moai_extruder_0" },
|
"machine_extruder_trains": { "0": "peopoly_moai_extruder_0" },
|
||||||
"platform_texture": "moai.jpg"
|
"platform_texture": "moai.jpg"
|
||||||
},
|
},
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
"preferred_quality_type": "extra_fast",
|
"preferred_quality_type": "extra_fast",
|
||||||
"preferred_variant_name": "0.84mm (Green)",
|
"preferred_variant_name": "0.84mm (Green)",
|
||||||
"supported_actions": [],
|
"supported_actions": [],
|
||||||
"variants_name": "Print core"
|
"variants_name": "Print Core"
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
"cool_min_layer_time_fan_speed_max": { "value": "cool_min_layer_time + 5" },
|
"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_speed": { "value": "round(speed_wall_0 * 3 / 4) if cool_lift_head else round(speed_wall_0 / 5)" },
|
||||||
"cool_min_temperature": { "value": "max([material_final_print_temperature, material_initial_print_temperature, material_print_temperature - 15])" },
|
"cool_min_temperature": { "value": "max([material_final_print_temperature, material_initial_print_temperature, material_print_temperature - 15])" },
|
||||||
|
"extra_infill_lines_to_support_skins": { "value": "'none'" },
|
||||||
"gradual_support_infill_step_height": { "value": "4 * layer_height" },
|
"gradual_support_infill_step_height": { "value": "4 * layer_height" },
|
||||||
"gradual_support_infill_steps": { "value": "2 if support_interface_enable and support_structure != 'tree' else 0" },
|
"gradual_support_infill_steps": { "value": "2 if support_interface_enable and support_structure != 'tree' else 0" },
|
||||||
"infill_material_flow": { "value": "(1.95-infill_sparse_density / 100 if infill_sparse_density > 95 else 1) * material_flow" },
|
"infill_material_flow": { "value": "(1.95-infill_sparse_density / 100 if infill_sparse_density > 95 else 1) * material_flow" },
|
||||||
|
@ -70,14 +71,12 @@
|
||||||
"machine_max_feedrate_e": { "default_value": 45 },
|
"machine_max_feedrate_e": { "default_value": 45 },
|
||||||
"material_bed_temperature":
|
"material_bed_temperature":
|
||||||
{
|
{
|
||||||
"maximum_value": "140",
|
"maximum_value": "120",
|
||||||
"maximum_value_warning": "120",
|
|
||||||
"minimum_value": "0"
|
"minimum_value": "0"
|
||||||
},
|
},
|
||||||
"material_bed_temperature_layer_0":
|
"material_bed_temperature_layer_0":
|
||||||
{
|
{
|
||||||
"maximum_value": "140",
|
"maximum_value": "120",
|
||||||
"maximum_value_warning": "120",
|
|
||||||
"minimum_value": "0"
|
"minimum_value": "0"
|
||||||
},
|
},
|
||||||
"material_print_temp_wait": { "value": false },
|
"material_print_temp_wait": { "value": false },
|
||||||
|
@ -111,6 +110,7 @@
|
||||||
"roofing_layer_count": { "value": "1" },
|
"roofing_layer_count": { "value": "1" },
|
||||||
"roofing_material_flow": { "value": "material_flow" },
|
"roofing_material_flow": { "value": "material_flow" },
|
||||||
"skin_angles": { "value": "[] if infill_pattern not in ['cross', 'cross_3d'] else [20, 110]" },
|
"skin_angles": { "value": "[] if infill_pattern not in ['cross', 'cross_3d'] else [20, 110]" },
|
||||||
|
"skin_edge_support_thickness": { "value": "4 * layer_height if infill_sparse_density < 30 else 0" },
|
||||||
"skin_material_flow": { "value": "0.95 * material_flow" },
|
"skin_material_flow": { "value": "0.95 * material_flow" },
|
||||||
"skin_material_flow_layer_0": { "value": "95" },
|
"skin_material_flow_layer_0": { "value": "95" },
|
||||||
"skin_monotonic": { "value": "roofing_layer_count == 0" },
|
"skin_monotonic": { "value": "roofing_layer_count == 0" },
|
||||||
|
|
|
@ -26,7 +26,9 @@
|
||||||
"ultimaker_petcf",
|
"ultimaker_petcf",
|
||||||
"ultimaker_petg",
|
"ultimaker_petg",
|
||||||
"ultimaker_pva",
|
"ultimaker_pva",
|
||||||
"ultimaker_tough_pla"
|
"ultimaker_tough_pla",
|
||||||
|
"generic_cffpps",
|
||||||
|
"ultimaker_ppscf"
|
||||||
],
|
],
|
||||||
"firmware_file": "MarlinUltimaker2.hex",
|
"firmware_file": "MarlinUltimaker2.hex",
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
|
|
|
@ -21,7 +21,9 @@
|
||||||
"generic_hips",
|
"generic_hips",
|
||||||
"generic_petcf",
|
"generic_petcf",
|
||||||
"structur3d_",
|
"structur3d_",
|
||||||
"ultimaker_petcf"
|
"ultimaker_petcf",
|
||||||
|
"generic_cffpps",
|
||||||
|
"ultimaker_ppscf"
|
||||||
],
|
],
|
||||||
"firmware_update_info":
|
"firmware_update_info":
|
||||||
{
|
{
|
||||||
|
@ -49,7 +51,8 @@
|
||||||
"supported_actions": [ "DiscoverUM3Action" ],
|
"supported_actions": [ "DiscoverUM3Action" ],
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Print core"
|
"variants_name": "Print Core",
|
||||||
|
"variants_name_has_translation": true
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,7 +36,8 @@
|
||||||
"preferred_variant_name": "AA 0.4",
|
"preferred_variant_name": "AA 0.4",
|
||||||
"quality_definition": "ultimaker3",
|
"quality_definition": "ultimaker3",
|
||||||
"supported_actions": [ "DiscoverUM3Action" ],
|
"supported_actions": [ "DiscoverUM3Action" ],
|
||||||
"variants_name": "Print core"
|
"variants_name": "Print Core",
|
||||||
|
"variants_name_has_translation": true
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,10 +39,12 @@
|
||||||
"preferred_quality_type": "draft",
|
"preferred_quality_type": "draft",
|
||||||
"preferred_variant_name": "AA 0.4",
|
"preferred_variant_name": "AA 0.4",
|
||||||
"supported_actions": [ "DiscoverUM3Action" ],
|
"supported_actions": [ "DiscoverUM3Action" ],
|
||||||
|
"supports_abstract_color": true,
|
||||||
"supports_material_export": true,
|
"supports_material_export": true,
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Print core",
|
"variants_name": "Print Core",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -1
|
"weight": -1
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
@ -112,10 +114,10 @@
|
||||||
"machine_head_with_fans_polygon":
|
"machine_head_with_fans_polygon":
|
||||||
{
|
{
|
||||||
"default_value": [
|
"default_value": [
|
||||||
[-30, -80],
|
[-35, -80],
|
||||||
[-30, 20],
|
[-35, 30],
|
||||||
[50, 20],
|
[55, 30],
|
||||||
[50, -80]
|
[55, -80]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"machine_heated_bed": { "default_value": true },
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
"chromatik_",
|
"chromatik_",
|
||||||
"3D-Fuel_",
|
"3D-Fuel_",
|
||||||
"bestfilament_",
|
"bestfilament_",
|
||||||
|
"eazao_",
|
||||||
"emotiontech_",
|
"emotiontech_",
|
||||||
"eryone_",
|
"eryone_",
|
||||||
"eSUN_",
|
"eSUN_",
|
||||||
|
@ -23,19 +24,7 @@
|
||||||
"fabtotum_",
|
"fabtotum_",
|
||||||
"fdplast_",
|
"fdplast_",
|
||||||
"filo3d_",
|
"filo3d_",
|
||||||
"generic_asa_175",
|
"generic_",
|
||||||
"generic_abs_175",
|
|
||||||
"generic_bvoh_175",
|
|
||||||
"generic_petg_175",
|
|
||||||
"generic_pla_175",
|
|
||||||
"generic_tough_pla_175",
|
|
||||||
"generic_pva_175",
|
|
||||||
"generic_cffpa_175",
|
|
||||||
"generic_cpe_175",
|
|
||||||
"generic_nylon_175",
|
|
||||||
"generic_hips_175",
|
|
||||||
"generic_pc_175",
|
|
||||||
"generic_tpu_175",
|
|
||||||
"goofoo_",
|
"goofoo_",
|
||||||
"ideagen3D_",
|
"ideagen3D_",
|
||||||
"imade3d_",
|
"imade3d_",
|
||||||
|
@ -44,6 +33,7 @@
|
||||||
"leapfrog_",
|
"leapfrog_",
|
||||||
"polyflex_pla",
|
"polyflex_pla",
|
||||||
"polymax_pla",
|
"polymax_pla",
|
||||||
|
"polymaker_polymax_pc_175",
|
||||||
"polyplus_pla",
|
"polyplus_pla",
|
||||||
"polywood_pla",
|
"polywood_pla",
|
||||||
"redd_",
|
"redd_",
|
||||||
|
@ -53,23 +43,23 @@
|
||||||
"ultimaker_absr_175",
|
"ultimaker_absr_175",
|
||||||
"ultimaker_abscf_175",
|
"ultimaker_abscf_175",
|
||||||
"ultimaker_bvoh_175",
|
"ultimaker_bvoh_175",
|
||||||
"ultimaker_petg_175",
|
|
||||||
"ultimaker_cffpa_175",
|
"ultimaker_cffpa_175",
|
||||||
"ultimaker_cpe_175",
|
"ultimaker_cpe_175",
|
||||||
"ultimaker_nylon_175",
|
"ultimaker_nylon_175",
|
||||||
"ultimaker_hips_175",
|
"ultimaker_hips_175",
|
||||||
"ultimaker_pc_175",
|
"ultimaker_pc_175",
|
||||||
"ultimaker_tpu_175",
|
"ultimaker_tpu_175",
|
||||||
"ultimaker_tough_pla_175",
|
|
||||||
"ultimaker_rapidrinse_175",
|
"ultimaker_rapidrinse_175",
|
||||||
"ultimaker_sr30",
|
"ultimaker_sr30",
|
||||||
|
"ultimaker_metallic_pla_175",
|
||||||
"verbatim_",
|
"verbatim_",
|
||||||
"Vertex_",
|
"Vertex_",
|
||||||
"volumic_",
|
"volumic_",
|
||||||
"xyzprinting_",
|
"xyzprinting_",
|
||||||
"zyyx_pro_",
|
"zyyx_pro_",
|
||||||
"octofiber_",
|
"octofiber_",
|
||||||
"fiberlogy_"
|
"fiberlogy_",
|
||||||
|
"ultimaker_metallic_pla_175"
|
||||||
],
|
],
|
||||||
"has_machine_materials": true,
|
"has_machine_materials": true,
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
|
@ -93,44 +83,13 @@
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variant_definition": "ultimaker_method",
|
"variant_definition": "ultimaker_method",
|
||||||
"variants_name": "Extruder",
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -1
|
"weight": -1
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
"build_volume_temperature": { "maximum_value": "67" },
|
"build_volume_temperature": { "maximum_value": "67" },
|
||||||
"machine_depth": { "default_value": 236.48 },
|
|
||||||
"machine_disallowed_areas":
|
|
||||||
{
|
|
||||||
"default_value": [
|
|
||||||
[
|
|
||||||
[-141.65, -118.11],
|
|
||||||
[141.65, -118.11],
|
|
||||||
[141.65, -94],
|
|
||||||
[-141.65, -94]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[-141.65, 118.37],
|
|
||||||
[141.65, 118.37],
|
|
||||||
[141.65, 94],
|
|
||||||
[-141.65, 94]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[-141.65, -118.11],
|
|
||||||
[-75, -118.11],
|
|
||||||
[-75, 118.37],
|
|
||||||
[-141.65, 118.37]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[75, -118.11],
|
|
||||||
[141.65, -118.11],
|
|
||||||
[141.65, 118.37],
|
|
||||||
[75, 118.37]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"machine_height": { "default_value": 196 },
|
|
||||||
"machine_name": { "default_value": "UltiMaker Method" },
|
"machine_name": { "default_value": "UltiMaker Method" },
|
||||||
"machine_width": { "default_value": 283.3 },
|
|
||||||
"prime_tower_position_x": { "value": "(150 / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (150 - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (150 / 2 if resolveOrValue('machine_center_is_zero') else 0)" },
|
"prime_tower_position_x": { "value": "(150 / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (150 - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (150 / 2 if resolveOrValue('machine_center_is_zero') else 0)" },
|
||||||
"prime_tower_position_y": { "value": "190 - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (190 / 2 if resolveOrValue('machine_center_is_zero') else 0)" }
|
"prime_tower_position_y": { "value": "190 - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (190 / 2 if resolveOrValue('machine_center_is_zero') else 0)" }
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,42 +9,7 @@
|
||||||
"manufacturer": "Ultimaker B.V.",
|
"manufacturer": "Ultimaker B.V.",
|
||||||
"file_formats": "application/x-makerbot",
|
"file_formats": "application/x-makerbot",
|
||||||
"platform": "ultimaker_method_platform.stl",
|
"platform": "ultimaker_method_platform.stl",
|
||||||
"exclude_materials": [
|
"exclude_materials": [],
|
||||||
"dsm_",
|
|
||||||
"Essentium_",
|
|
||||||
"imade3d_",
|
|
||||||
"chromatik_",
|
|
||||||
"3D-Fuel_",
|
|
||||||
"bestfilament_",
|
|
||||||
"emotiontech_",
|
|
||||||
"eryone_",
|
|
||||||
"eSUN_",
|
|
||||||
"Extrudr_",
|
|
||||||
"fabtotum_",
|
|
||||||
"fdplast_",
|
|
||||||
"filo3d_",
|
|
||||||
"generic_",
|
|
||||||
"ultimaker_rapidrinse_175",
|
|
||||||
"goofoo_",
|
|
||||||
"ideagen3D_",
|
|
||||||
"imade3d_",
|
|
||||||
"innofill_",
|
|
||||||
"layer_one_",
|
|
||||||
"leapfrog_",
|
|
||||||
"polyflex_pla",
|
|
||||||
"polymax_pla",
|
|
||||||
"polyplus_pla",
|
|
||||||
"polywood_pla",
|
|
||||||
"redd_",
|
|
||||||
"tizyx_",
|
|
||||||
"verbatim_",
|
|
||||||
"Vertex_",
|
|
||||||
"volumic_",
|
|
||||||
"xyzprinting_",
|
|
||||||
"zyyx_pro_",
|
|
||||||
"octofiber_",
|
|
||||||
"fiberlogy_"
|
|
||||||
],
|
|
||||||
"has_machine_materials": true,
|
"has_machine_materials": true,
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
@ -61,6 +26,7 @@
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Extruder",
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -1
|
"weight": -1
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
@ -170,13 +136,19 @@
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"value": "acceleration_print"
|
"value": "acceleration_print"
|
||||||
},
|
},
|
||||||
"adhesion_extruder_nr": { "value": 0 },
|
"adhesion_extruder_nr":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": "min(extruderValues('extruder_nr'))"
|
||||||
|
},
|
||||||
"adhesion_type": { "value": "'raft'" },
|
"adhesion_type": { "value": "'raft'" },
|
||||||
|
"bottom_thickness":
|
||||||
|
{
|
||||||
|
"minimum_value_warning": 0.3,
|
||||||
|
"value": "top_bottom_thickness"
|
||||||
|
},
|
||||||
"bridge_enable_more_layers": { "value": true },
|
"bridge_enable_more_layers": { "value": true },
|
||||||
"bridge_fan_speed": { "value": "cool_fan_speed_max" },
|
|
||||||
"bridge_fan_speed_2": { "value": "(cool_fan_speed_max + cool_fan_speed_min) / 2" },
|
"bridge_fan_speed_2": { "value": "(cool_fan_speed_max + cool_fan_speed_min) / 2" },
|
||||||
"bridge_fan_speed_3": { "value": "cool_fan_speed_min" },
|
|
||||||
"bridge_settings_enabled": { "value": true },
|
|
||||||
"bridge_skin_density": { "value": 100 },
|
"bridge_skin_density": { "value": 100 },
|
||||||
"bridge_skin_density_2": { "value": 100 },
|
"bridge_skin_density_2": { "value": 100 },
|
||||||
"bridge_skin_density_3": { "value": 100 },
|
"bridge_skin_density_3": { "value": 100 },
|
||||||
|
@ -191,18 +163,43 @@
|
||||||
"bridge_wall_material_flow": { "value": "material_flow" },
|
"bridge_wall_material_flow": { "value": "material_flow" },
|
||||||
"bridge_wall_speed": { "value": "speed_wall" },
|
"bridge_wall_speed": { "value": "speed_wall" },
|
||||||
"brim_width": { "value": 5 },
|
"brim_width": { "value": 5 },
|
||||||
|
"cool_during_extruder_switch": { "value": "'only_last_extruder'" },
|
||||||
"cool_fan_enabled":
|
"cool_fan_enabled":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "support_extruder_nr" ]
|
"force_depends_on_settings": [ "support_extruder_nr" ]
|
||||||
},
|
},
|
||||||
|
"cool_fan_full_at_height": { "value": "1 if resolveOrValue('adhesion_type') == 'raft' else layer_height + layer_height_0" },
|
||||||
|
"cool_fan_full_layer": { "value": "1 if resolveOrValue('adhesion_type') == 'raft' else 3" },
|
||||||
"default_material_bed_temperature": { "resolve": "min(extruderValues('default_material_bed_temperature'))" },
|
"default_material_bed_temperature": { "resolve": "min(extruderValues('default_material_bed_temperature'))" },
|
||||||
"extruder_prime_pos_abs": { "default_value": true },
|
"extruder_prime_pos_abs": { "default_value": true },
|
||||||
"gradual_support_infill_steps": { "value": 0 },
|
"gradual_support_infill_steps": { "value": 0 },
|
||||||
|
"group_outer_walls": { "value": false },
|
||||||
|
"infill_angles":
|
||||||
|
{
|
||||||
|
"value": [
|
||||||
|
45,
|
||||||
|
45,
|
||||||
|
45,
|
||||||
|
45,
|
||||||
|
45,
|
||||||
|
135,
|
||||||
|
135,
|
||||||
|
135,
|
||||||
|
135,
|
||||||
|
135
|
||||||
|
]
|
||||||
|
},
|
||||||
"infill_before_walls": { "value": false },
|
"infill_before_walls": { "value": false },
|
||||||
"infill_material_flow": { "value": "material_flow" },
|
"infill_material_flow": { "value": "material_flow" },
|
||||||
"infill_overlap": { "value": 0 },
|
"infill_overlap": { "value": 0 },
|
||||||
"infill_pattern": { "value": "'grid' if infill_sparse_density < 80 else 'lines'" },
|
"infill_pattern": { "value": "'zigzag'" },
|
||||||
"infill_wipe_dist": { "value": 0 },
|
"infill_wipe_dist": { "value": 0 },
|
||||||
|
"initial_layer_line_width_factor":
|
||||||
|
{
|
||||||
|
"maximum_value": 350,
|
||||||
|
"maximum_value_warning": 320,
|
||||||
|
"value": "100 if resolveOrValue('adhesion_type') == 'raft' else 200"
|
||||||
|
},
|
||||||
"inset_direction": { "value": "'inside_out'" },
|
"inset_direction": { "value": "'inside_out'" },
|
||||||
"jerk_enabled":
|
"jerk_enabled":
|
||||||
{
|
{
|
||||||
|
@ -309,22 +306,37 @@
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"value": "jerk_print"
|
"value": "jerk_print"
|
||||||
},
|
},
|
||||||
|
"layer_height_0": { "value": "layer_height if resolveOrValue('adhesion_type') == 'raft' else layer_height * 1.25" },
|
||||||
"machine_acceleration": { "default_value": 3000 },
|
"machine_acceleration": { "default_value": 3000 },
|
||||||
"machine_center_is_zero": { "value": true },
|
"machine_center_is_zero": { "value": true },
|
||||||
|
"machine_depth": { "default_value": 236.48 },
|
||||||
|
"machine_disallowed_areas": { "value": "[ [ [-141.65, -118.11], [141.65, -118.11], [141.65, -95.205], [-141.65, -95.205] ], [ [-141.65, 118.37], [141.65, 118.37], [141.65, 95.205], [-141.65, 95.205] ], [ [-141.65, -118.11], [-114.249, -118.11], [-114.249, 118.37], [-141.65, 118.37] ], [ [76.149, -118.11], [141.65, -118.11], [141.65, 118.37], [76.149, 118.37] ] ] if max(extruderValues('extruder_nr')) == 0 else [ [ [-141.65, -118.11], [141.65, -118.11], [141.65, -95.205], [-141.65, -95.205] ], [ [-141.65, 118.37], [141.65, 118.37], [141.65, 95.205], [-141.65, 95.205] ], [ [-141.65, -118.11], [-76.149, -118.11], [-76.149, 118.37], [-141.65, 118.37] ], [ [76.149, -118.11], [141.65, -118.11], [141.65, 118.37], [76.149, 118.37] ] ]" },
|
||||||
"machine_end_gcode": { "default_value": "" },
|
"machine_end_gcode": { "default_value": "" },
|
||||||
"machine_extruder_count": { "default_value": 2 },
|
"machine_extruder_count": { "default_value": 2 },
|
||||||
"machine_gcode_flavor": { "default_value": "Griffin" },
|
"machine_gcode_flavor": { "default_value": "Griffin" },
|
||||||
"machine_heated_bed": { "default_value": false },
|
"machine_heated_bed": { "default_value": false },
|
||||||
"machine_heated_build_volume": { "default_value": true },
|
"machine_heated_build_volume": { "default_value": true },
|
||||||
|
"machine_height": { "default_value": 196.749 },
|
||||||
"machine_min_cool_heat_time_window": { "value": 15 },
|
"machine_min_cool_heat_time_window": { "value": 15 },
|
||||||
"machine_name": { "default_value": "UltiMaker Method" },
|
"machine_name": { "default_value": "UltiMaker Method" },
|
||||||
"machine_nozzle_cool_down_speed": { "value": 0.8 },
|
"machine_nozzle_cool_down_speed": { "value": 0.8 },
|
||||||
"machine_nozzle_heat_up_speed": { "value": 3.5 },
|
"machine_nozzle_heat_up_speed": { "value": 3.5 },
|
||||||
"machine_scale_fan_speed_zero_to_one": { "value": true },
|
"machine_scale_fan_speed_zero_to_one": { "value": true },
|
||||||
"machine_start_gcode": { "default_value": "G0 Z20" },
|
"machine_start_gcode": { "default_value": "G0 Z20" },
|
||||||
|
"machine_width": { "default_value": 283.3 },
|
||||||
"material_bed_temperature": { "enabled": "machine_heated_bed" },
|
"material_bed_temperature": { "enabled": "machine_heated_bed" },
|
||||||
|
"material_final_print_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value": "material_print_temperature",
|
||||||
|
"minimum_value": "material_standby_temperature"
|
||||||
|
},
|
||||||
"material_flow": { "value": 100 },
|
"material_flow": { "value": 100 },
|
||||||
"material_initial_print_temperature": { "value": "material_print_temperature-10" },
|
"material_initial_print_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value": "material_print_temperature",
|
||||||
|
"minimum_value": "material_standby_temperature",
|
||||||
|
"value": "material_print_temperature-5"
|
||||||
|
},
|
||||||
"material_print_temperature":
|
"material_print_temperature":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "support_extruder_nr" ]
|
"force_depends_on_settings": [ "support_extruder_nr" ]
|
||||||
|
@ -336,20 +348,35 @@
|
||||||
"multiple_mesh_overlap": { "value": 0 },
|
"multiple_mesh_overlap": { "value": 0 },
|
||||||
"optimize_wall_printing_order": { "value": true },
|
"optimize_wall_printing_order": { "value": true },
|
||||||
"prime_blob_enable": { "enabled": false },
|
"prime_blob_enable": { "enabled": false },
|
||||||
"prime_tower_base_curve_magnitude": { "value": 2 },
|
"prime_tower_enable": { "default_value": true },
|
||||||
"prime_tower_base_height": { "value": 6 },
|
|
||||||
"prime_tower_base_size": { "value": 10 },
|
|
||||||
"prime_tower_enable": { "value": false },
|
|
||||||
"prime_tower_flow": { "value": "material_flow" },
|
"prime_tower_flow": { "value": "material_flow" },
|
||||||
"prime_tower_line_width": { "value": 1 },
|
"prime_tower_line_width":
|
||||||
|
{
|
||||||
|
"maximum_value": 2,
|
||||||
|
"maximum_value_warning": 1.5,
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"prime_tower_mode":
|
||||||
|
{
|
||||||
|
"resolve": "'normal'",
|
||||||
|
"value": "'normal'"
|
||||||
|
},
|
||||||
"prime_tower_raft_base_line_spacing": { "value": "raft_base_line_width" },
|
"prime_tower_raft_base_line_spacing": { "value": "raft_base_line_width" },
|
||||||
"prime_tower_wipe_enabled": { "value": true },
|
"prime_tower_wipe_enabled": { "value": true },
|
||||||
"print_sequence": { "enabled": false },
|
"print_sequence": { "enabled": false },
|
||||||
|
"raft_acceleration": { "enabled": false },
|
||||||
"raft_airgap":
|
"raft_airgap":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "support_extruder_nr" ]
|
"force_depends_on_settings": [ "support_extruder_nr" ]
|
||||||
},
|
},
|
||||||
|
"raft_base_acceleration": { "enabled": false },
|
||||||
|
"raft_base_extruder_nr":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": "min(extruderValues('extruder_nr'))"
|
||||||
|
},
|
||||||
"raft_base_fan_speed": { "value": 0 },
|
"raft_base_fan_speed": { "value": 0 },
|
||||||
|
"raft_base_jerk": { "enabled": false },
|
||||||
"raft_base_line_spacing":
|
"raft_base_line_spacing":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "raft_interface_extruder_nr" ],
|
"force_depends_on_settings": [ "raft_interface_extruder_nr" ],
|
||||||
|
@ -358,9 +385,10 @@
|
||||||
"raft_base_line_width":
|
"raft_base_line_width":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "raft_interface_extruder_nr" ],
|
"force_depends_on_settings": [ "raft_interface_extruder_nr" ],
|
||||||
|
"maximum_value": 2.5,
|
||||||
|
"maximum_value_warning": 1.8,
|
||||||
"value": 1.4
|
"value": 1.4
|
||||||
},
|
},
|
||||||
"raft_base_speed": { "value": 10 },
|
|
||||||
"raft_base_thickness":
|
"raft_base_thickness":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [
|
"force_depends_on_settings": [
|
||||||
|
@ -369,24 +397,24 @@
|
||||||
],
|
],
|
||||||
"value": 0.8
|
"value": 0.8
|
||||||
},
|
},
|
||||||
"raft_base_wall_count":
|
"raft_base_wall_count": { "value": "raft_wall_count" },
|
||||||
{
|
"raft_interface_acceleration": { "enabled": false },
|
||||||
"force_depends_on_settings": [ "support_extruder_nr" ],
|
"raft_interface_extruder_nr": { "value": "max(extruderValues('extruder_nr'))" },
|
||||||
"value": "raft_wall_count"
|
|
||||||
},
|
|
||||||
"raft_interface_extruder_nr": { "value": "raft_surface_extruder_nr" },
|
|
||||||
"raft_interface_fan_speed": { "value": 0 },
|
"raft_interface_fan_speed": { "value": 0 },
|
||||||
"raft_interface_infill_overlap":
|
"raft_interface_infill_overlap":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "raft_interface_extruder_nr" ]
|
"force_depends_on_settings": [ "raft_interface_extruder_nr" ]
|
||||||
},
|
},
|
||||||
|
"raft_interface_infill_overlap_mm": { "maximum_value_warning": "2 * machine_nozzle_size" },
|
||||||
|
"raft_interface_jerk": { "enabled": false },
|
||||||
"raft_interface_layers": { "value": 2 },
|
"raft_interface_layers": { "value": 2 },
|
||||||
"raft_interface_line_spacing":
|
"raft_interface_line_spacing":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [
|
"force_depends_on_settings": [
|
||||||
"raft_base_thickness",
|
"raft_base_thickness",
|
||||||
"raft_interface_extruder_nr"
|
"raft_interface_extruder_nr"
|
||||||
]
|
],
|
||||||
|
"minimum_value_warning": "raft_interface_line_width * 0.8"
|
||||||
},
|
},
|
||||||
"raft_interface_line_width":
|
"raft_interface_line_width":
|
||||||
{
|
{
|
||||||
|
@ -396,7 +424,11 @@
|
||||||
],
|
],
|
||||||
"value": 0.7
|
"value": 0.7
|
||||||
},
|
},
|
||||||
"raft_interface_speed": { "value": 90 },
|
"raft_interface_speed":
|
||||||
|
{
|
||||||
|
"force_depends_on_settings": [ "support_extruder_nr" ],
|
||||||
|
"value": "raft_speed * 5"
|
||||||
|
},
|
||||||
"raft_interface_thickness": { "value": 0.3 },
|
"raft_interface_thickness": { "value": 0.3 },
|
||||||
"raft_interface_wall_count": { "value": "raft_wall_count" },
|
"raft_interface_wall_count": { "value": "raft_wall_count" },
|
||||||
"raft_interface_z_offset":
|
"raft_interface_z_offset":
|
||||||
|
@ -406,14 +438,18 @@
|
||||||
"raft_interface_extruder_nr"
|
"raft_interface_extruder_nr"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"raft_jerk": { "enabled": false },
|
||||||
"raft_margin": { "value": 1.2 },
|
"raft_margin": { "value": 1.2 },
|
||||||
"raft_smoothing": { "value": 9.5 },
|
"raft_smoothing": { "value": 9.5 },
|
||||||
"raft_surface_extruder_nr": { "value": "int(anyExtruderWithMaterial('material_is_support_material')) if support_enable and extruderValue(support_extruder_nr,'material_is_support_material') else raft_base_extruder_nr" },
|
"raft_speed": { "value": 10 },
|
||||||
|
"raft_surface_acceleration": { "enabled": false },
|
||||||
|
"raft_surface_extruder_nr": { "value": "max(extruderValues('extruder_nr'))" },
|
||||||
"raft_surface_fan_speed": { "value": 0 },
|
"raft_surface_fan_speed": { "value": 0 },
|
||||||
"raft_surface_flow":
|
"raft_surface_flow":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "support_extruder_nr" ]
|
"force_depends_on_settings": [ "support_extruder_nr" ]
|
||||||
},
|
},
|
||||||
|
"raft_surface_jerk": { "enabled": false },
|
||||||
"raft_surface_speed":
|
"raft_surface_speed":
|
||||||
{
|
{
|
||||||
"force_depends_on_settings": [ "support_extruder_nr" ]
|
"force_depends_on_settings": [ "support_extruder_nr" ]
|
||||||
|
@ -430,27 +466,55 @@
|
||||||
"raft_wall_count": { "value": 2 },
|
"raft_wall_count": { "value": 2 },
|
||||||
"retract_at_layer_change": { "value": true },
|
"retract_at_layer_change": { "value": true },
|
||||||
"retraction_amount": { "value": 0.75 },
|
"retraction_amount": { "value": 0.75 },
|
||||||
"retraction_combing": { "value": "'off'" },
|
"retraction_combing":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": "'off'"
|
||||||
|
},
|
||||||
"retraction_combing_max_distance": { "value": "speed_travel / 10" },
|
"retraction_combing_max_distance": { "value": "speed_travel / 10" },
|
||||||
"retraction_count_max": { "value": 100 },
|
"retraction_count_max": { "value": 100 },
|
||||||
"retraction_extrusion_window": { "value": 0 },
|
"retraction_extrusion_window": { "value": 0 },
|
||||||
"retraction_hop": { "value": 0.4 },
|
"retraction_hop": { "value": 0.4 },
|
||||||
"retraction_hop_enabled": { "value": true },
|
"retraction_hop_enabled": { "value": true },
|
||||||
"retraction_hop_only_when_collides": { "value": false },
|
"retraction_hop_only_when_collides": { "value": false },
|
||||||
"retraction_min_travel": { "value": "0.6" },
|
"retraction_min_travel":
|
||||||
|
{
|
||||||
|
"minimum_value_warning": "line_width * 1.25",
|
||||||
|
"value": 0.6
|
||||||
|
},
|
||||||
"retraction_prime_speed": { "value": "retraction_speed" },
|
"retraction_prime_speed": { "value": "retraction_speed" },
|
||||||
"retraction_speed": { "value": 5 },
|
"retraction_speed": { "value": 5 },
|
||||||
"roofing_layer_count": { "value": 2 },
|
"roofing_angles":
|
||||||
"roofing_material_flow": { "value": "material_flow" },
|
{
|
||||||
"roofing_monotonic": { "value": true },
|
"value": [45, 135]
|
||||||
|
},
|
||||||
|
"roofing_layer_count":
|
||||||
|
{
|
||||||
|
"maximum_value_warning": 10,
|
||||||
|
"minimum_value": 0,
|
||||||
|
"minimum_value_warning": 1,
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
"skin_angles":
|
||||||
|
{
|
||||||
|
"value": [0, 90]
|
||||||
|
},
|
||||||
"skin_material_flow": { "value": "material_flow" },
|
"skin_material_flow": { "value": "material_flow" },
|
||||||
"skin_material_flow_layer_0": { "value": "material_flow" },
|
"skin_material_flow_layer_0": { "value": "material_flow" },
|
||||||
"skin_monotonic": { "value": true },
|
"skin_monotonic": { "value": true },
|
||||||
"skin_outline_count": { "value": 0 },
|
"skin_outline_count": { "value": 0 },
|
||||||
"skin_overlap": { "value": 0 },
|
"skin_overlap": { "value": 0 },
|
||||||
"skin_preshrink": { "value": 0 },
|
"skin_preshrink": { "value": 0 },
|
||||||
|
"skirt_brim_extruder_nr":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": "min(extruderValues('extruder_nr'))"
|
||||||
|
},
|
||||||
|
"skirt_brim_line_width": { "value": 1 },
|
||||||
"skirt_brim_material_flow": { "value": "material_flow" },
|
"skirt_brim_material_flow": { "value": "material_flow" },
|
||||||
"skirt_brim_minimal_length": { "value": 500 },
|
"skirt_brim_minimal_length": { "value": 500 },
|
||||||
|
"skirt_gap": { "value": 2 },
|
||||||
|
"skirt_height": { "value": 3 },
|
||||||
"small_skin_width": { "value": 4 },
|
"small_skin_width": { "value": 4 },
|
||||||
"speed_equalize_flow_width_factor": { "value": 0 },
|
"speed_equalize_flow_width_factor": { "value": 0 },
|
||||||
"speed_prime_tower": { "value": "speed_topbottom" },
|
"speed_prime_tower": { "value": "speed_topbottom" },
|
||||||
|
@ -465,34 +529,62 @@
|
||||||
"speed_wall_x": { "value": "speed_wall" },
|
"speed_wall_x": { "value": "speed_wall" },
|
||||||
"support_angle": { "value": 40 },
|
"support_angle": { "value": 40 },
|
||||||
"support_bottom_height": { "value": "2*support_infill_sparse_thickness" },
|
"support_bottom_height": { "value": "2*support_infill_sparse_thickness" },
|
||||||
|
"support_bottom_line_width":
|
||||||
|
{
|
||||||
|
"maximum_value": 3,
|
||||||
|
"maximum_value_warning": 1.8
|
||||||
|
},
|
||||||
"support_bottom_material_flow": { "value": "material_flow" },
|
"support_bottom_material_flow": { "value": "material_flow" },
|
||||||
"support_bottom_wall_count": { "value": "0" },
|
"support_bottom_wall_count":
|
||||||
|
{
|
||||||
|
"maximum_value": 8,
|
||||||
|
"maximum_value_warning": 6,
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
"support_brim_enable": { "value": false },
|
"support_brim_enable": { "value": false },
|
||||||
"support_conical_min_width": { "value": 10 },
|
"support_conical_min_width": { "value": 10 },
|
||||||
"support_enable": { "value": true },
|
"support_enable": { "value": true },
|
||||||
"support_extruder_nr": { "value": "int(anyExtruderWithMaterial('material_is_support_material'))" },
|
"support_extruder_nr": { "value": "int(anyExtruderWithMaterial('material_is_support_material'))" },
|
||||||
"support_fan_enable": { "value": "True" },
|
"support_fan_enable": { "value": "True" },
|
||||||
|
"support_infill_angles":
|
||||||
|
{
|
||||||
|
"value": [
|
||||||
|
45
|
||||||
|
]
|
||||||
|
},
|
||||||
"support_infill_rate": { "value": 20.0 },
|
"support_infill_rate": { "value": 20.0 },
|
||||||
"support_infill_sparse_thickness": { "value": "layer_height" },
|
"support_infill_sparse_thickness": { "value": "layer_height" },
|
||||||
"support_interface_enable": { "value": true },
|
"support_interface_enable": { "value": true },
|
||||||
"support_interface_height": { "value": "4*support_infill_sparse_thickness" },
|
"support_interface_height": { "value": "4*support_infill_sparse_thickness" },
|
||||||
"support_interface_material_flow": { "value": "material_flow" },
|
"support_interface_material_flow": { "value": "material_flow" },
|
||||||
"support_interface_offset": { "value": "1" },
|
"support_interface_offset": { "value": "1" },
|
||||||
"support_interface_pattern": { "value": "'lines'" },
|
"support_interface_pattern": { "value": "'zigzag' if support_wall_count > 1 else 'lines'" },
|
||||||
"support_interface_wall_count": { "value": "1" },
|
"support_interface_wall_count": { "value": "1" },
|
||||||
|
"support_join_distance": { "value": "4.5 if support_wall_count > 1 else 2" },
|
||||||
"support_material_flow": { "value": "material_flow" },
|
"support_material_flow": { "value": "material_flow" },
|
||||||
"support_offset": { "value": "1.8" },
|
"support_offset": { "value": "2.4 if support_wall_count > 1 else 1.8" },
|
||||||
"support_pattern": { "value": "'lines'" },
|
"support_pattern": { "value": "'zigzag' if support_wall_count > 1 else 'lines'" },
|
||||||
"support_roof_height": { "value": "4*layer_height" },
|
"support_roof_height": { "value": "4*layer_height" },
|
||||||
"support_roof_material_flow": { "value": "material_flow" },
|
"support_roof_material_flow": { "value": "material_flow" },
|
||||||
"support_supported_skin_fan_speed": { "value": "cool_fan_speed_max" },
|
"support_supported_skin_fan_speed": { "value": "cool_fan_speed_max" },
|
||||||
"support_use_towers": { "value": "False" },
|
"support_use_towers": { "value": false },
|
||||||
"support_wall_count": { "value": "2 if support_conical_enabled or support_structure == 'tree' else 0" },
|
"support_wall_count": { "value": "2 if support_conical_enabled or support_structure == 'tree' else 0" },
|
||||||
"support_xy_distance": { "value": 0.2 },
|
"support_xy_distance": { "value": 0.2 },
|
||||||
"support_xy_distance_overhang": { "value": "support_xy_distance" },
|
"support_xy_distance_overhang": { "value": "support_xy_distance" },
|
||||||
"switch_extruder_retraction_amount": { "value": 0.5 },
|
"switch_extruder_retraction_amount": { "value": 0.5 },
|
||||||
"switch_extruder_retraction_speeds": { "value": "retraction_speed" },
|
"switch_extruder_retraction_speeds": { "value": "retraction_speed" },
|
||||||
"top_bottom_thickness": { "value": "5*layer_height" },
|
"top_bottom_pattern": { "value": "'zigzag'" },
|
||||||
|
"top_bottom_pattern_0": { "value": "'zigzag'" },
|
||||||
|
"top_bottom_thickness":
|
||||||
|
{
|
||||||
|
"minimum_value_warning": 0.3,
|
||||||
|
"value": "4*layer_height"
|
||||||
|
},
|
||||||
|
"top_thickness":
|
||||||
|
{
|
||||||
|
"minimum_value_warning": 0.3,
|
||||||
|
"value": "top_bottom_thickness * 1.5"
|
||||||
|
},
|
||||||
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
|
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
|
||||||
"travel_avoid_other_parts": { "value": false },
|
"travel_avoid_other_parts": { "value": false },
|
||||||
"wall_0_inset": { "value": 0 },
|
"wall_0_inset": { "value": 0 },
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
"chromatik_",
|
"chromatik_",
|
||||||
"3D-Fuel_",
|
"3D-Fuel_",
|
||||||
"bestfilament_",
|
"bestfilament_",
|
||||||
|
"eazao_",
|
||||||
"emotiontech_",
|
"emotiontech_",
|
||||||
"eryone_",
|
"eryone_",
|
||||||
"eSUN_",
|
"eSUN_",
|
||||||
|
@ -36,14 +37,15 @@
|
||||||
"polywood_pla",
|
"polywood_pla",
|
||||||
"redd_",
|
"redd_",
|
||||||
"tizyx_",
|
"tizyx_",
|
||||||
"ultimaker_tough_pla_175",
|
|
||||||
"verbatim_",
|
"verbatim_",
|
||||||
"Vertex_",
|
"Vertex_",
|
||||||
"volumic_",
|
"volumic_",
|
||||||
"xyzprinting_",
|
"xyzprinting_",
|
||||||
"zyyx_pro_",
|
"zyyx_pro_",
|
||||||
"octofiber_",
|
"octofiber_",
|
||||||
"fiberlogy_"
|
"fiberlogy_",
|
||||||
|
"ultimaker_nylon_175",
|
||||||
|
"ultimaker_metallic_pla_175"
|
||||||
],
|
],
|
||||||
"has_machine_materials": true,
|
"has_machine_materials": true,
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
|
@ -67,44 +69,13 @@
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variant_definition": "ultimaker_methodx",
|
"variant_definition": "ultimaker_methodx",
|
||||||
"variants_name": "Extruder",
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -1
|
"weight": -1
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
"build_volume_temperature": { "maximum_value": "107" },
|
"build_volume_temperature": { "maximum_value": "107" },
|
||||||
"machine_depth": { "default_value": 236.48 },
|
|
||||||
"machine_disallowed_areas":
|
|
||||||
{
|
|
||||||
"default_value": [
|
|
||||||
[
|
|
||||||
[-141.65, -118.11],
|
|
||||||
[141.65, -118.11],
|
|
||||||
[141.65, -94],
|
|
||||||
[-141.65, -94]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[-141.65, 118.37],
|
|
||||||
[141.65, 118.37],
|
|
||||||
[141.65, 94],
|
|
||||||
[-141.65, 94]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[-141.65, -118.11],
|
|
||||||
[-75, -118.11],
|
|
||||||
[-75, 118.37],
|
|
||||||
[-141.65, 118.37]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[75, -118.11],
|
|
||||||
[141.65, -118.11],
|
|
||||||
[141.65, 118.37],
|
|
||||||
[75, 118.37]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"machine_height": { "default_value": 196 },
|
|
||||||
"machine_name": { "default_value": "UltiMaker Method X" },
|
"machine_name": { "default_value": "UltiMaker Method X" },
|
||||||
"machine_width": { "default_value": 283.3 },
|
|
||||||
"prime_tower_position_x": { "value": "(150 / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (150 - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (150 / 2 if resolveOrValue('machine_center_is_zero') else 0)" },
|
"prime_tower_position_x": { "value": "(150 / 2 + resolveOrValue('prime_tower_size') / 2) if resolveOrValue('machine_shape') == 'elliptic' else (150 - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (150 / 2 if resolveOrValue('machine_center_is_zero') else 0)" },
|
||||||
"prime_tower_position_y": { "value": "190 - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (190 / 2 if resolveOrValue('machine_center_is_zero') else 0)" }
|
"prime_tower_position_y": { "value": "190 - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (190 / 2 if resolveOrValue('machine_center_is_zero') else 0)" }
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,45 @@
|
||||||
"manufacturer": "Ultimaker B.V.",
|
"manufacturer": "Ultimaker B.V.",
|
||||||
"file_formats": "application/x-makerbot",
|
"file_formats": "application/x-makerbot",
|
||||||
"platform": "ultimaker_method_xl_platform.stl",
|
"platform": "ultimaker_method_xl_platform.stl",
|
||||||
|
"exclude_materials": [
|
||||||
|
"dsm_",
|
||||||
|
"Essentium_",
|
||||||
|
"imade3d_",
|
||||||
|
"chromatik_",
|
||||||
|
"3D-Fuel_",
|
||||||
|
"bestfilament_",
|
||||||
|
"eazao_",
|
||||||
|
"emotiontech_",
|
||||||
|
"eryone_",
|
||||||
|
"eSUN_",
|
||||||
|
"Extrudr_",
|
||||||
|
"fabtotum_",
|
||||||
|
"fdplast_",
|
||||||
|
"filo3d_",
|
||||||
|
"generic_",
|
||||||
|
"goofoo_",
|
||||||
|
"ideagen3D_",
|
||||||
|
"imade3d_",
|
||||||
|
"innofill_",
|
||||||
|
"layer_one_",
|
||||||
|
"leapfrog_",
|
||||||
|
"polyflex_pla",
|
||||||
|
"polymax_pla",
|
||||||
|
"polyplus_pla",
|
||||||
|
"polywood_pla",
|
||||||
|
"redd_",
|
||||||
|
"tizyx_",
|
||||||
|
"verbatim_",
|
||||||
|
"Vertex_",
|
||||||
|
"volumic_",
|
||||||
|
"xyzprinting_",
|
||||||
|
"zyyx_pro_",
|
||||||
|
"octofiber_",
|
||||||
|
"fiberlogy_",
|
||||||
|
"basf_ultrafuse_316l_175",
|
||||||
|
"ultimaker_nylon_175",
|
||||||
|
"ultimaker_metallic_pla_175"
|
||||||
|
],
|
||||||
"has_machine_materials": true,
|
"has_machine_materials": true,
|
||||||
"has_machine_quality": true,
|
"has_machine_quality": true,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
@ -18,52 +57,41 @@
|
||||||
"0": "ultimaker_methodxl_extruder_left",
|
"0": "ultimaker_methodxl_extruder_left",
|
||||||
"1": "ultimaker_methodxl_extruder_right"
|
"1": "ultimaker_methodxl_extruder_right"
|
||||||
},
|
},
|
||||||
|
"platform_offset": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
"preferred_quality_type": "draft",
|
"preferred_quality_type": "draft",
|
||||||
"reference_machine_id": "magma_10",
|
"reference_machine_id": "magma_10",
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Extruder",
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -1
|
"weight": -1
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
"build_volume_temperature": { "maximum_value": "100" },
|
"build_volume_temperature": { "maximum_value": "100" },
|
||||||
"machine_depth": { "default_value": 320 },
|
"machine_depth": { "default_value": 320 },
|
||||||
"machine_disallowed_areas":
|
"machine_disallowed_areas": { "value": "[ [ [-204, -160], [204, -160], [204, -154.5], [-204, -154.5] ], [ [-204, 160], [204, 160], [204, 154.5], [-204, 154.5] ], [ [-205, -160], [-191.5, -160], [-191.5, 160], [-205, 160] ], [ [154.5, -160], [205, -160], [205, 160], [154.5, 160] ] ] if max(extruderValues('extruder_nr')) == 0 else [ [ [-204, -160], [204, -160], [204, -154.5], [-204, -154.5] ], [ [-204, 160], [204, 160], [204, 154.5], [-204, 154.5] ], [ [-205, -160], [-154.5, -160], [-154.5, 160], [-205, 160] ], [ [154.5, -160], [205, -160], [205, 160], [154.5, 160] ] ]" },
|
||||||
{
|
|
||||||
"default_value": [
|
|
||||||
[
|
|
||||||
[-204, -160],
|
|
||||||
[204, -160],
|
|
||||||
[204, -154.5],
|
|
||||||
[-204, -154.5]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[-204, 160],
|
|
||||||
[204, 160],
|
|
||||||
[204, 154.5],
|
|
||||||
[-204, 154.5]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[-205, -160],
|
|
||||||
[-154.5, -160],
|
|
||||||
[-154.5, 160],
|
|
||||||
[-205, 160]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[154.5, -160],
|
|
||||||
[205, -160],
|
|
||||||
[205, 160],
|
|
||||||
[154.5, 160]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"machine_heated_bed": { "default_value": true },
|
"machine_heated_bed": { "default_value": true },
|
||||||
"machine_height": { "default_value": 320 },
|
"machine_height": { "default_value": 319.9 },
|
||||||
"machine_name": { "default_value": "UltiMaker Method XL" },
|
"machine_name": { "default_value": "UltiMaker Method XL" },
|
||||||
"machine_width": { "default_value": 410 },
|
"machine_width": { "default_value": 410 },
|
||||||
"prime_tower_position_x": { "value": "(305 - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (305 / 2)" },
|
"prime_tower_position_x": { "value": "(305 - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_x'))), 1)) - (305 / 2)" },
|
||||||
"prime_tower_position_y": { "value": "305 - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (305 / 2)" },
|
"prime_tower_position_y": { "value": "305 - prime_tower_size - (resolveOrValue('prime_tower_base_size') if (resolveOrValue('adhesion_type') == 'raft' or resolveOrValue('prime_tower_brim_enable')) else 0) - max(max(extruderValues('travel_avoid_distance')) + max(extruderValues('support_offset')) + (extruderValue(skirt_brim_extruder_nr, 'skirt_brim_line_width') * extruderValue(skirt_brim_extruder_nr, 'skirt_line_count') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 + extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if resolveOrValue('adhesion_type') == 'skirt' else 0) + (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0), max(map(abs, extruderValues('machine_nozzle_offset_y'))), 1) - (305 / 2)" },
|
||||||
"speed_travel": { "value": 500 }
|
"speed_travel":
|
||||||
|
{
|
||||||
|
"maximum_value": 500,
|
||||||
|
"maximum_value_warning": 450,
|
||||||
|
"value": 400
|
||||||
|
},
|
||||||
|
"speed_travel_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value": 500,
|
||||||
|
"maximum_value_warning": 450,
|
||||||
|
"value": 250
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -25,7 +25,9 @@
|
||||||
"ultimaker_petcf",
|
"ultimaker_petcf",
|
||||||
"ultimaker_petg",
|
"ultimaker_petg",
|
||||||
"ultimaker_pva",
|
"ultimaker_pva",
|
||||||
"ultimaker_tough_pla"
|
"ultimaker_tough_pla",
|
||||||
|
"generic_cffpps",
|
||||||
|
"ultimaker_ppscf"
|
||||||
],
|
],
|
||||||
"firmware_file": "MarlinUltimaker-{baudrate}.hex",
|
"firmware_file": "MarlinUltimaker-{baudrate}.hex",
|
||||||
"firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}.hex",
|
"firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}.hex",
|
||||||
|
@ -66,6 +68,7 @@
|
||||||
"machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Y50 F9000\n;Put printing message on LCD screen\nM117 Printing..." },
|
"machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Y50 F9000\n;Put printing message on LCD screen\nM117 Printing..." },
|
||||||
"machine_use_extruder_offset_to_offset_coords": { "default_value": true },
|
"machine_use_extruder_offset_to_offset_coords": { "default_value": true },
|
||||||
"machine_width": { "default_value": 205 },
|
"machine_width": { "default_value": 205 },
|
||||||
|
"material_print_temp_wait": { "value": true },
|
||||||
"speed_slowdown_layers": { "value": 2 }
|
"speed_slowdown_layers": { "value": 2 }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -17,7 +17,9 @@
|
||||||
"exclude_materials": [
|
"exclude_materials": [
|
||||||
"generic_hips",
|
"generic_hips",
|
||||||
"generic_flexible",
|
"generic_flexible",
|
||||||
"structur3d_"
|
"generic_cffpps",
|
||||||
|
"structur3d_",
|
||||||
|
"ultimaker_ppscf"
|
||||||
],
|
],
|
||||||
"firmware_update_info":
|
"firmware_update_info":
|
||||||
{
|
{
|
||||||
|
@ -48,7 +50,8 @@
|
||||||
"supported_actions": [ "DiscoverUM3Action" ],
|
"supported_actions": [ "DiscoverUM3Action" ],
|
||||||
"supports_material_export": true,
|
"supports_material_export": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Print core",
|
"variants_name": "Print Core",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -1
|
"weight": -1
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
|
|
@ -18,7 +18,9 @@
|
||||||
"exclude_materials": [
|
"exclude_materials": [
|
||||||
"generic_hips",
|
"generic_hips",
|
||||||
"generic_flexible",
|
"generic_flexible",
|
||||||
"structur3d_"
|
"generic_cffpps",
|
||||||
|
"structur3d_",
|
||||||
|
"ultimaker_ppscf"
|
||||||
],
|
],
|
||||||
"firmware_update_info":
|
"firmware_update_info":
|
||||||
{
|
{
|
||||||
|
@ -48,10 +50,12 @@
|
||||||
"preferred_variant_buildplate_name": "Glass",
|
"preferred_variant_buildplate_name": "Glass",
|
||||||
"preferred_variant_name": "AA 0.4",
|
"preferred_variant_name": "AA 0.4",
|
||||||
"supported_actions": [ "DiscoverUM3Action" ],
|
"supported_actions": [ "DiscoverUM3Action" ],
|
||||||
|
"supports_abstract_color": true,
|
||||||
"supports_material_export": true,
|
"supports_material_export": true,
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Print core",
|
"variants_name": "Print Core",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -2
|
"weight": -2
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
|
|
@ -36,10 +36,12 @@
|
||||||
"preferred_variant_name": "AA 0.4",
|
"preferred_variant_name": "AA 0.4",
|
||||||
"quality_definition": "ultimaker_s5",
|
"quality_definition": "ultimaker_s5",
|
||||||
"supported_actions": [ "DiscoverUM3Action" ],
|
"supported_actions": [ "DiscoverUM3Action" ],
|
||||||
|
"supports_abstract_color": true,
|
||||||
"supports_material_export": true,
|
"supports_material_export": true,
|
||||||
"supports_network_connection": true,
|
"supports_network_connection": true,
|
||||||
"supports_usb_connection": false,
|
"supports_usb_connection": false,
|
||||||
"variants_name": "Print core",
|
"variants_name": "Print Core",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
"weight": -2
|
"weight": -2
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
|
|
212
resources/definitions/ultimaker_sketch.def.json
Normal file
212
resources/definitions/ultimaker_sketch.def.json
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "MakerBot Sketch",
|
||||||
|
"inherits": "ultimaker",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Ultimaker",
|
||||||
|
"manufacturer": "Ultimaker B.V.",
|
||||||
|
"file_formats": "application/x-makerbot-sketch",
|
||||||
|
"platform": "ultimaker_sketch_platform.obj",
|
||||||
|
"exclude_materials": [
|
||||||
|
"dsm_",
|
||||||
|
"Essentium_",
|
||||||
|
"imade3d_",
|
||||||
|
"chromatik_",
|
||||||
|
"3D-Fuel_",
|
||||||
|
"bestfilament_",
|
||||||
|
"eazao_",
|
||||||
|
"emotiontech_",
|
||||||
|
"eryone_",
|
||||||
|
"eSUN_",
|
||||||
|
"Extrudr_",
|
||||||
|
"fabtotum_",
|
||||||
|
"fdplast_",
|
||||||
|
"filo3d_",
|
||||||
|
"ultimaker_rapidrinse_175",
|
||||||
|
"goofoo_",
|
||||||
|
"ideagen3D_",
|
||||||
|
"imade3d_",
|
||||||
|
"innofill_",
|
||||||
|
"layer_one_",
|
||||||
|
"leapfrog_",
|
||||||
|
"polyflex_pla",
|
||||||
|
"polymax_pla",
|
||||||
|
"polyplus_pla",
|
||||||
|
"polywood_pla",
|
||||||
|
"redd_",
|
||||||
|
"tizyx_",
|
||||||
|
"verbatim_",
|
||||||
|
"Vertex_",
|
||||||
|
"volumic_",
|
||||||
|
"xyzprinting_",
|
||||||
|
"zyyx_pro_",
|
||||||
|
"octofiber_",
|
||||||
|
"fiberlogy_",
|
||||||
|
"generic_",
|
||||||
|
"ultimaker_asa",
|
||||||
|
"ultimaker_abs",
|
||||||
|
"ultimaker_nylon",
|
||||||
|
"ultimaker_pva",
|
||||||
|
"ultimaker_rapidrinse",
|
||||||
|
"ultimaker_sr30",
|
||||||
|
"ultimaker_petg",
|
||||||
|
"ultimaker_metallic_pla",
|
||||||
|
"basf_",
|
||||||
|
"jabil_",
|
||||||
|
"polymaker_",
|
||||||
|
"ultimaker_rapidrinse",
|
||||||
|
"ultimaker_sr30",
|
||||||
|
"ultimaker_petg",
|
||||||
|
"ultimaker_pva",
|
||||||
|
"ultimaker_metallic_pla"
|
||||||
|
],
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"has_materials": true,
|
||||||
|
"has_variants": true,
|
||||||
|
"machine_extruder_trains": { "0": "ultimaker_sketch_extruder" },
|
||||||
|
"preferred_quality_type": "draft",
|
||||||
|
"preferred_variant_name": "0.4mm",
|
||||||
|
"reference_machine_id": "sketch",
|
||||||
|
"supports_network_connection": true,
|
||||||
|
"supports_usb_connection": false,
|
||||||
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
|
"weight": -1
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"acceleration_enabled":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"adhesion_type": { "value": "'skirt'" },
|
||||||
|
"brim_width": { "value": "3" },
|
||||||
|
"cool_during_extruder_switch":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"cool_fan_full_at_height": { "value": "layer_height + layer_height_0" },
|
||||||
|
"cool_fan_speed": { "value": 100 },
|
||||||
|
"cool_fan_speed_0": { "value": 0 },
|
||||||
|
"cool_min_layer_time": { "value": 8 },
|
||||||
|
"extruder_prime_pos_abs": { "default_value": true },
|
||||||
|
"fill_outline_gaps": { "value": false },
|
||||||
|
"gantry_height": { "value": "60" },
|
||||||
|
"infill_angles": { "value": "[45,45,45,45,45,135,135,135,135,135]" },
|
||||||
|
"infill_before_walls": { "value": false },
|
||||||
|
"infill_overlap": { "value": 0 },
|
||||||
|
"infill_pattern": { "value": "'zigzag'" },
|
||||||
|
"infill_sparse_density": { "value": 20 },
|
||||||
|
"infill_wipe_dist": { "value": 0 },
|
||||||
|
"initial_layer_line_width_factor": { "value": 125 },
|
||||||
|
"inset_direction": { "value": "'inside_out'" },
|
||||||
|
"jerk_enabled":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"layer_height_0": { "value": "layer_height * 1.25" },
|
||||||
|
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
|
||||||
|
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
|
||||||
|
"machine_center_is_zero": { "default_value": true },
|
||||||
|
"machine_depth": { "default_value": 150 },
|
||||||
|
"machine_end_gcode": { "default_value": "M107; Disable Fan; \n; End of print; \n; End GCode\nM104 S0 T0; Set Toolhead Temp to 0\nM140 S0 T0; Set Platform Temp to 0\nG162 Z F1800; Move to max axes position\nG28 X Y; Home\nM652; Turn off back fan\nM132 X Y Z A B; Set Home Position\nG91; Use Relative Positioning\nM18; Disable Axes\n\n" },
|
||||||
|
"machine_extruder_count": { "default_value": 1 },
|
||||||
|
"machine_gcode_flavor": { "default_value": "Griffin" },
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
"machine_height": { "default_value": 150 },
|
||||||
|
"machine_max_feedrate_x": { "default_value": 300 },
|
||||||
|
"machine_max_feedrate_y": { "default_value": 300 },
|
||||||
|
"machine_max_feedrate_z": { "default_value": 40 },
|
||||||
|
"machine_min_cool_heat_time_window": { "value": "15" },
|
||||||
|
"machine_name": { "default_value": "MakerBot Sketch" },
|
||||||
|
"machine_nozzle_cool_down_speed": { "default_value": 0.8 },
|
||||||
|
"machine_nozzle_heat_up_speed": { "default_value": 1.4 },
|
||||||
|
"machine_start_gcode": { "default_value": "M140 S50 T0; Set Platform Temp\nM104 S220 T0; Set Extruder Temp\nG90; Use Absolute Positioning\nG28; Home\nM132 X Y Z A B; Set Current Position to Home\nG161 X Y F3300; Move to min axes positions\nM7 T0; Wait For Platform to Heat\nM6 T0; Wait For Extruders to Heat\nM651; Turn on back fan\nM907 X100 Y100 Z40 A80 B20; Set Stepper Currents\nM106; Enable Cooling Fan\n; Purge Line\nG92 E0; Reset Extruder Axis Position\nG1 X-26.18 Y-75.90 Z0.200 F420\nG1 X26.18 Y-75.90 E10\nG92 E0; Reset Extruder Axis Position\n; Start GCode\n" },
|
||||||
|
"machine_width": { "default_value": 150 },
|
||||||
|
"material_bed_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value": 100,
|
||||||
|
"maximum_value_warning": 70
|
||||||
|
},
|
||||||
|
"material_bed_temperature_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value": 100,
|
||||||
|
"maximum_value_warning": 70
|
||||||
|
},
|
||||||
|
"material_diameter": { "default_value": 1.75 },
|
||||||
|
"material_flow": { "default_value": 100 },
|
||||||
|
"material_print_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value": 240,
|
||||||
|
"maximum_value_warning": 230
|
||||||
|
},
|
||||||
|
"min_bead_width":
|
||||||
|
{
|
||||||
|
"minimum_value": "line_width * 0.5",
|
||||||
|
"minimum_value_warning": "line_width * 0.75",
|
||||||
|
"value": "line_width"
|
||||||
|
},
|
||||||
|
"min_wall_line_width":
|
||||||
|
{
|
||||||
|
"minimum_value": "line_width * 0.5",
|
||||||
|
"minimum_value_warning": "line_width * 0.75",
|
||||||
|
"value": "line_width"
|
||||||
|
},
|
||||||
|
"multiple_mesh_overlap": { "value": "0" },
|
||||||
|
"optimize_wall_printing_order": { "value": "True" },
|
||||||
|
"prime_blob_enable":
|
||||||
|
{
|
||||||
|
"default_value": true,
|
||||||
|
"enabled": true,
|
||||||
|
"value": "resolveOrValue('print_sequence') != 'one_at_a_time'"
|
||||||
|
},
|
||||||
|
"print_sequence": { "enabled": false },
|
||||||
|
"raft_margin": { "value": "5" },
|
||||||
|
"retract_at_layer_change": { "value": true },
|
||||||
|
"retraction_amount":
|
||||||
|
{
|
||||||
|
"maximum_value": 6,
|
||||||
|
"maximum_value_warning": 5.75,
|
||||||
|
"value": 5.5
|
||||||
|
},
|
||||||
|
"retraction_combing": { "value": "'no_outer_surfaces'" },
|
||||||
|
"retraction_min_travel": { "value": "2 * line_width" },
|
||||||
|
"retraction_prime_speed": { "value": "15" },
|
||||||
|
"retraction_speed": { "value": "25" },
|
||||||
|
"roofing_material_flow": { "value": 100 },
|
||||||
|
"skin_material_flow": { "value": 95 },
|
||||||
|
"skin_material_flow_layer_0": { "value": 100 },
|
||||||
|
"skirt_brim_line_width": { "value": 1 },
|
||||||
|
"skirt_brim_speed": { "value": 15 },
|
||||||
|
"skirt_height": { "value": 3 },
|
||||||
|
"speed_print": { "value": 50 },
|
||||||
|
"speed_roofing": { "value": "0.8 * speed_print" },
|
||||||
|
"speed_support": { "value": "0.7 * speed_print" },
|
||||||
|
"speed_support_interface": { "value": "speed_topbottom" },
|
||||||
|
"speed_topbottom": { "value": "speed_roofing" },
|
||||||
|
"speed_travel": { "value": 80 },
|
||||||
|
"speed_wall": { "value": "0.5 * speed_print" },
|
||||||
|
"speed_wall_0": { "value": "1 * speed_wall" },
|
||||||
|
"speed_wall_x": { "value": "1 * speed_wall" },
|
||||||
|
"speed_z_hop": { "value": 10 },
|
||||||
|
"support_angle": { "value": "45" },
|
||||||
|
"support_structure": { "value": "'tree'" },
|
||||||
|
"top_bottom_thickness": { "value": "4 * layer_height" },
|
||||||
|
"travel_avoid_distance": { "value": "machine_nozzle_tip_outer_diameter / 2 * 1.5" },
|
||||||
|
"travel_avoid_supports": { "value": true },
|
||||||
|
"wall_0_inset": { "value": "0" },
|
||||||
|
"wall_0_material_flow_layer_0": { "value": "1 * material_flow" },
|
||||||
|
"wall_thickness": { "value": "2 * machine_nozzle_size" },
|
||||||
|
"wall_x_material_flow": { "value": "0.95 * material_flow" },
|
||||||
|
"wall_x_material_flow_layer_0": { "value": "1 * material_flow" },
|
||||||
|
"xy_offset": { "value": 0 },
|
||||||
|
"xy_offset_layer_0": { "value": 0 },
|
||||||
|
"z_seam_corner": { "value": "'z_seam_corner_any'" },
|
||||||
|
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
|
||||||
|
}
|
||||||
|
}
|
41
resources/definitions/ultimaker_sketch_large.def.json
Normal file
41
resources/definitions/ultimaker_sketch_large.def.json
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "MakerBot Sketch Large",
|
||||||
|
"inherits": "ultimaker_sketch",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Ultimaker",
|
||||||
|
"manufacturer": "Ultimaker B.V.",
|
||||||
|
"file_formats": "application/x-makerbot-sketch",
|
||||||
|
"platform": "ultimaker_sketch_large_platform.obj",
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"has_materials": true,
|
||||||
|
"has_variants": true,
|
||||||
|
"machine_extruder_trains": { "0": "ultimaker_sketch_large_extruder" },
|
||||||
|
"preferred_material": "ultimaker_pla_175",
|
||||||
|
"preferred_quality_type": "draft",
|
||||||
|
"preferred_variant_name": "0.4mm",
|
||||||
|
"reference_machine_id": "sketch_large",
|
||||||
|
"supports_network_connection": true,
|
||||||
|
"supports_usb_connection": false,
|
||||||
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
|
"weight": -1
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"machine_depth": { "default_value": 200 },
|
||||||
|
"machine_height": { "default_value": 250 },
|
||||||
|
"machine_name": { "default_value": "MakerBot Sketch Large" },
|
||||||
|
"machine_width": { "default_value": 220 },
|
||||||
|
"retraction_amount":
|
||||||
|
{
|
||||||
|
"maximum_value": 6.5,
|
||||||
|
"maximum_value_warning": 6.25,
|
||||||
|
"value": 6
|
||||||
|
},
|
||||||
|
"retraction_prime_speed": { "value": "retraction_speed * 0.8" },
|
||||||
|
"speed_travel": { "value": 150 }
|
||||||
|
}
|
||||||
|
}
|
399
resources/definitions/ultimaker_sketch_sprint.def.json
Normal file
399
resources/definitions/ultimaker_sketch_sprint.def.json
Normal file
|
@ -0,0 +1,399 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "MakerBot Sketch Sprint",
|
||||||
|
"inherits": "ultimaker",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Ultimaker",
|
||||||
|
"manufacturer": "Ultimaker B.V.",
|
||||||
|
"file_formats": "application/x-makerbot-sketch",
|
||||||
|
"platform": "ultimaker_sketch_sprint_platform.obj",
|
||||||
|
"exclude_materials": [
|
||||||
|
"dsm_",
|
||||||
|
"Essentium_",
|
||||||
|
"imade3d_",
|
||||||
|
"chromatik_",
|
||||||
|
"3D-Fuel_",
|
||||||
|
"bestfilament_",
|
||||||
|
"eazao_",
|
||||||
|
"emotiontech_",
|
||||||
|
"eryone_",
|
||||||
|
"eSUN_",
|
||||||
|
"Extrudr_",
|
||||||
|
"fabtotum_",
|
||||||
|
"fdplast_",
|
||||||
|
"filo3d_",
|
||||||
|
"goofoo_",
|
||||||
|
"ideagen3D_",
|
||||||
|
"imade3d_",
|
||||||
|
"innofill_",
|
||||||
|
"layer_one_",
|
||||||
|
"leapfrog_",
|
||||||
|
"polyflex_pla",
|
||||||
|
"polymax_pla",
|
||||||
|
"polyplus_pla",
|
||||||
|
"polywood_pla",
|
||||||
|
"redd_",
|
||||||
|
"tizyx_",
|
||||||
|
"verbatim_",
|
||||||
|
"Vertex_",
|
||||||
|
"volumic_",
|
||||||
|
"xyzprinting_",
|
||||||
|
"zyyx_pro_",
|
||||||
|
"octofiber_",
|
||||||
|
"fiberlogy_",
|
||||||
|
"generic_",
|
||||||
|
"basf_",
|
||||||
|
"jabil_",
|
||||||
|
"polymaker_",
|
||||||
|
"ultimaker_asa",
|
||||||
|
"ultimaker_abs",
|
||||||
|
"ultimaker_nylon",
|
||||||
|
"ultimaker_pva",
|
||||||
|
"ultimaker_rapidrinse",
|
||||||
|
"ultimaker_sr30",
|
||||||
|
"ultimaker_petg",
|
||||||
|
"ultimaker_metallic_pla"
|
||||||
|
],
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"has_materials": true,
|
||||||
|
"has_textured_buildplate": true,
|
||||||
|
"has_variants": true,
|
||||||
|
"machine_extruder_trains": { "0": "ultimaker_sketch_sprint_extruder" },
|
||||||
|
"platform_offset": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"platform_texture": "MakerbotSketchSprint.png",
|
||||||
|
"preferred_material": "ultimaker_pla_175",
|
||||||
|
"preferred_quality_type": "draft",
|
||||||
|
"preferred_variant_name": "0.4mm",
|
||||||
|
"reference_machine_id": "sketch_sprint",
|
||||||
|
"supports_network_connection": true,
|
||||||
|
"supports_usb_connection": false,
|
||||||
|
"variants_name": "Extruder",
|
||||||
|
"variants_name_has_translation": true,
|
||||||
|
"weight": -1
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"acceleration_enabled": { "value": true },
|
||||||
|
"acceleration_layer_0": { "value": "acceleration_print * 0.05" },
|
||||||
|
"acceleration_print": { "value": 10000 },
|
||||||
|
"acceleration_print_layer_0": { "value": "acceleration_layer_0" },
|
||||||
|
"acceleration_roofing": { "value": "acceleration_print * 0.2" },
|
||||||
|
"acceleration_skirt_brim": { "value": "acceleration_layer_0" },
|
||||||
|
"acceleration_topbottom": { "value": "acceleration_print * 0.2" },
|
||||||
|
"acceleration_travel": { "value": "acceleration_print" },
|
||||||
|
"acceleration_travel_enabled": { "value": true },
|
||||||
|
"acceleration_travel_layer_0": { "value": "acceleration_travel * 0.2" },
|
||||||
|
"acceleration_wall": { "value": "acceleration_print * 0.5" },
|
||||||
|
"acceleration_wall_0_roofing": { "value": "acceleration_wall * 2/5" },
|
||||||
|
"acceleration_wall_x_roofing": { "value": "acceleration_wall * 2/5" },
|
||||||
|
"adhesion_type": { "value": "'none'" },
|
||||||
|
"bottom_layers": { "value": 3 },
|
||||||
|
"bridge_skin_density": { "value": 100 },
|
||||||
|
"bridge_skin_density_2": { "value": 75 },
|
||||||
|
"bridge_skin_density_3": { "value": 80 },
|
||||||
|
"bridge_skin_material_flow_3": { "value": 110 },
|
||||||
|
"bridge_skin_speed": { "value": 50 },
|
||||||
|
"bridge_skin_speed_2": { "value": 50 },
|
||||||
|
"bridge_skin_speed_3": { "value": 50 },
|
||||||
|
"bridge_sparse_infill_max_density": { "value": 15 },
|
||||||
|
"bridge_wall_min_length": { "value": 2.4 },
|
||||||
|
"bridge_wall_speed": { "value": 20 },
|
||||||
|
"brim_gap": { "value": 0.32 },
|
||||||
|
"brim_inside_margin": { "value": 1.6 },
|
||||||
|
"brim_line_count": { "value": 3 },
|
||||||
|
"brim_width": { "value": 2.4 },
|
||||||
|
"build_volume_fan_nr": { "value": 101 },
|
||||||
|
"cool_fan_full_layer": { "value": "1 if adhesion_type == 'raft' else 3" },
|
||||||
|
"cool_fan_speed_0": { "value": 0 },
|
||||||
|
"cool_min_layer_time": { "value": 3 },
|
||||||
|
"cool_min_layer_time_fan_speed_max": { "value": 10 },
|
||||||
|
"cool_min_speed": { "value": 20 },
|
||||||
|
"default_material_print_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value": 280,
|
||||||
|
"maximum_value_warning": 240
|
||||||
|
},
|
||||||
|
"gantry_height": { "value": 27.5 },
|
||||||
|
"gradual_infill_steps": { "value": 0 },
|
||||||
|
"gradual_support_infill_steps": { "value": 0 },
|
||||||
|
"group_outer_walls": { "value": false },
|
||||||
|
"infill_angles":
|
||||||
|
{
|
||||||
|
"value": [
|
||||||
|
135
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"infill_before_walls": { "value": false },
|
||||||
|
"infill_line_width": { "value": 0.45 },
|
||||||
|
"infill_overlap": { "value": 10 },
|
||||||
|
"infill_pattern": { "value": "'lines'" },
|
||||||
|
"infill_sparse_density": { "value": 15 },
|
||||||
|
"infill_wipe_dist": { "value": 0 },
|
||||||
|
"initial_layer_line_width_factor": { "value": 150 },
|
||||||
|
"inset_direction": { "value": "'inside_out'" },
|
||||||
|
"jerk_enabled":
|
||||||
|
{
|
||||||
|
"enabled": false,
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"jerk_travel_enabled": { "enabled": false },
|
||||||
|
"layer_height_0": { "value": "layer_height if adhesion_type == 'raft' else layer_height * 1.25" },
|
||||||
|
"line_width": { "value": 0.42 },
|
||||||
|
"machine_center_is_zero": { "default_value": true },
|
||||||
|
"machine_depth": { "default_value": 221.5 },
|
||||||
|
"machine_end_gcode": { "default_value": "M104 S0 T0\nM140 S0 T0\nG162 Z F1800\nG28 X Y\nM132 X Y A B\nM652\nG91" },
|
||||||
|
"machine_extruder_count": { "default_value": 1 },
|
||||||
|
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
"machine_height": { "default_value": 220.4 },
|
||||||
|
"machine_max_feedrate_x": { "default_value": 600 },
|
||||||
|
"machine_max_feedrate_y": { "default_value": 600 },
|
||||||
|
"machine_max_feedrate_z": { "default_value": 40 },
|
||||||
|
"machine_min_cool_heat_time_window": { "value": "15" },
|
||||||
|
"machine_name": { "default_value": "MakerBot Sketch Sprint" },
|
||||||
|
"machine_start_gcode": { "default_value": "G28\nM132 X Y Z A B\nG1 Z50.000 F420\nG161 X Y F3300\nM7 T0\nM6 T0\nM651 S255\nG1 Z0.25 F6000\nG1 E-1.5 F800\nG1 E2 F800\nG1 X111 Y111 Z0.25 F4800\nG1 X111 Y-111 E25 F1200" },
|
||||||
|
"machine_width": { "default_value": 221.5 },
|
||||||
|
"material_bed_temp_wait": { "value": "False" },
|
||||||
|
"material_bed_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value": 100,
|
||||||
|
"maximum_value_warning": 70
|
||||||
|
},
|
||||||
|
"material_bed_temperature_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value": 100,
|
||||||
|
"maximum_value_warning": 70
|
||||||
|
},
|
||||||
|
"material_diameter": { "default_value": 1.75 },
|
||||||
|
"material_flow": { "default_value": 100 },
|
||||||
|
"material_print_temperature":
|
||||||
|
{
|
||||||
|
"maximum_value": 260,
|
||||||
|
"maximum_value_warning": 240
|
||||||
|
},
|
||||||
|
"min_bead_width": { "value": 0.3 },
|
||||||
|
"multiple_mesh_overlap": { "value": "0" },
|
||||||
|
"print_sequence": { "enabled": false },
|
||||||
|
"raft_airgap": { "value": 0.35 },
|
||||||
|
"raft_base_acceleration": { "value": "acceleration_layer_0" },
|
||||||
|
"raft_base_speed":
|
||||||
|
{
|
||||||
|
"maximum_value": "raft_speed",
|
||||||
|
"maximum_value_warning": "raft_speed * 1/2",
|
||||||
|
"value": "raft_speed * 1/4"
|
||||||
|
},
|
||||||
|
"raft_interface_acceleration": { "value": "acceleration_print * 0.2" },
|
||||||
|
"raft_interface_line_width": { "value": 0.7 },
|
||||||
|
"raft_interface_speed":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "raft_speed * 3/4"
|
||||||
|
},
|
||||||
|
"raft_interface_wall_count": { "value": "raft_wall_count" },
|
||||||
|
"raft_margin": { "value": "1.5" },
|
||||||
|
"raft_smoothing": { "value": "9.5" },
|
||||||
|
"raft_speed": { "value": 200 },
|
||||||
|
"raft_surface_acceleration": { "value": "acceleration_print * 0.5" },
|
||||||
|
"raft_surface_line_width": { "value": 0.4 },
|
||||||
|
"raft_surface_speed":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275
|
||||||
|
},
|
||||||
|
"raft_surface_wall_count": { "value": "raft_wall_count" },
|
||||||
|
"raft_wall_count": { "value": 2 },
|
||||||
|
"retract_at_layer_change": { "value": true },
|
||||||
|
"retraction_amount": { "value": "1.0" },
|
||||||
|
"retraction_combing": { "value": "'all'" },
|
||||||
|
"retraction_combing_max_distance": { "value": 10 },
|
||||||
|
"retraction_count_max": { "value": 90 },
|
||||||
|
"retraction_extrusion_window": { "value": 1.2 },
|
||||||
|
"retraction_hop": { "value": 0.4 },
|
||||||
|
"retraction_hop_enabled": { "value": true },
|
||||||
|
"retraction_hop_only_when_collides": { "value": true },
|
||||||
|
"retraction_min_travel": { "value": 0.8 },
|
||||||
|
"retraction_prime_speed": { "value": "35" },
|
||||||
|
"retraction_speed": { "value": "35" },
|
||||||
|
"seam_overhang_angle": { "value": 30 },
|
||||||
|
"skin_edge_support_thickness": { "value": 0 },
|
||||||
|
"skin_material_flow": { "value": "material_flow" },
|
||||||
|
"skin_material_flow_layer_0": { "value": "material_flow * 0.95" },
|
||||||
|
"skin_monotonic": { "value": true },
|
||||||
|
"skin_outline_count": { "value": 0 },
|
||||||
|
"skin_overlap": { "value": 10 },
|
||||||
|
"skirt_brim_minimal_length": { "value": 250 },
|
||||||
|
"skirt_gap": { "value": 1.2 },
|
||||||
|
"skirt_height": { "value": 1 },
|
||||||
|
"small_feature_speed_factor": { "value": 10 },
|
||||||
|
"small_hole_max_size": { "value": 0 },
|
||||||
|
"speed_equalize_flow_width_factor": { "value": 100 },
|
||||||
|
"speed_infill":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "speed_print if infill_sparse_density < 70 else speed_print * 0.8"
|
||||||
|
},
|
||||||
|
"speed_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value": 200,
|
||||||
|
"maximum_value_warning": 175,
|
||||||
|
"value": "round(8/35 * speed_print)"
|
||||||
|
},
|
||||||
|
"speed_print":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": 250
|
||||||
|
},
|
||||||
|
"speed_roofing":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "round(9/14 * speed_print)"
|
||||||
|
},
|
||||||
|
"speed_slowdown_layers": { "value": 2 },
|
||||||
|
"speed_support":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "1 * speed_print"
|
||||||
|
},
|
||||||
|
"speed_support_bottom":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "round(3/7 * speed_support)"
|
||||||
|
},
|
||||||
|
"speed_support_infill":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275
|
||||||
|
},
|
||||||
|
"speed_support_interface":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "round(23/35 * speed_support)"
|
||||||
|
},
|
||||||
|
"speed_support_roof":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275
|
||||||
|
},
|
||||||
|
"speed_topbottom":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "round(9/14 * speed_print)"
|
||||||
|
},
|
||||||
|
"speed_travel":
|
||||||
|
{
|
||||||
|
"maximum_value": 600,
|
||||||
|
"maximum_value_warning": 550,
|
||||||
|
"value": 500
|
||||||
|
},
|
||||||
|
"speed_travel_layer_0":
|
||||||
|
{
|
||||||
|
"maximum_value": 550,
|
||||||
|
"maximum_value_warning": 500,
|
||||||
|
"value": 250
|
||||||
|
},
|
||||||
|
"speed_wall":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "2/5 * speed_print"
|
||||||
|
},
|
||||||
|
"speed_wall_0":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "1 * speed_wall"
|
||||||
|
},
|
||||||
|
"speed_wall_0_roofing":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "speed_wall_0"
|
||||||
|
},
|
||||||
|
"speed_wall_x":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275,
|
||||||
|
"value": "round(1.428575 * speed_wall,0)"
|
||||||
|
},
|
||||||
|
"speed_wall_x_roofing":
|
||||||
|
{
|
||||||
|
"maximum_value": 300,
|
||||||
|
"maximum_value_warning": 275
|
||||||
|
},
|
||||||
|
"speed_z_hop":
|
||||||
|
{
|
||||||
|
"maximum_value": 24,
|
||||||
|
"maximum_value_warning": 22,
|
||||||
|
"value": 20
|
||||||
|
},
|
||||||
|
"support_angle": { "value": "60" },
|
||||||
|
"support_bottom_density": { "value": "support_infill_rate" },
|
||||||
|
"support_bottom_distance": { "value": "layer_height" },
|
||||||
|
"support_bottom_enable": { "value": true },
|
||||||
|
"support_bottom_height": { "value": "layer_height * 2" },
|
||||||
|
"support_brim_line_count": { "value": 5 },
|
||||||
|
"support_infill_angles":
|
||||||
|
{
|
||||||
|
"value": [
|
||||||
|
45
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"support_infill_rate": { "value": 15 },
|
||||||
|
"support_interface_density": { "value": 80 },
|
||||||
|
"support_interface_enable": { "value": true },
|
||||||
|
"support_interface_height": { "value": "layer_height * 3" },
|
||||||
|
"support_interface_material_flow": { "value": "material_flow" },
|
||||||
|
"support_interface_offset": { "value": 1 },
|
||||||
|
"support_interface_pattern": { "value": "'lines'" },
|
||||||
|
"support_interface_wall_count": { "value": 0 },
|
||||||
|
"support_line_width": { "value": 0.32 },
|
||||||
|
"support_material_flow": { "value": "material_flow * 0.9" },
|
||||||
|
"support_offset": { "value": 1.6 },
|
||||||
|
"support_pattern": { "value": "'lines'" },
|
||||||
|
"support_roof_height": { "value": "support_interface_height" },
|
||||||
|
"support_roof_wall_count": { "value": "support_interface_wall_count" },
|
||||||
|
"support_top_distance": { "value": "support_z_distance" },
|
||||||
|
"support_use_towers": { "value": false },
|
||||||
|
"support_xy_distance": { "value": 0.3 },
|
||||||
|
"support_xy_overrides_z": { "value": "'xy_overrides_z'" },
|
||||||
|
"support_z_distance": { "value": "layer_height if support_structure == 'tree' else 0.25" },
|
||||||
|
"top_bottom_thickness": { "value": "5 * layer_height" },
|
||||||
|
"top_layers": { "value": 5 },
|
||||||
|
"travel_avoid_distance": { "value": 0.625 },
|
||||||
|
"travel_avoid_supports": { "value": true },
|
||||||
|
"wall_0_inset": { "value": "0" },
|
||||||
|
"wall_0_material_flow_layer_0": { "value": "material_flow * 0.95" },
|
||||||
|
"wall_0_wipe_dist": { "value": 0.2 },
|
||||||
|
"wall_line_width_x": { "value": 0.58 },
|
||||||
|
"wall_overhang_angle": { "value": 35 },
|
||||||
|
"wall_overhang_speed_factor":
|
||||||
|
{
|
||||||
|
"minimum_value_warning": 15,
|
||||||
|
"value": 17.5
|
||||||
|
},
|
||||||
|
"wall_thickness": { "value": 1 },
|
||||||
|
"wall_x_material_flow_layer_0": { "value": "material_flow" },
|
||||||
|
"xy_offset": { "value": 0 },
|
||||||
|
"xy_offset_layer_0": { "value": -0.1 },
|
||||||
|
"z_seam_corner": { "value": "'z_seam_corner_inner'" },
|
||||||
|
"z_seam_position": { "value": "'backleft'" },
|
||||||
|
"z_seam_type": { "value": "'sharpest_corner'" },
|
||||||
|
"z_seam_x": { "value": 150 },
|
||||||
|
"z_seam_y": { "value": 180 },
|
||||||
|
"zig_zaggify_infill": { "value": true }
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,7 @@
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Nail` Gimadeev (C)",
|
"author": "Nail` Gimadeev (C)",
|
||||||
"platform": "uni_200_platform.stl",
|
"platform": "uni_200_platform.stl",
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"platform_texture": "uni.png",
|
"platform_texture": "uni.png",
|
||||||
"quality_definition": "uni_base"
|
"quality_definition": "uni_base"
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Nail` Gimadeev (C)",
|
"author": "Nail` Gimadeev (C)",
|
||||||
"platform": "uni_250_platform.stl",
|
"platform": "uni_250_platform.stl",
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"platform_texture": "uni.png",
|
"platform_texture": "uni.png",
|
||||||
"quality_definition": "uni_base"
|
"quality_definition": "uni_base"
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Nail` Gimadeev (C)",
|
"author": "Nail` Gimadeev (C)",
|
||||||
"platform": "uni_300_platform.stl",
|
"platform": "uni_300_platform.stl",
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"platform_texture": "uni.png",
|
"platform_texture": "uni.png",
|
||||||
"quality_definition": "uni_base"
|
"quality_definition": "uni_base"
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"author": "Nail` Gimadeev (C)",
|
"author": "Nail` Gimadeev (C)",
|
||||||
"platform": "uni_mini_platform.stl",
|
"platform": "uni_mini_platform.stl",
|
||||||
|
"has_textured_buildplate": true,
|
||||||
"platform_texture": "uni.png",
|
"platform_texture": "uni.png",
|
||||||
"quality_definition": "uni_base"
|
"quality_definition": "uni_base"
|
||||||
},
|
},
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
"machine_end_gcode": { "default_value": "PRINT_END" },
|
"machine_end_gcode": { "default_value": "PRINT_END" },
|
||||||
"machine_extruder_count": { "default_value": 1 },
|
"machine_extruder_count": { "default_value": 1 },
|
||||||
"machine_name": { "default_value": "VORON2 StealthChanger" },
|
"machine_name": { "default_value": "VORON2 StealthChanger" },
|
||||||
"machine_start_gcode": { "default_value": "PRINT_START TOOL_TEMP={material_print_temperature_layer_0} T{initial_extruder_nr}_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0} TOOL={initial_extruder_nr}" }
|
"machine_start_gcode": { "default_value": "PRINT_START TOOL_TEMP={material_print_temperature_layer_0} T{initial_extruder_nr}_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0} TOOL={initial_extruder_nr}" },
|
||||||
|
"machine_start_gcode_first": { "default_value": true }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,63 +0,0 @@
|
||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"name": "Zyyx Agile",
|
|
||||||
"inherits": "fdmprinter",
|
|
||||||
"metadata":
|
|
||||||
{
|
|
||||||
"visible": true,
|
|
||||||
"author": "Magicfirm Europe",
|
|
||||||
"manufacturer": "Magicfirm Europe",
|
|
||||||
"file_formats": "application/x3g",
|
|
||||||
"platform": "zyyx_platform.3mf",
|
|
||||||
"has_machine_quality": true,
|
|
||||||
"machine_extruder_trains": { "0": "zyyx_agile_extruder_0" },
|
|
||||||
"machine_x3g_variant": "z",
|
|
||||||
"preferred_material": "zyyx_pro_pla",
|
|
||||||
"preferred_quality_type": "normal",
|
|
||||||
"quality_definition": "zyyx_agile"
|
|
||||||
},
|
|
||||||
"overrides":
|
|
||||||
{
|
|
||||||
"gantry_height": { "value": "10" },
|
|
||||||
"infill_overlap": { "value": "12 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0" },
|
|
||||||
"machine_center_is_zero": { "default_value": true },
|
|
||||||
"machine_depth": { "default_value": 225 },
|
|
||||||
"machine_end_gcode": { "default_value": "; ZYYX 3D Printer end gcode\nM73 P100 ; end build progress\nG0 Z195 F1000 ; send Z axis to bottom of machine\nM104 S0 T0 ; cool down extruder\nM127 ; stop blower fan\nG162 X Y F3000 ; home XY maximum\nM18 ; disable stepper\nM70 P5 (ZYYX Print Finished!)\nM72 P1 ; play Ta-Da song\n" },
|
|
||||||
"machine_gcode_flavor": { "default_value": "Makerbot" },
|
|
||||||
"machine_head_with_fans_polygon":
|
|
||||||
{
|
|
||||||
"default_value": [
|
|
||||||
[-37, 50],
|
|
||||||
[25, 50],
|
|
||||||
[25, -40],
|
|
||||||
[-37, -40]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"machine_height": { "default_value": 195 },
|
|
||||||
"machine_name": { "default_value": "ZYYX Agile" },
|
|
||||||
"machine_start_gcode": { "default_value": "; ZYYX 3D Printer start gcode\nM73 P0; enable build progress\nG21; set units to mm\nG90; set positioning to absolute\nG130 X80 Y80 A127 B127 ; Set Stepper Vref to default value\nG162 X Y F3000; home XY axes maximum\nM133 T0 ; stabilize extruder temperature\nG161 Z F450\nG161 Z F450; home Z axis minimum\nG92 X0 Y0 Z0 E0\nG1 X0 Y0 Z5 F200\nG161 Z F200; home Z axis minimum again\nG92 X0 Y0 Z0 E0\nM131 A; store surface calibration point 1\nG1 X0 Y0 Z5 F200\nG1 X-177 Y0 Z5 F3000; move to 2nd probing point\nG161 Z F200\nM131 B; store surface calibration point 2\nG92 X-177 Y0 Z0 E0\nG1 X-177 Y0 Z5 F200\nG1 X0 Y0 Z5 F3000; move to home point\nG161 Z F200; home Z axis minimum again\nG92 X0 Y0 Z0 E0; set reference again\nG1 X0 Y0 Z5 F200; clear Z\nG1 X0 Y-225 Z5 F3000; move to 3rd calibration point\nG161 Z F200\nM131 AB; store surface calibration point 3\nM132 AB; activate auto leveling\nG92 X0 Y-225 Z0 E0\nG1 X0 Y-225 Z5 F200\nG162 X Y F3000\nG161 Z F200\nG92 X135 Y115 Z0 E0\nM132 Z; Recall stored home offset for Z axis\nG1 X135 Y115 Z5 F450; clear nozzle from hole\nG1 X0 Y115 Z5 F3000; clear nozzle from hole\nG92 E0 ; Set E to 0" },
|
|
||||||
"machine_steps_per_mm_e": { "default_value": 96.27520187033366 },
|
|
||||||
"machine_steps_per_mm_x": { "default_value": 88.888889 },
|
|
||||||
"machine_steps_per_mm_y": { "default_value": 88.888889 },
|
|
||||||
"machine_steps_per_mm_z": { "default_value": 400 },
|
|
||||||
"machine_width": { "default_value": 265 },
|
|
||||||
"material_final_print_temperature": { "value": "material_print_temperature" },
|
|
||||||
"material_initial_print_temperature": { "value": "material_print_temperature" },
|
|
||||||
"raft_airgap": { "default_value": 0.15 },
|
|
||||||
"raft_margin": { "default_value": 6 },
|
|
||||||
"retract_at_layer_change": { "default_value": true },
|
|
||||||
"retraction_amount": { "default_value": 0.7 },
|
|
||||||
"retraction_speed": { "default_value": 15 },
|
|
||||||
"speed_layer_0": { "value": 15 },
|
|
||||||
"speed_print": { "default_value": 50 },
|
|
||||||
"speed_travel": { "value": 80 },
|
|
||||||
"speed_wall": { "value": 25 },
|
|
||||||
"speed_wall_x": { "value": 35 },
|
|
||||||
"support_interface_density": { "default_value": 80 },
|
|
||||||
"support_interface_enable": { "default_value": true },
|
|
||||||
"support_interface_height": { "default_value": 0.8 },
|
|
||||||
"support_interface_pattern": { "default_value": "grid" },
|
|
||||||
"travel_avoid_other_parts": { "default_value": false },
|
|
||||||
"travel_retract_before_outer_wall": { "default_value": true }
|
|
||||||
}
|
|
||||||
}
|
|
219
resources/definitions/zyyx_plus.def.json
Normal file
219
resources/definitions/zyyx_plus.def.json
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "ZYYX+",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Theodor Hansson",
|
||||||
|
"manufacturer": "ZYYX Labs AB",
|
||||||
|
"file_formats": "application/x3g",
|
||||||
|
"platform": "zyyx_platform.3mf",
|
||||||
|
"exclude_materials": [
|
||||||
|
"3D-Fuel_PLA_PRO_Black",
|
||||||
|
"3D-Fuel_PLA_SnapSupport",
|
||||||
|
"bestfilament_abs_skyblue",
|
||||||
|
"bestfilament_petg_orange",
|
||||||
|
"bestfilament_pla_green",
|
||||||
|
"leapfrog_abs_natural",
|
||||||
|
"leapfrog_epla_natural",
|
||||||
|
"leapfrog_pva_natural",
|
||||||
|
"goofoo_abs",
|
||||||
|
"goofoo_asa",
|
||||||
|
"goofoo_bronze_pla",
|
||||||
|
"goofoo_emarble_pla",
|
||||||
|
"goofoo_esilk_pla",
|
||||||
|
"goofoo_hips",
|
||||||
|
"goofoo_pa_cf",
|
||||||
|
"goofoo_pa",
|
||||||
|
"goofoo_pc",
|
||||||
|
"goofoo_peek",
|
||||||
|
"goofoo_petg",
|
||||||
|
"goofoo_pla",
|
||||||
|
"goofoo_pva",
|
||||||
|
"goofoo_tpe_83a",
|
||||||
|
"goofoo_tpu_87a",
|
||||||
|
"goofoo_tpu_95a",
|
||||||
|
"emotiontech_abs",
|
||||||
|
"emotiontech_absx",
|
||||||
|
"emotiontech_acetate",
|
||||||
|
"emotiontech_asax",
|
||||||
|
"emotiontech_bvoh",
|
||||||
|
"emotiontech_copa",
|
||||||
|
"emotiontech_hips",
|
||||||
|
"emotiontech_nylon_1030",
|
||||||
|
"emotiontech_nylon_1030cf",
|
||||||
|
"emotiontech_nylon_1070",
|
||||||
|
"emotiontech_pa6cf",
|
||||||
|
"emotiontech_pa6gf",
|
||||||
|
"emotiontech_pc",
|
||||||
|
"emotiontech_pekk",
|
||||||
|
"emotiontech_petg",
|
||||||
|
"emotiontech_pla",
|
||||||
|
"emotiontech_pla_hr_870",
|
||||||
|
"emotiontech_pva-m",
|
||||||
|
"emotiontech_pva-s",
|
||||||
|
"emotiontech_tpu98a",
|
||||||
|
"eryone_petg",
|
||||||
|
"eryone_pla_glow",
|
||||||
|
"eryone_pla_matte",
|
||||||
|
"eryone_pla_wood",
|
||||||
|
"eryone_pla",
|
||||||
|
"eryone_tpu",
|
||||||
|
"eSUN_PETG_Black",
|
||||||
|
"eSUN_PETG_Grey",
|
||||||
|
"eSUN_PETG_Purple",
|
||||||
|
"eSUN_PLA_PRO_Black",
|
||||||
|
"eSUN_PLA_PRO_Grey",
|
||||||
|
"eSUN_PLA_PRO_Purple",
|
||||||
|
"eSUN_PLA_PRO_White",
|
||||||
|
"Extrudr_GreenTECPro_Anthracite_175",
|
||||||
|
"Extrudr_GreenTECPro_Black_175",
|
||||||
|
"Extrudr_GreenTECPro_Blue_175",
|
||||||
|
"Extrudr_GreenTECPro_Nature_175",
|
||||||
|
"Extrudr_GreenTECPro_Red_175",
|
||||||
|
"Extrudr_GreenTECPro_Silver_175",
|
||||||
|
"Extrudr_GreenTECPro_White_175",
|
||||||
|
"verbatim_bvoh_175",
|
||||||
|
"Vertex_Delta_ABS",
|
||||||
|
"Vertex_Delta_PET",
|
||||||
|
"Vertex_Delta_PLA",
|
||||||
|
"Vertex_Delta_TPU",
|
||||||
|
"chromatik_pla",
|
||||||
|
"dsm_arnitel2045_175",
|
||||||
|
"dsm_novamid1070_175",
|
||||||
|
"fabtotum_abs",
|
||||||
|
"fabtotum_nylon",
|
||||||
|
"fabtotum_pla",
|
||||||
|
"fabtotum_tpu",
|
||||||
|
"fdplast_abs_tomato",
|
||||||
|
"fdplast_petg_gray",
|
||||||
|
"fdplast_pla_olive",
|
||||||
|
"fiberlogy_hd_pla",
|
||||||
|
"filo3d_pla",
|
||||||
|
"filo3d_pla_green",
|
||||||
|
"filo3d_pla_red",
|
||||||
|
"ideagen3D_ToughPLA",
|
||||||
|
"imade3d_petg_green",
|
||||||
|
"imade3d_petg_pink",
|
||||||
|
"imade3d_pla_green",
|
||||||
|
"imade3d_pla_pink",
|
||||||
|
"imade3d_petg_175",
|
||||||
|
"imade3d_pla_175",
|
||||||
|
"innofill_innoflex60_175",
|
||||||
|
"layer_one_black_pla",
|
||||||
|
"layer_one_dark_gray_pla",
|
||||||
|
"layer_one_white_pla",
|
||||||
|
"octofiber_pla",
|
||||||
|
"polyflex_pla",
|
||||||
|
"polymax_pla",
|
||||||
|
"polyplus_pla",
|
||||||
|
"polywood_pla",
|
||||||
|
"redd_abs",
|
||||||
|
"redd_asa",
|
||||||
|
"redd_hips",
|
||||||
|
"redd_nylon",
|
||||||
|
"redd_petg",
|
||||||
|
"redd_pla",
|
||||||
|
"redd_tpe",
|
||||||
|
"tizyx_abs",
|
||||||
|
"tizyx_flex",
|
||||||
|
"tizyx_petg",
|
||||||
|
"tizyx_pla_bois",
|
||||||
|
"tizyx_pla",
|
||||||
|
"tizyx_pva",
|
||||||
|
"ultimaker_abscf_175",
|
||||||
|
"ultimaker_absr_175",
|
||||||
|
"ultimaker_asa_175",
|
||||||
|
"ultimaker_nylon12-cf_175",
|
||||||
|
"ultimaker_pla_175",
|
||||||
|
"ultimaker_pva_175",
|
||||||
|
"ultimaker_rapidrinse_175",
|
||||||
|
"ultimaker_sr30_175",
|
||||||
|
"ultimaker_tough_pla_175",
|
||||||
|
"Vertex_Delta_ABS",
|
||||||
|
"Vertex_Delta_PET",
|
||||||
|
"Vertex_Delta_PLA_Glitter",
|
||||||
|
"Vertex_Delta_PLA_Mat",
|
||||||
|
"Vertex_Delta_PLA_Satin",
|
||||||
|
"Vertex_Delta_PLA_Wood",
|
||||||
|
"Vertex_Delta_PLA",
|
||||||
|
"Vertex_Delta_TPU",
|
||||||
|
"volumic_abs_ultra",
|
||||||
|
"volumic_arma_ultra",
|
||||||
|
"volumic_asa_ultra",
|
||||||
|
"volumic_br80_ultra",
|
||||||
|
"volumic_bumper_ultra",
|
||||||
|
"volumic_cu80_ultra",
|
||||||
|
"volumic_flex93_ultra",
|
||||||
|
"volumic_medical_ultra",
|
||||||
|
"volumic_nylon_ultra",
|
||||||
|
"volumic_pekk_carbone",
|
||||||
|
"volumic_petg_ultra",
|
||||||
|
"volumic_petgcarbone_ultra",
|
||||||
|
"volumic_pla_ultra",
|
||||||
|
"volumic_pp_ultra",
|
||||||
|
"volumic_strong_ultra",
|
||||||
|
"volumic_support_ultra",
|
||||||
|
"xyzprinting_abs",
|
||||||
|
"xyzprinting_antibact_pla",
|
||||||
|
"xyzprinting_carbon_fiber",
|
||||||
|
"xyzprinting_colorinkjet_pla",
|
||||||
|
"xyzprinting_flexible",
|
||||||
|
"xyzprinting_metallic_pla",
|
||||||
|
"xyzprinting_nylon",
|
||||||
|
"xyzprinting_pahtcf15",
|
||||||
|
"xyzprinting_pc",
|
||||||
|
"xyzprinting_petcf15",
|
||||||
|
"xyzprinting_petg",
|
||||||
|
"xyzprinting_pla",
|
||||||
|
"xyzprinting_ppgf30",
|
||||||
|
"xyzprinting_tough_pla",
|
||||||
|
"xyzprinting_tpu",
|
||||||
|
"zyyx_abs-mm",
|
||||||
|
"zyyx_abs-perf",
|
||||||
|
"zyyx_flex95a",
|
||||||
|
"zyyx_petg",
|
||||||
|
"zyyx_petg-cf",
|
||||||
|
"zyyx_pla",
|
||||||
|
"zyyx_pro_flex",
|
||||||
|
"zyyx_pro_pla",
|
||||||
|
"zyyx_procarbon",
|
||||||
|
"zyyx_proglass",
|
||||||
|
"zyyx_pronylon"
|
||||||
|
],
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"machine_extruder_trains": { "0": "zyyx_plus_extruder_0" },
|
||||||
|
"machine_x3g_variant": "z",
|
||||||
|
"preferred_material": "generic_pla",
|
||||||
|
"preferred_quality_type": "normal",
|
||||||
|
"quality_definition": "zyyx_plus",
|
||||||
|
"setting_version": 3
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"gantry_height": { "value": "10" },
|
||||||
|
"infill_overlap": { "value": "12 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0" },
|
||||||
|
"machine_center_is_zero": { "default_value": true },
|
||||||
|
"machine_depth": { "default_value": 210 },
|
||||||
|
"machine_end_gcode": { "default_value": "; ZYYX 3D Printer end gcode\nM73 P100 ; end build progress\nG0 Z195 F1000 ; send Z axis to bottom of machine\nM104 S0 T0 ; cool down extruder\nM127 ; stop blower fan\nG162 X Y F3000 ; home XY maximum\nM18 ; disable stepper\nM70 P5 (ZYYX Print Finished!)\nM72 P1 ; play Ta-Da song\n" },
|
||||||
|
"machine_gcode_flavor": { "default_value": "Makerbot" },
|
||||||
|
"machine_head_with_fans_polygon":
|
||||||
|
{
|
||||||
|
"default_value": [
|
||||||
|
[-37, 50],
|
||||||
|
[25, 50],
|
||||||
|
[25, -40],
|
||||||
|
[-37, -40]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"machine_height": { "default_value": 195 },
|
||||||
|
"machine_name": { "default_value": "ZYYX+" },
|
||||||
|
"machine_start_gcode": { "default_value": "; ZYYX+ start gcode\n; Author Theodor Hansson 2024\nM73 P0; enable build progress\nM104 S{material_print_temperature_layer_0} T0; set nozzle temperature\nM126 S0; Turn off fan\nG21; set units to mm\nG90; set positioning to absolute\nG130 X80 Y80 A127 B127 ; Set Stepper Vref to default value\n\n; Home xy-axis\nG162 X Y F2500; home XY axes maximum\nG92 X0 Y0\nG1 X-5 Y-5 F2500\nG162 X Y F200; home XY axes maximum slowly\nG92 X132.5 Y120\n\n; Home z-axis\nG161 Z F1100; home Z axis minimum\nG92 Z0\nG1 Z2 F1100\nG161 Z F100; home Z axis minimum slowly\nG92 Z0\nM132 Z; Recall home offsets for Z\n\n; Calibrate point 1 (we're already at point 1)\nM131 A; store surface calibration point 1\nG1 Z2 F1100; back up from buildplate\n\n; Calibrate point 2\nG1 X-44.5 Y120 F7000; move to 2nd probing point\nG161 Z F100\nM131 B; store surface calibration point 1\nG1 Z2 F1100; back up from buildplate\n\n; Calibrate point 3\nG1 X132.5 Y-110 F7000; move to 2nd probing point\nG161 Z F100\nM131 AB; store surface calibration point 3\nG1 Z2 F1100; back up from buildplate\nM132 AB; Activate auto-leveling\nG1 Z1 F1000\n\n; Lay prime strip\nM133 T0; stabilize extruder temperature\nM126 S{cool_fan_speed_0}; Activate fan\nG4 P1000; Wait a little bit longer\nG1 X80 Y-110 Z0.2 F1000\nG1 X20 E9 F1000\nG1 X-20 E12.5 F1000\nG92 E0 ; Set E to 0\n\n; End of start gcode" },
|
||||||
|
"machine_steps_per_mm_e": { "default_value": 96.27520187033366 },
|
||||||
|
"machine_steps_per_mm_x": { "default_value": 88.888889 },
|
||||||
|
"machine_steps_per_mm_y": { "default_value": 88.888889 },
|
||||||
|
"machine_steps_per_mm_z": { "default_value": 400 },
|
||||||
|
"machine_width": { "default_value": 265 }
|
||||||
|
}
|
||||||
|
}
|
249
resources/definitions/zyyx_pro.def.json
Normal file
249
resources/definitions/zyyx_pro.def.json
Normal file
|
@ -0,0 +1,249 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "ZYYX Pro",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"visible": true,
|
||||||
|
"author": "Theodor Hansson",
|
||||||
|
"manufacturer": "ZYYX Labs AB",
|
||||||
|
"file_formats": "application/x3g",
|
||||||
|
"platform": "zyyx_pro_platform.stl",
|
||||||
|
"exclude_materials": [
|
||||||
|
"3D-Fuel_PLA_PRO_Black",
|
||||||
|
"3D-Fuel_PLA_SnapSupport",
|
||||||
|
"bestfilament_abs_skyblue",
|
||||||
|
"bestfilament_petg_orange",
|
||||||
|
"bestfilament_pla_green",
|
||||||
|
"leapfrog_abs_natural",
|
||||||
|
"leapfrog_epla_natural",
|
||||||
|
"leapfrog_pva_natural",
|
||||||
|
"goofoo_abs",
|
||||||
|
"goofoo_asa",
|
||||||
|
"goofoo_bronze_pla",
|
||||||
|
"goofoo_emarble_pla",
|
||||||
|
"goofoo_esilk_pla",
|
||||||
|
"goofoo_hips",
|
||||||
|
"goofoo_pa_cf",
|
||||||
|
"goofoo_pa",
|
||||||
|
"goofoo_pc",
|
||||||
|
"goofoo_peek",
|
||||||
|
"goofoo_petg",
|
||||||
|
"goofoo_pla",
|
||||||
|
"goofoo_pva",
|
||||||
|
"goofoo_tpe_83a",
|
||||||
|
"goofoo_tpu_87a",
|
||||||
|
"goofoo_tpu_95a",
|
||||||
|
"emotiontech_abs",
|
||||||
|
"emotiontech_absx",
|
||||||
|
"emotiontech_acetate",
|
||||||
|
"emotiontech_asax",
|
||||||
|
"emotiontech_bvoh",
|
||||||
|
"emotiontech_copa",
|
||||||
|
"emotiontech_hips",
|
||||||
|
"emotiontech_nylon_1030",
|
||||||
|
"emotiontech_nylon_1030cf",
|
||||||
|
"emotiontech_nylon_1070",
|
||||||
|
"emotiontech_pa6cf",
|
||||||
|
"emotiontech_pa6gf",
|
||||||
|
"emotiontech_pc",
|
||||||
|
"emotiontech_pekk",
|
||||||
|
"emotiontech_petg",
|
||||||
|
"emotiontech_pla",
|
||||||
|
"emotiontech_pla_hr_870",
|
||||||
|
"emotiontech_pva-m",
|
||||||
|
"emotiontech_pva-s",
|
||||||
|
"emotiontech_tpu98a",
|
||||||
|
"eryone_petg",
|
||||||
|
"eryone_pla_matte",
|
||||||
|
"eryone_pla",
|
||||||
|
"eryone_tpu",
|
||||||
|
"eSUN_PETG_Black",
|
||||||
|
"eSUN_PETG_Grey",
|
||||||
|
"eSUN_PETG_Purple",
|
||||||
|
"eSUN_PLA_PRO_Black",
|
||||||
|
"eSUN_PLA_PRO_Grey",
|
||||||
|
"eSUN_PLA_PRO_Purple",
|
||||||
|
"eSUN_PLA_PRO_White",
|
||||||
|
"Extrudr_GreenTECPro_Anthracite_175",
|
||||||
|
"Extrudr_GreenTECPro_Black_175",
|
||||||
|
"Extrudr_GreenTECPro_Blue_175",
|
||||||
|
"Extrudr_GreenTECPro_Nature_175",
|
||||||
|
"Extrudr_GreenTECPro_Red_175",
|
||||||
|
"Extrudr_GreenTECPro_Silver_175",
|
||||||
|
"Extrudr_GreenTECPro_White_175",
|
||||||
|
"verbatim_bvoh_175",
|
||||||
|
"Vertex_Delta_ABS",
|
||||||
|
"Vertex_Delta_PET",
|
||||||
|
"Vertex_Delta_PLA",
|
||||||
|
"Vertex_Delta_TPU",
|
||||||
|
"chromatik_pla",
|
||||||
|
"dsm_arnitel2045_175",
|
||||||
|
"dsm_novamid1070_175",
|
||||||
|
"fabtotum_abs",
|
||||||
|
"fabtotum_nylon",
|
||||||
|
"fabtotum_pla",
|
||||||
|
"fabtotum_tpu",
|
||||||
|
"fdplast_abs_tomato",
|
||||||
|
"fdplast_petg_gray",
|
||||||
|
"fdplast_pla_olive",
|
||||||
|
"fiberlogy_hd_pla",
|
||||||
|
"filo3d_pla",
|
||||||
|
"filo3d_pla_green",
|
||||||
|
"filo3d_pla_red",
|
||||||
|
"ideagen3D_ToughPLA",
|
||||||
|
"imade3d_petg_green",
|
||||||
|
"imade3d_petg_pink",
|
||||||
|
"imade3d_pla_green",
|
||||||
|
"imade3d_pla_pink",
|
||||||
|
"imade3d_petg_175",
|
||||||
|
"imade3d_pla_175",
|
||||||
|
"innofill_innoflex60_175",
|
||||||
|
"layer_one_black_pla",
|
||||||
|
"layer_one_dark_gray_pla",
|
||||||
|
"layer_one_white_pla",
|
||||||
|
"octofiber_pla",
|
||||||
|
"polyflex_pla",
|
||||||
|
"polymax_pla",
|
||||||
|
"polyplus_pla",
|
||||||
|
"polywood_pla",
|
||||||
|
"redd_abs",
|
||||||
|
"redd_asa",
|
||||||
|
"redd_hips",
|
||||||
|
"redd_nylon",
|
||||||
|
"redd_petg",
|
||||||
|
"redd_pla",
|
||||||
|
"redd_tpe",
|
||||||
|
"tizyx_abs",
|
||||||
|
"tizyx_flex",
|
||||||
|
"tizyx_petg",
|
||||||
|
"tizyx_pla_bois",
|
||||||
|
"tizyx_pla",
|
||||||
|
"tizyx_pva",
|
||||||
|
"ultimaker_abscf_175",
|
||||||
|
"ultimaker_absr_175",
|
||||||
|
"ultimaker_asa_175",
|
||||||
|
"ultimaker_nylon12-cf_175",
|
||||||
|
"ultimaker_pla_175",
|
||||||
|
"ultimaker_pva_175",
|
||||||
|
"ultimaker_rapidrinse_175",
|
||||||
|
"ultimaker_sr30_175",
|
||||||
|
"ultimaker_tough_pla_175",
|
||||||
|
"Vertex_Delta_ABS",
|
||||||
|
"Vertex_Delta_PET",
|
||||||
|
"Vertex_Delta_PLA_Glitter",
|
||||||
|
"Vertex_Delta_PLA_Mat",
|
||||||
|
"Vertex_Delta_PLA_Satin",
|
||||||
|
"Vertex_Delta_PLA_Wood",
|
||||||
|
"Vertex_Delta_PLA",
|
||||||
|
"Vertex_Delta_TPU",
|
||||||
|
"volumic_abs_ultra",
|
||||||
|
"volumic_arma_ultra",
|
||||||
|
"volumic_asa_ultra",
|
||||||
|
"volumic_br80_ultra",
|
||||||
|
"volumic_bumper_ultra",
|
||||||
|
"volumic_cu80_ultra",
|
||||||
|
"volumic_flex93_ultra",
|
||||||
|
"volumic_medical_ultra",
|
||||||
|
"volumic_nylon_ultra",
|
||||||
|
"volumic_pekk_carbone",
|
||||||
|
"volumic_petg_ultra",
|
||||||
|
"volumic_petgcarbone_ultra",
|
||||||
|
"volumic_pla_ultra",
|
||||||
|
"volumic_pp_ultra",
|
||||||
|
"volumic_strong_ultra",
|
||||||
|
"volumic_support_ultra",
|
||||||
|
"xyzprinting_abs",
|
||||||
|
"xyzprinting_antibact_pla",
|
||||||
|
"xyzprinting_carbon_fiber",
|
||||||
|
"xyzprinting_colorinkjet_pla",
|
||||||
|
"xyzprinting_flexible",
|
||||||
|
"xyzprinting_metallic_pla",
|
||||||
|
"xyzprinting_nylon",
|
||||||
|
"xyzprinting_pahtcf15",
|
||||||
|
"xyzprinting_pc",
|
||||||
|
"xyzprinting_petcf15",
|
||||||
|
"xyzprinting_petg",
|
||||||
|
"xyzprinting_pla",
|
||||||
|
"xyzprinting_ppgf30",
|
||||||
|
"xyzprinting_tough_pla",
|
||||||
|
"xyzprinting_tpu",
|
||||||
|
"zyyx_abs-mm",
|
||||||
|
"zyyx_abs-perf",
|
||||||
|
"zyyx_flex95a",
|
||||||
|
"zyyx_petg",
|
||||||
|
"zyyx_pla",
|
||||||
|
"zyyx_pro_flex",
|
||||||
|
"zyyx_pro_pla",
|
||||||
|
"zyyx_pronylon"
|
||||||
|
],
|
||||||
|
"has_machine_quality": true,
|
||||||
|
"has_materials": true,
|
||||||
|
"has_variants": true,
|
||||||
|
"machine": "zyyx_pro",
|
||||||
|
"machine_extruder_trains": { "0": "zyyx_pro_extruder" },
|
||||||
|
"machine_x3g_variant": "z",
|
||||||
|
"preferred_material": "generic_pla",
|
||||||
|
"preferred_variant_name": "Carbon0.6",
|
||||||
|
"quality_definition": "zyyx_pro",
|
||||||
|
"setting_version": 3,
|
||||||
|
"variants_name": "SwiftTool"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"gantry_height": { "value": "10" },
|
||||||
|
"infill_overlap": { "value": "12 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0" },
|
||||||
|
"machine_center_is_zero": { "default_value": true },
|
||||||
|
"machine_depth": { "default_value": 228 },
|
||||||
|
"machine_disallowed_areas":
|
||||||
|
{
|
||||||
|
"default_value": [
|
||||||
|
[
|
||||||
|
[-58, 117.5],
|
||||||
|
[-58, 108],
|
||||||
|
[-50, 108],
|
||||||
|
[-50, 117.5]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[119, 117.5],
|
||||||
|
[119, 108],
|
||||||
|
[140, 108],
|
||||||
|
[140, 117.5]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[-58, -117.5],
|
||||||
|
[-58, -108],
|
||||||
|
[-50, -108],
|
||||||
|
[-50, -117.5]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
[119, -117.5],
|
||||||
|
[119, -108],
|
||||||
|
[140, -108],
|
||||||
|
[140, -117.5]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"machine_end_gcode": { "default_value": "; ZYYX 3D Printer end gcode\nM73 P100 ; end build progress\nG0 Z195 F1000 ; send Z axis to bottom of machine\nM104 S0 T0 ; cool down extruder\nM127 ; stop blower fan\nG162 X Y F3000 ; home XY maximum\nM18 ; disable stepper\nM70 P5 (ZYYX Print Finished!)\nM72 P1 ; play Ta-Da song\n" },
|
||||||
|
"machine_gcode_flavor": { "default_value": "Makerbot" },
|
||||||
|
"machine_head_with_fans_polygon":
|
||||||
|
{
|
||||||
|
"default_value": [
|
||||||
|
[-37, 50],
|
||||||
|
[25, 50],
|
||||||
|
[25, -40],
|
||||||
|
[-37, -40]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"machine_heated_bed": { "default_value": true },
|
||||||
|
"machine_height": { "default_value": 195 },
|
||||||
|
"machine_name": { "default_value": "ZYYX Pro" },
|
||||||
|
"machine_start_gcode": { "default_value": "; ZYYX Pro start gcode\n; Author Theodor Hansson 2024\nM73 P0; enable build progress\nM420 P20; set back fan speed 10 off 11-20 10-100%\nM140 S10 T0; set 100% heater power\nM140 S99 T0; set chamber heater negative hysteresis 19 degrees\nM140 S102 T0; set chamber heater positive hysteresis 2 degrees\nM140 S{material_bed_temperature_layer_0} T0; set chamber temperature\nM104 S{material_print_temperature_layer_0} T0; set nozzle temperature\nG21; set units to mm\nG90; set positioning to absolute\nG130 X80 Y90 A127 B127 ; Set Stepper Vref to default value\n\n; Home xy-axis\nG162 X Y F2500; home XY axes maximum\nG92 X0 Y0\nG1 X-5 Y-5 F2500\nG162 X Y F200; home XY axes maximum slowly\nG92 X135 Y114\n\n; Home z-axis\nG161 Z F1100; home Z axis minimum\nG92 Z0\nG1 Z2 F1100\nG161 Z F100; home Z axis minimum slowly\nG92 Z0\nM132 Z; Recall home offsets for Z\n\n; Calibrate point 1 (we're already at point 1)\nM131 A; store surface calibration point 1\nG1 Z2 F1100; back up from buildplate\n\n; Calibrate point 2\nG1 X-47 F7000; move to 2nd probing point\nG161 Z F100\nM131 B; store surface calibration point 1\nG1 Z2 F1100; back up from buildplate\n\n; Calibrate point 3\nG1 X135 Y-114 F7000; move to 2nd probing point\nG161 Z F100\nM131 AB; store surface calibration point 3\nG1 Z2 F1100; back up from buildplate\nM132 AB; Activate auto-leveling\n\n; Extrude material over hole\nM133 T0; stabilize extruder temperature\nM126 S{cool_fan_speed_0}; Activate fan\nG4 P1000; Wait a little bit longer\nG1 Z0.10 E500 F50\nG1 X115 Y-95 F1000\nG92 E0 ; Set E to 0\n; End of start gcode" },
|
||||||
|
"machine_steps_per_mm_e": { "default_value": 96.27520187033366 },
|
||||||
|
"machine_steps_per_mm_x": { "default_value": 88.888889 },
|
||||||
|
"machine_steps_per_mm_y": { "default_value": 88.888889 },
|
||||||
|
"machine_steps_per_mm_z": { "default_value": 400 },
|
||||||
|
"machine_width": { "default_value": 265 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,8 +15,8 @@
|
||||||
"maximum_value": 1
|
"maximum_value": 1
|
||||||
},
|
},
|
||||||
"machine_extruder_cooling_fan_number": { "default_value": 0 },
|
"machine_extruder_cooling_fan_number": { "default_value": 0 },
|
||||||
"machine_extruder_end_code": { "default_value": "M106 P{extruder_nr} S1.0\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
"machine_extruder_end_code": { "default_value": "M104 S{material_standby_temperature}\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
||||||
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nM104 S{material_print_temperature}\nG4 S5\nG91\nG0 Z-0.4 F600\nG90\nM107 P{(extruder_nr+1)%2}\nM106 P{extruder_nr} S{cool_fan_speed_0/100}" },
|
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nG91\nG0 Z-0.4 F600\nG90" },
|
||||||
"machine_extruder_start_code_duration": { "default_value": 8 },
|
"machine_extruder_start_code_duration": { "default_value": 8 },
|
||||||
"machine_nozzle_offset_x": { "default_value": 0 },
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0 },
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
"maximum_value": 1
|
"maximum_value": 1
|
||||||
},
|
},
|
||||||
"machine_extruder_cooling_fan_number": { "default_value": 1 },
|
"machine_extruder_cooling_fan_number": { "default_value": 1 },
|
||||||
"machine_extruder_end_code": { "default_value": "M106 P{extruder_nr} S1.0\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
"machine_extruder_end_code": { "default_value": "M104 S{material_standby_temperature}\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
||||||
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nM104 S{material_print_temperature}\nG4 S5\nG91\nG0 Z-0.4 F600\nG90\nM107 P{(extruder_nr+1)%2}\nM106 P{extruder_nr} S{cool_fan_speed_0/100}" },
|
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nG91\nG0 Z-0.4 F600\nG90" },
|
||||||
"machine_extruder_start_code_duration": { "default_value": 8 },
|
"machine_extruder_start_code_duration": { "default_value": 8 },
|
||||||
"machine_nozzle_offset_x": { "default_value": 0 },
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0 },
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
"maximum_value": "1"
|
"maximum_value": "1"
|
||||||
},
|
},
|
||||||
"machine_extruder_cooling_fan_number": { "default_value": 0 },
|
"machine_extruder_cooling_fan_number": { "default_value": 0 },
|
||||||
"machine_extruder_end_code": { "default_value": "M106 P{extruder_nr} S1.0\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
"machine_extruder_end_code": { "default_value": "M104 S{material_standby_temperature}\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
||||||
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nM104 S{material_print_temperature}\nG4 S5\nG91\nG0 Z-0.4 F600\nG90\nM107 P{(extruder_nr+1)%2}\nM106 P{extruder_nr} S{cool_fan_speed_0/100}" },
|
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nG91\nG0 Z-0.4 F600\nG90" },
|
||||||
"machine_extruder_start_code_duration": { "default_value": 8 },
|
"machine_extruder_start_code_duration": { "default_value": 8 },
|
||||||
"machine_nozzle_offset_x": { "default_value": 0 },
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0 },
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
"maximum_value": "1"
|
"maximum_value": "1"
|
||||||
},
|
},
|
||||||
"machine_extruder_cooling_fan_number": { "default_value": 1 },
|
"machine_extruder_cooling_fan_number": { "default_value": 1 },
|
||||||
"machine_extruder_end_code": { "default_value": "M106 P{extruder_nr} S1.0\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
"machine_extruder_end_code": { "default_value": "M104 S{material_standby_temperature}\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
||||||
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nM104 S{material_print_temperature}\nG4 S5\nG91\nG0 Z-0.4 F600\nG90\nM107 P{(extruder_nr+1)%2}\nM106 P{extruder_nr} S{cool_fan_speed_0/100}" },
|
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nG91\nG0 Z-0.4 F600\nG90" },
|
||||||
"machine_extruder_start_code_duration": { "default_value": 8 },
|
"machine_extruder_start_code_duration": { "default_value": 8 },
|
||||||
"machine_nozzle_offset_x": { "default_value": 0 },
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0 },
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
"maximum_value": "1"
|
"maximum_value": "1"
|
||||||
},
|
},
|
||||||
"machine_extruder_cooling_fan_number": { "default_value": 0 },
|
"machine_extruder_cooling_fan_number": { "default_value": 0 },
|
||||||
"machine_extruder_end_code": { "default_value": "M106 P{extruder_nr} S1.0\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
"machine_extruder_end_code": { "default_value": "M104 S{material_standby_temperature}\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
||||||
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nM104 S{material_print_temperature}\nG4 S5\nG91\nG0 Z-0.4 F600\nG90\nM107 P{(extruder_nr+1)%2}\nM106 P{extruder_nr} S{cool_fan_speed_0/100}" },
|
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nG91\nG0 Z-0.4 F600\nG90" },
|
||||||
"machine_extruder_start_code_duration": { "default_value": 10 },
|
"machine_extruder_start_code_duration": { "default_value": 10 },
|
||||||
"machine_nozzle_offset_x": { "default_value": 0 },
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0 },
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
"maximum_value": "1"
|
"maximum_value": "1"
|
||||||
},
|
},
|
||||||
"machine_extruder_cooling_fan_number": { "default_value": 1 },
|
"machine_extruder_cooling_fan_number": { "default_value": 1 },
|
||||||
"machine_extruder_end_code": { "default_value": "M106 P{extruder_nr} S1.0\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
"machine_extruder_end_code": { "default_value": "M104 S{material_standby_temperature}\nG91\nG0 Z0.4 F600\nG90\nG0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000" },
|
||||||
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nM104 S{material_print_temperature}\nG4 S5\nG91\nG0 Z-0.4 F600\nG90\nM107 P{(extruder_nr+1)%2}\nM106 P{extruder_nr} S{cool_fan_speed_0/100}" },
|
"machine_extruder_start_code": { "default_value": "G0 X{prime_tower_position_x - prime_tower_size/2} Y{prime_tower_position_y + prime_tower_size/2} F6000\nG91\nG0 Z-0.4 F600\nG90" },
|
||||||
"machine_extruder_start_code_duration": { "default_value": 10 },
|
"machine_extruder_start_code_duration": { "default_value": 10 },
|
||||||
"machine_nozzle_offset_x": { "default_value": 0 },
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
"machine_nozzle_offset_y": { "default_value": 0 },
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
|
22
resources/extruders/ultimaker_sketch_extruder.def.json
Normal file
22
resources/extruders/ultimaker_sketch_extruder.def.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata":
|
||||||
|
{
|
||||||
|
"machine": "ultimaker_sketch",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
"overrides":
|
||||||
|
{
|
||||||
|
"extruder_nr":
|
||||||
|
{
|
||||||
|
"default_value": 0,
|
||||||
|
"maximum_value": "1"
|
||||||
|
},
|
||||||
|
"machine_nozzle_offset_x": { "default_value": 0 },
|
||||||
|
"machine_nozzle_offset_y": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue