mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-06 22:47:32 -06:00
Merge branch 'main' into bugfox/bed-shape-orientation
This commit is contained in:
commit
6938d2da7f
58 changed files with 1192 additions and 286 deletions
|
@ -4,4 +4,7 @@ build_*/
|
|||
build/
|
||||
localization/
|
||||
sandboxes/
|
||||
resources/
|
||||
resources/*
|
||||
!resources/web/
|
||||
!resources/dailytip
|
||||
!resources/shaders
|
||||
|
|
4
.github/workflows/build_all.yml
vendored
4
.github/workflows/build_all.yml
vendored
|
@ -49,9 +49,9 @@ jobs:
|
|||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
# Deprecate appimage
|
||||
# Deprecate 20.04appimage
|
||||
# - os: ubuntu-20.04
|
||||
# - os: ubuntu-24.04
|
||||
- os: ubuntu-24.04
|
||||
- os: windows-latest
|
||||
- os: macos-14
|
||||
arch: arm64
|
||||
|
|
4
.github/workflows/build_orca.yml
vendored
4
.github/workflows/build_orca.yml
vendored
|
@ -267,7 +267,7 @@ jobs:
|
|||
chmod +x ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}_${{ env.ver }}.AppImage
|
||||
|
||||
- name: Build orca_custom_preset_tests
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04'
|
||||
if: github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04'
|
||||
working-directory: ${{ github.workspace }}/build/src
|
||||
shell: bash
|
||||
run: |
|
||||
|
@ -307,7 +307,7 @@ jobs:
|
|||
message: "nightly-builds"
|
||||
|
||||
- name: Deploy orca_custom_preset_tests
|
||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-20.04' }}
|
||||
if: ${{ ! env.ACT && github.ref == 'refs/heads/main' && inputs.os == 'ubuntu-24.04' }}
|
||||
uses: WebFreak001/deploy-nightly@v3.2.0
|
||||
with:
|
||||
upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label}
|
||||
|
|
5
deps/TIFF/TIFF.cmake
vendored
5
deps/TIFF/TIFF.cmake
vendored
|
@ -17,7 +17,7 @@ if (APPLE)
|
|||
else()
|
||||
orcaslicer_add_cmake_project(TIFF
|
||||
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
|
||||
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
|
||||
URL_HASH SHA256=17a3e875acece9be40b093361cfef47385d4ef22c995ffbf36b2871f5785f9b8
|
||||
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
|
||||
CMAKE_ARGS
|
||||
-Dlzma:BOOL=OFF
|
||||
|
@ -28,6 +28,3 @@ else()
|
|||
)
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -6,21 +6,11 @@
|
|||
"filament_id": "GFR00",
|
||||
"instantiation": "false",
|
||||
"description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials(https://wiki.fusrock.com).",
|
||||
"filament_notes": "//EN\n1.Be sure to read it carefully before using (https://wiki.fusrock.com).\n2.When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials(https://wiki.fusrock.com).\\n3.Thank you for choosing us FusRock. \n//CN\n1.使用前请务必仔细阅读(https://wiki.fusrock.com)。\n2.打印该耗材时,可能会出现喷嘴堵塞、拉丝、翘边以及层间附着力不足等问题。为了获得更好的打印效果,请参考此维基页面:高温 / 工程材料打印技巧(https://wiki.fusrock.com)。\n3.感谢您选择FusRock。",
|
||||
"activate_air_filtration": [
|
||||
"1"
|
||||
"filament_extruder_variant": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"cool_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"30"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"10"
|
||||
"filament_adhesiveness_category": [
|
||||
"200"
|
||||
],
|
||||
"filament_type": [
|
||||
"ABS-GF"
|
||||
|
@ -28,83 +18,144 @@
|
|||
"filament_vendor": [
|
||||
"FusRock"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"270"
|
||||
"filament_flow_ratio": [
|
||||
"0.92"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"260"
|
||||
"filament_density": [
|
||||
"1.08"
|
||||
],
|
||||
"nozzle_temperature_range_high": [
|
||||
"280"
|
||||
"filament_cost": [
|
||||
"13"
|
||||
],
|
||||
"nozzle_temperature_range_low": [
|
||||
"240"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"25%"
|
||||
"nozzle_temperature_range_high": [
|
||||
"280"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"3"
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"supertack_plate_temp": [
|
||||
"cool_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"supertack_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
"; filament end gcode \n\n"
|
||||
],
|
||||
"eng_plate_temp": [
|
||||
"105"
|
||||
"supertack_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"50"
|
||||
],
|
||||
"filament_adhesiveness_category": [
|
||||
"100"
|
||||
],
|
||||
"filament_cost": [
|
||||
"0"
|
||||
],
|
||||
"filament_density": [
|
||||
"1.05"
|
||||
],
|
||||
"filament_extruder_variant": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.92"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"20"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"0.8"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"eng_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"50"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"0"
|
||||
],
|
||||
"textured_plate_temp": [
|
||||
"hot_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"version": "1.10.0.32"
|
||||
"textured_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"260"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"270"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"18"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"3"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"12"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"30"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"4"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"0"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"enable_overhang_bridge_fan": [
|
||||
"1"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"10%"
|
||||
],
|
||||
"overhang_threshold_participating_cooling": [
|
||||
"100%"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"30"
|
||||
],
|
||||
"pre_start_fan_time": [
|
||||
"0"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"0"
|
||||
],
|
||||
"activate_air_filtration": [
|
||||
"1"
|
||||
],
|
||||
"during_print_exhaust_fan_speed": [
|
||||
"30"
|
||||
],
|
||||
"complete_print_exhaust_fan_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"0.8"
|
||||
],
|
||||
"filament_z_hop": [
|
||||
"0.4"
|
||||
],
|
||||
"filament_z_hop_types": [
|
||||
"Spiral Lift"
|
||||
],
|
||||
"filament_retraction_speed": [
|
||||
"30"
|
||||
],
|
||||
"filament_deretraction_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"2"
|
||||
],
|
||||
"filament_retract_when_changing_layer": [
|
||||
"0"
|
||||
],
|
||||
"filament_wipe": [
|
||||
"0"
|
||||
],
|
||||
"filament_wipe_distance": [
|
||||
"2"
|
||||
],
|
||||
"filament_retract_before_wipe": [
|
||||
"100%"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
"; filament end gcode \n\n"
|
||||
],
|
||||
"filament_notes": "//EN\n1.Be sure to read it carefully before using (https://wiki.fusrock.com).\n2.When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials(https://wiki.fusrock.com).\\n3.Thank you for choosing us FusRock.\n*This setting may not be able to adapt to all models. In some cases, you need to modify and adjust the parameters by yourself to improve the printing effect.\n*FusRock 3D printing filaments are intended for general-purpose printing and have been tested under standard conditions. However, the performance and safety of printed objects are affected by multiple factors, including printing parameters, model design, usage environment, and the specific application.\n*By using FusRock materials, the user acknowledges and agrees to independently evaluate whether the printed parts are suitable for their intended use, and assumes all associated risks.\n*FusRock shall not be held liable for any damage, injury, or loss that may result from the use of printed products made with our materials, including but not limited to structural failure, functional defects, or safety hazards under actual usage conditions.Before applying printed parts in any critical, functional, or commercial context, thorough testing must be conducted. Except for the certifications explicitly stated for specific FusRock materials, our products are not certified for medical, aerospace, or life-support applications.\n//CN\n1.使用前请务必仔细阅读(https://wiki.fusrock.com)。\n2.打印该耗材时,可能会出现喷嘴堵塞、拉丝、翘边以及层间附着力不足等问题。为了获得更好的打印效果,请参考此维基页面:高温 / 工程材料打印技巧(https://wiki.fusrock.com)。\n3.感谢您选择FusRock。\n*此设置不一定能够适配所有模型,存在部分情况下需要您自行修改调整参数来提升打印效果。\n*FusRock 3D打印耗材适用于通用打印用途,已在标准条件下进行测试。然而,打印成品的性能与安全性受多种因素影响,包括打印参数、模型设计、使用环境及实际用途。\n*使用FusRock材料即表示用户已知悉并同意,自行评估打印件是否适用于其具体应用,并承担由此产生的全部风险。\n*FusRock对使用本公司耗材打印的产品在实际应用中可能导致的任何损害、伤害或损失不承担任何责任,包括但不限于结构失效、功能异常或使用环境中的安全隐患。在将打印件应用于关键、功能性或商业性场景前,请务必进行充分测试。除FusRock已标明材料所获得的各项认证资质外,FusRock产品未取得医疗、航天或生命支持系统认证资质。",
|
||||
"impact_strength_z":["5.3"]
|
||||
}
|
||||
|
|
|
@ -367,6 +367,14 @@
|
|||
{
|
||||
"name": "Overture PLA @base",
|
||||
"sub_path": "filament/Overture/Overture PLA @base.json"
|
||||
},
|
||||
{
|
||||
"name": "Overture TPU @base",
|
||||
"sub_path": "filament/Overture/Overture TPU @base.json"
|
||||
},
|
||||
{
|
||||
"name": "Overture ABS Basic @base",
|
||||
"sub_path": "filament/Overture/Overture ABS Basic @base.json"
|
||||
},
|
||||
{
|
||||
"name": "PolyLite PLA @base",
|
||||
|
@ -683,6 +691,14 @@
|
|||
{
|
||||
"name": "Overture PLA @System",
|
||||
"sub_path": "filament/Overture/Overture PLA @System.json"
|
||||
},
|
||||
{
|
||||
"name": "Overture TPU @System",
|
||||
"sub_path": "filament/Overture/Overture TPU @System.json"
|
||||
},
|
||||
{
|
||||
"name": "Overture ABS Basic @System",
|
||||
"sub_path": "filament/Overture/Overture ABS Basic @System.json"
|
||||
},
|
||||
{
|
||||
"name": "PolyLite Dual PLA @System",
|
||||
|
@ -756,6 +772,14 @@
|
|||
"name": "Bambu TPU 95A HF @System",
|
||||
"sub_path": "filament/Bambu/Bambu TPU 95A HF @System.json"
|
||||
},
|
||||
{
|
||||
"name": "FusRock ABS-GF @base",
|
||||
"sub_path": "filament/FusRock/FusRock ABS-GF @base.json"
|
||||
},
|
||||
{
|
||||
"name": "FusRock ABS-GF @System",
|
||||
"sub_path": "filament/FusRock/FusRock ABS-GF @System.json"
|
||||
},
|
||||
{
|
||||
"name": "AliZ PETG-CF @System",
|
||||
"sub_path": "filament/AliZ/AliZ PETG-CF @System.json"
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"type": "filament",
|
||||
"name": "FusRock ABS-GF @System",
|
||||
"inherits": "FusRock ABS-GF @base",
|
||||
"from": "system",
|
||||
"setting_id": "OGFSB50_00",
|
||||
"instantiation": "true",
|
||||
"filament_long_retractions_when_cut": [
|
||||
"1"
|
||||
],
|
||||
"filament_retraction_distances_when_cut": [
|
||||
"18"
|
||||
],
|
||||
"compatible_printers": []
|
||||
}
|
|
@ -0,0 +1,161 @@
|
|||
{
|
||||
"type": "filament",
|
||||
"name": "FusRock ABS-GF @base",
|
||||
"inherits": "fdm_filament_common",
|
||||
"from": "system",
|
||||
"filament_id": "OGFR00",
|
||||
"instantiation": "false",
|
||||
"description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials(https://wiki.fusrock.com).",
|
||||
"filament_extruder_variant": [
|
||||
"Direct Drive Standard"
|
||||
],
|
||||
"filament_adhesiveness_category": [
|
||||
"200"
|
||||
],
|
||||
"filament_type": [
|
||||
"ABS-GF"
|
||||
],
|
||||
"filament_vendor": [
|
||||
"FusRock"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.92"
|
||||
],
|
||||
"filament_density": [
|
||||
"1.08"
|
||||
],
|
||||
"filament_cost": [
|
||||
"13"
|
||||
],
|
||||
"nozzle_temperature_range_low": [
|
||||
"240"
|
||||
],
|
||||
"nozzle_temperature_range_high": [
|
||||
"280"
|
||||
],
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"cool_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"supertack_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"supertack_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"eng_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"105"
|
||||
],
|
||||
"textured_plate_temp": [
|
||||
"105"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"260"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"270"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"18"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"3"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"12"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"30"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"4"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"0"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"enable_overhang_bridge_fan": [
|
||||
"1"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"10%"
|
||||
],
|
||||
"overhang_threshold_participating_cooling": [
|
||||
"100%"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"30"
|
||||
],
|
||||
"pre_start_fan_time": [
|
||||
"0"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"0"
|
||||
],
|
||||
"activate_air_filtration": [
|
||||
"1"
|
||||
],
|
||||
"during_print_exhaust_fan_speed": [
|
||||
"30"
|
||||
],
|
||||
"complete_print_exhaust_fan_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"0.8"
|
||||
],
|
||||
"filament_z_hop": [
|
||||
"0.4"
|
||||
],
|
||||
"filament_z_hop_types": [
|
||||
"Spiral Lift"
|
||||
],
|
||||
"filament_retraction_speed": [
|
||||
"30"
|
||||
],
|
||||
"filament_deretraction_speed": [
|
||||
"0"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"2"
|
||||
],
|
||||
"filament_retract_when_changing_layer": [
|
||||
"0"
|
||||
],
|
||||
"filament_wipe": [
|
||||
"0"
|
||||
],
|
||||
"filament_wipe_distance": [
|
||||
"2"
|
||||
],
|
||||
"filament_retract_before_wipe": [
|
||||
"100%"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
"; filament end gcode \n\n"
|
||||
],
|
||||
"filament_notes": "//EN\n1.Be sure to read it carefully before using (https://wiki.fusrock.com).\n2.When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials(https://wiki.fusrock.com).\\n3.Thank you for choosing us FusRock.\n*This setting may not be able to adapt to all models. In some cases, you need to modify and adjust the parameters by yourself to improve the printing effect.\n*FusRock 3D printing filaments are intended for general-purpose printing and have been tested under standard conditions. However, the performance and safety of printed objects are affected by multiple factors, including printing parameters, model design, usage environment, and the specific application.\n*By using FusRock materials, the user acknowledges and agrees to independently evaluate whether the printed parts are suitable for their intended use, and assumes all associated risks.\n*FusRock shall not be held liable for any damage, injury, or loss that may result from the use of printed products made with our materials, including but not limited to structural failure, functional defects, or safety hazards under actual usage conditions.Before applying printed parts in any critical, functional, or commercial context, thorough testing must be conducted. Except for the certifications explicitly stated for specific FusRock materials, our products are not certified for medical, aerospace, or life-support applications.\n//CN\n1.使用前请务必仔细阅读(https://wiki.fusrock.com)。\n2.打印该耗材时,可能会出现喷嘴堵塞、拉丝、翘边以及层间附着力不足等问题。为了获得更好的打印效果,请参考此维基页面:高温 / 工程材料打印技巧(https://wiki.fusrock.com)。\n3.感谢您选择FusRock。\n*此设置不一定能够适配所有模型,存在部分情况下需要您自行修改调整参数来提升打印效果。\n*FusRock 3D打印耗材适用于通用打印用途,已在标准条件下进行测试。然而,打印成品的性能与安全性受多种因素影响,包括打印参数、模型设计、使用环境及实际用途。\n*使用FusRock材料即表示用户已知悉并同意,自行评估打印件是否适用于其具体应用,并承担由此产生的全部风险。\n*FusRock对使用本公司耗材打印的产品在实际应用中可能导致的任何损害、伤害或损失不承担任何责任,包括但不限于结构失效、功能异常或使用环境中的安全隐患。在将打印件应用于关键、功能性或商业性场景前,请务必进行充分测试。除FusRock已标明材料所获得的各项认证资质外,FusRock产品未取得医疗、航天或生命支持系统认证资质。",
|
||||
"impact_strength_z":["5.3"]
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"type": "filament",
|
||||
"name": "Overture ABS Basic @System",
|
||||
"inherits": "Overture ABS Basic @base",
|
||||
"from": "system",
|
||||
"setting_id": "OVABS08",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"16"
|
||||
],
|
||||
"filament_long_retractions_when_cut": ["nil"],
|
||||
"filament_retraction_distances_when_cut": ["nil"],
|
||||
"compatible_printers": []
|
||||
}
|
|
@ -0,0 +1,195 @@
|
|||
{
|
||||
"type": "filament",
|
||||
"name": "Overture ABS Basic @base",
|
||||
"inherits": "fdm_filament_abs",
|
||||
"from": "system",
|
||||
"filament_id": "OVTABS08",
|
||||
"instantiation": "false",
|
||||
"description": "Overture ABS settings from https://overture3d.com/.",
|
||||
"activate_air_filtration": [
|
||||
"1"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"0"
|
||||
],
|
||||
"chamber_temperatures": [
|
||||
"0"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"3"
|
||||
],
|
||||
"compatible_printers": [
|
||||
""
|
||||
],
|
||||
"complete_print_exhaust_fan_speed": [
|
||||
"70"
|
||||
],
|
||||
"cool_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"default_filament_colour": [
|
||||
""
|
||||
],
|
||||
"during_print_exhaust_fan_speed": [
|
||||
"70"
|
||||
],
|
||||
"enable_overhang_bridge_fan": [
|
||||
"1"
|
||||
],
|
||||
"enable_pressure_advance": [
|
||||
"0"
|
||||
],
|
||||
"eng_plate_temp": [
|
||||
"90"
|
||||
],
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"90"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"38"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"50"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"10"
|
||||
],
|
||||
"filament_cost": [
|
||||
"0"
|
||||
],
|
||||
"filament_density": [
|
||||
"1.15"
|
||||
],
|
||||
"filament_deretraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_diameter": [
|
||||
"1.75"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
"; filament end gcode \nM106 P3 S0\n"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.95"
|
||||
],
|
||||
"filament_is_support": [
|
||||
"0"
|
||||
],
|
||||
"filament_long_retractions_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_max_volumetric_speed": [
|
||||
"16"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"15"
|
||||
],
|
||||
"filament_notes": "",
|
||||
"filament_retract_before_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_restart_extra": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_when_changing_layer": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_distances_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_settings_id": [
|
||||
"OVERTURE ABS Basic"
|
||||
],
|
||||
"filament_soluble": [
|
||||
"0"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; Filament gcode\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||
],
|
||||
"filament_type": [
|
||||
"ABS"
|
||||
],
|
||||
"filament_vendor": [
|
||||
"OVERTURE"
|
||||
],
|
||||
"filament_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_wipe_distance": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop_types": [
|
||||
"nil"
|
||||
],
|
||||
"full_fan_speed_layer": [
|
||||
"0"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"90"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"90"
|
||||
],
|
||||
"is_custom_defined": "0",
|
||||
"nozzle_temperature": [
|
||||
"260"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"260"
|
||||
],
|
||||
"nozzle_temperature_range_high": [
|
||||
"265"
|
||||
],
|
||||
"nozzle_temperature_range_low": [
|
||||
"245"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"95%"
|
||||
],
|
||||
"pressure_advance": [
|
||||
"0.02"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"1"
|
||||
],
|
||||
"required_nozzle_HRC": [
|
||||
"3"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"2"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"temperature_vitrification": [
|
||||
"103"
|
||||
],
|
||||
"textured_plate_temp": [
|
||||
"90"
|
||||
],
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"90"
|
||||
],
|
||||
"version": "1.9.0.14"
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"type": "filament",
|
||||
"name": "Overture TPU @System",
|
||||
"inherits": "Overture TPU @base",
|
||||
"from": "system",
|
||||
"setting_id": "OFOVT08",
|
||||
"instantiation": "true",
|
||||
"filament_max_volumetric_speed": [
|
||||
"4"
|
||||
],
|
||||
"filament_long_retractions_when_cut": ["0"],
|
||||
"filament_retraction_distances_when_cut": ["0"],
|
||||
"compatible_printers": []
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
{
|
||||
"type": "filament",
|
||||
"name": "Overture TPU @base",
|
||||
"inherits": "fdm_filament_tpu",
|
||||
"from": "system",
|
||||
"filament_id": "OGFOVT08",
|
||||
"instantiation": "false",
|
||||
"description": "Overture TPU settings from https://overture3d.com/.",
|
||||
"activate_air_filtration": [
|
||||
"0"
|
||||
],
|
||||
"additional_cooling_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"chamber_temperatures": [
|
||||
"0"
|
||||
],
|
||||
"close_fan_the_first_x_layers": [
|
||||
"3"
|
||||
],
|
||||
"complete_print_exhaust_fan_speed": [
|
||||
"70"
|
||||
],
|
||||
"cool_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"cool_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"default_filament_colour": [
|
||||
""
|
||||
],
|
||||
"during_print_exhaust_fan_speed": [
|
||||
"70"
|
||||
],
|
||||
"enable_overhang_bridge_fan": [
|
||||
"1"
|
||||
],
|
||||
"enable_pressure_advance": [
|
||||
"0"
|
||||
],
|
||||
"eng_plate_temp": [
|
||||
"0"
|
||||
],
|
||||
"eng_plate_temp_initial_layer": [
|
||||
"0"
|
||||
],
|
||||
"fan_cooling_layer_time": [
|
||||
"120"
|
||||
],
|
||||
"fan_max_speed": [
|
||||
"100"
|
||||
],
|
||||
"fan_min_speed": [
|
||||
"100"
|
||||
],
|
||||
"filament_cost": [
|
||||
"0"
|
||||
],
|
||||
"filament_density": [
|
||||
"1.18"
|
||||
],
|
||||
"filament_deretraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_diameter": [
|
||||
"1.75"
|
||||
],
|
||||
"filament_end_gcode": [
|
||||
"; filament end gcode \nM106 P3 S0\n"
|
||||
],
|
||||
"filament_flow_ratio": [
|
||||
"0.95"
|
||||
],
|
||||
"filament_is_support": [
|
||||
"0"
|
||||
],
|
||||
"filament_long_retractions_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_minimal_purge_on_wipe_tower": [
|
||||
"15"
|
||||
],
|
||||
"filament_notes": "",
|
||||
"filament_retract_before_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_restart_extra": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retract_when_changing_layer": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_distances_when_cut": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_length": [
|
||||
"0.4"
|
||||
],
|
||||
"filament_retraction_minimum_travel": [
|
||||
"nil"
|
||||
],
|
||||
"filament_retraction_speed": [
|
||||
"nil"
|
||||
],
|
||||
"filament_soluble": [
|
||||
"0"
|
||||
],
|
||||
"filament_start_gcode": [
|
||||
"; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}"
|
||||
],
|
||||
"filament_type": [
|
||||
"TPU"
|
||||
],
|
||||
"filament_vendor": [
|
||||
"OVERTURE"
|
||||
],
|
||||
"filament_wipe": [
|
||||
"nil"
|
||||
],
|
||||
"filament_wipe_distance": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop": [
|
||||
"nil"
|
||||
],
|
||||
"filament_z_hop_types": [
|
||||
"nil"
|
||||
],
|
||||
"full_fan_speed_layer": [
|
||||
"0"
|
||||
],
|
||||
"hot_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"hot_plate_temp_initial_layer": [
|
||||
"35"
|
||||
],
|
||||
"nozzle_temperature": [
|
||||
"230"
|
||||
],
|
||||
"nozzle_temperature_initial_layer": [
|
||||
"230"
|
||||
],
|
||||
"nozzle_temperature_range_high": [
|
||||
"230"
|
||||
],
|
||||
"nozzle_temperature_range_low": [
|
||||
"210"
|
||||
],
|
||||
"overhang_fan_speed": [
|
||||
"100"
|
||||
],
|
||||
"overhang_fan_threshold": [
|
||||
"95%"
|
||||
],
|
||||
"pressure_advance": [
|
||||
"0.02"
|
||||
],
|
||||
"reduce_fan_stop_start_freq": [
|
||||
"1"
|
||||
],
|
||||
"required_nozzle_HRC": [
|
||||
"3"
|
||||
],
|
||||
"slow_down_for_layer_cooling": [
|
||||
"1"
|
||||
],
|
||||
"slow_down_layer_time": [
|
||||
"120"
|
||||
],
|
||||
"slow_down_min_speed": [
|
||||
"20"
|
||||
],
|
||||
"temperature_vitrification": [
|
||||
"0"
|
||||
],
|
||||
"textured_plate_temp": [
|
||||
"35"
|
||||
],
|
||||
"textured_plate_temp_initial_layer": [
|
||||
"35"
|
||||
]
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 20 KiB |
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 8.3 KiB |
|
@ -1,7 +1,7 @@
|
|||
|
||||
#Content
|
||||
{
|
||||
overflow-y:auto;
|
||||
padding: 32px; /* ORCA Specify & Reduce horizontal paddings to fit 4 items per row */
|
||||
}
|
||||
|
||||
.BlockBanner
|
||||
|
@ -21,7 +21,11 @@
|
|||
align-items: center;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
margin-right: 10px;
|
||||
margin-right: 0px; /* ORCA align buttons with end of horizontal separator/line */
|
||||
}
|
||||
|
||||
.BannerBtns>.SmallBtn_Green.trans{
|
||||
margin-right: 7px; /* ORCA adds a small gap between buttons */
|
||||
}
|
||||
|
||||
.BlockBanner a
|
||||
|
@ -36,7 +40,7 @@
|
|||
|
||||
.PrinterArea
|
||||
{
|
||||
padding: 10px;
|
||||
padding: 10px 0px; /* ORCA Reduce horizontal paddings to fit 4 items per row */
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
@ -57,7 +61,7 @@
|
|||
.PName
|
||||
{
|
||||
font-weight: 700;
|
||||
text-align: left;
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
.pNozzel
|
||||
|
@ -66,7 +70,7 @@
|
|||
align-items: center;
|
||||
justify-content:flex-start;
|
||||
color: #5A5A5A;
|
||||
padding-left: 10px;
|
||||
padding-left: 0px; /* ORCA Align checkboxes with with model text */
|
||||
}
|
||||
|
||||
.pNozzel input
|
||||
|
@ -129,26 +133,47 @@
|
|||
width: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.searchTerm {
|
||||
.searchTerm {
|
||||
width: 100%;
|
||||
border: 3px solid #009688;
|
||||
border: 1px solid #DBDBDB; /* ORCA Searchbox > match border style */
|
||||
/*border-right: none;*/
|
||||
padding: 5px;
|
||||
height: 20px;
|
||||
padding-left:32px;
|
||||
height: 20px; /* ORCA match height */
|
||||
line-height: 20px; /* ORCA center text vertically */
|
||||
border-radius: 5px 5px 5px 5px;
|
||||
outline: none;
|
||||
color: #9DBFAF;
|
||||
}
|
||||
}
|
||||
@media (prefers-color-scheme: dark) { /* ORCA Searchbox > add dark mode support */
|
||||
.searchTerm {border: 1px solid #4A4A51;}
|
||||
}
|
||||
|
||||
.searchTerm:focus{
|
||||
color: #009688;
|
||||
}
|
||||
.searchTerm:focus{
|
||||
color: #363636; /* ORCA Searchbox > use normal text color */
|
||||
border-color:#009688; /* ORCA Searchbox > highlight border color when focused. like on normal UI */
|
||||
}
|
||||
@media (prefers-color-scheme: dark) { /* ORCA Searchbox > add dark mode support */
|
||||
.searchTerm:focus{color: #FFFFFF}
|
||||
}
|
||||
|
||||
/*Resize the wrap to see the search bar change!*/
|
||||
.wrap{
|
||||
#search-icon{ /* ORCA */
|
||||
position:absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left:8px;
|
||||
margin:0px auto;
|
||||
fill:#7C8282
|
||||
}
|
||||
@media (prefers-color-scheme: dark) { /* ORCA Searchbox > add dark mode support */
|
||||
#search-icon{fill:#949494}
|
||||
}
|
||||
|
||||
/*Resize the wrap to see the search bar change!*/
|
||||
.wrap{
|
||||
width: 30%;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 42px;
|
||||
}
|
||||
padding-left: 32px; /* ORCA Align with content */
|
||||
}
|
||||
|
|
|
@ -98,7 +98,8 @@ function HandleModelList( pVal )
|
|||
for(let m=0;m<NozzleArray.length;m++)
|
||||
{
|
||||
let nNozzel=NozzleArray[m];
|
||||
HtmlNozzel += '<div class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor +'" onclick="CheckBoxOnclick(this)" /><span>'+nNozzel+'</span><span class="trans" tid="t13">mm nozzle</span></div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
HtmlNozzel += '<label class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor +'" onclick="CheckBoxOnclick(this)" /><span>'+nNozzel+'</span><span class="trans" tid="t13">mm nozzle</span></label>';
|
||||
}
|
||||
|
||||
let CoverImage=OneModel['cover'];
|
||||
|
@ -261,7 +262,8 @@ function FilterModelList(keyword) {
|
|||
let HtmlNozzel = '';
|
||||
for (let m = 0; m < NozzleArray.length; m++) {
|
||||
let nNozzel = NozzleArray[m];
|
||||
HtmlNozzel += '<div class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor + '" onclick="CheckBoxOnclick(this)" /><span>' + nNozzel + '</span><span class="trans" tid="t13">mm nozzle</span></div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
HtmlNozzel += '<label class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor + '" onclick="CheckBoxOnclick(this)" /><span>' + nNozzel + '</span><span class="trans" tid="t13">mm nozzle</span></label>';
|
||||
}
|
||||
|
||||
let CoverImage = OneModel['cover'];
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
<div class="wrap">
|
||||
<div class="search">
|
||||
<input type="text" class="searchTerm" placeholder="Device keyword" oninput="textInput(this)">
|
||||
<svg id="search-icon" width="16px" height="16px"> <!-- ORCA -->
|
||||
<path d="M6.5,2A4.505,4.505,0,0,0,2,6.5a.5.5,0,0,0,1,0A3.5,3.5,0,0,1,6.5,3a.5.5,0,0,0,0-1Z"/>
|
||||
<path d="M14.854,14.146l-3.423-3.422a6.518,6.518,0,1,0-.707.707l3.422,3.423a.5.5,0,0,0,.708-.708ZM1,6.5A5.5,5.5,0,1,1,6.5,12,5.507,5.507,0,0,1,1,6.5Z"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Content" class="ZScrol">
|
||||
|
|
|
@ -60,7 +60,7 @@ input
|
|||
|
||||
.MItem
|
||||
{
|
||||
min-width: 220px;
|
||||
min-width: 180px; /* ORCA Filtered items > slightly reduce min width to fit more items*/
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
|
|
|
@ -95,8 +95,8 @@ function SortUI()
|
|||
for(let n=0;n<nMode;n++)
|
||||
{
|
||||
let sModel=ModelList[n];
|
||||
|
||||
HtmlMode+='<div><input type="checkbox" mode="'+sModel['model']+'" nozzle="'+sModel['nozzle_selected']+'" onChange="MachineClick()" />'+sModel['model']+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
HtmlMode+='<label><input type="checkbox" mode="'+sModel['model']+'" nozzle="'+sModel['nozzle_selected']+'" onChange="MachineClick()" />'+sModel['model']+'</label>';
|
||||
}
|
||||
|
||||
$('#MachineList .CValues').append(HtmlMode);
|
||||
|
@ -172,7 +172,8 @@ function SortUI()
|
|||
let LowType=fType.toLowerCase();
|
||||
if(!TypeHtmlArray.hasOwnProperty(LowType))
|
||||
{
|
||||
let HtmlType='<div><input type="checkbox" filatype="'+fType+'" onChange="FilaClick()" />'+fType+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
let HtmlType='<label><input type="checkbox" filatype="'+fType+'" onChange="FilaClick()" />'+fType+'</label>';
|
||||
|
||||
TypeHtmlArray[LowType]=HtmlType;
|
||||
}
|
||||
|
@ -181,7 +182,8 @@ function SortUI()
|
|||
let lowVendor=fVendor.toLowerCase();
|
||||
if(!VendorHtmlArray.hasOwnProperty(lowVendor))
|
||||
{
|
||||
let HtmlVendor='<div><input type="checkbox" vendor="'+fVendor+'" onChange="VendorClick()" />'+fVendor+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
let HtmlVendor='<label><input type="checkbox" vendor="'+fVendor+'" onChange="VendorClick()" />'+fVendor+'</label>';
|
||||
|
||||
VendorHtmlArray[lowVendor]=HtmlVendor;
|
||||
}
|
||||
|
@ -190,7 +192,8 @@ function SortUI()
|
|||
let pFila=$("#ItemBlockArea input[vendor='"+fVendor+"'][filatype='"+fType+"'][name='"+fShortName+"']");
|
||||
if(pFila.length==0)
|
||||
{
|
||||
let HtmlFila='<div class="MItem"><input type="checkbox" vendor="'+fVendor+'" filatype="'+fType+'" filalist="'+fWholeName+';'+'" model="'+fModel+'" name="'+fShortName+'" />'+fShortName+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
let HtmlFila='<label class="MItem"><input type="checkbox" vendor="'+fVendor+'" filatype="'+fType+'" filalist="'+fWholeName+';'+'" model="'+fModel+'" name="'+fShortName+'" />'+fShortName+'</label>';
|
||||
|
||||
$("#ItemBlockArea").append(HtmlFila);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<div id="MachineList" class="ChooseBlock">
|
||||
<div class="CName"><span class="trans" tid="t15">printer</span>:</div>
|
||||
<div class="CValues">
|
||||
<div><input type="checkbox" mode="all" onClick="ChooseAllMachine()" /><span class="trans" tid="t11">all</span></div>
|
||||
<label><input type="checkbox" mode="all" onClick="ChooseAllMachine()" /><span class="trans" tid="t11">all</span></label>
|
||||
<!-- <div><input type="checkbox" mode="-normal" onChange="SortFilament()" />Bambulab BBL-3DP-001-V4-normal</div>
|
||||
<div><input type="checkbox" />Bambulab BBL-3DP-001-V5-normal</div>
|
||||
<div><input type="checkbox" />Bambulab BBL-3DP-001-V4-normal</div>
|
||||
|
@ -48,7 +48,7 @@
|
|||
<div id="FilatypeList" class="ChooseBlock">
|
||||
<div class="CName"><span class="trans" tid="t16">filament type</span>:</div>
|
||||
<div class="CValues">
|
||||
<div><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllFilament()" /><span class="trans" tid="t11">all</span></div>
|
||||
<label><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllFilament()" /><span class="trans" tid="t11">all</span></label>
|
||||
<!-- <div><input type="checkbox" filatype="PLA" />PLA</div>
|
||||
<div><input type="checkbox" />PET</div>
|
||||
<div><input type="checkbox" />ABS</div>
|
||||
|
@ -67,7 +67,7 @@
|
|||
<div id="VendorList" class="ChooseBlock">
|
||||
<div class="CName"><span class="trans" tid="t17">vendor</span>:</div>
|
||||
<div class="CValues">
|
||||
<div><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllVendor()" /><span class="trans" tid="t11">all</span></div>
|
||||
<label><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllVendor()" /><span class="trans" tid="t11">all</span></label>
|
||||
<!-- <div><input type="checkbox" vendor="Unknow" />Unknown</div>
|
||||
<div><input type="checkbox" />BBL</div>
|
||||
<div><input type="checkbox" />eSUN</div>
|
||||
|
|
|
@ -61,7 +61,7 @@ input
|
|||
|
||||
.MItem
|
||||
{
|
||||
min-width: 220px;
|
||||
min-width: 180px; /* ORCA Filtered items > slightly reduce min width to fit more items*/
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
|
|
|
@ -68,8 +68,8 @@ function SortUI()
|
|||
for(let n=0;n<nMode;n++)
|
||||
{
|
||||
let sModel=ModelList[n];
|
||||
|
||||
HtmlMode+='<div><input type="checkbox" mode="'+sModel['model']+'" nozzle="'+sModel['nozzle_selected']+'" onChange="MachineClick()" />'+sModel['model']+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
HtmlMode+='<label><input type="checkbox" mode="'+sModel['model']+'" nozzle="'+sModel['nozzle_selected']+'" onChange="MachineClick()" /><span>'+sModel['model']+'</span></label>';
|
||||
}
|
||||
|
||||
$('#MachineList .CValues').append(HtmlMode);
|
||||
|
@ -135,7 +135,8 @@ function SortUI()
|
|||
let LowType=fType.toLowerCase();
|
||||
if(!TypeHtmlArray.hasOwnProperty(LowType))
|
||||
{
|
||||
let HtmlType='<div><input type="checkbox" filatype="'+fType+'" onChange="FilaClick()" />'+fType+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
let HtmlType='<label><input type="checkbox" filatype="'+fType+'" onChange="FilaClick()" /><span>'+fType+'</span></label>';
|
||||
|
||||
TypeHtmlArray[LowType]=HtmlType;
|
||||
}
|
||||
|
@ -144,7 +145,8 @@ function SortUI()
|
|||
let lowVendor=fVendor.toLowerCase();
|
||||
if(!VendorHtmlArray.hasOwnProperty(lowVendor))
|
||||
{
|
||||
let HtmlVendor='<div><input type="checkbox" vendor="'+fVendor+'" onChange="VendorClick()" />'+fVendor+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
let HtmlVendor='<label><input type="checkbox" vendor="'+fVendor+'" onChange="VendorClick()" /><span>'+fVendor+'</span></label>';
|
||||
|
||||
VendorHtmlArray[lowVendor]=HtmlVendor;
|
||||
}
|
||||
|
@ -153,7 +155,8 @@ function SortUI()
|
|||
let pFila=$("#ItemBlockArea input[vendor='"+fVendor+"'][filatype='"+fType+"'][name='"+fShortName+"']");
|
||||
if(pFila.length==0)
|
||||
{
|
||||
let HtmlFila='<div class="MItem"><input type="checkbox" vendor="'+fVendor+'" filatype="'+fType+'" filalist="'+fWholeName+';'+'" model="'+fModel+'" name="'+fShortName+'" />'+fShortName+'</div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
let HtmlFila='<label class="MItem"><input type="checkbox" vendor="'+fVendor+'" filatype="'+fType+'" filalist="'+fWholeName+';'+'" model="'+fModel+'" name="'+fShortName+'" /><span>'+fShortName+'</span></label>';
|
||||
|
||||
$("#ItemBlockArea").append(HtmlFila);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<div id="MachineList" class="ChooseBlock">
|
||||
<div class="CName"><span class="trans" tid="t15">printer</span>:</div>
|
||||
<div class="CValues">
|
||||
<div><input type="checkbox" mode="all" onClick="ChooseAllMachine()" /><span class="trans" tid="t11">all</span></div>
|
||||
<label><input type="checkbox" mode="all" onClick="ChooseAllMachine()" /><span class="trans" tid="t11">all</span></label>
|
||||
<!-- <div><input type="checkbox" mode="-normal" onChange="SortFilament()" />Bambulab BBL-3DP-001-V4-normal</div>
|
||||
<div><input type="checkbox" />Bambulab BBL-3DP-001-V5-normal</div>
|
||||
<div><input type="checkbox" />Bambulab BBL-3DP-001-V4-normal</div>
|
||||
|
@ -40,7 +40,7 @@
|
|||
<div id="FilatypeList" class="ChooseBlock">
|
||||
<div class="CName"><span class="trans" tid="t16">filament type</span>:</div>
|
||||
<div class="CValues">
|
||||
<div><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllFilament()" /><span class="trans" tid="t11">all</span></div>
|
||||
<label><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllFilament()" /><span class="trans" tid="t11">all</span></label>
|
||||
<!-- <div><input type="checkbox" filatype="PLA" />PLA</div>
|
||||
<div><input type="checkbox" />PET</div>
|
||||
<div><input type="checkbox" />ABS</div>
|
||||
|
@ -53,7 +53,7 @@
|
|||
<div id="VendorList" class="ChooseBlock">
|
||||
<div class="CName"><span class="trans" tid="t17">vendor</span>:</div>
|
||||
<div class="CValues">
|
||||
<div><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllVendor()" /><span class="trans" tid="t11">all</span></div>
|
||||
<label><input type="checkbox" class="trans" tid="t11" onClick="ChooseAllVendor()" /><span class="trans" tid="t11">all</span></label>
|
||||
<!-- <div><input type="checkbox" vendor="Unknow" />Unknown</div>
|
||||
<div><input type="checkbox" />BBL</div>
|
||||
<div><input type="checkbox" />eSUN</div>
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#Content
|
||||
{
|
||||
overflow-y:auto;
|
||||
padding: 32px; /* ORCA Specify & Reduce horizontal paddings to fit 4 items per row */
|
||||
}
|
||||
|
||||
.BlockBanner
|
||||
|
@ -20,7 +21,11 @@
|
|||
align-items: center;
|
||||
height: 40px;
|
||||
text-align: center;
|
||||
margin-right: 10px;
|
||||
margin-right: 0px; /* ORCA align buttons with end of horizontal separator/line */
|
||||
}
|
||||
|
||||
.BannerBtns>.SmallBtn_Green.trans{
|
||||
margin-right: 7px; /* ORCA adds a small gap between buttons */
|
||||
}
|
||||
|
||||
/*.Banner-Btn
|
||||
|
@ -59,7 +64,7 @@
|
|||
|
||||
.PrinterArea
|
||||
{
|
||||
padding: 10px;
|
||||
padding: 10px 0px; /* ORCA Reduce horizontal paddings to fit 4 items per row */
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
@ -89,7 +94,7 @@
|
|||
align-items: center;
|
||||
justify-content:flex-start;
|
||||
color: #5A5A5A;
|
||||
padding-left: 10px;
|
||||
padding-left: 0px; /* ORCA Align checkboxes with with model text */
|
||||
}
|
||||
|
||||
.pNozzel input
|
||||
|
@ -152,26 +157,47 @@
|
|||
width: 100%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.searchTerm {
|
||||
.searchTerm {
|
||||
width: 100%;
|
||||
border: 3px solid #009688;
|
||||
border: 1px solid #DBDBDB; /* ORCA Searchbox > match border style */
|
||||
/*border-right: none;*/
|
||||
padding: 5px;
|
||||
height: 20px;
|
||||
padding-left:32px;
|
||||
height: 20px; /* ORCA match height */
|
||||
line-height: 20px; /* ORCA center text vertically */
|
||||
border-radius: 5px 5px 5px 5px;
|
||||
outline: none;
|
||||
color: #9DBFAF;
|
||||
}
|
||||
}
|
||||
@media (prefers-color-scheme: dark) { /* ORCA Searchbox > add dark mode support */
|
||||
.searchTerm {border: 1px solid #4A4A51;}
|
||||
}
|
||||
|
||||
.searchTerm:focus{
|
||||
color: #009688;
|
||||
}
|
||||
.searchTerm:focus{
|
||||
color: #363636; /* ORCA Searchbox > use normal text color */
|
||||
border-color:#009688; /* ORCA Searchbox > highlight border color when focused. like on normal UI */
|
||||
}
|
||||
@media (prefers-color-scheme: dark) { /* ORCA Searchbox > add dark mode support */
|
||||
.searchTerm:focus{color: #FFFFFF}
|
||||
}
|
||||
|
||||
/*Resize the wrap to see the search bar change!*/
|
||||
.wrap{
|
||||
#search-icon{ /* ORCA */
|
||||
position:absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left:8px;
|
||||
margin:0px auto;
|
||||
fill:#7C8282
|
||||
}
|
||||
@media (prefers-color-scheme: dark) { /* ORCA Searchbox > add dark mode support */
|
||||
#search-icon{fill:#949494}
|
||||
}
|
||||
|
||||
/*Resize the wrap to see the search bar change!*/
|
||||
.wrap{
|
||||
width: 30%;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 42px;
|
||||
}
|
||||
padding-left: 32px; /* ORCA Align with content */
|
||||
}
|
||||
|
|
|
@ -98,7 +98,8 @@ function HandleModelList( pVal )
|
|||
for(let m=0;m<NozzleArray.length;m++)
|
||||
{
|
||||
let nNozzel=NozzleArray[m];
|
||||
HtmlNozzel += '<div class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor +'" onclick="CheckBoxOnclick(this)" /><span>'+nNozzel+'</span><span class="trans" tid="t13">mm nozzle</span></div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
HtmlNozzel += '<label class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor +'" onclick="CheckBoxOnclick(this)" /><span>'+nNozzel+'</span><span class="trans" tid="t13">mm nozzle</span></label>';
|
||||
}
|
||||
|
||||
let CoverImage=OneModel['cover'];
|
||||
|
@ -261,7 +262,8 @@ function FilterModelList(keyword) {
|
|||
let HtmlNozzel = '';
|
||||
for (let m = 0; m < NozzleArray.length; m++) {
|
||||
let nNozzel = NozzleArray[m];
|
||||
HtmlNozzel += '<div class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor + '" onclick="CheckBoxOnclick(this)" /><span>' + nNozzel + '</span><span class="trans" tid="t13">mm nozzle</span></div>';
|
||||
/* ORCA use label tag to allow checkbox to toggle when user ckicked to text */
|
||||
HtmlNozzel += '<label class="pNozzel TextS2"><input type="checkbox" model="' + OneModel['model'] + '" nozzel="' + nNozzel + '" vendor="' + strVendor + '" onclick="CheckBoxOnclick(this)" /><span>' + nNozzel + '</span><span class="trans" tid="t13">mm nozzle</span></label>';
|
||||
}
|
||||
|
||||
let CoverImage = OneModel['cover'];
|
||||
|
|
|
@ -22,6 +22,10 @@
|
|||
<div class="wrap">
|
||||
<div class="search">
|
||||
<input type="text" class="searchTerm" placeholder="Device keyword" oninput="textInput(this)">
|
||||
<svg id="search-icon" width="16px" height="16px"> <!-- ORCA -->
|
||||
<path d="M6.5,2A4.505,4.505,0,0,0,2,6.5a.5.5,0,0,0,1,0A3.5,3.5,0,0,1,6.5,3a.5.5,0,0,0,0-1Z"/>
|
||||
<path d="M14.854,14.146l-3.423-3.422a6.518,6.518,0,1,0-.707.707l3.422,3.423a.5.5,0,0,0,.708-.708ZM1,6.5A5.5,5.5,0,1,1,6.5,12,5.507,5.507,0,0,1,1,6.5Z"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Content" class="ZScrol"s>
|
||||
|
|
|
@ -26,10 +26,10 @@
|
|||
</div>
|
||||
<br/>
|
||||
|
||||
<div>
|
||||
<label> <!-- ORCA use label tag to allow checkbox to toggle when user clicked to text -->
|
||||
<input id="ChoosePrivacy" type="checkbox" onClick="SendPrivacySelect()" onChange="SendPrivacySelect()" />
|
||||
<span class="trans TextS1" tid="t7">Allow sending anonymous data</span>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div id="AcceptArea">
|
||||
<div class="GrayBtn trans" tid="t8" id="PreBtn" onclick="window.open('../11/index.html','_self')">Back</div>
|
||||
|
|
|
@ -25,10 +25,10 @@
|
|||
</div>
|
||||
<br/>
|
||||
|
||||
<div>
|
||||
<label><!-- ORCA use label tag to allow checkbox to toggle when user clicked to text -->
|
||||
<input id="ChoosePrivacy" type="checkbox" onClick="SendPrivacySelect()" onChange="SendPrivacySelect()" />
|
||||
<span class="trans" tid="t7">Allow sending anonymous data</span>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div id="AcceptArea">
|
||||
<div class="GrayBtn trans" tid="t8" id="PreBtn" onclick="window.open('../11/index.html','_self')">Back</div>
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
margin-top:10mm;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
/* ORCA brokes shape of custom css checkbox
|
||||
#StealthMode
|
||||
{
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
*/
|
||||
#RestartText
|
||||
{
|
||||
padding-left:30px;
|
||||
|
|
|
@ -25,8 +25,8 @@
|
|||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="CheckArea"><input id="StealthMode" onClick="SendStealthModeCheck()" type="checkbox"><a tid="orca5" class="trans TextS1">Enable Stealth Mode.</a></div>
|
||||
<!-- ORCA use label tag to allow checkbox to toggle when user clicked to text -->
|
||||
<label id="CheckArea"><input id="StealthMode" onClick="SendStealthModeCheck()" type="checkbox"><a tid="orca5" class="trans TextS1">Enable Stealth Mode.</a></label>
|
||||
<div id="RestartText" tid="t70" class="trans" ></div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -16,11 +16,12 @@
|
|||
margin-top:10mm;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
/* ORCA brokes shape of custom css checkbox
|
||||
#InstallCheck
|
||||
{
|
||||
width: 30px;
|
||||
}
|
||||
*/
|
||||
|
||||
#RestartText
|
||||
{
|
||||
|
|
|
@ -31,8 +31,8 @@
|
|||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="CheckArea"><input id="InstallCheck" onClick="SendInstallPluginCheck()" type="checkbox"><a tid="t69" class="trans TextS1">Install Bambu Network Plug-in. </a></div>
|
||||
<!-- ORCA use label tag to allow checkbox to toggle when user clicked to text -->
|
||||
<label id="CheckArea"><input id="InstallCheck" onClick="SendInstallPluginCheck()" type="checkbox"><a tid="t69" class="trans TextS1">Install Bambu Network Plug-in. </a></label>
|
||||
<div id="RestartText" tid="t70" class="trans" ></div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -133,16 +133,17 @@ body
|
|||
padding: 3mm 9mm;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
border: 1px solid #575757;
|
||||
/* border: 1px solid #575757; */ /* ORCA match button style */
|
||||
border-radius: 18px;
|
||||
color: #575757;
|
||||
background-color: #D9D9D9;
|
||||
color: #000; /* ORCA match button style */
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.GrayBtn:hover
|
||||
{
|
||||
background-color:#E8E8E8;
|
||||
background-color:#CCCCCC; /* ORCA match button style */
|
||||
}
|
||||
|
||||
.SmallBtn
|
||||
|
@ -189,6 +190,50 @@ body
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*---Checkboxes ORCA ---*/
|
||||
label:has(input[type="checkbox"]){
|
||||
margin:0;
|
||||
padding: 0;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
label:has(input[type="checkbox"])>span{
|
||||
vertical-align: middle;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
background-color:#FFFFFF;
|
||||
margin:0;
|
||||
margin-right: 6px;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
border: 0.1em solid #DBDBDB;
|
||||
border-radius: 0.15em;
|
||||
display: inline-flex;
|
||||
place-content: center;
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
|
||||
input[type="checkbox"]::before {
|
||||
content: "";
|
||||
width: 0.8em;
|
||||
height: 0.8em;
|
||||
transform: scale(0);
|
||||
box-shadow: inset 1em 1em #FFFFFF;
|
||||
clip-path: polygon(7% 37%, 0 45%, 33% 78%, 100% 30%, 95% 21%, 33% 64%);
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked {
|
||||
border-color:#009688;
|
||||
background-color:#009688;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked::before {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
|
||||
/*----------------Light Mode-------------------*/
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
body
|
||||
{
|
||||
background-color:#3E3E45;
|
||||
background-color:#2D2D31; /* ORCA match background color */
|
||||
color: #efeff0;
|
||||
}
|
||||
|
||||
|
@ -23,17 +23,32 @@ body
|
|||
color: #009688;
|
||||
}
|
||||
|
||||
/*-----Button-----*/
|
||||
.GrayBtn
|
||||
{
|
||||
border: 1px solid #B9B9BC;
|
||||
color: #B9B9BC;
|
||||
.search>input[type=text]{
|
||||
background-color:#2D2D31;
|
||||
}
|
||||
|
||||
.GrayBtn:hover
|
||||
/*---Checkboxes ORCA---*/
|
||||
input[type=checkbox]{
|
||||
background-color:#2D2D31;
|
||||
border-color:#4A4A51;
|
||||
}
|
||||
|
||||
input[type=checkbox]:checked{
|
||||
background-color:#009688;
|
||||
}
|
||||
|
||||
/*-----Button-----*/
|
||||
.GrayBtn, .SmallBtn /* ORCA match button style GrayBtn & SmallBtn */
|
||||
{
|
||||
background-color:#E8E8E8;
|
||||
color: #565656;
|
||||
background-color:#3E3E45;
|
||||
/* border: 1px solid #B9B9BC; */
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.GrayBtn:hover, .SmallBtn:hover /* ORCA match button style GrayBtn & SmallBtn */
|
||||
{
|
||||
background-color:#49494E;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/*-------Text------*/
|
||||
|
|
|
@ -34,7 +34,9 @@ public:
|
|||
double unretract();
|
||||
double E() const { return m_share_extruder ? m_share_E : m_E; }
|
||||
void reset_E() { m_E = 0.; m_share_E = 0.; }
|
||||
// e_per_mm is extrusion_per_mm = geometric volume * (filament flow ratio / cross-sectional area) [Doesn't account for print_flow_ratio, or modifiers like bridge flow ratio etc.]
|
||||
double e_per_mm(double mm3_per_mm) const { return mm3_per_mm * m_e_per_mm3; }
|
||||
// e_per_mm3 is extrusion_per_mm3 = filament flow ratio / cross-sectional area [Doesn't account for print_flow_ratio, or modifiers like bridge flow ratio etc.]
|
||||
double e_per_mm3() const { return m_e_per_mm3; }
|
||||
// Used filament volume in mm^3.
|
||||
double extruded_volume() const;
|
||||
|
|
|
@ -273,10 +273,7 @@ void Fill3DHoneycomb::_fill_surface_single(
|
|||
if (!polylines.empty()) {
|
||||
int infill_start_idx = polylines_out.size(); // only rotate what belongs to us.
|
||||
// connect lines
|
||||
if (params.dont_connect() || polylines.size() <= 1)
|
||||
append(polylines_out, chain_polylines(std::move(polylines)));
|
||||
else
|
||||
this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params);
|
||||
chain_or_connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params);
|
||||
|
||||
// rotate back
|
||||
if (std::abs(infill_angle) >= EPSILON) {
|
||||
|
|
|
@ -1401,10 +1401,7 @@ void Filler::_fill_surface_single(
|
|||
}
|
||||
#endif /* ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT */
|
||||
|
||||
if (params.dont_connect() || all_polylines_with_hooks.size() <= 1)
|
||||
append(polylines_out, chain_polylines(std::move(all_polylines_with_hooks)));
|
||||
else
|
||||
connect_infill(std::move(all_polylines_with_hooks), expolygon, polylines_out, this->spacing, params);
|
||||
chain_or_connect_infill(std::move(all_polylines_with_hooks), expolygon, polylines_out, this->spacing, params);
|
||||
|
||||
#ifdef ADAPTIVE_CUBIC_INFILL_DEBUG_OUTPUT
|
||||
{
|
||||
|
|
|
@ -1787,6 +1787,18 @@ void Fill::connect_infill(Polylines &&infill_ordered, const std::vector<const Po
|
|||
polylines_out.emplace_back(std::move(pl));
|
||||
}
|
||||
|
||||
void Fill::chain_or_connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const double spacing, const FillParams ¶ms)
|
||||
{
|
||||
if (!infill_ordered.empty()) {
|
||||
if (params.dont_connect()) {
|
||||
if (infill_ordered.size() > 1)
|
||||
infill_ordered = chain_polylines(std::move(infill_ordered));
|
||||
append(polylines_out, std::move(infill_ordered));
|
||||
} else
|
||||
connect_infill(std::move(infill_ordered), boundary, polylines_out, spacing, params);
|
||||
}
|
||||
}
|
||||
|
||||
// Extend the infill lines along the perimeters, this is mainly useful for grid aligned support, where a perimeter line may be nearly
|
||||
// aligned with the infill lines.
|
||||
static inline void base_support_extend_infill_lines(Polylines &infill, BoundaryInfillGraph &graph, const double spacing, const FillParams ¶ms)
|
||||
|
|
|
@ -191,6 +191,8 @@ public:
|
|||
static void connect_infill(Polylines &&infill_ordered, const Polygons &boundary, const BoundingBox& bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms);
|
||||
static void connect_infill(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary, const BoundingBox &bbox, Polylines &polylines_out, double spacing, const FillParams ¶ms);
|
||||
|
||||
static void chain_or_connect_infill(Polylines &&infill_ordered, const ExPolygon &boundary, Polylines &polylines_out, const double spacing, const FillParams ¶ms);
|
||||
|
||||
static void connect_base_support(Polylines &&infill_ordered, const std::vector<const Polygon*> &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms);
|
||||
static void connect_base_support(Polylines &&infill_ordered, const Polygons &boundary_src, const BoundingBox &bbox, Polylines &polylines_out, const double spacing, const FillParams ¶ms);
|
||||
|
||||
|
|
|
@ -218,10 +218,7 @@ void FillCrossHatch ::_fill_surface_single(
|
|||
if (!polylines.empty()) {
|
||||
int infill_start_idx = polylines_out.size(); // only rotate what belongs to us.
|
||||
// connect lines
|
||||
if (params.dont_connect() || polylines.size() <= 1)
|
||||
append(polylines_out, chain_polylines(std::move(polylines)));
|
||||
else
|
||||
this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params);
|
||||
chain_or_connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params);
|
||||
|
||||
// rotate back
|
||||
if (std::abs(infill_angle) >= EPSILON) {
|
||||
|
|
|
@ -194,10 +194,7 @@ void FillGyroid::_fill_surface_single(
|
|||
if (! polylines.empty()) {
|
||||
// connect lines
|
||||
size_t polylines_out_first_idx = polylines_out.size();
|
||||
if (params.dont_connect())
|
||||
append(polylines_out, chain_polylines(polylines));
|
||||
else
|
||||
this->connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params);
|
||||
chain_or_connect_infill(std::move(polylines), expolygon, polylines_out, this->spacing, params);
|
||||
|
||||
// new paths must be rotated back
|
||||
if (std::abs(infill_angle) >= EPSILON) {
|
||||
|
|
|
@ -74,10 +74,7 @@ void FillHoneycomb::_fill_surface_single(
|
|||
}
|
||||
|
||||
all_polylines = intersection_pl(std::move(all_polylines), expolygon);
|
||||
if (params.dont_connect() || all_polylines.size() <= 1)
|
||||
append(polylines_out, chain_polylines(std::move(all_polylines)));
|
||||
else
|
||||
connect_infill(std::move(all_polylines), expolygon, polylines_out, this->spacing, params);
|
||||
chain_or_connect_infill(std::move(all_polylines), expolygon, polylines_out, this->spacing, params);
|
||||
}
|
||||
|
||||
} // namespace Slic3r
|
||||
|
|
|
@ -16,10 +16,7 @@ void Filler::_fill_surface_single(
|
|||
const Layer &layer = generator->getTreesForLayer(this->layer_id);
|
||||
Polylines fill_lines = layer.convertToLines(to_polygons(expolygon), scaled<coord_t>(0.5 * this->spacing - this->overlap));
|
||||
|
||||
if (params.dont_connect() || fill_lines.size() <= 1) {
|
||||
append(polylines_out, chain_polylines(std::move(fill_lines)));
|
||||
} else
|
||||
connect_infill(std::move(fill_lines), expolygon, polylines_out, this->spacing, params);
|
||||
chain_or_connect_infill(std::move(fill_lines), expolygon, polylines_out, this->spacing, params);
|
||||
}
|
||||
|
||||
void GeneratorDeleter::operator()(Generator *p) {
|
||||
|
|
|
@ -119,8 +119,9 @@ void FillPlanePath::_fill_surface_single(
|
|||
|
||||
if (polyline.size() >= 2) {
|
||||
Polylines polylines = intersection_pl(polyline, expolygon);
|
||||
if (!polylines.empty()) {
|
||||
Polylines chained;
|
||||
if (params.dont_connect() || params.density > 0.5 || polylines.size() <= 1) {
|
||||
if (params.dont_connect() || params.density > 0.5) {
|
||||
// ORCA: special flag for flow rate calibration
|
||||
auto is_flow_calib = params.extrusion_role == erTopSolidInfill &&
|
||||
this->print_object_config->has("calib_flowrate_topinfill_special_order") &&
|
||||
|
@ -129,7 +130,8 @@ void FillPlanePath::_fill_surface_single(
|
|||
if (is_flow_calib) {
|
||||
// We want the spiral part to be printed inside-out
|
||||
// Find the center spiral line first, by looking for the longest one
|
||||
auto it = std::max_element(polylines.begin(), polylines.end(), [](const Polyline& a, const Polyline& b) { return a.length() < b.length(); });
|
||||
auto it = std::max_element(polylines.begin(), polylines.end(),
|
||||
[](const Polyline& a, const Polyline& b) { return a.length() < b.length(); });
|
||||
Polyline center_spiral = std::move(*it);
|
||||
|
||||
// Ensure the spiral is printed from inside to out
|
||||
|
@ -146,16 +148,16 @@ void FillPlanePath::_fill_surface_single(
|
|||
} else {
|
||||
chained = chain_polylines(std::move(polylines));
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
connect_infill(std::move(polylines), expolygon, chained, this->spacing, params);
|
||||
// paths must be repositioned and rotated back
|
||||
for (Polyline &pl : chained) {
|
||||
for (Polyline& pl : chained) {
|
||||
pl.translate(shift.x(), shift.y());
|
||||
pl.rotate(direction.first);
|
||||
}
|
||||
append(polylines_out, std::move(chained));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Follow an Archimedean spiral, in polar coordinates: r=a+b\theta
|
||||
|
|
|
@ -2928,7 +2928,7 @@ void make_fill_lines(const ExPolygonWithOffset &poly_with_offset, Point refpt, d
|
|||
|
||||
bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list<SweepParams> &sweep_params, Polylines &polylines_out)
|
||||
{
|
||||
assert(sweep_params.size() > 1);
|
||||
assert(sweep_params.size() >= 1);
|
||||
assert(! params.full_infill());
|
||||
params.density /= double(sweep_params.size());
|
||||
assert(params.density > 0.0001f && params.density <= 1.f);
|
||||
|
@ -2948,12 +2948,14 @@ bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillPar
|
|||
make_fill_lines(ExPolygonWithOffset(poly_with_offset_base, - angle), rotate_vector.second.rotated(-angle), angle, line_width + coord_t(SCALED_EPSILON), line_spacing, coord_t(scale_(sweep.pattern_shift)), fill_lines);
|
||||
}
|
||||
|
||||
if (params.dont_connect() || fill_lines.size() <= 1) {
|
||||
if (!fill_lines.empty()) {
|
||||
if (params.dont_connect()) {
|
||||
if (fill_lines.size() > 1)
|
||||
fill_lines = chain_polylines(std::move(fill_lines));
|
||||
append(polylines_out, std::move(fill_lines));
|
||||
} else
|
||||
connect_infill(std::move(fill_lines), poly_with_offset_base.polygons_outer, get_extents(surface->expolygon.contour), polylines_out, this->spacing, params);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -2961,8 +2963,13 @@ bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillPar
|
|||
Polylines FillRectilinear::fill_surface(const Surface *surface, const FillParams ¶ms)
|
||||
{
|
||||
Polylines polylines_out;
|
||||
if (! fill_surface_by_lines(surface, params, 0.f, 0.f, polylines_out))
|
||||
BOOST_LOG_TRIVIAL(error) << "FillRectilinear::fill_surface() failed to fill a region.";
|
||||
if (params.full_infill()) {
|
||||
if (!fill_surface_by_lines(surface, params, 0.f, 0.f, polylines_out))
|
||||
BOOST_LOG_TRIVIAL(error) << "FillRectilinear::fill_surface() fill_surface_by_lines() failed to fill a region.";
|
||||
} else {
|
||||
if (!fill_surface_by_multilines(surface, params, {{0.f, 0.f}}, polylines_out))
|
||||
BOOST_LOG_TRIVIAL(error) << "FillRectilinear::fill_surface() fill_surface_by_multilines() failed to fill a region.";
|
||||
}
|
||||
return polylines_out;
|
||||
}
|
||||
|
||||
|
|
|
@ -5270,8 +5270,11 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
|
|||
gcode += m_writer.set_jerk_xy(jerk);
|
||||
}
|
||||
|
||||
// calculate extrusion length per distance unit
|
||||
// calculate effective extrusion length per distance unit (e_per_mm)
|
||||
double filament_flow_ratio = m_config.option<ConfigOptionFloats>("filament_flow_ratio")->get_at(0);
|
||||
// We set _mm3_per_mm to effectove flow = Geometric volume * print flow ratio * filament flow ratio * role-based-flow-ratios
|
||||
auto _mm3_per_mm = path.mm3_per_mm * this->config().print_flow_ratio;
|
||||
_mm3_per_mm *= filament_flow_ratio;
|
||||
if (path.role() == erTopSolidInfill)
|
||||
_mm3_per_mm *= m_config.top_solid_infill_flow_ratio;
|
||||
else if (path.role() == erBottomSurface)
|
||||
|
@ -5280,9 +5283,12 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
|
|||
_mm3_per_mm *= m_config.internal_bridge_flow;
|
||||
else if(sloped)
|
||||
_mm3_per_mm *= m_config.scarf_joint_flow_ratio;
|
||||
|
||||
|
||||
// Effective extrusion length per distance unit = (filament_flow_ratio/cross_section) * mm3_per_mm / print flow ratio
|
||||
// m_writer.extruder()->e_per_mm3() below is (filament flow ratio / cross-sectional area)
|
||||
double e_per_mm = m_writer.extruder()->e_per_mm3() * _mm3_per_mm;
|
||||
e_per_mm /= filament_flow_ratio;
|
||||
|
||||
|
||||
|
||||
// set speed
|
||||
if (speed == -1) {
|
||||
|
|
|
@ -1150,6 +1150,7 @@ void GCodeProcessor::reset()
|
|||
m_forced_width = 0.0f;
|
||||
m_forced_height = 0.0f;
|
||||
m_mm3_per_mm = 0.0f;
|
||||
m_travel_dist = 0.0f;
|
||||
m_fan_speed = 0.0f;
|
||||
m_z_offset = 0.0f;
|
||||
|
||||
|
@ -2648,7 +2649,8 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line, const std::o
|
|||
|
||||
EMoveType type = move_type(delta_pos);
|
||||
if (type == EMoveType::Extrude) {
|
||||
float delta_xyz = std::sqrt(sqr(delta_pos[X]) + sqr(delta_pos[Y]) + sqr(delta_pos[Z]));
|
||||
const float delta_xyz = std::sqrt(sqr(delta_pos[X]) + sqr(delta_pos[Y]) + sqr(delta_pos[Z]));
|
||||
m_travel_dist = delta_xyz;
|
||||
float volume_extruded_filament = area_filament_cross_section * delta_pos[E];
|
||||
float area_toolpath_cross_section = volume_extruded_filament / delta_xyz;
|
||||
|
||||
|
@ -3125,7 +3127,8 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line)
|
|||
EMoveType type = move_type(delta_pos[E]);
|
||||
|
||||
|
||||
float delta_xyz = std::sqrt(sqr(arc_length) + sqr(delta_pos[Z]));
|
||||
const float delta_xyz = std::sqrt(sqr(arc_length) + sqr(delta_pos[Z]));
|
||||
m_travel_dist = delta_xyz;
|
||||
if (type == EMoveType::Extrude) {
|
||||
float volume_extruded_filament = area_filament_cross_section * delta_pos[E];
|
||||
float area_toolpath_cross_section = volume_extruded_filament / delta_xyz;
|
||||
|
@ -4783,6 +4786,7 @@ void GCodeProcessor::store_move_vertex(EMoveType type, EMovePathType path_type)
|
|||
m_width,
|
||||
m_height,
|
||||
m_mm3_per_mm,
|
||||
m_travel_dist,
|
||||
m_fan_speed,
|
||||
m_extruder_temps[m_extruder_id],
|
||||
static_cast<float>(m_result.moves.size()),
|
||||
|
|
|
@ -162,6 +162,7 @@ class Print;
|
|||
float width{ 0.0f }; // mm
|
||||
float height{ 0.0f }; // mm
|
||||
float mm3_per_mm{ 0.0f };
|
||||
float travel_dist{ 0.0f }; // mm
|
||||
float fan_speed{ 0.0f }; // percentage
|
||||
float temperature{ 0.0f }; // Celsius degrees
|
||||
float time{ 0.0f }; // s
|
||||
|
@ -704,6 +705,7 @@ class Print;
|
|||
float m_forced_width; // mm
|
||||
float m_forced_height; // mm
|
||||
float m_mm3_per_mm;
|
||||
float m_travel_dist; // mm
|
||||
float m_fan_speed; // percentage
|
||||
float m_z_offset; // mm
|
||||
ExtrusionRole m_extrusion_role;
|
||||
|
|
|
@ -412,6 +412,7 @@ void GCodeViewer::SequentialView::Marker::render(int canvas_width, int canvas_he
|
|||
// break;
|
||||
// }
|
||||
case EViewType::VolumetricRate: {
|
||||
if (m_curr_move.type != EMoveType::Extrude) break;
|
||||
ImGui::SameLine(startx2);
|
||||
sprintf(buf, "%s%.2f", flow.c_str(), m_curr_move.volumetric_rate());
|
||||
ImGui::PushItemWidth(item_size);
|
||||
|
@ -1143,8 +1144,12 @@ void GCodeViewer::refresh(const GCodeProcessorResult& gcode_result, const std::v
|
|||
m_extrusions.ranges.width.update_from(round_to_bin(curr.width));
|
||||
m_extrusions.ranges.fan_speed.update_from(curr.fan_speed);
|
||||
m_extrusions.ranges.temperature.update_from(curr.temperature);
|
||||
if (curr.delta_extruder > 0.005 && curr.travel_dist > 0.01) {
|
||||
// Ignore very tiny extrusions from flow rate calculation, because
|
||||
// it could give very imprecise result due to rounding in gcode generation
|
||||
if (curr.extrusion_role != erCustom || is_visible(erCustom))
|
||||
m_extrusions.ranges.volumetric_rate.update_from(round_to_bin(curr.volumetric_rate()));
|
||||
}
|
||||
|
||||
if (curr.layer_duration > 0.f) {
|
||||
m_extrusions.ranges.layer_duration.update_from(curr.layer_duration);
|
||||
|
|
|
@ -174,7 +174,9 @@ void GLGizmoRotate::on_render()
|
|||
render_angle_arc(m_highlight_color, hover_radius_changed);
|
||||
}
|
||||
|
||||
render_grabber_connection(color, radius_changed);
|
||||
// ORCA dont use axis color on line because they are not on same direction with axis
|
||||
const ColorRGBA line_color = (m_hover_id != -1) ? m_drag_color : ColorRGBA(.6f, .6f ,.6f, 1.f);
|
||||
render_grabber_connection(line_color, radius_changed);
|
||||
shader->stop_using();
|
||||
}
|
||||
|
||||
|
|
|
@ -366,13 +366,13 @@ void ParamsPanel::create_layout()
|
|||
m_mode_sizer->Add( m_title_label, 0, wxALIGN_CENTER );
|
||||
m_mode_sizer->AddStretchSpacer(2);
|
||||
m_mode_sizer->Add(m_mode_region, 0, wxALIGN_CENTER);
|
||||
m_mode_sizer->AddStretchSpacer(1);
|
||||
m_mode_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing()));
|
||||
m_mode_sizer->Add(m_tips_arrow, 0, wxALIGN_CENTER);
|
||||
m_mode_sizer->AddStretchSpacer(8);
|
||||
m_mode_sizer->Add( m_title_view, 0, wxALIGN_CENTER );
|
||||
m_mode_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing()));
|
||||
m_mode_sizer->Add(m_mode_view, 0, wxALIGN_CENTER);
|
||||
m_mode_sizer->AddStretchSpacer(2);
|
||||
m_mode_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing() * 6)); // ORCA using spacer prevents shaky mode_view when tips_arrow highlighting mode_region instead using AddStretchSpacer
|
||||
m_mode_sizer->Add(m_setting_btn, 0, wxALIGN_CENTER);
|
||||
m_mode_sizer->AddSpacer(FromDIP(SidebarProps::IconSpacing()));
|
||||
m_mode_sizer->Add(m_compare_btn, 0, wxALIGN_CENTER);
|
||||
|
|
|
@ -136,9 +136,26 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
|||
|
||||
m_optgroup->append_single_option_line("host_type");
|
||||
|
||||
auto create_sizer_with_btn = [](wxWindow* parent, ScalableButton** btn, const std::string& icon_name, const wxString& label) {
|
||||
*btn = new ScalableButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT);
|
||||
(*btn)->SetFont(wxGetApp().normal_font());
|
||||
auto create_sizer_with_btn = [](wxWindow* parent, Button** btn, const std::string& icon_name, const wxString& label) {
|
||||
*btn = new Button(parent, label, ""/*icon_name*/, 0, parent->FromDIP(16));
|
||||
(*btn)->SetFont(Label::Body_14);
|
||||
(*btn)->SetMinSize(wxSize(parent->FromDIP(120), parent->FromDIP(26)));
|
||||
(*btn)->SetSize(wxSize(parent->FromDIP(120), parent->FromDIP(26)));
|
||||
(*btn)->SetCornerRadius(parent->FromDIP(4));
|
||||
StateColor clr_bg = StateColor(
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Pressed),
|
||||
std::pair(wxColour("#D4D4D4"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Normal),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Enabled)
|
||||
);
|
||||
(*btn)->SetBackgroundColor(clr_bg);
|
||||
(*btn)->SetBorderColor(clr_bg);
|
||||
(*btn)->SetTextColor(StateColor(
|
||||
std::pair(wxColour("#6B6A6A"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Normal)
|
||||
));
|
||||
|
||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer->Add(*btn);
|
||||
|
@ -235,9 +252,8 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
|||
|
||||
auto print_host_printers = [this, create_sizer_with_btn](wxWindow* parent) {
|
||||
//add_scaled_button(parent, &m_printhost_port_browse_btn, "browse", _(L("Refresh Printers")), wxBU_LEFT | wxBU_EXACTFIT);
|
||||
auto sizer = create_sizer_with_btn(parent, &m_printhost_port_browse_btn, "monitor_signal_strong", _(L("Refresh Printers")));
|
||||
ScalableButton* btn = m_printhost_port_browse_btn;
|
||||
btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
||||
auto sizer = create_sizer_with_btn(parent, &m_printhost_port_browse_btn, "monitor_signal_strong", _L("Refresh") + " " + dots);
|
||||
Button* btn = m_printhost_port_browse_btn;
|
||||
btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent e) { update_printers(); });
|
||||
return sizer;
|
||||
};
|
||||
|
@ -712,11 +728,11 @@ void PhysicalPrinterDialog::on_dpi_changed(const wxRect& suggested_rect)
|
|||
{
|
||||
const int& em = em_unit();
|
||||
|
||||
m_printhost_browse_btn->msw_rescale();
|
||||
m_printhost_test_btn->msw_rescale();
|
||||
m_printhost_logout_btn->msw_rescale();
|
||||
m_printhost_browse_btn->Rescale();
|
||||
m_printhost_test_btn->Rescale();
|
||||
m_printhost_logout_btn->Rescale();
|
||||
if (m_printhost_cafile_browse_btn)
|
||||
m_printhost_cafile_browse_btn->msw_rescale();
|
||||
m_printhost_cafile_browse_btn->Rescale();
|
||||
|
||||
m_optgroup->msw_rescale();
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
class wxTextCtrl;
|
||||
class wxStaticText;
|
||||
class ScalableButton;
|
||||
class Button;
|
||||
class wxBoxSizer;
|
||||
|
||||
namespace Slic3r {
|
||||
|
@ -28,12 +28,12 @@ class PhysicalPrinterDialog : public DPIDialog
|
|||
DynamicPrintConfig* m_config { nullptr };
|
||||
ConfigOptionsGroup* m_optgroup { nullptr };
|
||||
|
||||
ScalableButton* m_printhost_browse_btn {nullptr};
|
||||
ScalableButton* m_printhost_test_btn {nullptr};
|
||||
ScalableButton* m_printhost_logout_btn {nullptr};
|
||||
ScalableButton* m_printhost_cafile_browse_btn {nullptr};
|
||||
ScalableButton* m_printhost_client_cert_browse_btn {nullptr};
|
||||
ScalableButton* m_printhost_port_browse_btn {nullptr};
|
||||
Button* m_printhost_browse_btn {nullptr};
|
||||
Button* m_printhost_test_btn {nullptr};
|
||||
Button* m_printhost_logout_btn {nullptr};
|
||||
Button* m_printhost_cafile_browse_btn {nullptr};
|
||||
Button* m_printhost_client_cert_browse_btn {nullptr};
|
||||
Button* m_printhost_port_browse_btn {nullptr};
|
||||
|
||||
RoundedRectangle* m_input_area {nullptr};
|
||||
wxStaticText* m_valid_label {nullptr};
|
||||
|
|
|
@ -382,8 +382,8 @@ PlateSettingsDialog::PlateSettingsDialog(wxWindow* parent, const wxString& title
|
|||
auto plate_name_txt = new wxStaticText(this, wxID_ANY, _L("Plate name"));
|
||||
plate_name_txt->SetFont(Label::Body_14);
|
||||
m_ti_plate_name = new TextInput(this, wxString::FromDouble(0.0), "", "", wxDefaultPosition, wxSize(FromDIP(240),-1), wxTE_PROCESS_ENTER);
|
||||
top_sizer->Add(plate_name_txt, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT |wxALL, FromDIP(5));
|
||||
top_sizer->Add(m_ti_plate_name, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT |wxALL, FromDIP(5));
|
||||
top_sizer->Add(plate_name_txt, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxTOP | wxBOTTOM, FromDIP(5));
|
||||
top_sizer->Add(m_ti_plate_name, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT | wxTOP | wxBOTTOM, FromDIP(5));
|
||||
|
||||
m_bed_type_choice = new ComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(240), -1), 0,
|
||||
NULL, wxCB_READONLY);
|
||||
|
|
|
@ -352,7 +352,8 @@ struct Sidebar::priv
|
|||
wxPanel* m_panel_project_title;
|
||||
ScalableButton* m_filament_icon = nullptr;
|
||||
Button * m_flushing_volume_btn = nullptr;
|
||||
wxSearchCtrl* m_search_bar = nullptr;
|
||||
TextInput* m_search_item = nullptr;
|
||||
StaticBox* m_search_bar = nullptr;
|
||||
Search::SearchObjectDialog* dia = nullptr;
|
||||
|
||||
// BBS printer config
|
||||
|
@ -426,7 +427,7 @@ void Sidebar::priv::on_search_update()
|
|||
{
|
||||
m_object_list->assembly_plate_object_name();
|
||||
|
||||
wxString search_text = m_search_bar->GetValue();
|
||||
wxString search_text = m_search_item->GetTextCtrl()->GetValue();
|
||||
m_object_list->GetModel()->search_object(search_text);
|
||||
dia->update_list();
|
||||
}
|
||||
|
@ -439,7 +440,7 @@ void Sidebar::priv::jump_to_object(ObjectDataViewModelNode* item)
|
|||
void Sidebar::priv::can_search()
|
||||
{
|
||||
if (m_search_bar->IsShown()) {
|
||||
m_search_bar->SetFocus();
|
||||
m_search_item->SetFocus();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1092,26 +1093,46 @@ Sidebar::Sidebar(Plater *parent)
|
|||
//add project content
|
||||
p->sizer_params = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
p->m_search_bar = new wxSearchCtrl(p->scrolled, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
|
||||
p->m_search_bar->ShowSearchButton(true);
|
||||
p->m_search_bar->ShowCancelButton(true);
|
||||
p->m_search_bar->SetDescriptiveText(_L("Search plate, object and part."));
|
||||
// ORCA: Update search box to modern style
|
||||
p->m_search_bar = new StaticBox(p->scrolled);
|
||||
p->m_search_bar->SetCornerRadius(0);
|
||||
p->m_search_bar->SetBorderColor(wxColour("#CECECE"));
|
||||
|
||||
p->m_search_bar->Bind(wxEVT_SET_FOCUS, [this](wxFocusEvent&) {
|
||||
p->m_search_item = new TextInput(p->m_search_bar, wxEmptyString, wxEmptyString, "", wxDefaultPosition, wxDefaultSize, 0 | wxBORDER_NONE);
|
||||
p->m_search_item->SetIcon(*BitmapCache().load_svg("search", FromDIP(16), FromDIP(16))); // ORCA: Add search icon to search box
|
||||
|
||||
wxTextCtrl* text_ctrl = p->m_search_item->GetTextCtrl();
|
||||
text_ctrl->SetHint(_L("Search plate, object and part."));
|
||||
text_ctrl->SetForegroundColour(wxColour("#262E30"));
|
||||
text_ctrl->SetFont(Label::Body_13);
|
||||
text_ctrl->SetSize(wxSize(-1, FromDIP(16))); // Centers text vertically
|
||||
|
||||
text_ctrl->Bind(wxEVT_SET_FOCUS, [this](wxFocusEvent& e) {
|
||||
this->p->on_search_update();
|
||||
p->m_search_bar->SetBorderColor(wxColour("#009688"));
|
||||
wxPoint pos = this->p->m_search_bar->ClientToScreen(wxPoint(0, 0));
|
||||
pos.y += this->p->m_search_bar->GetRect().height;
|
||||
p->dia->SetPosition(pos);
|
||||
p->dia->Popup();
|
||||
e.Skip(); // required to show caret
|
||||
});
|
||||
p->m_search_bar->Bind(wxEVT_COMMAND_TEXT_UPDATED, [this](wxCommandEvent&) {
|
||||
text_ctrl->Bind(wxEVT_COMMAND_TEXT_UPDATED, [this](wxCommandEvent&) {
|
||||
this->p->on_search_update();
|
||||
});
|
||||
p->m_search_bar->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent& e) {
|
||||
text_ctrl->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent& e) {
|
||||
p->dia->Dismiss();
|
||||
p->m_search_bar->SetBorderColor(wxColour("#CECECE"));
|
||||
p->m_search_item->GetTextCtrl()->SetValue(""); // reset value when loose focus
|
||||
e.Skip();
|
||||
});
|
||||
|
||||
auto search_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
search_sizer->Add(new wxWindow(p->m_search_bar, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(1));
|
||||
search_sizer->Add(p->m_search_item, 1, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
|
||||
p->m_search_bar->SetSizer(search_sizer);
|
||||
p->m_search_bar->Layout();
|
||||
search_sizer->Fit(p->m_search_bar);
|
||||
|
||||
p->m_object_list = new ObjectList(p->scrolled);
|
||||
|
||||
p->sizer_params->Add(p->m_search_bar, 0, wxALL | wxEXPAND, 0);
|
||||
|
@ -1122,7 +1143,7 @@ Sidebar::Sidebar(Plater *parent)
|
|||
// Frequently Object Settings
|
||||
p->object_settings = new ObjectSettings(p->scrolled);
|
||||
|
||||
p->dia = new Search::SearchObjectDialog(p->m_object_list, p->m_search_bar);
|
||||
p->dia = new Search::SearchObjectDialog(p->m_object_list, text_ctrl);
|
||||
#if !NEW_OBJECT_SETTING
|
||||
p->object_settings->Hide();
|
||||
p->sizer_params->Add(p->object_settings->get_sizer(), 0, wxEXPAND | wxTOP, 5 * em / 10);
|
||||
|
@ -1511,6 +1532,9 @@ void Sidebar::msw_rescale()
|
|||
// BBS
|
||||
//p->object_manipulation->msw_rescale();
|
||||
p->object_settings->msw_rescale();
|
||||
p->m_search_item->Rescale();
|
||||
p->m_search_item->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(16)));
|
||||
p->m_search_bar->Layout();
|
||||
|
||||
// BBS
|
||||
#if 0
|
||||
|
|
|
@ -273,7 +273,7 @@ void Tab::create_preset_tab()
|
|||
//search input
|
||||
m_search_item = new StaticBox(m_top_panel);
|
||||
StateColor box_colour(std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
|
||||
StateColor box_border_colour(std::pair<wxColour, int>(wxColour("#DBDBDB"), StateColor::Normal)); // ORCA match border color with other input/combo boxes
|
||||
StateColor box_border_colour(std::pair<wxColour, int>(wxColour("#009688"), StateColor::Normal)); // ORCA match border color with other input/combo boxes
|
||||
|
||||
m_search_item->SetBackgroundColor(box_colour);
|
||||
m_search_item->SetBorderColor(box_border_colour);
|
||||
|
@ -286,8 +286,9 @@ void Tab::create_preset_tab()
|
|||
m_search_input->SetBackgroundColour(wxColour(238, 238, 238));
|
||||
m_search_input->SetForegroundColour(wxColour(43, 52, 54));
|
||||
m_search_input->SetFont(wxGetApp().bold_font());
|
||||
|
||||
search_sizer->Add(new wxWindow(m_search_item, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(6));
|
||||
m_search_input->SetIcon(*BitmapCache().load_svg("search", FromDIP(16), FromDIP(16)));
|
||||
m_search_input->GetTextCtrl()->SetHint(_L("Search in preset") + dots);
|
||||
search_sizer->Add(new wxWindow(m_search_item, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(2));
|
||||
search_sizer->Add(m_search_input, 1, wxEXPAND | wxALL, FromDIP(2));
|
||||
//bbl for linux
|
||||
//search_sizer->Add(new wxWindow(m_search_input, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND | wxLEFT, 16);
|
||||
|
@ -3545,14 +3546,30 @@ void TabFilament::build()
|
|||
optgroup->append_single_option_line("filament_stamping_loading_speed");
|
||||
optgroup->append_single_option_line("filament_stamping_distance");
|
||||
create_line_with_widget(optgroup.get(), "filament_ramming_parameters", "", [this](wxWindow* parent) {
|
||||
auto ramming_dialog_btn = new wxButton(parent, wxID_ANY, _(L("Ramming settings"))+dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
|
||||
wxGetApp().UpdateDarkUI(ramming_dialog_btn);
|
||||
ramming_dialog_btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
||||
ramming_dialog_btn->SetSize(ramming_dialog_btn->GetBestSize());
|
||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer->Add(ramming_dialog_btn);
|
||||
// ORCA modernize button style
|
||||
Button* btn = new Button(parent, _(L("Set")) + " " + dots);
|
||||
btn->SetFont(Label::Body_14);
|
||||
btn->SetSize(wxSize(FromDIP(120), FromDIP(26)));
|
||||
btn->SetCornerRadius(FromDIP(4));
|
||||
StateColor clr_bg = StateColor(
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Pressed),
|
||||
std::pair(wxColour("#D4D4D4"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Normal),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Enabled)
|
||||
);
|
||||
btn->SetBackgroundColor(clr_bg);
|
||||
btn->SetBorderColor(clr_bg);
|
||||
btn->SetTextColor(StateColor(
|
||||
std::pair(wxColour("#6B6A6A"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Normal)
|
||||
));
|
||||
|
||||
ramming_dialog_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
|
||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer->Add(btn);
|
||||
|
||||
btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
|
||||
RammingDialog dlg(this,(m_config->option<ConfigOptionStrings>("filament_ramming_parameters"))->get_at(0));
|
||||
if (dlg.ShowModal() == wxID_OK) {
|
||||
load_key_value("filament_ramming_parameters", dlg.get_parameters());
|
||||
|
@ -3568,7 +3585,7 @@ void TabFilament::build()
|
|||
optgroup->append_single_option_line("filament_multitool_ramming_flow");
|
||||
|
||||
page = add_options_page(L("Dependencies"), "advanced");
|
||||
optgroup = page->new_optgroup(L("Profile dependencies"));
|
||||
optgroup = page->new_optgroup(L("Profile dependencies"), "param_profile_dependencies");
|
||||
create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) {
|
||||
return compatible_widget_create(parent, m_compatible_printers);
|
||||
});
|
||||
|
@ -5907,10 +5924,27 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep
|
|||
deps.checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All")));
|
||||
deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
||||
wxGetApp().UpdateDarkUI(deps.checkbox, false, true);
|
||||
deps.btn = new ScalableButton(parent, wxID_ANY, "printer", from_u8((boost::format(" %s %s") % _utf8(L("Set")) % std::string(dots.ToUTF8())).str()),
|
||||
wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true);
|
||||
deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
||||
deps.btn->SetSize(deps.btn->GetBestSize());
|
||||
|
||||
// ORCA modernize button style
|
||||
Button* btn = new Button(parent, _(L("Set")) + " " + dots);
|
||||
btn->SetFont(Label::Body_14);
|
||||
btn->SetSize(wxSize(FromDIP(120), FromDIP(26)));
|
||||
btn->SetCornerRadius(FromDIP(4));
|
||||
StateColor clr_bg = StateColor(
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Pressed),
|
||||
std::pair(wxColour("#D4D4D4"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Normal),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Enabled)
|
||||
);
|
||||
btn->SetBackgroundColor(clr_bg);
|
||||
btn->SetBorderColor(clr_bg);
|
||||
btn->SetTextColor(StateColor(
|
||||
std::pair(wxColour("#6B6A6A"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Normal)
|
||||
));
|
||||
deps.btn = btn;
|
||||
|
||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer->Add((deps.checkbox), 0, wxALIGN_CENTER_VERTICAL);
|
||||
|
@ -5994,10 +6028,25 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep
|
|||
// Return a callback to create a TabPrinter widget to edit bed shape
|
||||
wxSizer* TabPrinter::create_bed_shape_widget(wxWindow* parent)
|
||||
{
|
||||
ScalableButton* btn = new ScalableButton(parent, wxID_ANY, "printer", " " + _(L("Set")) + " " + dots,
|
||||
wxDefaultSize, wxDefaultPosition, wxBU_LEFT | wxBU_EXACTFIT, true);
|
||||
btn->SetFont(wxGetApp().normal_font());
|
||||
btn->SetSize(btn->GetBestSize());
|
||||
// ORCA modernize button style
|
||||
Button* btn = new Button(parent, _(L("Set")) + " " + dots);
|
||||
btn->SetFont(Label::Body_14);
|
||||
btn->SetSize(wxSize(FromDIP(120), FromDIP(26)));
|
||||
btn->SetCornerRadius(FromDIP(4));
|
||||
StateColor clr_bg = StateColor(
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Pressed),
|
||||
std::pair(wxColour("#D4D4D4"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Normal),
|
||||
std::pair(wxColour("#DFDFDF"), (int)StateColor::Enabled)
|
||||
);
|
||||
btn->SetBackgroundColor(clr_bg);
|
||||
btn->SetBorderColor(clr_bg);
|
||||
btn->SetTextColor(StateColor(
|
||||
std::pair(wxColour("#6B6A6A"), (int)StateColor::Disabled),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Hovered),
|
||||
std::pair(wxColour("#262E30"), (int)StateColor::Normal)
|
||||
));
|
||||
|
||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL);
|
||||
|
|
|
@ -164,7 +164,7 @@ protected:
|
|||
struct PresetDependencies {
|
||||
Preset::Type type = Preset::TYPE_INVALID;
|
||||
wxCheckBox *checkbox = nullptr;
|
||||
ScalableButton *btn = nullptr;
|
||||
Button *btn = nullptr;
|
||||
std::string key_list; // "compatible_printers"
|
||||
std::string key_condition;
|
||||
wxString dialog_title;
|
||||
|
|
|
@ -11,6 +11,10 @@ static std::map<wxColour, wxColour> gDarkColors{
|
|||
{"#FF6F00", "#D15B00"}, // rgb(255, 111, 0) Secondary color
|
||||
{"#D01B1B", "#BB2A3A"}, // rgb(208, 27, 27) ???
|
||||
{"#262E30", "#EFEFF0"}, // rgb(38, 46, 48) Button text color | Input Text Color
|
||||
{"#DFDFDF", "#3E3E45"}, // rgb(223, 223, 223) Button Background color
|
||||
{"#D4D4D4", "#4D4D54"}, // rgb(212, 212, 212) Button Background color on Hover
|
||||
{"#6B6A6A", "#909090"}, // rgb(107, 107, 106) Button Dimmed text
|
||||
{"#6B6B6A", "#B3B3B5"}, // rgb(107, 107, 106) Input box side text
|
||||
{"#2C2C2E", "#B3B3B4"}, // rgb(44, 44, 46) ???
|
||||
{"#6B6B6B", "#818183"}, // rgb(107, 107, 107) Disabled Text
|
||||
{"#ACACAC", "#65656A"}, // rgb(172, 172, 172) Disabled Text on boxes | Dimmed Elements
|
||||
|
@ -28,7 +32,6 @@ static std::map<wxColour, wxColour> gDarkColors{
|
|||
{"#DBDBDB", "#4A4A51"}, // rgb(219, 219, 219) Input/Combo Box Border Color
|
||||
{"#EDFAF2", "#283232"}, // rgb(229, 240, 238) Not Used anymore // Was used for BBS Combo / Dropdown focused background color
|
||||
{"#323A3C", "#E5E5E6"}, // rgb(50, 58, 60) Text color used on search list |
|
||||
{"#6B6B6A", "#B3B3B5"}, // rgb(107, 107, 106) Button Dimmed text | Input box side text
|
||||
{"#303A3C", "#E5E5E5"}, // rgb(48, 58, 60) Object Table > Column header text color | StaticBox Border Color
|
||||
{"#FEFFFF", "#242428"}, // rgb(254, 255, 255) Side Tabbar bg |
|
||||
{"#A6A9AA", "#2D2D29"}, // rgb(166, 169, 170) Seperator color
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue