Merge branch 'main' into CURA-12446_top_bottom_wall_count_new
Some checks failed
conan-package-resources / conan-package (push) Has been cancelled
conan-package / conan-package (push) Has been cancelled
printer-linter-format / Printer linter auto format (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled
conan-package-resources / signal-curator (push) Has been cancelled
7
.github/workflows/nightly-stable.yml
vendored
|
@ -2,9 +2,10 @@ name: Nightly build - stable release
|
|||
run-name: Nightly build - stable release
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Daily at 5:15 CET
|
||||
- cron: '15 4 * * *'
|
||||
workflow_dispatch:
|
||||
# schedule:
|
||||
# # Daily at 5:15 CET
|
||||
# - cron: '15 4 * * *'
|
||||
|
||||
jobs:
|
||||
build-nightly:
|
||||
|
|
7
.github/workflows/nightly-testing.yml
vendored
|
@ -2,9 +2,10 @@ name: Nightly build - dev release
|
|||
run-name: Nightly build - dev release
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Daily at 4:15 CET
|
||||
- cron: '15 3 * * *'
|
||||
workflow_dispatch:
|
||||
# schedule:
|
||||
# # Daily at 5:15 CET
|
||||
# - cron: '15 4 * * *'
|
||||
|
||||
jobs:
|
||||
build-nightly:
|
||||
|
|
|
@ -2,7 +2,7 @@ name: printer-linter-pr-diagnose
|
|||
|
||||
on:
|
||||
pull_request:
|
||||
path:
|
||||
paths:
|
||||
- "resources/**"
|
||||
|
||||
permissions:
|
||||
|
|
65
.github/workflows/slicing-error-check.yml
vendored
Normal file
|
@ -0,0 +1,65 @@
|
|||
name: Slicing Error Check
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened, edited]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
processSlicingError:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check for project file and set output
|
||||
id: check_issue_details
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const issue = context.payload.issue;
|
||||
const issueNumber = issue.number;
|
||||
|
||||
console.log(`Processing issue #${issueNumber}: "${issue.title}"`);
|
||||
|
||||
const hasSlicingErrorLabel = issue.labels.some(label => label.name.toLowerCase().includes('slicing error'));
|
||||
const titleContainsSliceFailed = issue.title.toLowerCase().includes('slice failed');
|
||||
const bodyText = issue.body || "";
|
||||
const bodyContainsSliceFailed = bodyText.toLowerCase().includes('slice failed');
|
||||
let setNeedsInfoOutput = false;
|
||||
|
||||
if (hasSlicingErrorLabel || titleContainsSliceFailed || bodyContainsSliceFailed) {
|
||||
console.log(`Issue #${issueNumber} matches slicing error criteria.`);
|
||||
|
||||
const zipRegex = /(\[[^\]]*?\]\(.*?\.zip\)|https?:\/\/[^\s]*?\.zip)/i;
|
||||
let hasZipAttachment = zipRegex.test(bodyText);
|
||||
|
||||
if (hasZipAttachment) {
|
||||
console.log(`Issue #${issueNumber} appears to have a .zip file linked in the body.`);
|
||||
} else {
|
||||
console.log(`Issue #${issueNumber} does not appear to have a .zip file linked in the body. Flagging for further action.`);
|
||||
setNeedsInfoOutput = true;
|
||||
}
|
||||
} else {
|
||||
console.log(`Issue #${issueNumber} does not match slicing error criteria. No action needed.`);
|
||||
}
|
||||
core.setOutput('needs_info', setNeedsInfoOutput.toString());
|
||||
|
||||
- name: Add comment if project file is missing
|
||||
if: ${{ steps.check_issue_details.outputs.needs_info == 'true' }}
|
||||
uses: peter-evans/create-or-update-comment@v4
|
||||
with:
|
||||
issue-number: ${{ github.event.issue.number }}
|
||||
body: |
|
||||
This issue is related to a slicing error, but it seems a project file (`.zip`) is missing.
|
||||
Please attach a `.zip` file containing your project (including models and profiles) so we can reproduce the issue.
|
||||
This will help us investigate and resolve the problem more effectively.
|
||||
Have Cura open with your project that fails to slice, go to `Help` > `Export Package For Technical Support`, and save the package.
|
||||
Then create a .zip file with the package, attach the `.zip` file to this issue.
|
||||
If you have already attached a `.zip` file, please ensure it is correctly linked in the issue body.
|
||||
|
||||
- name: Add Status Needs Info Label
|
||||
if: ${{ steps.check_issue_details.outputs.needs_info == 'true' }}
|
||||
uses: actions-ecosystem/action-add-labels@v1
|
||||
with:
|
||||
labels: |
|
||||
Status: Needs Info
|
4
.github/workflows/update-translation.yml
vendored
|
@ -11,5 +11,5 @@ on:
|
|||
jobs:
|
||||
update-translations:
|
||||
uses: ultimaker/cura-workflows/.github/workflows/update-translations.yml@main
|
||||
with:
|
||||
branch: ${{ inputs.branch }}
|
||||
with:
|
||||
branch: ${{ inputs.branch }}
|
||||
|
|
|
@ -1895,36 +1895,39 @@ class CuraApplication(QtApplication):
|
|||
query = QUrlQuery(url.query())
|
||||
model_url = QUrl(query.queryItemValue("file", options=QUrl.ComponentFormattingOption.FullyDecoded))
|
||||
|
||||
def on_finish(response):
|
||||
content_disposition_header_key = QByteArray("content-disposition".encode())
|
||||
|
||||
filename = model_url.path().split("/")[-1] + ".stl"
|
||||
|
||||
if response.hasRawHeader(content_disposition_header_key):
|
||||
# content_disposition is in the format
|
||||
# ```
|
||||
# content_disposition attachment; filename="[FILENAME]"
|
||||
# ```
|
||||
# Use a regex to extract the filename
|
||||
content_disposition = str(response.rawHeader(content_disposition_header_key).data(),
|
||||
encoding='utf-8')
|
||||
content_disposition_match = re.match(r'attachment; filename=(?P<filename>.*)',
|
||||
content_disposition)
|
||||
if content_disposition_match is not None:
|
||||
filename = content_disposition_match.group("filename").strip("\"")
|
||||
|
||||
tmp = tempfile.NamedTemporaryFile(suffix=filename, delete=False)
|
||||
with open(tmp.name, "wb") as f:
|
||||
f.write(response.readAll())
|
||||
|
||||
self.readLocalFile(QUrl.fromLocalFile(tmp.name), add_to_recent_files=False)
|
||||
|
||||
def on_error(*args, **kwargs):
|
||||
Logger.log("w", "Could not download file from {0}".format(model_url.url()))
|
||||
Message("Could not download file: " + str(model_url.url()),
|
||||
Logger.warning(f"Could not download file from {model_url.url()}")
|
||||
Message(f"Could not download file: {str(model_url.url())}",
|
||||
title= "Loading Model failed",
|
||||
message_type=Message.MessageType.ERROR).show()
|
||||
return
|
||||
|
||||
def on_finish(response):
|
||||
try:
|
||||
content_disposition_header_key = QByteArray("content-disposition".encode())
|
||||
|
||||
filename = model_url.path().split("/")[-1] + ".stl"
|
||||
|
||||
if response.hasRawHeader(content_disposition_header_key):
|
||||
# content_disposition is in the format
|
||||
# ```
|
||||
# content_disposition attachment; filename="[FILENAME]"
|
||||
# ```
|
||||
# Use a regex to extract the filename
|
||||
content_disposition = str(response.rawHeader(content_disposition_header_key).data(),
|
||||
encoding='utf-8')
|
||||
content_disposition_match = re.match(r'attachment; filename=(?P<filename>.*)',
|
||||
content_disposition)
|
||||
if content_disposition_match is not None:
|
||||
filename = content_disposition_match.group("filename").strip("\"")
|
||||
|
||||
tmp = tempfile.NamedTemporaryFile(suffix=filename, delete=False)
|
||||
with open(tmp.name, "wb") as f:
|
||||
f.write(response.readAll())
|
||||
|
||||
self.readLocalFile(QUrl.fromLocalFile(tmp.name), add_to_recent_files=False)
|
||||
except Exception as ex:
|
||||
Logger.warning(f"Exception {str(ex)}")
|
||||
on_error()
|
||||
|
||||
self.getHttpRequestManager().get(
|
||||
model_url.url(),
|
||||
|
|
|
@ -258,11 +258,87 @@ class MakerbotWriter(MeshWriter):
|
|||
|
||||
meta["preferences"] = dict()
|
||||
bounds = application.getBuildVolume().getBoundingBox()
|
||||
intent = CuraApplication.getInstance().getIntentManager().currentIntentCategory
|
||||
meta["preferences"]["instance0"] = {
|
||||
"machineBounds": [bounds.right, bounds.front, bounds.left, bounds.back] if bounds is not None else None,
|
||||
"printMode": CuraApplication.getInstance().getIntentManager().currentIntentCategory,
|
||||
"printMode": intent
|
||||
}
|
||||
|
||||
if file_format == "application/x-makerbot":
|
||||
accel_overrides = meta["accel_overrides"] = {}
|
||||
if intent in ['highspeed', 'highspeedsolid']:
|
||||
accel_overrides['do_input_shaping'] = True
|
||||
accel_overrides['do_corner_rounding'] = True
|
||||
bead_mode_overrides = accel_overrides["bead_mode"] = {}
|
||||
|
||||
accel_enabled = global_stack.getProperty('acceleration_enabled', 'value')
|
||||
|
||||
if accel_enabled:
|
||||
global_accel_setting = global_stack.getProperty('acceleration_print', 'value')
|
||||
accel_overrides["rate_mm_per_s_sq"] = {
|
||||
"x": global_accel_setting,
|
||||
"y": global_accel_setting
|
||||
}
|
||||
|
||||
if global_stack.getProperty('acceleration_travel_enabled', 'value'):
|
||||
travel_accel_setting = global_stack.getProperty('acceleration_travel', 'value')
|
||||
bead_mode_overrides['Travel Move'] = {
|
||||
"rate_mm_per_s_sq": {
|
||||
"x": travel_accel_setting,
|
||||
"y": travel_accel_setting
|
||||
}
|
||||
}
|
||||
|
||||
jerk_enabled = global_stack.getProperty('jerk_enabled', 'value')
|
||||
if jerk_enabled:
|
||||
global_jerk_setting = global_stack.getProperty('jerk_print', 'value')
|
||||
accel_overrides["max_speed_change_mm_per_s"] = {
|
||||
"x": global_jerk_setting,
|
||||
"y": global_jerk_setting
|
||||
}
|
||||
|
||||
if global_stack.getProperty('jerk_travel_enabled', 'value'):
|
||||
travel_jerk_setting = global_stack.getProperty('jerk_travel', 'value')
|
||||
if 'Travel Move' not in bead_mode_overrides:
|
||||
bead_mode_overrides['Travel Move' ] = {}
|
||||
bead_mode_overrides['Travel Move'].update({
|
||||
"max_speed_change_mm_per_s": {
|
||||
"x": travel_jerk_setting,
|
||||
"y": travel_jerk_setting
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
# Get bead mode settings per extruder
|
||||
available_bead_modes = {
|
||||
"infill": "FILL",
|
||||
"prime_tower": "PRIME_TOWER",
|
||||
"roofing": "TOP_SURFACE",
|
||||
"support_infill": "SUPPORT",
|
||||
"support_interface": "SUPPORT_INTERFACE",
|
||||
"wall_0": "WALL_OUTER",
|
||||
"wall_x": "WALL_INNER",
|
||||
"skirt_brim": "SKIRT"
|
||||
}
|
||||
for idx, extruder in enumerate(extruders):
|
||||
for bead_mode_setting, bead_mode_tag in available_bead_modes.items():
|
||||
ext_specific_tag = "%s_%s" % (bead_mode_tag, idx)
|
||||
if accel_enabled or jerk_enabled:
|
||||
bead_mode_overrides[ext_specific_tag] = {}
|
||||
|
||||
if accel_enabled:
|
||||
accel_val = extruder.getProperty('acceleration_%s' % bead_mode_setting, 'value')
|
||||
bead_mode_overrides[ext_specific_tag]["rate_mm_per_s_sq"] = {
|
||||
"x": accel_val,
|
||||
"y": accel_val
|
||||
}
|
||||
if jerk_enabled:
|
||||
jerk_val = extruder.getProperty('jerk_%s' % bead_mode_setting, 'value')
|
||||
bead_mode_overrides[ext_specific_tag][ "max_speed_change_mm_per_s"] = {
|
||||
"x": jerk_val,
|
||||
"y": jerk_val
|
||||
}
|
||||
|
||||
meta["miracle_config"] = {"gaggles": {"instance0": {}}}
|
||||
|
||||
version_info = dict()
|
||||
|
|
|
@ -1,16 +1,21 @@
|
|||
# Designed in January 2023 by GregValiant (Greg Foresi)
|
||||
## My design intent was to make this as full featured and "industrial strength" as I could. People printing exotic materials on large custom printers may want to turn the fans off for certain layers, and then back on again later in the print. This script allows that.
|
||||
# Functions:
|
||||
## Remove all fan speed lines from the file (optional). This should be enabled for the first instance of the script. It is disabled by default in any following instances.
|
||||
## "By Layer" allows the user to adjust the fan speed up, or down, or off, within the print. "By Feature" allows different fan speeds for different features (;TYPE:WALL-OUTER, etc.).
|
||||
## If 'By Feature' then a Start Layer and/or an End Layer can be defined.
|
||||
## Fan speeds are scaled PWM (0 - 255) or RepRap (0.0 - 1.0) depending on {machine_scale_fan_speed_zero_to_one}.
|
||||
## A minimum fan speed of 12% is enforced. It is the slowest speed that my cooling fan will turn on so that's what I used. 'M106 S14' (as Cura might insert) was pretty useless.
|
||||
## If multiple extruders have separate fan circuits the speeds are set at tool changes and conform to the layer or feature setting. There is support for up to 4 layer cooling fan circuits.
|
||||
## My thanks to @5axes(@CUQ), @fieldOfView(@AHoeben), @Ghostkeeper, and @Torgeir. A special thanks to @RBurema for his patience in reviewing my 'non-pythonic' script.
|
||||
## 9/14/23 (Greg Foresi) Added support for One-at-a-Time print sequence.
|
||||
## 12/15/23 (Greg Foresi) Split off 'Single Fan By Layer', 'Multi-fan By Layer', 'Single Fan By Feature', and 'Multi-fan By Feature' from the main 'execute' script.
|
||||
## 1/5/24 (Greg Foresi) Revised the regex replacements.
|
||||
"""
|
||||
Designed in January 2023 by GregValiant (Greg Foresi)
|
||||
My design intent was to make this as full featured and "industrial strength" as I could. People printing exotic materials on large custom printers may want to turn the fans off for certain layers, and then back on again later in the print. This script allows that.
|
||||
Functions:
|
||||
Remove all fan speed lines from the file (optional). This should be enabled for the first instance of the script. It is disabled by default in any following instances.
|
||||
"By Layer" allows the user to adjust the fan speed up, or down, or off, within the print. "By Feature" allows different fan speeds for different features (;TYPE:WALL-OUTER, etc.).
|
||||
If 'By Feature' then a Start Layer and/or an End Layer can be defined.
|
||||
Fan speeds are scaled PWM (0 - 255) or RepRap (0.0 - 1.0) depending on {machine_scale_fan_speed_zero_to_one}.
|
||||
A minimum fan speed of 12% is enforced. It is the slowest speed that my cooling fan will turn on so that's what I used. 'M106 S14' (as Cura might insert) was pretty useless.
|
||||
If multiple extruders have separate fan circuits the speeds are set at tool changes and conform to the layer or feature setting. There is support for up to 4 layer cooling fan circuits.
|
||||
My thanks to @5axes(@CUQ), @fieldOfView(@AHoeben), @Ghostkeeper, and @Torgeir. A special thanks to @RBurema for his patience in reviewing my 'non-pythonic' script.
|
||||
Changes:
|
||||
09/14/23 (GV) Added support for One-at-a-Time print sequence.
|
||||
12/15/23 (GV) Split off 'Single Fan By Layer', 'Multi-fan By Layer', 'Single Fan By Feature', and 'Multi-fan By Feature' from the main 'execute' script.
|
||||
01/05/24 (GV) Revised the regex replacements.
|
||||
12/11/24 (GV) Added 'off_fan_speed' for the idle nozzle layer cooling fan. It does not have to go to 0%.
|
||||
03/22/25 (GV) Added 'Chamber Cooling Fan / Auxiliary Fan' control.
|
||||
"""
|
||||
|
||||
from ..Script import Script
|
||||
from UM.Application import Application
|
||||
|
@ -43,7 +48,8 @@ class AddCoolingProfile(Script):
|
|||
"type": "bool",
|
||||
"enabled": true,
|
||||
"value": true,
|
||||
"default_value": true
|
||||
"default_value": true,
|
||||
"read_only": true
|
||||
},
|
||||
"feature_fan_start_layer":
|
||||
{
|
||||
|
@ -273,67 +279,180 @@ class AddCoolingProfile(Script):
|
|||
"maximum_value": 100,
|
||||
"unit": "% ",
|
||||
"enabled": "fan_enable_raft"
|
||||
},
|
||||
"enable_off_fan_speed":
|
||||
{
|
||||
"label": "Enable 'Off speed' of the idle fan",
|
||||
"description": "For machines with independent layer cooling fans. Leaving a fan running while the other nozzle is printing can help with oozing. You can pick the speed % for the idle nozzle layer cooling fan to hold at.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"enabled": "enable_off_fan_speed_enable and self.extruder_count > 1"
|
||||
},
|
||||
"off_fan_speed":
|
||||
{
|
||||
"label": " 'Off' speed of idle nozzle fan",
|
||||
"description": "This is the speed that the 'idle nozzle' layer cooling fan will maintain rather than being turned off completely.",
|
||||
"type": "int",
|
||||
"default_value": 35,
|
||||
"minimum_value": 0,
|
||||
"maximum_value": 100,
|
||||
"unit": "% ",
|
||||
"enabled": "enable_off_fan_speed_enable and enable_off_fan_speed and self.extruder_count > 1"
|
||||
},
|
||||
"enable_off_fan_speed_enable":
|
||||
{
|
||||
"label": "Hidden setting",
|
||||
"description": "For dual extruder printers, this enables 'enable_off_fan_speed'.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"enabled": false
|
||||
},
|
||||
"bv_fan_speed_control_enable":
|
||||
{
|
||||
"label": "Enable 'Chamber/Aux Fan' control",
|
||||
"description": "Controls the 'Build Volume Fan' or an 'Auxiliary Fan' on printers with that hardware. Provides: 'On' layer, 'Off' layer, and PWM speed control of a secondary fan.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"enabled": "enable_bv_fan"
|
||||
},
|
||||
"bv_fan_nr":
|
||||
{
|
||||
"label": " Chamber/Aux Fan Number",
|
||||
"description": "The mainboard circuit number of the Chamber or Auxiliary Fan.",
|
||||
"type": "int",
|
||||
"unit": "# ",
|
||||
"default_value": 0,
|
||||
"minimum_value": 0,
|
||||
"enabled": "enable_bv_fan and bv_fan_speed_control_enable"
|
||||
},
|
||||
"bv_fan_speed":
|
||||
{
|
||||
"label": " Chamber/Aux Fan Speed %",
|
||||
"description": "The speed of the Chamber or Auxiliary Fan. This will be converted to PWM Duty Cycle (0-255) or (RepRap 0-1 if that is enabled in Cura). If your specified fan does not operate on variable speeds then set this to '100'.",
|
||||
"type": "int",
|
||||
"unit": "% ",
|
||||
"default_value": 50,
|
||||
"maximum_value": 100,
|
||||
"minimum_value": 0,
|
||||
"enabled": "enable_bv_fan and bv_fan_speed_control_enable"
|
||||
},
|
||||
"bv_fan_start_layer":
|
||||
{
|
||||
"label": " Chamber/Aux Fan Start Layer",
|
||||
"description": "The layer to start the Chamber or Auxiliary Fan. Use the Cura preview layer number and the fan will start at the beginning of the layer.",
|
||||
"type": "int",
|
||||
"unit": "Layer# ",
|
||||
"default_value": 1,
|
||||
"minimum_value": 1,
|
||||
"enabled": "enable_bv_fan and bv_fan_speed_control_enable"
|
||||
},
|
||||
"bv_fan_end_layer":
|
||||
{
|
||||
"label": " Chamber/Aux Fan End Layer",
|
||||
"description": "The layer number for Chamber or Auxiliary Fan to turn off. Use the Cura preview layer number or '-1' to indicate the end of the print. The fan will run until the end of the layer",
|
||||
"type": "int",
|
||||
"unit": "Layer# ",
|
||||
"default_value": -1,
|
||||
"minimum_value": -1,
|
||||
"enabled": "enable_bv_fan and bv_fan_speed_control_enable"
|
||||
},
|
||||
"enable_bv_fan":
|
||||
{
|
||||
"label": "Hidden setting",
|
||||
"description": "This is enabled when machine_heated_bed is true, and in turn this enables 'bv_fan_speed_control_enable'.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}"""
|
||||
|
||||
def initialize(self) -> None:
|
||||
super().initialize()
|
||||
scripts = Application.getInstance().getGlobalContainerStack().getMetaDataEntry("post_processing_scripts")
|
||||
self.global_stack = Application.getInstance().getGlobalContainerStack()
|
||||
self.extruder_list = self.global_stack.extruderList
|
||||
self.extruder_count = self.global_stack.getProperty("machine_extruder_count", "value")
|
||||
scripts = self.global_stack.getMetaDataEntry("post_processing_scripts")
|
||||
if scripts != None:
|
||||
script_count = scripts.count("AddCoolingProfile")
|
||||
if script_count > 0:
|
||||
## Set 'Remove M106 lines' to "false" if there is already an instance of this script running.
|
||||
# Set 'Remove M106 lines' to "false" if there is already an instance of this script running.
|
||||
self._instance.setProperty("delete_existing_m106", "value", False)
|
||||
self._instance.setProperty("enable_off_fan_speed_enable", "value", False)
|
||||
if self.extruder_count > 1:
|
||||
if self.extruder_list[0].getProperty("machine_extruder_cooling_fan_number", "value") != self.extruder_list[1].getProperty("machine_extruder_cooling_fan_number", "value"):
|
||||
self._instance.setProperty("enable_off_fan_speed_enable", "value", True)
|
||||
if bool(self.global_stack.getProperty("machine_heated_bed", "value")):
|
||||
self._instance.setProperty("enable_bv_fan", "value", True)
|
||||
|
||||
def execute(self, data):
|
||||
#Initialize variables that are buried in if statements.
|
||||
mycura = Application.getInstance().getGlobalContainerStack()
|
||||
"""
|
||||
Collect the settings from Cura and from this script
|
||||
params:
|
||||
t0_fan thru t3_fan: The fan numbers for up to 4 layer cooling circuits
|
||||
fan_mode: Whether the fan scale will be 0-255 PWM (when true) or 0-1 RepRap (when false)
|
||||
bed_adhesion: Is only important if a raft is enabled
|
||||
print_seuence: Options are slightly different if in One-at-a-Time mode
|
||||
is_multi-fan: Used to distinguish between a multi-extruder with a single fan for each nozzle, or one fan for both nozzles.
|
||||
is_multi_extr_print: For the slight difference in handling a multi-extruder printer and a print that only uses one of the extruders.
|
||||
fan_list: A list of fan speeds (even numbered items) and layer numbers (odd numbered items)
|
||||
feature_speed_list: A list of the speeds for each ';TYPE:' in the gcode
|
||||
feature_name_list: The list of each 'TYPE' in the gcode
|
||||
off_fan_speed: The speed that will be maintained by the fan for the inactive extruder (for an anti-oozing effect)
|
||||
init_fan: The fan number of the first extruder used in a print
|
||||
delete_existing_m106: The first instance of the script in the post processing list should remove the CUra M106 lines. Following instances should not delete the changes made by the first instance.
|
||||
feature_fan_combing: Whether or not to shut the cooling fan off during travel moves.
|
||||
the_start_layer: When in By Feature this is the user selected start of the fan changes.
|
||||
the_end_layer: When in By Feature this is the user selected end of the fan changes
|
||||
the_end_is_enabled: When in By Feature, if the fan control ends before the print ends, then this will enable the Final Fan Speed to carry through to the print end.
|
||||
|
||||
"""
|
||||
# Exit if the gcode has been previously post-processed.
|
||||
if ";POSTPROCESSED" in data[0]:
|
||||
return data
|
||||
# Initialize variables that are buried in if statements.
|
||||
t0_fan = " P0"; t1_fan = " P0"; t2_fan = " P0"; t3_fan = " P0"; is_multi_extr_print = True
|
||||
|
||||
#Get some information from Cura-----------------------------------
|
||||
extruder = mycura.extruderList
|
||||
|
||||
#This will be true when fan scale is 0-255pwm and false when it's RepRap 0-1 (Cura 5.x)
|
||||
# This will be true when fan scale is 0-255pwm and false when it's RepRap 0-1 (Cura 5.x)
|
||||
fan_mode = True
|
||||
##For 4.x versions that don't have the 0-1 option
|
||||
# For 4.x versions that don't have the 0-1 option
|
||||
try:
|
||||
fan_mode = not bool(extruder[0].getProperty("machine_scale_fan_speed_zero_to_one", "value"))
|
||||
except:
|
||||
fan_mode = not bool(self.extruder_list[0].getProperty("machine_scale_fan_speed_zero_to_one", "value"))
|
||||
except AttributeError:
|
||||
pass
|
||||
bed_adhesion = (extruder[0].getProperty("adhesion_type", "value"))
|
||||
extruder_count = mycura.getProperty("machine_extruder_count", "value")
|
||||
print_sequence = str(mycura.getProperty("print_sequence", "value"))
|
||||
|
||||
#Assign the fan numbers to the tools------------------------------
|
||||
if extruder_count == 1:
|
||||
bed_adhesion = (self.extruder_list[0].getProperty("adhesion_type", "value"))
|
||||
print_sequence = str(self.global_stack.getProperty("print_sequence", "value"))
|
||||
|
||||
# Assign the fan numbers to the tools
|
||||
if self.extruder_count == 1:
|
||||
is_multi_fan = False
|
||||
is_multi_extr_print = False
|
||||
if int((extruder[0].getProperty("machine_extruder_cooling_fan_number", "value"))) > 0:
|
||||
t0_fan = " P" + str((extruder[0].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
if int((self.extruder_list[0].getProperty("machine_extruder_cooling_fan_number", "value"))) > 0:
|
||||
t0_fan = " P" + str((self.extruder_list[0].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
else:
|
||||
#No P parameter if there is a single fan circuit------------------
|
||||
# No P parameter if there is a single fan circuit
|
||||
t0_fan = ""
|
||||
|
||||
#Get the cooling fan numbers for each extruder if the printer has multiple extruders
|
||||
elif extruder_count > 1:
|
||||
# Get the cooling fan numbers for each extruder if the printer has multiple extruders
|
||||
elif self.extruder_count > 1:
|
||||
is_multi_fan = True
|
||||
t0_fan = " P" + str((extruder[0].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
t0_fan = " P" + str((self.extruder_list[0].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
if is_multi_fan:
|
||||
if extruder_count > 1: t1_fan = " P" + str((extruder[1].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
if extruder_count > 2: t2_fan = " P" + str((extruder[2].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
if extruder_count > 3: t3_fan = " P" + str((extruder[3].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
if self.extruder_count > 1: t1_fan = " P" + str((self.extruder_list[1].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
if self.extruder_count > 2: t2_fan = " P" + str((self.extruder_list[2].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
if self.extruder_count > 3: t3_fan = " P" + str((self.extruder_list[3].getProperty("machine_extruder_cooling_fan_number", "value")))
|
||||
|
||||
#Initialize the fan_list with defaults----------------------------
|
||||
# Initialize the fan_list with defaults
|
||||
fan_list = ["z"] * 16
|
||||
for num in range(0,15,2):
|
||||
fan_list[num] = len(data)
|
||||
fan_list[num + 1] = "M106 S0"
|
||||
|
||||
#Assign the variable values if "By Layer"-------------------------
|
||||
# Assign the variable values if "By Layer"
|
||||
by_layer_or_feature = self.getSettingValueByKey("fan_layer_or_feature")
|
||||
if by_layer_or_feature == "by_layer":
|
||||
## By layer doesn't do any feature search so there is no need to look for combing moves
|
||||
# By layer doesn't do any feature search so there is no need to look for combing moves
|
||||
feature_fan_combing = False
|
||||
fan_list[0] = self.getSettingValueByKey("layer_fan_1")
|
||||
fan_list[2] = self.getSettingValueByKey("layer_fan_2")
|
||||
|
@ -343,25 +462,25 @@ class AddCoolingProfile(Script):
|
|||
fan_list[10] = self.getSettingValueByKey("layer_fan_6")
|
||||
fan_list[12] = self.getSettingValueByKey("layer_fan_7")
|
||||
fan_list[14] = self.getSettingValueByKey("layer_fan_8")
|
||||
## If there is no '/' delimiter then ignore the line else put the settings in a list
|
||||
# If there is no '/' delimiter then ignore the line else put the settings in a list
|
||||
for num in range(0,15,2):
|
||||
if "/" in fan_list[num]:
|
||||
fan_list[num + 1] = self._layer_checker(fan_list[num], "p", fan_mode)
|
||||
fan_list[num] = self._layer_checker(fan_list[num], "l", fan_mode)
|
||||
|
||||
## Assign the variable values if "By Feature"
|
||||
# Assign the variable values if "By Feature"
|
||||
elif by_layer_or_feature == "by_feature":
|
||||
the_start_layer = self.getSettingValueByKey("feature_fan_start_layer") - 1
|
||||
the_end_layer = self.getSettingValueByKey("feature_fan_end_layer")
|
||||
try:
|
||||
if int(the_end_layer) != -1:
|
||||
## Catch a possible input error.
|
||||
# Catch a possible input error.
|
||||
if the_end_layer < the_start_layer:
|
||||
the_end_layer = the_start_layer
|
||||
except:
|
||||
the_end_layer = -1 ## If there is an input error default to the entire gcode file.
|
||||
except ValueError:
|
||||
the_end_layer = -1 # If there is an input error then default to the entire gcode file.
|
||||
|
||||
## Get the speed for each feature
|
||||
# Get the speed for each feature
|
||||
feature_name_list = []
|
||||
feature_speed_list = []
|
||||
feature_speed_list.append(self._feature_checker(self.getSettingValueByKey("feature_fan_skirt"), fan_mode)); feature_name_list.append(";TYPE:SKIRT")
|
||||
|
@ -376,20 +495,29 @@ class AddCoolingProfile(Script):
|
|||
feature_speed_list.append(self._feature_checker(self.getSettingValueByKey("feature_fan_feature_final"), fan_mode)); feature_name_list.append("FINAL_FAN")
|
||||
feature_fan_combing = self.getSettingValueByKey("feature_fan_combing")
|
||||
if the_end_layer > -1 and by_layer_or_feature == "by_feature":
|
||||
## Required so the final speed input can be determined
|
||||
# Required so the final speed input can be determined
|
||||
the_end_is_enabled = True
|
||||
else:
|
||||
## There is no ending layer so do the whole file
|
||||
# There is no ending layer so do the whole file
|
||||
the_end_is_enabled = False
|
||||
if the_end_layer == -1 or the_end_is_enabled == False:
|
||||
the_end_layer = len(data) + 2
|
||||
|
||||
## Find the Layer0Index and the RaftIndex
|
||||
# For multi-extruder printers with separate cooling fans the 'idle' nozzle fan can be left on for ooze control
|
||||
off_fan_speed = 0
|
||||
if self.extruder_count > 1:
|
||||
if self.getSettingValueByKey("enable_off_fan_speed"):
|
||||
if fan_mode:
|
||||
off_fan_speed = round(int(self.getSettingValueByKey("off_fan_speed")) * 2.55)
|
||||
else:
|
||||
off_fan_speed = round(int(self.getSettingValueByKey("off_fan_speed")) * .01, 2)
|
||||
|
||||
# Find the Layer0Index and the RaftIndex
|
||||
raft_start_index = 0
|
||||
number_of_raft_layers = 0
|
||||
layer_0_index = 0
|
||||
## Catch the number of raft layers.
|
||||
for l_num in range(1,10,1):
|
||||
# Catch the number of raft layers.
|
||||
for l_num in range(1,len(data) - 1):
|
||||
layer = data[l_num]
|
||||
if ";LAYER:-" in layer:
|
||||
number_of_raft_layers += 1
|
||||
|
@ -399,14 +527,14 @@ class AddCoolingProfile(Script):
|
|||
layer_0_index = l_num
|
||||
break
|
||||
|
||||
## Is this a single extruder print on a multi-extruder printer? - get the correct fan number for the extruder being used.
|
||||
# Is this a single extruder print on a multi-extruder printer? - get the correct fan number for the extruder being used.
|
||||
if is_multi_fan:
|
||||
T0_used = False
|
||||
T1_used = False
|
||||
T2_used = False
|
||||
T3_used = False
|
||||
## Bypass the file header and ending gcode.
|
||||
for num in range(1,len(data)-1,1):
|
||||
# Bypass the file header and ending gcode.
|
||||
for num in range(1,len(data)-1):
|
||||
lines = data[num]
|
||||
if "T0" in lines:
|
||||
T0_used = True
|
||||
|
@ -418,7 +546,7 @@ class AddCoolingProfile(Script):
|
|||
T3_used = True
|
||||
is_multi_extr_print = True if sum([T0_used, T1_used, T2_used, T3_used]) > 1 else False
|
||||
|
||||
## On a multi-extruder printer and single extruder print find out which extruder starts the file.
|
||||
# On a multi-extruder printer and single extruder print find out which extruder starts the file.
|
||||
init_fan = t0_fan
|
||||
if not is_multi_extr_print:
|
||||
startup = data[1]
|
||||
|
@ -431,7 +559,7 @@ class AddCoolingProfile(Script):
|
|||
elif line == "T3":
|
||||
t0_fan = t3_fan
|
||||
elif is_multi_extr_print:
|
||||
## On a multi-extruder printer and multi extruder print find out which extruder starts the file.
|
||||
# On a multi-extruder printer and multi extruder print find out which extruder starts the file.
|
||||
startup = data[1]
|
||||
lines = startup.split("\n")
|
||||
for line in lines:
|
||||
|
@ -445,23 +573,23 @@ class AddCoolingProfile(Script):
|
|||
init_fan = t3_fan
|
||||
else:
|
||||
init_fan = ""
|
||||
## Assign the variable values if "Raft Enabled"
|
||||
# Assign the variable values if "Raft Enabled"
|
||||
raft_enabled = self.getSettingValueByKey("fan_enable_raft")
|
||||
if raft_enabled and bed_adhesion == "raft":
|
||||
fan_sp_raft = self._feature_checker(self.getSettingValueByKey("fan_raft_percent"), fan_mode)
|
||||
else:
|
||||
fan_sp_raft = "M106 S0"
|
||||
|
||||
# Start to alter the data-----------------------------------------
|
||||
## Strip the existing M106 lines from the file up to the end of the last layer. If a user wants to use more than one instance of this plugin then they won't want to erase the M106 lines that the preceding plugins inserted so 'delete_existing_m106' is an option.
|
||||
# Start to alter the data
|
||||
# Strip the existing M106 lines from the file up to the end of the last layer. If a user wants to use more than one instance of this plugin then they won't want to erase the M106 lines that the preceding plugins inserted so 'delete_existing_m106' is an option.
|
||||
delete_existing_m106 = self.getSettingValueByKey("delete_existing_m106")
|
||||
if delete_existing_m106:
|
||||
## Start deleting from the beginning
|
||||
# Start deleting from the beginning
|
||||
start_from = int(raft_start_index)
|
||||
else:
|
||||
if by_layer_or_feature == "by_layer":
|
||||
altered_start_layer = str(len(data))
|
||||
## The fan list layers don't need to be in ascending order. Get the lowest.
|
||||
# The fan list layers don't need to be in ascending order. Get the lowest.
|
||||
for num in range(0,15,2):
|
||||
try:
|
||||
if int(fan_list[num]) < int(altered_start_layer):
|
||||
|
@ -471,12 +599,12 @@ class AddCoolingProfile(Script):
|
|||
elif by_layer_or_feature == "by_feature":
|
||||
altered_start_layer = int(the_start_layer) - 1
|
||||
start_from = int(layer_0_index) + int(altered_start_layer)
|
||||
## Strip the M106 and M107 lines from the file
|
||||
# Strip the M106 and M107 lines from the file
|
||||
for l_index in range(int(start_from), len(data) - 1, 1):
|
||||
data[l_index] = re.sub(re.compile("M106(.*)\n"), "", data[l_index])
|
||||
data[l_index] = re.sub(re.compile("M107(.*)\n"), "", data[l_index])
|
||||
|
||||
## Deal with a raft and with One-At-A-Time print sequence
|
||||
# Deal with a raft and with One-At-A-Time print sequence
|
||||
if raft_enabled and bed_adhesion == "raft":
|
||||
if print_sequence == "one_at_a_time":
|
||||
for r_index in range(2,len(data)-2,1):
|
||||
|
@ -486,9 +614,9 @@ class AddCoolingProfile(Script):
|
|||
lines.insert(1, "M106 S0" + str(t0_fan))
|
||||
if raft_enabled and bed_adhesion == "raft":
|
||||
if ";LAYER:-" in data[r_index]:
|
||||
## Turn the raft fan on
|
||||
# Turn the raft fan on
|
||||
lines.insert(1, fan_sp_raft + str(t0_fan))
|
||||
## Shut the raft fan off at layer 0
|
||||
# Shut the raft fan off at layer 0
|
||||
if ";LAYER:0" in data[r_index]:
|
||||
lines.insert(1,"M106 S0" + str(t0_fan))
|
||||
data[r_index] = "\n".join(lines)
|
||||
|
@ -496,13 +624,13 @@ class AddCoolingProfile(Script):
|
|||
layer = data[raft_start_index]
|
||||
lines = layer.split("\n")
|
||||
if ";LAYER:-" in layer:
|
||||
## Turn the raft fan on
|
||||
# Turn the raft fan on
|
||||
lines.insert(1, fan_sp_raft + str(init_fan))
|
||||
layer = "\n".join(lines)
|
||||
data[raft_start_index] = layer
|
||||
layer = data[layer_0_index]
|
||||
lines = layer.split("\n")
|
||||
## Shut the raft fan off
|
||||
# Shut the raft fan off
|
||||
lines.insert(1, "M106 S0" + str(init_fan))
|
||||
data[layer_0_index] = "\n".join(lines)
|
||||
else:
|
||||
|
@ -513,41 +641,44 @@ class AddCoolingProfile(Script):
|
|||
lines.insert(1, "M106 S0" + str(t0_fan))
|
||||
data[r_index] = "\n".join(lines)
|
||||
|
||||
## Turn off all fans at the end of data[1]. If more than one instance of this script is running then this will result in multiple M106 lines.
|
||||
# Turn off all fans at the end of data[1]. If more than one instance of this script is running then this will result in multiple M106 lines.
|
||||
temp_startup = data[1].split("\n")
|
||||
temp_startup.insert(len(temp_startup)-2,"M106 S0" + str(t0_fan))
|
||||
## If there are multiple cooling fans shut them all off
|
||||
# If there are multiple cooling fans shut them all off
|
||||
if is_multi_fan:
|
||||
if extruder_count > 1 and t1_fan != t0_fan: temp_startup.insert(len(temp_startup)-2,"M106 S0" + str(t1_fan))
|
||||
if extruder_count > 2 and t2_fan != t1_fan and t2_fan != t0_fan: temp_startup.insert(len(temp_startup)-2,"M106 S0" + str(t2_fan))
|
||||
if extruder_count > 3 and t3_fan != t2_fan and t3_fan != t1_fan and t3_fan != t0_fan: temp_startup.insert(len(temp_startup)-2,"M106 S0" + str(t3_fan))
|
||||
if self.extruder_count > 1 and t1_fan != t0_fan: temp_startup.insert(len(temp_startup)-2,"M106 S0" + str(t1_fan))
|
||||
if self.extruder_count > 2 and t2_fan != t1_fan and t2_fan != t0_fan: temp_startup.insert(len(temp_startup)-2,"M106 S0" + str(t2_fan))
|
||||
if self.extruder_count > 3 and t3_fan != t2_fan and t3_fan != t1_fan and t3_fan != t0_fan: temp_startup.insert(len(temp_startup)-2,"M106 S0" + str(t3_fan))
|
||||
data[1] = "\n".join(temp_startup)
|
||||
|
||||
## If 'feature_fan_combing' is True then add additional 'MESH:NONMESH' lines for travel moves over 5 lines long
|
||||
## For compatibility with 5.3.0 change any MESH:NOMESH to MESH:NONMESH.
|
||||
# If 'feature_fan_combing' is True then add additional 'MESH:NONMESH' lines for travel moves over 5 lines long
|
||||
# For compatibility with 5.3.0 change any MESH:NOMESH to MESH:NONMESH.
|
||||
if feature_fan_combing:
|
||||
for layer_num in range(2,len(data)):
|
||||
layer = data[layer_num]
|
||||
data[layer_num] = re.sub(";MESH:NOMESH", ";MESH:NONMESH", layer)
|
||||
data = self._add_travel_comment(data, layer_0_index)
|
||||
|
||||
# Single Fan "By Layer"--------------------------------------------
|
||||
if bool(self.getSettingValueByKey("bv_fan_speed_control_enable")):
|
||||
data = self._control_bv_fan(data)
|
||||
|
||||
# Single Fan "By Layer"
|
||||
if by_layer_or_feature == "by_layer" and not is_multi_fan:
|
||||
return self._single_fan_by_layer(data, layer_0_index, fan_list, t0_fan)
|
||||
|
||||
# Multi-Fan "By Layer"---------------------------------------------
|
||||
# Multi-Fan "By Layer"
|
||||
if by_layer_or_feature == "by_layer" and is_multi_fan:
|
||||
return self._multi_fan_by_layer(data, layer_0_index, fan_list, t0_fan, t1_fan, t2_fan, t3_fan)
|
||||
return self._multi_fan_by_layer(data, layer_0_index, fan_list, t0_fan, t1_fan, t2_fan, t3_fan, fan_mode, off_fan_speed)
|
||||
|
||||
#Single Fan "By Feature"------------------------------------------
|
||||
# Single Fan "By Feature"
|
||||
if by_layer_or_feature == "by_feature" and (not is_multi_fan or not is_multi_extr_print):
|
||||
return self._single_fan_by_feature(data, layer_0_index, the_start_layer, the_end_layer, the_end_is_enabled, fan_list, t0_fan, feature_speed_list, feature_name_list, feature_fan_combing)
|
||||
|
||||
#Multi Fan "By Feature"-------------------------------------------
|
||||
# Multi Fan "By Feature"
|
||||
if by_layer_or_feature == "by_feature" and is_multi_fan:
|
||||
return self._multi_fan_by_feature(data, layer_0_index, the_start_layer, the_end_layer, the_end_is_enabled, fan_list, t0_fan, t1_fan, t2_fan, t3_fan, feature_speed_list, feature_name_list, feature_fan_combing)
|
||||
return self._multi_fan_by_feature(data, layer_0_index, the_start_layer, the_end_layer, the_end_is_enabled, fan_list, t0_fan, t1_fan, t2_fan, t3_fan, feature_speed_list, feature_name_list, feature_fan_combing, fan_mode, off_fan_speed)
|
||||
|
||||
# The Single Fan "By Layer"----------------------------------------
|
||||
# The Single Fan "By Layer"
|
||||
def _single_fan_by_layer(self, data: str, layer_0_index: int, fan_list: str, t0_fan: str)->str:
|
||||
layer_number = "0"
|
||||
single_fan_data = data
|
||||
|
@ -557,15 +688,15 @@ class AddCoolingProfile(Script):
|
|||
for fan_line in fan_lines:
|
||||
if ";LAYER:" in fan_line:
|
||||
layer_number = str(fan_line.split(":")[1])
|
||||
## If there is a match for the current layer number make the insertion
|
||||
# If there is a match for the current layer number make the insertion
|
||||
for num in range(0,15,2):
|
||||
if layer_number == str(fan_list[num]):
|
||||
layer = layer.replace(fan_lines[0],fan_lines[0] + "\n" + fan_list[num + 1] + str(t0_fan))
|
||||
single_fan_data[l_index] = layer
|
||||
return single_fan_data
|
||||
|
||||
# Multi-Fan "By Layer"-----------------------------------------
|
||||
def _multi_fan_by_layer(self, data: str, layer_0_index: int, fan_list: str, t0_fan: str, t1_fan: str, t2_fan: str, t3_fan: str)->str:
|
||||
# Multi-Fan "By Layer"
|
||||
def _multi_fan_by_layer(self, data: str, layer_0_index: int, fan_list: str, t0_fan: str, t1_fan: str, t2_fan: str, t3_fan: str, fan_mode: bool, off_fan_speed: str)->str:
|
||||
multi_fan_data = data
|
||||
layer_number = "0"
|
||||
current_fan_speed = "0"
|
||||
|
@ -573,15 +704,16 @@ class AddCoolingProfile(Script):
|
|||
this_fan = str(t0_fan)
|
||||
start_index = str(len(multi_fan_data))
|
||||
for num in range(0,15,2):
|
||||
## The fan_list may not be in ascending order. Get the lowest layer number
|
||||
|
||||
# The fan_list may not be in ascending order. Get the lowest layer number
|
||||
try:
|
||||
if int(fan_list[num]) < int(start_index):
|
||||
start_index = str(fan_list[num])
|
||||
except:
|
||||
except ValueError:
|
||||
pass
|
||||
## Move the start point if delete_existing_m106 is false
|
||||
# Move the start point if delete_existing_m106 is false
|
||||
start_index = int(start_index) + int(layer_0_index)
|
||||
## Track the tool number
|
||||
# Track the tool number
|
||||
for num in range(1,int(start_index),1):
|
||||
layer = multi_fan_data[num]
|
||||
lines = layer.split("\n")
|
||||
|
@ -598,18 +730,19 @@ class AddCoolingProfile(Script):
|
|||
elif line == "T3":
|
||||
prev_fan = this_fan
|
||||
this_fan = t3_fan
|
||||
# With Active Tool tracked - now the body of changes can start
|
||||
for l_index in range(int(start_index),len(multi_fan_data)-1,1):
|
||||
modified_data = ""
|
||||
layer = multi_fan_data[l_index]
|
||||
fan_lines = layer.split("\n")
|
||||
for fan_line in fan_lines:
|
||||
## Prepare to shut down the previous fan and start the next one.
|
||||
# Prepare to turn off the previous fan and start the next one.
|
||||
if fan_line.startswith("T"):
|
||||
if fan_line == "T0": this_fan = str(t0_fan)
|
||||
if fan_line == "T1": this_fan = str(t1_fan)
|
||||
if fan_line == "T2": this_fan = str(t2_fan)
|
||||
if fan_line == "T3": this_fan = str(t3_fan)
|
||||
modified_data += "M106 S0" + prev_fan + "\n"
|
||||
modified_data += f"M106 S{off_fan_speed}" + prev_fan + "\n"
|
||||
modified_data += fan_line + "\n"
|
||||
modified_data += "M106 S" + str(current_fan_speed) + this_fan + "\n"
|
||||
prev_fan = this_fan
|
||||
|
@ -620,19 +753,22 @@ class AddCoolingProfile(Script):
|
|||
if layer_number == str(fan_list[num]):
|
||||
modified_data += fan_list[num + 1] + this_fan + "\n"
|
||||
current_fan_speed = str(fan_list[num + 1].split("S")[1])
|
||||
current_fan_speed = str(current_fan_speed.split(" ")[0]) ## Just in case
|
||||
current_fan_speed = str(current_fan_speed.split(" ")[0]) # Just in case
|
||||
else:
|
||||
modified_data += fan_line + "\n"
|
||||
if modified_data.endswith("\n"): modified_data = modified_data[0:-1]
|
||||
multi_fan_data[l_index] = modified_data
|
||||
# Insure the fans get shut off if 'off_fan_speed' was enabled
|
||||
if self.extruder_count > 1 and self.getSettingValueByKey("enable_off_fan_speed"):
|
||||
multi_fan_data[-1] += "M106 S0 P1\nM106 S0 P0\n"
|
||||
return multi_fan_data
|
||||
|
||||
# Single fan by feature-----------------------------------------------
|
||||
# Single fan by feature
|
||||
def _single_fan_by_feature(self, data: str, layer_0_index: int, the_start_layer: str, the_end_layer: str, the_end_is_enabled: str, fan_list: str, t0_fan: str, feature_speed_list: str, feature_name_list: str, feature_fan_combing: bool)->str:
|
||||
single_fan_data = data
|
||||
layer_number = "0"
|
||||
index = 1
|
||||
## Start with layer:0
|
||||
# Start with layer:0
|
||||
for l_index in range(layer_0_index,len(single_fan_data)-1,1):
|
||||
modified_data = ""
|
||||
layer = single_fan_data[l_index]
|
||||
|
@ -652,15 +788,16 @@ class AddCoolingProfile(Script):
|
|||
if feature_fan_combing == True:
|
||||
modified_data += "M106 S0" + t0_fan + "\n"
|
||||
modified_data += line + "\n"
|
||||
## If an End Layer is defined and is less than the last layer then insert the Final Speed
|
||||
|
||||
# If an End Layer is defined and is less than the last layer then insert the Final Speed
|
||||
if line == ";LAYER:" + str(the_end_layer) and the_end_is_enabled == True:
|
||||
modified_data += feature_speed_list[len(feature_speed_list) - 1] + t0_fan + "\n"
|
||||
if modified_data.endswith("\n"): modified_data = modified_data[0: - 1]
|
||||
single_fan_data[l_index] = modified_data
|
||||
return single_fan_data
|
||||
|
||||
# Multi-fan by feature------------------------------------------------
|
||||
def _multi_fan_by_feature(self, data: str, layer_0_index: int, the_start_layer: str, the_end_layer: str, the_end_is_enabled: str, fan_list: str, t0_fan: str, t1_fan: str, t2_fan: str, t3_fan: str, feature_speed_list: str, feature_name_list: str, feature_fan_combing: bool)->str:
|
||||
# Multi-fan by feature
|
||||
def _multi_fan_by_feature(self, data: str, layer_0_index: int, the_start_layer: str, the_end_layer: str, the_end_is_enabled: str, fan_list: str, t0_fan: str, t1_fan: str, t2_fan: str, t3_fan: str, feature_speed_list: str, feature_name_list: str, feature_fan_combing: bool, fan_mode: bool, off_fan_speed: str)->str:
|
||||
multi_fan_data = data
|
||||
layer_number = "0"
|
||||
start_index = 1
|
||||
|
@ -673,7 +810,7 @@ class AddCoolingProfile(Script):
|
|||
if ";LAYER:" + str(the_start_layer) + "\n" in layer:
|
||||
start_index = int(my_index) - 1
|
||||
break
|
||||
## Track the previous tool changes
|
||||
# Track the previous tool changes
|
||||
for num in range(1,start_index,1):
|
||||
layer = multi_fan_data[num]
|
||||
lines = layer.split("\n")
|
||||
|
@ -690,7 +827,7 @@ class AddCoolingProfile(Script):
|
|||
elif line == "T3":
|
||||
prev_fan = this_fan
|
||||
this_fan = t3_fan
|
||||
## Get the current tool.
|
||||
# Get the current tool.
|
||||
for l_index in range(start_index,start_index + 1,1):
|
||||
layer = multi_fan_data[l_index]
|
||||
lines = layer.split("\n")
|
||||
|
@ -702,7 +839,7 @@ class AddCoolingProfile(Script):
|
|||
if line == "T3": this_fan = t3_fan
|
||||
prev_fan = this_fan
|
||||
|
||||
## Start to make insertions-------------------------------------
|
||||
# Start to make insertions
|
||||
for l_index in range(start_index+1,len(multi_fan_data)-1,1):
|
||||
layer = multi_fan_data[l_index]
|
||||
lines = layer.split("\n")
|
||||
|
@ -712,10 +849,10 @@ class AddCoolingProfile(Script):
|
|||
if line == "T1": this_fan = t1_fan
|
||||
if line == "T2": this_fan = t2_fan
|
||||
if line == "T3": this_fan = t3_fan
|
||||
## Turn off the prev fan
|
||||
modified_data += "M106 S0" + prev_fan + "\n"
|
||||
# Turn off the prev fan
|
||||
modified_data += f"M106 S{off_fan_speed}" + prev_fan + "\n"
|
||||
modified_data += line + "\n"
|
||||
## Turn on the current fan
|
||||
# Turn on the current fan
|
||||
modified_data += "M106 S" + str(current_fan_speed) + this_fan + "\n"
|
||||
prev_fan = this_fan
|
||||
if ";LAYER:" in line:
|
||||
|
@ -725,34 +862,39 @@ class AddCoolingProfile(Script):
|
|||
temp = line.split(" ")[0]
|
||||
try:
|
||||
name_index = feature_name_list.index(temp)
|
||||
except:
|
||||
except IndexError:
|
||||
name_index = -1
|
||||
|
||||
if name_index != -1:
|
||||
modified_data += line + "\n" + feature_speed_list[name_index] + this_fan + "\n"
|
||||
#modified_data += feature_speed_list[name_index] + this_fan + "\n"
|
||||
current_fan_speed = str(feature_speed_list[name_index].split("S")[1])
|
||||
elif ";MESH:NONMESH" in line:
|
||||
if feature_fan_combing == True:
|
||||
modified_data += line + "\n"
|
||||
modified_data += "M106 S0" + this_fan + "\n"
|
||||
modified_data += f"M106 S{off_fan_speed}" + this_fan + "\n"
|
||||
current_fan_speed = "0"
|
||||
else:
|
||||
modified_data += line + "\n"
|
||||
## If an end layer is defined - Insert the final speed and set the other variables to Final Speed to finish the file
|
||||
## There cannot be a break here because if there are multiple fan numbers they still need to be shut off and turned on.
|
||||
|
||||
# If an end layer is defined - Insert the final speed and set the other variables to Final Speed to finish the file
|
||||
# There cannot be a 'break' here because if there are multiple fan numbers they still need to be shut off and turned on.
|
||||
elif line == ";LAYER:" + str(the_end_layer):
|
||||
modified_data += feature_speed_list[len(feature_speed_list) - 1] + this_fan + "\n"
|
||||
for set_speed in range(0, len(feature_speed_list) - 2):
|
||||
feature_speed_list[set_speed] = feature_speed_list[len(feature_speed_list) - 1]
|
||||
else:
|
||||
## Layer and Tool get inserted into modified_data above. All other lines go into modified_data here
|
||||
# Layer and Tool get inserted into modified_data above. All other lines go into modified_data here
|
||||
if not line.startswith("T") and not line.startswith(";LAYER:"): modified_data += line + "\n"
|
||||
|
||||
if modified_data.endswith("\n"): modified_data = modified_data[0: - 1]
|
||||
multi_fan_data[l_index] = modified_data
|
||||
modified_data = ""
|
||||
# Insure the fans get shut off if 'off_fan_speed' was enabled
|
||||
if self.extruder_count > 1 and self.getSettingValueByKey("enable_off_fan_speed"):
|
||||
multi_fan_data[-1] += "M106 S0 P1\nM106 S0 P0\n"
|
||||
return multi_fan_data
|
||||
|
||||
#Try to catch layer input errors, set the minimum speed to 12%, and put the strings together
|
||||
# Try to catch layer input errors, set the minimum speed to 12%, and put the strings together
|
||||
def _layer_checker(self, fan_string: str, ty_pe: str, fan_mode: bool) -> str:
|
||||
fan_string_l = str(fan_string.split("/")[0])
|
||||
try:
|
||||
|
@ -768,7 +910,7 @@ class AddCoolingProfile(Script):
|
|||
if int(fan_string_p) > 100: fan_string_p = "100"
|
||||
except ValueError:
|
||||
fan_string_p = "0"
|
||||
## Set the minimum fan speed to 12%
|
||||
# Set the minimum fan speed to 12%
|
||||
if int(fan_string_p) < 12 and int(fan_string_p) != 0:
|
||||
fan_string_p = "12"
|
||||
fan_layer_line = str(fan_string_l)
|
||||
|
@ -784,7 +926,7 @@ class AddCoolingProfile(Script):
|
|||
#Try to catch feature input errors, set the minimum speed to 12%, and put the strings together when 'By Feature'
|
||||
def _feature_checker(self, fan_feat_string: int, fan_mode: bool) -> str:
|
||||
if fan_feat_string < 0: fan_feat_string = 0
|
||||
## Set the minimum fan speed to 12%
|
||||
# Set the minimum fan speed to 12%
|
||||
if fan_feat_string > 0 and fan_feat_string < 12: fan_feat_string = 12
|
||||
if fan_feat_string > 100: fan_feat_string = 100
|
||||
if fan_mode:
|
||||
|
@ -798,7 +940,7 @@ class AddCoolingProfile(Script):
|
|||
for lay_num in range(int(lay_0_index), len(comment_data)-1,1):
|
||||
layer = comment_data[lay_num]
|
||||
lines = layer.split("\n")
|
||||
## Copy the data to new_data and make the insertions there
|
||||
# Copy the data to new_data and make the insertions there
|
||||
new_data = lines
|
||||
g0_count = 0
|
||||
g0_index = -1
|
||||
|
@ -818,12 +960,12 @@ class AddCoolingProfile(Script):
|
|||
if g0_index == -1:
|
||||
g0_index = lines.index(line)
|
||||
elif not line.startswith("G0 ") and not is_travel:
|
||||
## Add additional 'NONMESH' lines to shut the fan off during long combing moves--------
|
||||
# Add additional 'NONMESH' lines to shut the fan off during long combing moves
|
||||
if g0_count > 5:
|
||||
if not is_travel:
|
||||
new_data.insert(g0_index + insert_index, ";MESH:NONMESH")
|
||||
insert_index += 1
|
||||
## Add the feature_type at the end of the combing move to turn the fan back on
|
||||
# Add the feature_type at the end of the combing move to turn the fan back on
|
||||
new_data.insert(g0_index + g0_count + 1, feature_type)
|
||||
insert_index += 1
|
||||
g0_count = 0
|
||||
|
@ -834,4 +976,35 @@ class AddCoolingProfile(Script):
|
|||
g0_index = -1
|
||||
is_travel = False
|
||||
comment_data[lay_num] = "\n".join(new_data)
|
||||
return comment_data
|
||||
return comment_data
|
||||
|
||||
def _control_bv_fan(self, bv_data: str) -> str:
|
||||
# Control any secondary fan. Can be used for an Auxilliary/Chamber fan
|
||||
bv_start_layer = self.getSettingValueByKey("bv_fan_start_layer") - 1
|
||||
bv_end_layer = self.getSettingValueByKey("bv_fan_end_layer")
|
||||
bv_fan_nr = self.getSettingValueByKey("bv_fan_nr")
|
||||
if bv_end_layer != -1:
|
||||
bv_end_layer -= 1
|
||||
# Get the PWM speed or if RepRap then the 0-1 speed
|
||||
if self.extruder_list[0].getProperty("machine_scale_fan_speed_zero_to_one", "value"):
|
||||
bv_fan_speed = round(self.getSettingValueByKey("bv_fan_speed") * .01, 1)
|
||||
else:
|
||||
bv_fan_speed = int(self.getSettingValueByKey("bv_fan_speed") * 2.55)
|
||||
# Turn the chamber fan on
|
||||
for index, layer in enumerate(bv_data):
|
||||
if f";LAYER:{bv_start_layer}\n" in layer:
|
||||
bv_data[index] = re.sub(f";LAYER:{bv_start_layer}", f";LAYER:{bv_start_layer}\nM106 S{bv_fan_speed} P{bv_fan_nr}",layer)
|
||||
break
|
||||
# Turn the chamber fan off
|
||||
if bv_end_layer == -1:
|
||||
bv_data[len(bv_data)-2] += f"M106 S0 P{bv_fan_nr}\n"
|
||||
else:
|
||||
for index, layer in enumerate(bv_data):
|
||||
if f";LAYER:{bv_end_layer}\n" in layer:
|
||||
lines = layer.split("\n")
|
||||
for fdex, line in enumerate(lines):
|
||||
if ";TIME_ELAPSED:" in line:
|
||||
lines[fdex] = f"M106 S0 P{bv_fan_nr}\n" + line
|
||||
bv_data[index] = "\n".join(lines)
|
||||
break
|
||||
return bv_data
|
|
@ -35,16 +35,21 @@ class CreateThumbnail(Script):
|
|||
def _convertSnapshotToGcode(self, encoded_snapshot, width, height, chunk_size=78):
|
||||
gcode = []
|
||||
|
||||
use_thumbnail = self.getSettingValueByKey("use_thumbnail")
|
||||
use_star = self.getSettingValueByKey("use_star")
|
||||
|
||||
encoded_snapshot_length = len(encoded_snapshot)
|
||||
image_type = "thumbnail" if use_thumbnail else "png"
|
||||
resolution_symbol = '*' if use_star else 'x'
|
||||
gcode.append(";")
|
||||
gcode.append("; thumbnail begin {}x{} {}".format(
|
||||
width, height, encoded_snapshot_length))
|
||||
gcode.append("; {} begin {}{}{} {}".format(
|
||||
image_type, width, resolution_symbol, height, encoded_snapshot_length))
|
||||
|
||||
chunks = ["; {}".format(encoded_snapshot[i:i+chunk_size])
|
||||
for i in range(0, len(encoded_snapshot), chunk_size)]
|
||||
gcode.extend(chunks)
|
||||
|
||||
gcode.append("; thumbnail end")
|
||||
gcode.append("; {} end".format(image_type))
|
||||
gcode.append(";")
|
||||
gcode.append("")
|
||||
|
||||
|
@ -79,6 +84,20 @@ class CreateThumbnail(Script):
|
|||
"minimum_value": "0",
|
||||
"minimum_value_warning": "12",
|
||||
"maximum_value_warning": "600"
|
||||
},
|
||||
"use_thumbnail":
|
||||
{
|
||||
"label": "Thumbnail Begin/End",
|
||||
"description": "Use Thumbnail Begin/End rather than PNG",
|
||||
"type": "bool",
|
||||
"default_value": true
|
||||
},
|
||||
"use_star":
|
||||
{
|
||||
"label": "Use '*' for size of image",
|
||||
"description": "Use '*' instead of 'x' for size of image as Width '*' Height",
|
||||
"type": "bool",
|
||||
"default_value": false
|
||||
}
|
||||
}
|
||||
}"""
|
||||
|
|
|
@ -92,7 +92,7 @@ class FilamentChange(Script):
|
|||
"type": "float",
|
||||
"default_value": 0,
|
||||
"minimum_value": 0,
|
||||
"enabled": "enabled"
|
||||
"enabled": "enabled and not firmware_config"
|
||||
},
|
||||
"retract_method":
|
||||
{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright (c) 2020 Ultimaker B.V.
|
||||
# Created by Wayne Porter
|
||||
# Re-write in April of 2024 by GregValiant (Greg Foresi)
|
||||
# Made convert inserted text to upper-case optional March 2025 by HellAholic
|
||||
# Changes:
|
||||
# Added an 'Enable' setting
|
||||
# Added support for multi-line insertions (comma delimited)
|
||||
|
@ -82,6 +83,14 @@ class InsertAtLayerChange(Script):
|
|||
"type": "str",
|
||||
"default_value": "",
|
||||
"enabled": "enabled"
|
||||
},
|
||||
"convert_to_upper":
|
||||
{
|
||||
"label": "Convert to upper-case",
|
||||
"description": "Convert all inserted text to upper-case as some firmwares don't understand lower-case.",
|
||||
"type": "bool",
|
||||
"default_value": true,
|
||||
"enabled": "enabled"
|
||||
}
|
||||
}
|
||||
}"""
|
||||
|
@ -91,7 +100,7 @@ class InsertAtLayerChange(Script):
|
|||
if not bool(self.getSettingValueByKey("enabled")):
|
||||
return data
|
||||
#Initialize variables
|
||||
mycode = self.getSettingValueByKey("gcode_to_add").upper()
|
||||
mycode = self.getSettingValueByKey("gcode_to_add").upper() if self.getSettingValueByKey("convert_to_upper") else self.getSettingValueByKey("gcode_to_add")
|
||||
start_layer = int(self.getSettingValueByKey("start_layer"))
|
||||
end_layer = int(self.getSettingValueByKey("end_layer"))
|
||||
when_to_insert = self.getSettingValueByKey("insert_frequency")
|
||||
|
|
|
@ -35,8 +35,9 @@ class Position(tuple, Enum):
|
|||
|
||||
class PurgeLinesAndUnload(Script):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
def initialize(self) -> None:
|
||||
super().initialize()
|
||||
# Get required values from the global stack and set default values for the script
|
||||
self.global_stack = Application.getInstance().getGlobalContainerStack()
|
||||
self.extruder = self.global_stack.extruderList
|
||||
self.end_purge_location = None
|
||||
|
@ -56,9 +57,6 @@ class PurgeLinesAndUnload(Script):
|
|||
self.machine_back = self.machine_depth - 1.0
|
||||
self.start_x = None
|
||||
self.start_y = None
|
||||
|
||||
def initialize(self) -> None:
|
||||
super().initialize()
|
||||
# Get the StartUp Gcode from Cura and attempt to catch if it contains purge lines. Message the user if an extrusion is in the startup.
|
||||
startup_gcode = self.global_stack.getProperty("machine_start_gcode", "value")
|
||||
start_lines = startup_gcode.splitlines()
|
||||
|
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 620 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 398 KiB After Width: | Height: | Size: 119 KiB |
Before Width: | Height: | Size: 899 KiB After Width: | Height: | Size: 138 KiB |
Before Width: | Height: | Size: 682 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 874 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 430 KiB After Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 90 KiB |
BIN
plugins/UM3NetworkPrinting/resources/png/Ultimaker S6.png
Normal file
After Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 735 KiB After Width: | Height: | Size: 77 KiB |
BIN
plugins/UM3NetworkPrinting/resources/png/Ultimaker S8.png
Normal file
After Width: | Height: | Size: 141 KiB |
39
resources/definitions/biqu_b2.def.json
Normal file
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Biqu B2",
|
||||
"inherits": "biqu_b1",
|
||||
"metadata":
|
||||
{
|
||||
"visible": true,
|
||||
"author": "Boris Juraga",
|
||||
"has_textured_buildplate": true,
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "biqu_b2_extruder_0",
|
||||
"1": "biqu_b2_extruder_1"
|
||||
},
|
||||
"quality_definition": "biqu_b2"
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
"gantry_height": { "value": 27.5 },
|
||||
"machine_end_gcode": { "default_value": ";BEGIN OF CUSTOM END GCODE\nM104 S0\nM140 S0\n;Retract the filament\nG91\nG1 E-30 F300\nG1 Z5\nG90\nG28 X0 Y{machine_depth}\n;END OF CUSTOM END GCODE" },
|
||||
"machine_extruder_count": { "default_value": 2 },
|
||||
"machine_extruders_share_heater": { "default_value": true },
|
||||
"machine_extruders_share_nozzle": { "default_value": true },
|
||||
"machine_extruders_shared_nozzle_initial_retraction": { "default_value": 30 },
|
||||
"machine_head_with_fans_polygon":
|
||||
{
|
||||
"default_value": [
|
||||
[-33, 35],
|
||||
[-33, -23],
|
||||
[33, -23],
|
||||
[33, 35]
|
||||
]
|
||||
},
|
||||
"machine_name": { "default_value": "BIQU B2" },
|
||||
"machine_start_gcode": { "default_value": ";BEGIN OF CUSTOM START GCODE\nG28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nM109 S{material_print_temperature_layer_0} ; Wait for Extruder temperature\nT0\nG92 E0\nG1 F1200 E-30\nG92 E0\nM109 S{material_print_temperature_layer_0} ; Wait for Extruder temperature\nT1\nG92 E0\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X6.1 Y20 Z0.3 F5000.0 ; Move to start position\nM117 Purging\nG1 X6.1 Y200.0 Z0.3 F1500.0 E10 ; Draw the first line\nG1 X6.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X6.4 Y20 Z0.3 F1500.0 E20 ; Draw the second line\nG1 X6.7 Y20 Z0.3 F5000.0 ; Move to side a little\nG1 X6.7 Y200.0 Z0.3 F1500.0 E30 ; Draw the three line\nG1 X7.0 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X7.0 Y20 Z0.3 F1500.0 E40 ; Draw the four line\nG1 X7.3 Y20 Z0.3 F5000.0 ; Move to side a little\nG1 X7.3 Y200.0 Z0.3 F1500.0 E50 ; Draw the four line\nG92 E0 \nT1\nG92 E0\nG1 F1200 E-30\nG92 E0\nT0\nG92 E0\nG1 F1200 E30\nG92 E0\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X9.1 Y20 Z0.3 F5000.0 ; Move to start position\nM117 Purging\nG1 X9.1 Y200.0 Z0.3 F1500.0 E10 ; Draw the first line\nG1 X9.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X9.4 Y20 Z0.3 F1500.0 E20 ; Draw the second line\nG1 X9.7 Y20 Z0.3 F5000.0 ; Move to side a little\nG1 X9.7 Y200.0 Z0.3 F1500.0 E30 ; Draw the three line\nG1 X10.0 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X10.0 Y20 Z0.3 F1500.0 E40 ; Draw the four line\nG1 X10.3 Y20 Z0.3 F5000.0 ; Move to side a little\nG1 X10.3 Y200.0 Z0.3 F1500.0 E50 ; Draw the four line\nT0\nG92 E0\nG1 F1200 E-30\nG92 E0\nG92 E0\nT{initial_extruder_nr} ; RESET EXTRUDER TO INITIAL\n; start print\n;END OF CUSTOM START GCODE" },
|
||||
"prime_tower_enable": { "default_value": true },
|
||||
"prime_tower_mode": { "default_value": "interleaved" }
|
||||
}
|
||||
}
|
|
@ -48,7 +48,7 @@
|
|||
"machine_width": { "default_value": 220 },
|
||||
"material_print_temp_wait": { "default_value": false },
|
||||
"retraction_amount": { "default_value": 0.8 },
|
||||
"retraction_combing": { "value": "no_outer_surfaces" },
|
||||
"retraction_combing": { "value": "'no_outer_surfaces'" },
|
||||
"retraction_combing_max_distance": { "value": 5.0 },
|
||||
"retraction_extrusion_window": { "value": "retraction_amount" },
|
||||
"retraction_min_travel": { "value": 2.0 },
|
||||
|
|
59
resources/definitions/geeetech_M1.def.json
Normal file
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Geeetech M1",
|
||||
"inherits": "Geeetech_Base_Single_Extruder",
|
||||
"metadata":
|
||||
{
|
||||
"visible": true,
|
||||
"machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
"adhesion_type": { "value": "'brim'" },
|
||||
"brim_width": { "value": 2 },
|
||||
"gantry_height": { "value": 35 },
|
||||
"machine_depth": { "default_value": 105 },
|
||||
"machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
|
||||
"machine_head_with_fans_polygon":
|
||||
{
|
||||
"default_value": [
|
||||
[-31, 31],
|
||||
[34, 31],
|
||||
[34, -40],
|
||||
[-31, -40]
|
||||
]
|
||||
},
|
||||
"machine_height": { "default_value": 95 },
|
||||
"machine_name": { "default_value": "Geeetech M1" },
|
||||
"machine_start_gcode": { "default_value": ";Official wiki URL for Geeetech M1:https://www.geeetech.com/wiki/index.php/Geeetech_M1_3D_printer \nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM140 S{material_bed_temperature_layer_0} ; Set Bed Temperature\n;M190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 ;Off Fan\nM300 S2500 P1000 ;Play a short tune\nG1 Z0.28 ;Move Z Axis up little to prevent scratching of Heat Bed\nG92 E0 ;Reset Extruder\nG1 Y3 F2400 ;Move to start position\nG1 X75 E40 F500 ;Draw a filament line\nG92 E0 ;Reset Extruder\n;G1 E-0.2 F3000 ;Retract a little\nG1 Z2.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X70 Y3 Z0.27 F3000 ;Quickly wipe away from the filament line\nG92 E0 ;Reset Extruder" },
|
||||
"machine_width": { "default_value": 105 },
|
||||
"material_bed_temperature": { "maximum_value": 60 },
|
||||
"material_print_temperature": { "maximum_value": 230 },
|
||||
"retraction_amount": { "value": 2 },
|
||||
"speed_print":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 120
|
||||
},
|
||||
"speed_topbottom":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 60
|
||||
},
|
||||
"speed_wall":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 80
|
||||
},
|
||||
"speed_wall_0":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 50
|
||||
},
|
||||
"speed_wall_x":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 80
|
||||
}
|
||||
}
|
||||
}
|
59
resources/definitions/geeetech_M1S.def.json
Normal file
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Geeetech M1S",
|
||||
"inherits": "Geeetech_Base_Single_Extruder",
|
||||
"metadata":
|
||||
{
|
||||
"visible": true,
|
||||
"machine_extruder_trains": { "0": "Geeetech_Single_Extruder" }
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
"adhesion_type": { "value": "'brim'" },
|
||||
"brim_width": { "value": 2 },
|
||||
"gantry_height": { "value": 35 },
|
||||
"machine_depth": { "default_value": 105 },
|
||||
"machine_end_gcode": { "default_value": "G91 ;Switch to relative positioning\nG1 E-2.5 F2700 ;Retract filament\nG1 E-1.5 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Move away\nG1 Z10 ;lift print head\nG90 ;Switch to absolute positioning\nG28 X Y ;homing XY\nM106 S0 ;off Fan\nM104 S0 ;Cooldown hotend\nM140 S0 ;Cooldown bed\nM84 X Y E ;Disable steppers" },
|
||||
"machine_head_with_fans_polygon":
|
||||
{
|
||||
"default_value": [
|
||||
[-31, 31],
|
||||
[34, 31],
|
||||
[34, -40],
|
||||
[-31, -40]
|
||||
]
|
||||
},
|
||||
"machine_height": { "default_value": 95 },
|
||||
"machine_name": { "default_value": "Geeetech M1S" },
|
||||
"machine_start_gcode": { "default_value": ";Official wiki URL for Geeetech M1S:https://www.geeetech.com/wiki/index.php/Geeetech_M1S_3D_printer \nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM140 S{material_bed_temperature_layer_0} ; Set Bed Temperature\n;M190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 ;Off Fan\nM300 S2500 P1000 ;Play a short tune\nG1 Z0.28 ;Move Z Axis up little to prevent scratching of Heat Bed\nG92 E0 ;Reset Extruder\nG1 Y3 F2400 ;Move to start position\nG1 X75 E40 F500 ;Draw a filament line\nG92 E0 ;Reset Extruder\n;G1 E-0.2 F3000 ;Retract a little\nG1 Z2.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X70 Y3 Z0.27 F3000 ;Quickly wipe away from the filament line\nG92 E0 ;Reset Extruder" },
|
||||
"machine_width": { "default_value": 105 },
|
||||
"material_bed_temperature": { "maximum_value": 85 },
|
||||
"material_print_temperature": { "maximum_value": 250 },
|
||||
"retraction_amount": { "value": 2 },
|
||||
"speed_print":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 120
|
||||
},
|
||||
"speed_topbottom":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 60
|
||||
},
|
||||
"speed_wall":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 80
|
||||
},
|
||||
"speed_wall_0":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 50
|
||||
},
|
||||
"speed_wall_x":
|
||||
{
|
||||
"maximum_value_warning": "200",
|
||||
"value": 80
|
||||
}
|
||||
}
|
||||
}
|
|
@ -81,14 +81,10 @@
|
|||
"machine_max_jerk_xy": { "value": 45 },
|
||||
"machine_max_jerk_z": { "value": 0.8 },
|
||||
"machine_name": { "default_value": "Geeetech Thunder" },
|
||||
"machine_start_gcode": { "default_value": ";Official viki homepage for Thunder:https://www.geeetech.com/wiki/index.php/Geeetech_Thunder_3D_printer \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
|
||||
"machine_start_gcode": { "default_value": ";Official wiki URL for Thunder:https://www.geeetech.com/wiki/index.php/Geeetech_Thunder_3D_printer \n\nM104 S{material_print_temperature_layer_0} ; Set Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Bed Temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Hotend Temperature\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nM107 P0 ;Off Main Fan\nM107 P1 ;Off Aux Fan\nM2012 P8 S1 F100 ; ON Light\n;M106 P0 S383 ; ON MainFan 150% if need\n;M106 P1 S255 ; ON Aux Fan 100% if need\nG1 Z5.0 F3000 ;Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.8 F5000 ; Move to start position\nG1 X0.1 Y200.0 Z1.2 F1500 E30 ; Draw the first line\nG92 E0 ; Reset Extruder\nG1 X0.4 Y200.0 Z1.2 F3000 ; Move to side a little\nG1 X0.4 Y20 Z1.2 F1500 E25 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.4 F3000.0 ; Scrape off nozzle residue" },
|
||||
"machine_width": { "default_value": 250 },
|
||||
"material_flow_layer_0": { "value": 95 },
|
||||
"material_print_temperature":
|
||||
{
|
||||
"maximum_value": "250",
|
||||
"value": "200 if speed_infill <=150 else 205 if speed_infill <= 200 else 215 if speed_infill <= 260 else 220"
|
||||
},
|
||||
"material_print_temperature": { "maximum_value": "250" },
|
||||
"material_print_temperature_layer_0":
|
||||
{
|
||||
"maximum_value_warning": 300,
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
0,
|
||||
5
|
||||
],
|
||||
"platform_texture": "hellbot_hidra.png"
|
||||
"platform_texture": "Hellbot_Hidra_and_Hidra_Plus_V2.png"
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
0,
|
||||
5
|
||||
],
|
||||
"platform_texture": "hellbot_hidra_plus.png"
|
||||
"platform_texture": "Hellbot_Hidra_and_Hidra_Plus_V2.png"
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Sovol SV01",
|
||||
"inherits": "sovol_base_bowden",
|
||||
"inherits": "sovol_base_titan",
|
||||
"metadata":
|
||||
{
|
||||
"visible": true,
|
||||
"quality_definition": "sovol_base_bowden"
|
||||
"quality_definition": "sovol_base_titan"
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
|
|
25
resources/definitions/toybox_alpha_one_two.def.json
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Toybox Alpha One/Two",
|
||||
"inherits": "fdmprinter",
|
||||
"metadata":
|
||||
{
|
||||
"visible": true,
|
||||
"author": "lukbrew25",
|
||||
"manufacturer": "Toybox",
|
||||
"file_formats": "text/x-gcode",
|
||||
"has_machine_quality": false,
|
||||
"machine_extruder_trains": { "0": "toybox_alpha_one_two_extruder_0" }
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
"gantry_height": { "value": "0.0" },
|
||||
"machine_depth": { "default_value": 80 },
|
||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||
"machine_height": { "default_value": 90 },
|
||||
"machine_name": { "default_value": "Toybox Alpha One/Two" },
|
||||
"machine_start_gcode": { "default_value": "G90\nM82" },
|
||||
"machine_width": { "default_value": 70 },
|
||||
"material_diameter": { "default_value": 1.75 }
|
||||
}
|
||||
}
|
|
@ -48,23 +48,111 @@
|
|||
"infill_material_flow": { "value": "(1.95-infill_sparse_density / 100 if infill_sparse_density > 95 else 1) * material_flow" },
|
||||
"infill_overlap": { "value": "0 if infill_sparse_density > 80 else 10" },
|
||||
"inset_direction": { "value": "'outside_in'" },
|
||||
"jerk_infill": { "minimum_value_warning": 20 },
|
||||
"jerk_prime_tower": { "minimum_value_warning": 20 },
|
||||
"jerk_flooring":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_infill":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_layer_0": { "minimum_value": 1 },
|
||||
"jerk_prime_tower":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_print":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20,
|
||||
"value": "20"
|
||||
},
|
||||
"jerk_print_layer_0": { "value": "max(20, jerk_wall_0)" },
|
||||
"jerk_roofing": { "minimum_value_warning": 20 },
|
||||
"jerk_support": { "minimum_value_warning": 20 },
|
||||
"jerk_support_infill": { "minimum_value_warning": 20 },
|
||||
"jerk_support_interface": { "minimum_value_warning": 20 },
|
||||
"jerk_topbottom": { "minimum_value_warning": 20 },
|
||||
"jerk_travel": { "value": "jerk_print" },
|
||||
"jerk_print_layer_0":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"value": "max(20, jerk_wall_0)"
|
||||
},
|
||||
"jerk_roofing":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_skirt_brim": { "minimum_value": 1 },
|
||||
"jerk_support":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_support_bottom":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_support_infill":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_support_interface":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_support_roof":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_topbottom":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_travel":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_travel_enabled": { "value": false },
|
||||
"jerk_wall": { "minimum_value_warning": 20 },
|
||||
"jerk_wall_0": { "minimum_value_warning": 20 },
|
||||
"jerk_travel_layer_0": { "minimum_value": 1 },
|
||||
"jerk_wall":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_wall_0":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_wall_0_flooring":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_wall_0_roofing":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_wall_x":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_wall_x_flooring":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"jerk_wall_x_roofing":
|
||||
{
|
||||
"minimum_value": 1,
|
||||
"minimum_value_warning": 20
|
||||
},
|
||||
"layer_height": { "value": 0.15 },
|
||||
"layer_height_0": { "value": "max(0.2, layer_height)" },
|
||||
"line_width": { "value": "machine_nozzle_size" },
|
||||
|
|
|
@ -33,12 +33,15 @@
|
|||
{
|
||||
"acceleration_enabled":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": true,
|
||||
"value": true
|
||||
},
|
||||
"acceleration_infill":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_print"
|
||||
},
|
||||
"acceleration_layer_0":
|
||||
|
@ -49,11 +52,17 @@
|
|||
"acceleration_prime_tower":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_print"
|
||||
},
|
||||
"acceleration_print":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": 800
|
||||
},
|
||||
"acceleration_print_layer_0":
|
||||
|
@ -64,32 +73,52 @@
|
|||
"acceleration_roofing":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_print"
|
||||
},
|
||||
"acceleration_skirt_brim":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": 800
|
||||
},
|
||||
"acceleration_support":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_print"
|
||||
},
|
||||
"acceleration_support_bottom":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"value": "acceleration_support_interface"
|
||||
},
|
||||
"acceleration_support_infill":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_support"
|
||||
},
|
||||
"acceleration_support_interface":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_support"
|
||||
},
|
||||
"acceleration_support_roof":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"value": "acceleration_support_interface"
|
||||
},
|
||||
"acceleration_topbottom":
|
||||
{
|
||||
|
@ -99,6 +128,9 @@
|
|||
"acceleration_travel":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 5000,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": 5000
|
||||
},
|
||||
"acceleration_travel_enabled":
|
||||
|
@ -114,27 +146,36 @@
|
|||
"acceleration_wall":
|
||||
{
|
||||
"enabled": false,
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_print"
|
||||
},
|
||||
"acceleration_wall_0":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_wall"
|
||||
},
|
||||
"acceleration_wall_0_roofing":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"value": "acceleration_wall"
|
||||
},
|
||||
"acceleration_wall_x":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"maximum_value": 3500,
|
||||
"minimum_value": 200,
|
||||
"minimum_value_warning": 750,
|
||||
"value": "acceleration_wall"
|
||||
},
|
||||
"acceleration_wall_x_roofing":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "acceleration_print"
|
||||
"value": "acceleration_wall"
|
||||
},
|
||||
"adhesion_extruder_nr":
|
||||
{
|
||||
|
@ -203,12 +244,15 @@
|
|||
"inset_direction": { "value": "'inside_out'" },
|
||||
"jerk_enabled":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": true,
|
||||
"value": true
|
||||
},
|
||||
"jerk_infill":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": "jerk_enabled",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_layer_0":
|
||||
|
@ -218,13 +262,19 @@
|
|||
},
|
||||
"jerk_prime_tower":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": "jerk_enabled and prime_tower_enable and extruders_enabled_count > 1",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_print":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": 6.25
|
||||
"enabled": "jerk_enabled",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": 12.5
|
||||
},
|
||||
"jerk_print_layer_0":
|
||||
{
|
||||
|
@ -233,33 +283,50 @@
|
|||
},
|
||||
"jerk_roofing":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": "jerk_enabled",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_skirt_brim":
|
||||
{
|
||||
"enabled": "jerk_enabled and (adhesion_type == 'brim' or adhesion_type == 'skirt')",
|
||||
"value": 12.5
|
||||
},
|
||||
"jerk_support":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": "jerk_enabled and support_enable",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_support_bottom":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "jerk_print"
|
||||
"value": "jerk_support_interface"
|
||||
},
|
||||
"jerk_support_infill":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "jerk_print"
|
||||
"enabled": "jerk_enabled and support_enable",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_support"
|
||||
},
|
||||
"jerk_support_interface":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "jerk_print"
|
||||
"enabled": "jerk_enabled and support_enable",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_support"
|
||||
},
|
||||
"jerk_support_roof":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "jerk_print"
|
||||
"value": "jerk_support_interface"
|
||||
},
|
||||
"jerk_topbottom":
|
||||
{
|
||||
|
@ -268,8 +335,11 @@
|
|||
},
|
||||
"jerk_travel":
|
||||
{
|
||||
"enabled": false,
|
||||
"value": "jerk_print"
|
||||
"enabled": "jerk_enabled",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": 12.5
|
||||
},
|
||||
"jerk_travel_enabled":
|
||||
{
|
||||
|
@ -283,12 +353,18 @@
|
|||
},
|
||||
"jerk_wall":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": "jerk_enabled",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_wall_0":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": "jerk_enabled",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_wall_0_roofing":
|
||||
|
@ -298,7 +374,10 @@
|
|||
},
|
||||
"jerk_wall_x":
|
||||
{
|
||||
"enabled": false,
|
||||
"enabled": "jerk_enabled",
|
||||
"maximum_value": 35,
|
||||
"minimum_value": 5,
|
||||
"minimum_value_warning": 12,
|
||||
"value": "jerk_print"
|
||||
},
|
||||
"jerk_wall_x_roofing":
|
||||
|
@ -517,16 +596,86 @@
|
|||
"skirt_height": { "value": 3 },
|
||||
"small_skin_width": { "value": 4 },
|
||||
"speed_equalize_flow_width_factor": { "value": 0 },
|
||||
"speed_prime_tower": { "value": "speed_topbottom" },
|
||||
"speed_print": { "value": 50 },
|
||||
"speed_roofing": { "value": "speed_wall_0" },
|
||||
"speed_support": { "value": "speed_wall" },
|
||||
"speed_support_interface": { "value": "speed_topbottom" },
|
||||
"speed_topbottom": { "value": "speed_wall" },
|
||||
"speed_infill":
|
||||
{
|
||||
"maximum_value": 350,
|
||||
"maximum_value_warning": 325
|
||||
},
|
||||
"speed_prime_tower":
|
||||
{
|
||||
"maximum_value": 250,
|
||||
"maximum_value_warning": 200,
|
||||
"value": "speed_topbottom"
|
||||
},
|
||||
"speed_print":
|
||||
{
|
||||
"maximum_value": 350,
|
||||
"maximum_value_warning": 325,
|
||||
"value": 50
|
||||
},
|
||||
"speed_roofing":
|
||||
{
|
||||
"maximum_value": 300,
|
||||
"maximum_value_warning": 275,
|
||||
"value": "speed_wall_0"
|
||||
},
|
||||
"speed_support":
|
||||
{
|
||||
"maximum_value": 350,
|
||||
"maximum_value_warning": 325,
|
||||
"value": "speed_wall"
|
||||
},
|
||||
"speed_support_infill":
|
||||
{
|
||||
"maximum_value": 350,
|
||||
"maximum_value_warning": 325
|
||||
},
|
||||
"speed_support_interface":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255,
|
||||
"value": "speed_topbottom"
|
||||
},
|
||||
"speed_support_roof":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255
|
||||
},
|
||||
"speed_topbottom":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255,
|
||||
"value": "speed_wall"
|
||||
},
|
||||
"speed_travel": { "value": 250 },
|
||||
"speed_wall": { "value": "speed_print * 40/50" },
|
||||
"speed_wall_0": { "value": "speed_wall * 30/40" },
|
||||
"speed_wall_x": { "value": "speed_wall" },
|
||||
"speed_wall":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255,
|
||||
"value": "speed_print * 40/50"
|
||||
},
|
||||
"speed_wall_0":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255,
|
||||
"value": "speed_wall * 30/40"
|
||||
},
|
||||
"speed_wall_0_roofing":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255
|
||||
},
|
||||
"speed_wall_x":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255,
|
||||
"value": "speed_wall"
|
||||
},
|
||||
"speed_wall_x_roofing":
|
||||
{
|
||||
"maximum_value": 260,
|
||||
"maximum_value_warning": 255
|
||||
},
|
||||
"support_angle": { "value": 40 },
|
||||
"support_bottom_height": { "value": "2*support_infill_sparse_thickness" },
|
||||
"support_bottom_line_width":
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Ultimaker Original Dual Extrusion",
|
||||
"inherits": "ultimaker",
|
||||
"inherits": "ultimaker_original",
|
||||
"metadata":
|
||||
{
|
||||
"visible": true,
|
||||
|
@ -49,10 +49,13 @@
|
|||
},
|
||||
"overrides":
|
||||
{
|
||||
"cool_fan_speed_0": { "value": "cool_fan_speed_min" },
|
||||
"gantry_height": { "value": "55" },
|
||||
"infill_before_walls": { "value": "True" },
|
||||
"layer_height_0": { "value": "max(0.2, layer_height)" },
|
||||
"machine_center_is_zero": { "default_value": false },
|
||||
"machine_depth": { "default_value": 195 },
|
||||
"machine_end_gcode": { "default_value": "M104 T0 S0 ;1st extruder heater off\nM104 T1 S0 ;2nd extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" },
|
||||
"machine_end_gcode": { "value": "'M104 T0 S0 ;1st extruder heater off\\nM104 T1 S0 ;2nd extruder heater off' + ('\\nM140 S0 ;heated bed heater off' if machine_heated_bed else '') + '\\nG91 ;relative positioning\\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\\nM84 ;steppers off\\nG90 ;absolute positioning'" },
|
||||
"machine_extruder_count": { "default_value": 2 },
|
||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||
"machine_head_with_fans_polygon":
|
||||
|
@ -65,9 +68,11 @@
|
|||
]
|
||||
},
|
||||
"machine_height": { "default_value": 200 },
|
||||
"machine_name": { "default_value": "Ultimaker Original" },
|
||||
"machine_name": { "default_value": "Ultimaker Original Dual Extrusion" },
|
||||
"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\nT1 ;Switch to the 2nd extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F200 E-{switch_extruder_retraction_amount}\nT0 ;Switch to the 1st extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." },
|
||||
"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": false },
|
||||
"speed_slowdown_layers": { "value": 1 }
|
||||
}
|
||||
}
|
|
@ -72,7 +72,11 @@
|
|||
"brim_width": { "value": "3" },
|
||||
"build_volume_temperature": { "maximum_value": 50 },
|
||||
"cool_fan_speed": { "value": "50" },
|
||||
"default_material_print_temperature": { "value": "200" },
|
||||
"default_material_print_temperature":
|
||||
{
|
||||
"maximum_value_warning": "320",
|
||||
"value": "200"
|
||||
},
|
||||
"extruder_prime_pos_abs": { "default_value": true },
|
||||
"gantry_height": { "value": "55" },
|
||||
"infill_pattern": { "value": "'zigzag' if infill_sparse_density > 80 else 'triangles'" },
|
||||
|
@ -104,6 +108,7 @@
|
|||
"machine_nozzle_heat_up_speed": { "default_value": 1.4 },
|
||||
"machine_start_gcode": { "default_value": "" },
|
||||
"machine_width": { "default_value": 330 },
|
||||
"material_print_temperature_layer_0": { "maximum_value_warning": "320" },
|
||||
"multiple_mesh_overlap": { "value": "0" },
|
||||
"optimize_wall_printing_order": { "value": "True" },
|
||||
"prime_blob_enable":
|
||||
|
|
|
@ -9,9 +9,7 @@
|
|||
"manufacturer": "Ultimaker B.V.",
|
||||
"file_formats": "application/x-ufp;text/x-gcode",
|
||||
"platform": "ultimaker_s5_platform.obj",
|
||||
"bom_numbers": [
|
||||
10700
|
||||
],
|
||||
"bom_numbers": [10700, 10701],
|
||||
"firmware_update_info":
|
||||
{
|
||||
"check_urls": [ "https://software.ultimaker.com/releases/firmware/5078167/stable/um-update.swu.version" ],
|
||||
|
@ -48,6 +46,6 @@
|
|||
"overrides":
|
||||
{
|
||||
"adhesion_type": { "value": "'brim'" },
|
||||
"machine_name": { "default_value": "UltiMaker S6" }
|
||||
"machine_name": { "default_value": "Ultimaker S6" }
|
||||
}
|
||||
}
|
|
@ -46,8 +46,6 @@
|
|||
},
|
||||
"overrides":
|
||||
{
|
||||
"default_material_print_temperature": { "maximum_value_warning": "320" },
|
||||
"machine_name": { "default_value": "UltiMaker S7" },
|
||||
"material_print_temperature_layer_0": { "maximum_value_warning": "320" }
|
||||
"machine_name": { "default_value": "Ultimaker S7" }
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "UltiMaker S8",
|
||||
"inherits": "ultimaker_s7",
|
||||
"inherits": "ultimaker_s5",
|
||||
"metadata":
|
||||
{
|
||||
"visible": true,
|
||||
|
@ -12,6 +12,17 @@
|
|||
"bom_numbers": [
|
||||
10600
|
||||
],
|
||||
"exclude_materials": [
|
||||
"generic_hips",
|
||||
"generic_flexible",
|
||||
"generic_cffpps",
|
||||
"generic_cffpa",
|
||||
"generic_cffcpe",
|
||||
"generic_gffpa",
|
||||
"generic_gffcpe",
|
||||
"structur3d_",
|
||||
"ultimaker_ppscf"
|
||||
],
|
||||
"firmware_update_info":
|
||||
{
|
||||
"check_urls": [ "https://software.ultimaker.com/releases/firmware/10600/stable/um-update.swu.version" ],
|
||||
|
@ -37,7 +48,6 @@
|
|||
"preferred_material": "ultimaker_pla_blue",
|
||||
"preferred_quality_type": "draft",
|
||||
"preferred_variant_name": "AA+ 0.4",
|
||||
"quality_definition": "ultimaker_s8",
|
||||
"supported_actions": [ "DiscoverUM3Action" ],
|
||||
"supports_material_export": true,
|
||||
"supports_network_connection": true,
|
||||
|
@ -203,6 +213,14 @@
|
|||
"unit": "mm/s",
|
||||
"value": 50
|
||||
},
|
||||
"build_volume_temperature":
|
||||
{
|
||||
"force_depends_on_settings": [
|
||||
"support_extruder_nr",
|
||||
"support_enable"
|
||||
]
|
||||
},
|
||||
"cool_during_extruder_switch": { "value": "'all_fans'" },
|
||||
"cool_min_layer_time": { "value": 5 },
|
||||
"cool_min_layer_time_overhang": { "value": 9 },
|
||||
"cool_min_layer_time_overhang_min_segment_length": { "value": 2 },
|
||||
|
@ -245,7 +263,7 @@
|
|||
{
|
||||
"maximum_value_warning": "machine_max_jerk_xy / 2",
|
||||
"unit": "m/s\u00b3",
|
||||
"value": "jerk_print"
|
||||
"value": "jerk_wall"
|
||||
},
|
||||
"jerk_print":
|
||||
{
|
||||
|
@ -385,10 +403,17 @@
|
|||
"unit": "m/s\u00b3",
|
||||
"value": "20000 if machine_gcode_flavor == 'Cheetah' else 100"
|
||||
},
|
||||
"machine_name": { "default_value": "UltiMaker S8" },
|
||||
"machine_name": { "default_value": "Ultimaker S8" },
|
||||
"machine_nozzle_cool_down_speed": { "default_value": 1.3 },
|
||||
"machine_nozzle_heat_up_speed": { "default_value": 0.6 },
|
||||
"machine_start_gcode": { "default_value": "M213 U0.1 ;undercut 0.1mm" },
|
||||
"material_bed_temperature":
|
||||
{
|
||||
"force_depends_on_settings": [
|
||||
"support_extruder_nr",
|
||||
"support_enable"
|
||||
]
|
||||
},
|
||||
"material_extrusion_cool_down_speed": { "value": 0 },
|
||||
"material_final_print_temperature": { "value": "material_print_temperature - 5" },
|
||||
"material_initial_print_temperature": { "value": "material_print_temperature - 5" },
|
||||
|
@ -397,6 +422,7 @@
|
|||
"enabled": true,
|
||||
"value": 0.5
|
||||
},
|
||||
"material_print_temperature": { "maximum_value_warning": 320 },
|
||||
"material_print_temperature_layer_0": { "maximum_value_warning": 320 },
|
||||
"max_flow_acceleration": { "value": 8.0 },
|
||||
"max_skin_angle_for_expansion": { "value": 45 },
|
||||
|
@ -445,12 +471,12 @@
|
|||
"speed_layer_0":
|
||||
{
|
||||
"maximum_value_warning": 300,
|
||||
"value": "speed_wall"
|
||||
"value": "min(speed_wall, 50)"
|
||||
},
|
||||
"speed_prime_tower":
|
||||
{
|
||||
"maximum_value_warning": 300,
|
||||
"value": "speed_wall"
|
||||
"value": "min(speed_wall, 50)"
|
||||
},
|
||||
"speed_print":
|
||||
{
|
||||
|
@ -500,13 +526,13 @@
|
|||
"speed_travel":
|
||||
{
|
||||
"maximum_value": 500,
|
||||
"maximum_value_warning": 300,
|
||||
"value": 300
|
||||
"maximum_value_warning": 500,
|
||||
"value": 500
|
||||
},
|
||||
"speed_travel_layer_0":
|
||||
{
|
||||
"maximum_value": 500,
|
||||
"maximum_value_warning": 300,
|
||||
"maximum_value_warning": 500,
|
||||
"value": 150
|
||||
},
|
||||
"speed_wall":
|
||||
|
@ -556,7 +582,10 @@
|
|||
"support_roof_height": { "minimum_value_warning": 0 },
|
||||
"support_structure": { "value": "'normal'" },
|
||||
"support_top_distance": { "maximum_value_warning": "3*layer_height" },
|
||||
"support_tree_angle": { "value": 50 },
|
||||
"support_tree_angle_slow": { "value": 35 },
|
||||
"support_tree_bp_diameter": { "value": 15 },
|
||||
"support_tree_branch_diameter": { "value": 8 },
|
||||
"support_tree_tip_diameter": { "value": 1.0 },
|
||||
"support_tree_top_rate": { "value": 20 },
|
||||
"support_xy_distance_overhang": { "value": "machine_nozzle_size" },
|
||||
|
@ -573,6 +602,7 @@
|
|||
"wall_material_flow": { "value": 95 },
|
||||
"wall_overhang_angle": { "value": 45 },
|
||||
"wall_x_material_flow": { "value": 100 },
|
||||
"xy_offset": { "value": 0.05 },
|
||||
"z_seam_corner": { "value": "'z_seam_corner_weighted'" },
|
||||
"z_seam_position": { "value": "'backright'" },
|
||||
"z_seam_type": { "value": "'sharpest_corner'" }
|
||||
|
|
16
resources/extruders/biqu_b2_extruder_0.def.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Extruder 1",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata":
|
||||
{
|
||||
"machine": "biqu_b2",
|
||||
"position": "0"
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
"extruder_nr": { "default_value": 0 },
|
||||
"machine_nozzle_size": { "default_value": 0.4 },
|
||||
"material_diameter": { "default_value": 1.75 }
|
||||
}
|
||||
}
|
16
resources/extruders/biqu_b2_extruder_1.def.json
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Extruder 2",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata":
|
||||
{
|
||||
"machine": "biqu_b2",
|
||||
"position": "1"
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
"extruder_nr": { "default_value": 1 },
|
||||
"machine_nozzle_size": { "default_value": 0.4 },
|
||||
"material_diameter": { "default_value": 1.75 }
|
||||
}
|
||||
}
|
17
resources/extruders/toybox_alpha_one_two_extruder_0.def.json
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Extruder 1",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata":
|
||||
{
|
||||
"machine": "toybox_alpha_one_two",
|
||||
"position": "0"
|
||||
},
|
||||
"overrides":
|
||||
{
|
||||
"extruder_nr": { "default_value": 0 },
|
||||
"machine_nozzle_offset_x": { "default_value": -3.0 },
|
||||
"machine_nozzle_size": { "default_value": 0.4 },
|
||||
"material_diameter": { "default_value": 1.75 }
|
||||
}
|
||||
}
|
BIN
resources/images/Hellbot_Hidra_and_Hidra_Plus_V2.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,32 @@
|
|||
[general]
|
||||
definition = ultimaker_methodx
|
||||
name = High Speed
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeed
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1C
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_pattern = zigzag
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[general]
|
||||
definition = ultimaker_methodx
|
||||
name = High Speed Solid
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeedsolid
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1C
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bottom_thickness = =top_bottom_thickness
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_angles = [45,135]
|
||||
infill_material_flow = 97
|
||||
infill_pattern = zigzag
|
||||
infill_sparse_density = 99
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
top_bottom_thickness = =layer_height * 2
|
||||
top_thickness = =top_bottom_thickness
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
[general]
|
||||
definition = ultimaker_methodx
|
||||
name = High Speed
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeed
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1XA
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_pattern = zigzag
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[general]
|
||||
definition = ultimaker_methodx
|
||||
name = High Speed Solid
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeedsolid
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1XA
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bottom_thickness = =top_bottom_thickness
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_angles = [45,135]
|
||||
infill_material_flow = 97
|
||||
infill_pattern = zigzag
|
||||
infill_sparse_density = 99
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
top_bottom_thickness = =layer_height * 2
|
||||
top_thickness = =top_bottom_thickness
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
[general]
|
||||
definition = ultimaker_methodx
|
||||
name = High Speed
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeed
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = LABS
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_pattern = zigzag
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[general]
|
||||
definition = ultimaker_methodx
|
||||
name = High Speed Solid
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeedsolid
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = LABS
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bottom_thickness = =top_bottom_thickness
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_angles = [45,135]
|
||||
infill_material_flow = 97
|
||||
infill_pattern = zigzag
|
||||
infill_sparse_density = 99
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
top_bottom_thickness = =layer_height * 2
|
||||
top_thickness = =top_bottom_thickness
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
[general]
|
||||
definition = ultimaker_methodxl
|
||||
name = High Speed
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeed
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1C
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_pattern = zigzag
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[general]
|
||||
definition = ultimaker_methodxl
|
||||
name = High Speed Solid
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeedsolid
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1C
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bottom_thickness = =top_bottom_thickness
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_angles = [45,135]
|
||||
infill_material_flow = 97
|
||||
infill_pattern = zigzag
|
||||
infill_sparse_density = 99
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
top_bottom_thickness = =layer_height * 2
|
||||
top_thickness = =top_bottom_thickness
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
[general]
|
||||
definition = ultimaker_methodxl
|
||||
name = High Speed
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeed
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1XA
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_pattern = zigzag
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[general]
|
||||
definition = ultimaker_methodxl
|
||||
name = High Speed Solid
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeedsolid
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = 1XA
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bottom_thickness = =top_bottom_thickness
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_angles = [45,135]
|
||||
infill_material_flow = 97
|
||||
infill_pattern = zigzag
|
||||
infill_sparse_density = 99
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
top_bottom_thickness = =layer_height * 2
|
||||
top_thickness = =top_bottom_thickness
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
[general]
|
||||
definition = ultimaker_methodxl
|
||||
name = High Speed
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeed
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = LABS
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_pattern = zigzag
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
[general]
|
||||
definition = ultimaker_methodxl
|
||||
name = High Speed Solid
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = highspeedsolid
|
||||
is_experimental = True
|
||||
material = ultimaker_absr_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = LABS
|
||||
|
||||
[values]
|
||||
acceleration_print = 3500
|
||||
bottom_thickness = =top_bottom_thickness
|
||||
bridge_wall_speed = 300
|
||||
cool_fan_enabled = True
|
||||
cool_fan_speed = 100
|
||||
cool_min_layer_time = 3
|
||||
cool_min_temperature = 245.0
|
||||
infill_angles = [45,135]
|
||||
infill_material_flow = 97
|
||||
infill_pattern = zigzag
|
||||
infill_sparse_density = 99
|
||||
jerk_print = 35
|
||||
speed_layer_0 = 55
|
||||
speed_print = 300
|
||||
speed_support = 100
|
||||
speed_support_interface = 75
|
||||
speed_travel = 500
|
||||
speed_travel_layer_0 = 250
|
||||
speed_wall_0 = 40
|
||||
support_pattern = zigzag
|
||||
top_bottom_thickness = =layer_height * 2
|
||||
top_thickness = =top_bottom_thickness
|
||||
|
|
@ -14,5 +14,5 @@ variant = AA+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -14,5 +14,5 @@ variant = AA+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -14,5 +14,5 @@ variant = AA+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
[general]
|
||||
definition = ultimaker_s8
|
||||
name = Visual
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = visual
|
||||
material = generic_pla
|
||||
quality_type = fast
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = AA+ 0.4
|
||||
|
||||
[values]
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
speed_print = 100
|
||||
speed_wall = 75
|
||||
top_bottom_thickness = =round(layer_height*6,3)
|
||||
|
|
@ -14,5 +14,5 @@ variant = AA+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
[general]
|
||||
definition = ultimaker_s8
|
||||
name = Visual
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = visual
|
||||
material = generic_tough_pla
|
||||
quality_type = fast
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = AA+ 0.4
|
||||
|
||||
[values]
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
speed_print = 100
|
||||
speed_wall = 75
|
||||
top_bottom_thickness = =round(layer_height*6,3)
|
||||
|
|
@ -14,5 +14,5 @@ variant = AA+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -14,5 +14,5 @@ variant = CC+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -14,5 +14,5 @@ variant = CC+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -14,5 +14,5 @@ variant = CC+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -14,5 +14,5 @@ variant = CC+ 0.4
|
|||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
wall_thickness = =line_width * 4
|
||||
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
[general]
|
||||
definition = ultimaker_s8
|
||||
name = Accurate
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = engineering
|
||||
material = generic_nylon-cf-slide
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = CC+ 0.6
|
||||
|
||||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
[general]
|
||||
definition = ultimaker_s8
|
||||
name = Accurate
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
intent_category = engineering
|
||||
material = generic_petcf
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = intent
|
||||
variant = CC+ 0.6
|
||||
|
||||
[values]
|
||||
infill_sparse_density = 20
|
||||
top_bottom_thickness = =wall_thickness
|
||||
wall_thickness = =line_width * 3
|
||||
|
14
resources/quality/biqu/b2/biqu_b2_0.4_PLA_adaptive.inst.cfg
Normal file
|
@ -0,0 +1,14 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Dynamic Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = generic_pla_175
|
||||
quality_type = adaptive
|
||||
setting_version = 25
|
||||
type = quality
|
||||
variant = 0.4mm Nozzle
|
||||
|
||||
[values]
|
||||
|
14
resources/quality/biqu/b2/biqu_b2_0.4_PLA_draft.inst.cfg
Normal file
|
@ -0,0 +1,14 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Draft Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = generic_pla_175
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = quality
|
||||
variant = 0.4mm Nozzle
|
||||
|
||||
[values]
|
||||
|
14
resources/quality/biqu/b2/biqu_b2_0.4_PLA_low.inst.cfg
Normal file
|
@ -0,0 +1,14 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Low Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = generic_pla_175
|
||||
quality_type = low
|
||||
setting_version = 25
|
||||
type = quality
|
||||
variant = 0.4mm Nozzle
|
||||
|
||||
[values]
|
||||
|
14
resources/quality/biqu/b2/biqu_b2_0.4_PLA_standard.inst.cfg
Normal file
|
@ -0,0 +1,14 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Standard Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = generic_pla_175
|
||||
quality_type = standard
|
||||
setting_version = 25
|
||||
type = quality
|
||||
variant = 0.4mm Nozzle
|
||||
|
||||
[values]
|
||||
|
14
resources/quality/biqu/b2/biqu_b2_0.4_PLA_super.inst.cfg
Normal file
|
@ -0,0 +1,14 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Super Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = generic_pla_175
|
||||
quality_type = super
|
||||
setting_version = 25
|
||||
type = quality
|
||||
variant = 0.4mm Nozzle
|
||||
|
||||
[values]
|
||||
|
14
resources/quality/biqu/b2/biqu_b2_0.4_PLA_ultra.inst.cfg
Normal file
|
@ -0,0 +1,14 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Ultra Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
material = generic_pla_175
|
||||
quality_type = ultra
|
||||
setting_version = 25
|
||||
type = quality
|
||||
variant = 0.4mm Nozzle
|
||||
|
||||
[values]
|
||||
|
29
resources/quality/biqu/b2/biqu_b2_global_adaptive.inst.cfg
Normal file
|
@ -0,0 +1,29 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Dynamic Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
global_quality = True
|
||||
quality_type = adaptive
|
||||
setting_version = 25
|
||||
type = quality
|
||||
weight = -2
|
||||
|
||||
[values]
|
||||
adaptive_layer_height_enabled = true
|
||||
layer_height = 0.16
|
||||
layer_height_0 = 0.20
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 195
|
||||
material_print_temperature = 190
|
||||
material_standby_temperature = 195
|
||||
optimize_wall_printing_order = True
|
||||
prime_tower_min_volume = 150
|
||||
support_interface_height = =layer_height*6
|
||||
switch_extruder_prime_speed = 10
|
||||
switch_extruder_retraction_amount = 40
|
||||
switch_extruder_retraction_speeds = 30
|
||||
top_bottom_thickness = =layer_height_0+layer_height*4
|
||||
wall_thickness = =line_width*3
|
||||
|
28
resources/quality/biqu/b2/biqu_b2_global_draft.inst.cfg
Normal file
|
@ -0,0 +1,28 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Draft Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
global_quality = True
|
||||
quality_type = draft
|
||||
setting_version = 25
|
||||
type = quality
|
||||
weight = -5
|
||||
|
||||
[values]
|
||||
layer_height = 0.32
|
||||
layer_height_0 = 0.32
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 195
|
||||
material_print_temperature = 190
|
||||
material_standby_temperature = 195
|
||||
optimize_wall_printing_order = True
|
||||
prime_tower_min_volume = 150
|
||||
support_interface_height = =layer_height*4
|
||||
switch_extruder_prime_speed = 10
|
||||
switch_extruder_retraction_amount = 40
|
||||
switch_extruder_retraction_speeds = 30
|
||||
top_bottom_thickness = =layer_height_0+layer_height*3
|
||||
wall_thickness = =line_width*2
|
||||
|
28
resources/quality/biqu/b2/biqu_b2_global_low.inst.cfg
Normal file
|
@ -0,0 +1,28 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Low Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
global_quality = True
|
||||
quality_type = low
|
||||
setting_version = 25
|
||||
type = quality
|
||||
weight = -4
|
||||
|
||||
[values]
|
||||
layer_height = 0.28
|
||||
layer_height_0 = 0.28
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 195
|
||||
material_print_temperature = 190
|
||||
material_standby_temperature = 195
|
||||
optimize_wall_printing_order = True
|
||||
prime_tower_min_volume = 150
|
||||
support_interface_height = =layer_height*4
|
||||
switch_extruder_prime_speed = 10
|
||||
switch_extruder_retraction_amount = 40
|
||||
switch_extruder_retraction_speeds = 30
|
||||
top_bottom_thickness = =layer_height_0+layer_height*3
|
||||
wall_thickness = =line_width*3
|
||||
|
29
resources/quality/biqu/b2/biqu_b2_global_standard.inst.cfg
Normal file
|
@ -0,0 +1,29 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Standard Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
global_quality = True
|
||||
position = 0
|
||||
quality_type = standard
|
||||
setting_version = 25
|
||||
type = quality
|
||||
weight = -3
|
||||
|
||||
[values]
|
||||
layer_height = 0.2
|
||||
layer_height_0 = 0.2
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 195
|
||||
material_print_temperature = 190
|
||||
material_standby_temperature = 195
|
||||
optimize_wall_printing_order = True
|
||||
prime_tower_min_volume = 150
|
||||
support_interface_height = =layer_height*4
|
||||
switch_extruder_prime_speed = 10
|
||||
switch_extruder_retraction_amount = 40
|
||||
switch_extruder_retraction_speeds = 30
|
||||
top_bottom_thickness = =layer_height_0+layer_height*3
|
||||
wall_thickness = =line_width*3
|
||||
|
28
resources/quality/biqu/b2/biqu_b2_global_super.inst.cfg
Normal file
|
@ -0,0 +1,28 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Super Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
global_quality = True
|
||||
quality_type = super
|
||||
setting_version = 25
|
||||
type = quality
|
||||
weight = -1
|
||||
|
||||
[values]
|
||||
layer_height = 0.12
|
||||
layer_height_0 = 0.12
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 195
|
||||
material_print_temperature = 190
|
||||
material_standby_temperature = 195
|
||||
optimize_wall_printing_order = True
|
||||
prime_tower_min_volume = 150
|
||||
support_interface_height = =layer_height*8
|
||||
switch_extruder_prime_speed = 10
|
||||
switch_extruder_retraction_amount = 40
|
||||
switch_extruder_retraction_speeds = 30
|
||||
top_bottom_thickness = =layer_height_0+layer_height*6
|
||||
wall_thickness = =line_width*3
|
||||
|
28
resources/quality/biqu/b2/biqu_b2_global_ultra.inst.cfg
Normal file
|
@ -0,0 +1,28 @@
|
|||
[general]
|
||||
definition = biqu_b2
|
||||
name = Ultra Quality
|
||||
version = 4
|
||||
|
||||
[metadata]
|
||||
global_quality = True
|
||||
quality_type = ultra
|
||||
setting_version = 25
|
||||
type = quality
|
||||
weight = 0
|
||||
|
||||
[values]
|
||||
layer_height = 0.08
|
||||
layer_height_0 = 0.12
|
||||
material_final_print_temperature = 195
|
||||
material_initial_print_temperature = 195
|
||||
material_print_temperature = 190
|
||||
material_standby_temperature = 195
|
||||
optimize_wall_printing_order = True
|
||||
prime_tower_min_volume = 150
|
||||
support_interface_height = =layer_height*12
|
||||
switch_extruder_prime_speed = 10
|
||||
switch_extruder_retraction_amount = 40
|
||||
switch_extruder_retraction_speeds = 30
|
||||
top_bottom_thickness = =layer_height_0+layer_height*10
|
||||
wall_thickness = =line_width*4
|
||||
|
|
@ -13,8 +13,8 @@ weight = -1
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100
|
||||
|
|
|
@ -13,8 +13,8 @@ weight = 0
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100
|
||||
|
|
|
@ -13,8 +13,8 @@ weight = -2
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
|
|
|
@ -14,8 +14,8 @@ weight = -3
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = 1
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
minimum_support_area = 4
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = -1
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
minimum_support_area = 4
|
||||
retraction_count_max = 5
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = 0
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
minimum_support_area = 4
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = -2
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
minimum_support_area = 4
|
||||
|
|
|
@ -15,9 +15,9 @@ weight = -3
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
minimum_support_area = 4
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = -2
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
minimum_support_area = 4
|
||||
retraction_count_max = 5
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = -3
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
minimum_support_area = 4
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = -4
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
minimum_support_area = 4
|
||||
|
|
|
@ -13,8 +13,8 @@ weight = -1
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100
|
||||
|
|
|
@ -13,8 +13,8 @@ weight = 0
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100
|
||||
|
|
|
@ -13,8 +13,8 @@ weight = -2
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
|
|
|
@ -14,8 +14,8 @@ weight = -3
|
|||
|
||||
[values]
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
build_volume_temperature = =50 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 24
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
machine_nozzle_cool_down_speed = 0.75
|
||||
machine_nozzle_heat_up_speed = 1.6
|
||||
material_print_temperature = =default_material_print_temperature + 5
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = 1
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
material_print_temperature = =default_material_print_temperature - 5
|
||||
minimum_support_area = 4
|
||||
|
|
|
@ -14,9 +14,9 @@ weight = -1
|
|||
[values]
|
||||
acceleration_prime_tower = 1500
|
||||
brim_replaces_support = False
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 else 35
|
||||
build_volume_temperature = =70 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 35
|
||||
cool_fan_enabled = =not (support_enable and (extruder_nr == support_infill_extruder_nr))
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 else 60
|
||||
default_material_bed_temperature = =0 if extruders_enabled_count > 1 and (not support_enable or extruder_nr != support_extruder_nr) else 60
|
||||
initial_layer_line_width_factor = 150
|
||||
minimum_support_area = 4
|
||||
retraction_count_max = 5
|
||||
|
|