diff --git a/README.md b/README.md index feb2b5ba24..5132c1f547 100644 --- a/README.md +++ b/README.md @@ -30,23 +30,23 @@ Optimize your prints with ultra-fast slicing, intelligent support generation, an Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance. - **[Precise Wall](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_seam)** Adjust outer wall spacing and apply scarf seams to enhance print accuracy. -- **Sandwich Mode and [Polyholes](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#polyholes) Support** +- **[Sandwich Mode](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#polyholes) Support** Use varied infill patterns and accurate hole shapes for improved clarity. -- **Overhang and Support Optimization** +- **[Overhang](https://github.com/SoftFever/OrcaSlicer/wiki/speed_settings_overhang_speed) and [Support Optimization](https://github.com/SoftFever/OrcaSlicer/wiki#support-settings)** Modify geometry for printable overhangs with precise support placement. -- **Granular Controls and Customization** +- **[Granular Controls](https://github.com/SoftFever/OrcaSlicer/wiki#process-settings) and Customization** Fine-tune print speed, layer height, pressure, and temperature with precision. - **Network Printer Support** Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control. -- **Mouse Ear Brims & Adaptive Bed Mesh** +- **[Mouse Ear Brims](https://github.com/SoftFever/OrcaSlicer/wiki/others_settings_brim) & Adaptive Bed Mesh** Automatic brims and adaptive mesh calibration ensure consistent adhesion. - **User-Friendly Interface** Intuitive drag-and-drop design with pre-made profiles for popular printers. -- **Open-Source & Community Driven** +- **[Open-Source](https://github.com/SoftFever/OrcaSlicer) & [Community Driven](https://discord.gg/P4VE9UY9gJ)** Regular updates fueled by continuous community contributions. - **Wide Printer Compatibility** Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more. -- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/) +- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/). # Wiki @@ -54,8 +54,8 @@ The wiki below aims to provide a detailed explanation of the slicer settings, in Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it! -**[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)** -**[Contribute to the wiki](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-wiki)** +- **[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)** +- **[Contribute to the wiki](https://github.com/SoftFever/OrcaSlicer/wiki/How-to-wiki)** # Download diff --git a/doc/Home.md b/doc/Home.md index f6ea7bc1ac..4e3acdfa54 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -21,7 +21,7 @@ Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wik ## Printer Settings -![printer-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/printer-preset.png) +![printer-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/printer-preset.png) - [Air filtration/Exhaust fan handling](air-filtration) - [Auxiliary fan handling](Auxiliary-fan) @@ -31,7 +31,7 @@ Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wik ## Material Settings -![filament-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/filament-preset.png) +![filament-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/filament-preset.png) - [Single Extruder Multimaterial](semm) - [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient) @@ -44,13 +44,13 @@ First steps to prepare your model/s for printing. ## Process Settings -![process-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process-preset.png) +![process-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process-preset.png) The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results. ### Quality Settings -![process-quality](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process/process-quality.png?raw=true) +![process-quality](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-quality.png?raw=true) - [Layer Height Settings](quality_settings_layer_height) - [Line Width Settings](quality_settings_line_width) @@ -66,38 +66,63 @@ The below sections provide a detailed settings explanation as well as tips and t - [Precise wall](quality_settings_precision#precise-wall) - [Precise Z Height](quality_settings_precision#precise-z-height) - [Polyholes](quality_settings_precision#polyholes) +- [Ironing](quality_settings_ironing) - [Wall generator](quality_settings_wall_generator) +- [Walls and surfaces](quality_settings_wall_and_surfaces) +- [Bridging](quality_settings_bridging) ### Strength Settings -![process-strength](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process/process-strength.png?raw=true) +![process-strength](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-strength.png?raw=true) +- [Walls](strength_settings_walls) - [Top and Bottom Shells](strength_settings_top_bottom_shells) - [Infill](strength_settings_infill) +- [Advanced](strength_settings_advanced) ### Speed Settings -![process-speed](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process/process-speed.png?raw=true) +![process-speed](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-speed.png?raw=true) -- [Extrusion rate smoothing](speed_settings_extrusion_rate_smoothing) +- [Initial Layer Speed](speed_settings_initial_layer_speed) +- [Other Layers Speed](speed_settings_other_layers_speed) +- [Overhang Speed](speed_settings_overhang_speed) +- [Travel Speed](speed_settings_travel) +- [Acceleration](speed_settings_acceleration) +- [Jerk (XY)](speed_settings_jerk_xy) +- [Advanced / Extrusion rate smoothing](speed_settings_advanced) ### Support Settings -![process-support](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process/process-support.png?raw=true) +![process-support](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-support.png?raw=true) -WIP... +- [Support](support_settings_support) +- [Raft](support_settings_raft) +- [Support Filament](support_settings_filament) +- [Support Ironing](support_settings_ironing) +- [Advanced](support_settings_advanced) +- [Tree Supports](support_settings_tree) ### Multimaterial Settings -![process-multimaterial](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process/process-multimaterial.png?raw=true) +![process-multimaterial](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-multimaterial.png?raw=true) -WIP... +- [Prime Tower](multimaterial_settings_prime_tower) +- [Filament for Features](multimaterial_settings_filament_for_features) +- [Ooze Prevention](multimaterial_settings_ooze_prevention) +- [Flush Options](multimaterial_settings_flush_options) +- [Advanced](multimaterial_settings_advanced) ### Others Settings -![process-others](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process/process-others.png?raw=true) +![process-others](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process/process-others.png?raw=true) -WIP... +[Skirt](others_settings_skirt) +[Brim](others_settings_brim) +[Special Mode](others_settings_special_mode) +[G-Code Output](others_settings_g_code_output) +[Post Processing Scripts](others_settings_post_processing_scripts) +[Notes](others_settings_notes) ## Calibrations diff --git a/doc/calibration/Calibration.md b/doc/calibration/Calibration.md index c8d8718dae..70be26e05f 100644 --- a/doc/calibration/Calibration.md +++ b/doc/calibration/Calibration.md @@ -19,15 +19,15 @@ The recommended order for calibration is as follows: 2. **[Flow](flow-rate-calib):** Calibrate the flow rate to ensure that the correct amount of filament is being extruded. This is important for achieving accurate dimensions and good layer adhesion. - flowrate-pass1 + flowrate-6 1. **[Pressure Advance](pressure-advance-calib):** Calibrate the pressure advance settings to improve print quality and reduce artifacts caused by pressure fluctuations in the nozzle. - - **[Adaptative Pressure Advance](adaptive-pressure-advance-calib):** This is an advanced calibration technique that can be used to further optimize the pressure advance settings for different print speeds and geometries. + - **[Adaptive Pressure Advance](adaptive-pressure-advance-calib):** This is an advanced calibration technique that can be used to further optimize the pressure advance settings for different print speeds and geometries. - pa-tower + pa-tower -2. **[Retraction](retraction-calib):** Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and +2. **[Retraction](retraction-calib):** Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and Pressure Advance calibration is recommended, as it ensures that the printer is already set up for optimal extrusion. Retraction @@ -37,7 +37,7 @@ The recommended order for calibration is as follows: 4. **[Max Volumetric Speed](volumetric-speed-calib):** Calibrate the maximum volumetric speed of the filament. This is important for ensuring that the printer can handle the flow rate of the filament without causing issues such as under-extrusion or over-extrusion. - Max_Volumetric_Speed + Max_Volumetric_Speed 5. **[Cornering](cornering-calib):** Calibrate the Jerk/Junction Deviation settings to improve print quality and reduce artifacts caused by sharp corners and changes in direction. diff --git a/doc/calibration/adaptive-pressure-advance-calib.md b/doc/calibration/adaptive-pressure-advance-calib.md index aa5add89e1..7748c7bf6a 100644 --- a/doc/calibration/adaptive-pressure-advance-calib.md +++ b/doc/calibration/adaptive-pressure-advance-calib.md @@ -43,7 +43,7 @@ In addition, it means that you only need to tune this feature once and print acr Finally, if during calibration you notice that there is little to no variance between the PA tests, this feature is redundant for you. **From experiments, high flow nozzles fitted on high-speed core XY printers appear to benefit the most from this feature as they print with a larger range of flow rates and at a larger range of accelerations.** -### Expected results: +### Expected results With this feature enabled there should be absolutely no bulge in the corners, just the smooth rounding caused by the square corner velocity of your printer. ![apa-expected-results](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-expected-results.jpg?raw=true) @@ -92,20 +92,20 @@ For this example, let’s assume that the baseline number of tests is adequate f We, therefore, need to run 12 PA tests as below: -**Speed – Acceleration** - -1. 50 – 1k -2. 100 – 1k -3. 150 – 1k -4. 200 – 1k -5. 50 – 2k -6. 100 – 2k -7. 150 – 2k -8. 200 – 2k -9. 50 – 4k -10. 100 – 4k -11. 150 – 4k -12. 200 – 4k +| Speed | Acceleration | +|-------|--------------| +| 50 | 1k | +| 100 | 1k | +| 150 | 1k | +| 200 | 1k | +| 50 | 2k | +| 100 | 2k | +| 150 | 2k | +| 200 | 2k | +| 50 | 4k | +| 100 | 4k | +| 150 | 4k | +| 200 | 4k | ### Identifying the flow rates from the print speed @@ -117,17 +117,17 @@ Test parameters needed to build adaptive PA table are printed on the test sample Test sample above was done with acceleration 12000 mm/s² and flow rate 27.13 mm³/s -#### OrcaSlicer 2.1.0 and older. +#### OrcaSlicer 2.1.0 and older As mentioned earlier, **the print speed is used as a proxy to vary the extrusion flow rate**. Once your PA test is set up, change the gcode preview to “flow” and move the horizontal slider over one of the herringbone patterns and take note of the flow rate for different speeds. -![apa-test210](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-test210.jpg?raw=true) +![apa-test210](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-test210.png?raw=true) ### Running the tests #### General tips -It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests – **therefore a PA step value of 0.001 is recommended. ** +It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests – **therefore a PA step value of 0.001 is recommended**. **Set the end PA to a value high enough to start showing perimeter separation for the lowest flow (print speed) and acceleration test.** For example, for a Voron 350 using Revo HF, the maximum value was set to 0.05 as that was sufficient to show perimeter separation even at the slowest flow rates and accelerations. @@ -139,7 +139,7 @@ It is recommended that the PA step is set to a small value, to allow you to make PA pattern calibration configuration window have been changed to simplify test setup. Now all is needed is to fill list of accelerations and speeds into relevant fields of the calibration window: -![pa-pattern-batch](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch.png?raw=true?raw=true) +![pa-pattern-batch](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch.png?raw=true?raw=true) Test patterns generated for each acceleration-speed pair and all parameters are set accordingly. No additional actions needed from user side. Just slice and print all plates generated. @@ -151,11 +151,10 @@ Setup your PA test as usual from the calibration menu in Orca slicer. Once setup ![apa-setup-result-speed](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-speed.png?raw=true) -![alt text](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-acceleration-jerk.png?raw=true) +![apa-setup-result-acceleration-jerk](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-acceleration-jerk.png?raw=true) Now input your identified print speeds and accelerations in the fields above and run the PA tests. - > [!IMPORTANT] > Make sure your acceleration values are all the same in all text boxes. Same for the print speed values and Jerk (XY) values. Make sure your Jerk value is set to the external perimeter jerk used in your print profiles. @@ -190,7 +189,7 @@ Remember to paste the values in the adaptive pressure advance measurements text ### Tips -#### Model input: +#### Model input The adaptive PA model built into the slicer is flexible enough to allow for as many or as few increments of flow and acceleration as you want. Ideally, you want at a minimum 3x data points for acceleration and flow in order to create a meaningful model. @@ -200,7 +199,7 @@ Similarly for acceleration – in the above example you’ll input only 4 rows i **However, make sure a triplet of values is always provided – PA value, Flow, Acceleration.** -#### Identifying the right PA: +#### Identifying the right PA Higher acceleration and higher flow rate PA tests are easier to identify the optimal PA as the range of “good” values is much narrower. It’s evident where the PA is too large, as gaps start to appear in the corner and where PA is too low, as the corner starts bulging. diff --git a/doc/calibration/cornering-calib.md b/doc/calibration/cornering-calib.md index f5634eb875..393c16d62e 100644 --- a/doc/calibration/cornering-calib.md +++ b/doc/calibration/cornering-calib.md @@ -12,6 +12,10 @@ Junction Deviation is the default method for controlling cornering speed in Marl Higher values result in more aggressive cornering speeds, while lower values produce smoother, more controlled cornering. The default value in Marlin is typically set to 0.08mm, which may be too high for some printers, potentially causing ringing. Consider lowering this value to reduce ringing, but avoid setting it too low, as this could lead to excessively slow cornering speeds. +```math +JD = 0,4 \cdot \frac{\text{Jerk}^2}{\text{Accel.}} +``` + 1. Pre-requisites: 1. Check if your printer has Junction Deviation enabled. You can do this by sending the command `M503` to your printer and looking for the line `Junction deviation: 0.25`. 2. In OrcaSlicer, set: @@ -38,23 +42,33 @@ The default value in Marlin is typically set to 0.08mm, which may be too high fo ![jd_second_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_slicer_measure.png?raw=true) 3. Save the settings - 1. Set your Maximun Junction Deviation value in [Printer settings/Motion ability/Jerk limitation]. + 1. Set your Maximum Junction Deviation value in [Printer settings/Motion ability/Jerk limitation]. + + ![jd_printer_jerk_limitation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png?raw=true) + 2. Use the following G-code to set the mm: + ```gcode M205 J#JunctionDeviationValue M500 ``` + Example + ```gcode M205 J0.012 M500 ``` + 3. Recompile your MarlinFW 1. In Configuration.h uncomment and set: + ```cpp #define JUNCTION_DEVIATION_MM 0.012 // (mm) Distance from real junction edge ``` + 2. Check Classic Jerk is disabled (commented). + ```cpp //#define CLASSIC_JERK ``` diff --git a/doc/calibration/flow-rate-calib.md b/doc/calibration/flow-rate-calib.md index 45f0be0054..87d956671f 100644 --- a/doc/calibration/flow-rate-calib.md +++ b/doc/calibration/flow-rate-calib.md @@ -8,7 +8,7 @@ The Flow Ratio determines how much filament is extruded and plays a key role in > [!IMPORTANT] > PASS 1 and PASS 2 follow the older flow ratio formula `FlowRatio_old*(100 + modifier)/100`. -> YOLO (Recommended) and YOLO (perfectist version) use a new system that is very simple `FlowRatio_old±modifier`. +> YOLO (Recommended) and YOLO (perfectionist version) use a new system that is very simple `FlowRatio_old±modifier`. ![flow-calibration](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flow-calibration.gif?raw=true) @@ -22,7 +22,7 @@ Calibrating the flow rate involves a two-step process. ![flowrate-0-5](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowrate-0-5.jpg?raw=true) -5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`.** Remember** to save the filament profile. +5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`. **Remember** to save the filament profile. 6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9 to 0`. 7. Repeat steps 4. and 5. In this case, if your previous flow ratio was 1.029 and you selected the block with a flow rate modifier of -6, the new value should be calculated as follows: `1.029x(100-6)/100 = 0.96726`. **Remember** to save the filament profile. diff --git a/doc/calibration/pressure-advance-calib.md b/doc/calibration/pressure-advance-calib.md index 4b14ce7c4c..fe1a37ab44 100644 --- a/doc/calibration/pressure-advance-calib.md +++ b/doc/calibration/pressure-advance-calib.md @@ -28,7 +28,7 @@ Steps: ![pa-lines](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-lines.png?raw=true) - ![pa-line-0-016](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-line-0-016.jpg?raw=true) + ![pa-line-0-016](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-line-0-016.png?raw=true) ![pressure_advance_enable](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pressure_advance_enable.png?raw=true) @@ -42,7 +42,7 @@ Test configuration window allow user to generate one or more tests in a single p 1. Single test \ ![PA pattern single test](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-single.png?raw=true) -2. Batch mode testing (multiple tests on a sinle plate) \ +2. Batch mode testing (multiple tests on a single plate) \ ![PA pattern batch mode](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch.png?raw=true) Once test generated, one or more small rectangular prisms could be found on the plate, one for each test case. This object serves a few purposes: @@ -61,16 +61,16 @@ Next, Ellis' generator provided the ability to adjust specific printer, filament 1. Ellis specified line widths as a percent of filament diameter. The Orca pattern method does the same to provide its suggested defaults, making use of Ellis' percentages in combination with your specified nozzle diameter 2. In terms of line width, the pattern only makes use of the `Default` and `First layer` widths 3. In terms of speed, the pattern only uses the `First layer speed -> First layer` and `Other layers speed -> Outer wall` speeds -4. The infill pattern beneath the numbers cannot be changed becuase it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill +4. The infill pattern beneath the numbers cannot be changed because it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill ## Tower method The tower method may take a bit more time to complete, but it does not rely on the quality of the first layer. The PA value for this test will be increased by 0.002 for every 1 mm increase in height. (**NOTE** 0.02 for Bowden) -1. Select the printer, filament, and process you would like to use for the test. -2. Examine each corner of the print and mark the height that yields the best overall result. -3. I selected a height of 8 mm for this case, so the pressure advance value should be calculated as `PressureAdvanceStart+(PressureAdvanceStep x measured)` example: `0+(0.002 x 8) = 0.016`. +1. Select the printer, filament, and process you would like to use for the test. +2. Examine each corner of the print and mark the height that yields the best overall result. +3. I selected a height of 8 mm for this case, so the pressure advance value should be calculated as `PressureAdvanceStart+(PressureAdvanceStep x measured)` example: `0+(0.002 x 8) = 0.016`. ![pa-tower](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-tower.jpg?raw=true) ![pa-tower-measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-tower-measure.jpg?raw=true) diff --git a/doc/calibration/vfa-calib.md b/doc/calibration/vfa-calib.md index f449e6baea..0a064cd13c 100644 --- a/doc/calibration/vfa-calib.md +++ b/doc/calibration/vfa-calib.md @@ -1,13 +1,22 @@ # VFA -Vertical Fine Artifacts (VFA) are small artifacts that can occur on the surface of a 3D print, particularly in areas where there are sharp corners or changes in direction. These artifacts can be caused by a variety of factors, including mechanical vibrations, resonance, and other factors that can affect the quality of the print. +Vertical Fine Artifacts (VFA) are small surface imperfections that appear on vertical walls, especially near sharp corners or sudden directional changes. These artifacts are typically caused by mechanical vibrations, motor resonance, or rapid directional shifts that impact print quality. -Because of the nature of these artifacts the methods to reduce them can be mechanical such as changing motors, belts and pulleys or with advanced calibrations such as [Jerk/Junction Deviation](cornering-calib) corrections or [Input Shaping](input-shaping-calib). +- **Mechanical adjustments**, such as tuning or replacing motors, belts, or pulleys. +- **MMR (Motor Resonance Rippling)** is a common subtype of VFA caused by stepper motors vibrating at resonant frequencies, leading to periodic ripples on the surface. +- **[Jerk/Junction Deviation](cornering-calib)** settings can also contribute to VFA, as they control how the printer handles rapid changes in direction. +- **[Input Shaping](input-shaping-calib)** can help mitigate VFA by reducing vibrations during printing. ## VFA Test -OrcaSlicer's VFA test is used to identify the print speed that minimizes ringing artifacts. It prints a tower with walls at key angles while gradually increasing the print speed. The goal is to find the speed at which VFA artifacts are least visible, revealing the optimal range for clean surfaces. +The VFA Speed Test in OrcaSlicer helps identify which print speeds trigger MRR artifacts. It prints a vertical tower with walls at various angles while progressively increasing the print speed. ![vfa_test_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_menu.png?raw=true) -![vfa_test_print](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_print.jpg?raw=true) \ No newline at end of file +![vfa_test_print](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_print.jpg?raw=true) + +After printing, inspect the tower for MRR artifacts. Look for speeds where the surface becomes visibly smoother or rougher. This allows you to pinpoint problematic speed ranges. + +You can then configure the **Resonance Avoidance Speed Range** in the printer profile to skip speeds that cause visible artifacts. + +![vfa_resonance_avoidance](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/vfa/vfa_resonance_avoidance.png?raw=true) diff --git a/doc/calibration/volumetric-speed-calib.md b/doc/calibration/volumetric-speed-calib.md index 6eb40f5203..8b47ab12bb 100644 --- a/doc/calibration/volumetric-speed-calib.md +++ b/doc/calibration/volumetric-speed-calib.md @@ -2,19 +2,19 @@ This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament. -You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer. +You will be prompted to enter the settings for the test: start volumetric speed, end volumetric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer. Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well. -![mvf_measurement_point](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/mvf/mvf_measurement_point.jpg?raw=true) +![mvf_measurement_point](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_measurement_point.jpg?raw=true) Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings. -![mvf_caliper_sample_mvf](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/mvf/mvf_caliper_sample_mvf.jpg?raw=true) +![mvf_caliper_sample_mvf](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_caliper_sample_mvf.jpg?raw=true) You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filament. -![mvf_gui_flow](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/mvf/mvf_gui_flow.jpg?raw=true) +![mvf_gui_flow](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/MVF/mvf_gui_flow.jpg?raw=true) > [!NOTE] > You may also choose to conservatively reduce the flow by 5-10% to ensure print quality. diff --git a/doc/developer-reference/How-to-create-profiles.md b/doc/developer-reference/How-to-create-profiles.md index 3a3a9adb24..7eeacc76af 100644 --- a/doc/developer-reference/How-to-create-profiles.md +++ b/doc/developer-reference/How-to-create-profiles.md @@ -292,12 +292,16 @@ Example variant profile: - The `model` directory under the vendor folder is intended to behave similarly to `machine` profiles. - Used for additional printer-related 3D models or definitions, stored at: -``` +```shell resources\profiles\vendor_name\model\ ``` ## Vendor Meta File +```shell +resources\profiles\vendor_name.json +``` + Each vendor must include a JSON file in the `resources\profiles` directory, named `vendor_name.json`. This file lists all available models, variants, processes, and filaments: Example: @@ -401,7 +405,6 @@ In addition to the Orca validator, you should run the `orca_extra_profile_check. python ./orca_extra_profile_check.py ``` - You can also enable or disable specific checks: - `--help`: displays help information @@ -410,7 +413,6 @@ You can also enable or disable specific checks: - `--check-materials`: checks default material names in machine profiles - `--check-obsolete-keys`: checks for obsolete keys in profiles - #### Sample usage with all checks enabled ```shell diff --git a/doc/developer-reference/Localization_guide.md b/doc/developer-reference/Localization_guide.md index ffc347db8c..ad84ad6ea0 100644 --- a/doc/developer-reference/Localization_guide.md +++ b/doc/developer-reference/Localization_guide.md @@ -4,17 +4,17 @@ The purpose of this guide is to describe how to contribute to the Orca Slicer tr Those can be downloaded here: -- https://sourceforge.net/directory/os:windows/?q=gnu+gettext GNUgettext package contains a set of tools to extract strings from the source code and to create the translation Catalog. -- https://poedit.net PoEdit provides good interface for the translators. +- [GNUgettext](https://www.gnu.org/software/gettext/) package contains a set of tools to extract strings from the source code and to create the translation Catalog. +- [PoEdit](https://poedit.net) provides good interface for the translators. After GNUgettext is installed, it is recommended to add the path to gettext/bin to PATH variable. -Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext/manual/gettext.html +Full manual for GNUgettext can be seen here: [http://www.gnu.org/software/gettext/manual/gettext.html](http://www.gnu.org/software/gettext/manual/gettext.html) ### Scenario 1. How do I add a translation or fix an existing translation 1. Get PO-file 'OrcaSlicer_xx.pot' from corresponding sub-folder here: - https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n + [https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n](https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n) 2. Open this file in PoEdit as "Edit a translation" 3. Apply your corrections to the translation 4. Push changed OrcaSlicer_xx.po into the original folder @@ -23,15 +23,15 @@ Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext ### Scenario 2. How do I add a new language support 1. Get file OrcaSlicer.pot here : - https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n + [https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n](https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n) 2. Open it in PoEdit for "Create new translation" 3. Select Translation Language (for example French). 4. As a result you will have fr.po - the file containing translation to French. Notice. When the translation is complete you need to: - Rename the file to OrcaSlicer_fr.po - Click "Save file" button. OrcaSlicer_fr.mo will be created immediately - - Bambu_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n, and be pushed - - copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file. + - Bambu_Studio_fr.po needs to be copied into the sub-folder fr of [https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n](https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n), and be pushed + - copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file. ( name of folder "fr" means "French" - the translation language). ### Scenario 3. How do I add a new text resource when implementing a feature to Orca Slicer @@ -47,10 +47,10 @@ If you add new file resource, add it to the list of files containing macro `L()` ### Scenario 4. How do I use GNUgettext to localize my own application taking Orca Slicer as an example -1. For convenience create a list of files with this macro `L(s)`. We have +1. For convenience create a list of files with this macro `L(s)`. We have https://github.com/softfever/OrcaSlicer/blob/master/localization/i18n/list.txt. -2. Create template file(*.POT) with GNUgettext command: +2. Create template file(*.POT) with GNUgettext command: ```shell xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o OrcaSlicer.pot -f list.txt @@ -59,9 +59,9 @@ If you add new file resource, add it to the list of files containing macro `L()` Use flag `--from-code=UTF-8` to specify that the source strings are in UTF-8 encoding Use flag `--debug` to correctly extract formatted strings(used %d, %s etc.) -3. Create PO- and MO-files for your project as described above. +3. Create PO- and MO-files for your project as described above. -4. To merge old PO-file with strings from created new POT-file use command: +4. To merge old PO-file with strings from created new POT-file use command: ```shell msgmerge -N -o new.po old.po new.pot @@ -69,17 +69,20 @@ If you add new file resource, add it to the list of files containing macro `L()` Use option `-N` to not using fuzzy matching when an exact match is not found. -5. To concatenate old PO-file with strings from new PO-file use command: +5. To concatenate old PO-file with strings from new PO-file use command: ```shell msgcat -o new.po old.po ``` -6. Create an English translation catalog with command: - ```shell - msgen -o new.po old.po - ``` - Notice, in this Catalog it will be totally same strings for initial text and translated. +6. Create an English translation catalog with command: + + ```shell + msgen -o new.po old.po + ``` + + > [!NOTE] + > In this Catalog it will be totally same strings for initial text and translated. When you have Catalog to translation open POT or PO file in PoEdit and start translating. diff --git a/doc/developer-reference/Preset-and-bundle.md b/doc/developer-reference/Preset-and-bundle.md index 55ad3632f1..4c4b35f3e9 100644 --- a/doc/developer-reference/Preset-and-bundle.md +++ b/doc/developer-reference/Preset-and-bundle.md @@ -1,3 +1,5 @@ +# Preset and Bundle + This page deals with the explanation for 3 classes in the code. ## [`Preset`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/libslic3r/Preset.hpp) @@ -9,15 +11,15 @@ As the name might suggest this class deals with presets for various things. It d - `TYPE_PRINT`: Refers to a process preset. It's called 'Print' probably due to some legacy code. -![process-preset-full](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/process-preset-full.png?raw=true) +![process-preset-full](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process-preset-full.png?raw=true) - `TYPE_FILAMENT`: As the name suggests this preset is for filaments -![filament-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/filament-preset.png?raw=true) +![filament-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/filament-preset.png?raw=true) - `TYPE_PRINTER`: Preset for printers. -![printer-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/printer-preset.png?raw=true) +![printer-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/printer-preset.png?raw=true) There are other preset types but some of them are for SLA. Which is legacy code, since SLA printers are no longer supported. Above 3 are the important types. diff --git a/doc/developer-reference/plater-sidebar-tab-combobox.md b/doc/developer-reference/plater-sidebar-tab-combobox.md index 45d5c460de..c0dc28a109 100644 --- a/doc/developer-reference/plater-sidebar-tab-combobox.md +++ b/doc/developer-reference/plater-sidebar-tab-combobox.md @@ -5,24 +5,24 @@ WIP... > [!WARNING] > !! incomplete, possibly inaccurate, being updated with new info !! -## [`Plater`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/gui/Plater.hpp) +## [`Plater`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp) Refers to the entire application. The whole view, file loading, project saving and loading is all managed by this class. This class contains members for the model viewer, the sidebar, gcode viewer and everything else. -## [`Sidebar`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/gui/Plater.hpp) +## [`Sidebar`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp) This is relating the the sidebar in the application window -![full-sidebar](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/full-sidebar.png?raw=true) +![full-sidebar](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/full-sidebar.png?raw=true) -## [`ComboBox`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/gui/Widgets/ComboBox.hpp) +## [`ComboBox`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Widgets/ComboBox.hpp) The drop down menus where you can see and select presets -![combobox](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/combobox.png?raw=true) +![combobox](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/combobox.png?raw=true) -## [`Tab`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/gui/Tab.hpp) +## [`Tab`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Tab.hpp) Refers to the various windows with settings. e.g. the Popup to edit printer or filament preset. Also the section to edit process preset and the object list. These 4 are managed by `TabPrinter`, `TabFilament`, `TabPrint` and `TabPrintModel` respectively. -![tab-popup](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/gui/tab-popup.png?raw=true) +![tab-popup](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/tab-popup.png?raw=true) diff --git a/doc/images/Flow-Rate/flowrate-0-5.jpg b/doc/images/Flow-Rate/flowrate-0-5.jpg index 364b67351a..adf114ee2a 100644 Binary files a/doc/images/Flow-Rate/flowrate-0-5.jpg and b/doc/images/Flow-Rate/flowrate-0-5.jpg differ diff --git a/doc/images/Flow-Rate/flowrate-6.jpg b/doc/images/Flow-Rate/flowrate-6.jpg index d5f65683c9..2e166982cb 100644 Binary files a/doc/images/Flow-Rate/flowrate-6.jpg and b/doc/images/Flow-Rate/flowrate-6.jpg differ diff --git a/doc/images/Flow-Rate/flowrate-pass1.jpg b/doc/images/Flow-Rate/flowrate-pass1.jpg index 8cbe342800..01ef036ea5 100644 Binary files a/doc/images/Flow-Rate/flowrate-pass1.jpg and b/doc/images/Flow-Rate/flowrate-pass1.jpg differ diff --git a/doc/images/Flow-Rate/flowrate-pass2.jpg b/doc/images/Flow-Rate/flowrate-pass2.jpg index 5d4197d143..2e09a8a127 100644 Binary files a/doc/images/Flow-Rate/flowrate-pass2.jpg and b/doc/images/Flow-Rate/flowrate-pass2.jpg differ diff --git a/doc/images/gui/process-preset-full.png b/doc/images/GUI/process-preset-full.png similarity index 100% rename from doc/images/gui/process-preset-full.png rename to doc/images/GUI/process-preset-full.png diff --git a/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg b/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg index 38d8b5aa19..a4dc561ec7 100644 Binary files a/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg and b/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg differ diff --git a/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg b/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg index ea40d66b7c..0aa4d7c13e 100644 Binary files a/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg and b/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg differ diff --git a/doc/images/InputShaping/IS_freq_klipper_print_measure.jpg b/doc/images/InputShaping/IS_freq_klipper_print_measure.jpg index 6eed83ef36..812236d590 100644 Binary files a/doc/images/InputShaping/IS_freq_klipper_print_measure.jpg and b/doc/images/InputShaping/IS_freq_klipper_print_measure.jpg differ diff --git a/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg b/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg index ae311923eb..db7080cb3d 100644 Binary files a/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg and b/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg differ diff --git a/doc/images/JunctionDeviation/jd_first_print_measure.jpg b/doc/images/JunctionDeviation/jd_first_print_measure.jpg index a850264848..efff5efb3c 100644 Binary files a/doc/images/JunctionDeviation/jd_first_print_measure.jpg and b/doc/images/JunctionDeviation/jd_first_print_measure.jpg differ diff --git a/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png b/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png new file mode 100644 index 0000000000..a34e93d1d2 Binary files /dev/null and b/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png differ diff --git a/doc/images/JunctionDeviation/jd_second_print_measure.jpg b/doc/images/JunctionDeviation/jd_second_print_measure.jpg index da0c4fc9bb..03706f0c35 100644 Binary files a/doc/images/JunctionDeviation/jd_second_print_measure.jpg and b/doc/images/JunctionDeviation/jd_second_print_measure.jpg differ diff --git a/doc/images/Precision/PolyHoles.png b/doc/images/Precision/PolyHoles.png index 7fce37757b..a936fa2298 100644 Binary files a/doc/images/Precision/PolyHoles.png and b/doc/images/Precision/PolyHoles.png differ diff --git a/doc/images/STL-Transformation/stl-transformation-params.png b/doc/images/STL-Transformation/stl-transformation-params.png index da9c312ef8..bd8919e275 100644 Binary files a/doc/images/STL-Transformation/stl-transformation-params.png and b/doc/images/STL-Transformation/stl-transformation-params.png differ diff --git a/doc/images/STL-Transformation/stl-transformation-smooth-rough.png b/doc/images/STL-Transformation/stl-transformation-smooth-rough.png index 0d69838bc8..762f87d02e 100644 Binary files a/doc/images/STL-Transformation/stl-transformation-smooth-rough.png and b/doc/images/STL-Transformation/stl-transformation-smooth-rough.png differ diff --git a/doc/images/STL-Transformation/stl-transformation-split.png b/doc/images/STL-Transformation/stl-transformation-split.png index 85480c97b2..64184f917b 100644 Binary files a/doc/images/STL-Transformation/stl-transformation-split.png and b/doc/images/STL-Transformation/stl-transformation-split.png differ diff --git a/doc/images/Temp-calib/temp-tower.jpg b/doc/images/Temp-calib/temp-tower.jpg index 5394d25420..00135dcedb 100644 Binary files a/doc/images/Temp-calib/temp-tower.jpg and b/doc/images/Temp-calib/temp-tower.jpg differ diff --git a/doc/images/fill/infill-multiline-1-5.gif b/doc/images/fill/infill-multiline-1-5.gif new file mode 100644 index 0000000000..0194cd7127 Binary files /dev/null and b/doc/images/fill/infill-multiline-1-5.gif differ diff --git a/doc/images/fill/infill-multiline-esthetic.gif b/doc/images/fill/infill-multiline-esthetic.gif new file mode 100644 index 0000000000..b6e509c842 Binary files /dev/null and b/doc/images/fill/infill-multiline-esthetic.gif differ diff --git a/doc/images/fill/infill-multiline-overlapping.gif b/doc/images/fill/infill-multiline-overlapping.gif new file mode 100644 index 0000000000..8b1c7a1583 Binary files /dev/null and b/doc/images/fill/infill-multiline-overlapping.gif differ diff --git a/doc/images/fill/infill-top-coss-zag.png b/doc/images/fill/infill-top-cross-zag.png similarity index 100% rename from doc/images/fill/infill-top-coss-zag.png rename to doc/images/fill/infill-top-cross-zag.png diff --git a/doc/images/pa/apa-expected-results.jpg b/doc/images/pa/apa-expected-results.jpg index cc2a669a34..3d00d070fe 100644 Binary files a/doc/images/pa/apa-expected-results.jpg and b/doc/images/pa/apa-expected-results.jpg differ diff --git a/doc/images/pa/apa-expected-seam.jpg b/doc/images/pa/apa-expected-seam.jpg index f16a522621..2be2970f1b 100644 Binary files a/doc/images/pa/apa-expected-seam.jpg and b/doc/images/pa/apa-expected-seam.jpg differ diff --git a/doc/images/pa/apa-expected-solid-infill.jpg b/doc/images/pa/apa-expected-solid-infill.jpg index e74a049f7d..e0da3828ee 100644 Binary files a/doc/images/pa/apa-expected-solid-infill.jpg and b/doc/images/pa/apa-expected-solid-infill.jpg differ diff --git a/doc/images/pa/apa-identify-optimal.jpg b/doc/images/pa/apa-identify-optimal.jpg index 29ccecf190..7795eb704d 100644 Binary files a/doc/images/pa/apa-identify-optimal.jpg and b/doc/images/pa/apa-identify-optimal.jpg differ diff --git a/doc/images/pa/apa-identify-too-high.jpg b/doc/images/pa/apa-identify-too-high.jpg index 66a1ee9db2..234876a53a 100644 Binary files a/doc/images/pa/apa-identify-too-high.jpg and b/doc/images/pa/apa-identify-too-high.jpg differ diff --git a/doc/images/pa/apa-identify-too-low.jpg b/doc/images/pa/apa-identify-too-low.jpg index 0c7e720e91..d822abef39 100644 Binary files a/doc/images/pa/apa-identify-too-low.jpg and b/doc/images/pa/apa-identify-too-low.jpg differ diff --git a/doc/images/pa/apa-setup-result-acceleration-jerk.png b/doc/images/pa/apa-setup-result-acceleration-jerk.png index 659d2dbd69..11cdb791cd 100644 Binary files a/doc/images/pa/apa-setup-result-acceleration-jerk.png and b/doc/images/pa/apa-setup-result-acceleration-jerk.png differ diff --git a/doc/images/pa/apa-setup-result-speed.png b/doc/images/pa/apa-setup-result-speed.png index 4117c1337c..ea38410aa3 100644 Binary files a/doc/images/pa/apa-setup-result-speed.png and b/doc/images/pa/apa-setup-result-speed.png differ diff --git a/doc/images/pa/apa-test.png b/doc/images/pa/apa-test.png index 5e5cf76dc6..23de4bb2e0 100644 Binary files a/doc/images/pa/apa-test.png and b/doc/images/pa/apa-test.png differ diff --git a/doc/images/pa/apa-test210.jpg b/doc/images/pa/apa-test210.jpg deleted file mode 100644 index 892c338c9d..0000000000 Binary files a/doc/images/pa/apa-test210.jpg and /dev/null differ diff --git a/doc/images/pa/apa-test210.png b/doc/images/pa/apa-test210.png new file mode 100644 index 0000000000..2019ec45d2 Binary files /dev/null and b/doc/images/pa/apa-test210.png differ diff --git a/doc/images/pa/apa-unexpected-solid-infill.jpg b/doc/images/pa/apa-unexpected-solid-infill.jpg index a9ce880394..7d1ee8290d 100644 Binary files a/doc/images/pa/apa-unexpected-solid-infill.jpg and b/doc/images/pa/apa-unexpected-solid-infill.jpg differ diff --git a/doc/images/pa/pa-line-0-016.jpg b/doc/images/pa/pa-line-0-016.jpg deleted file mode 100644 index 0b3f511838..0000000000 Binary files a/doc/images/pa/pa-line-0-016.jpg and /dev/null differ diff --git a/doc/images/pa/pa-line-0-016.png b/doc/images/pa/pa-line-0-016.png new file mode 100644 index 0000000000..0a484fe0ad Binary files /dev/null and b/doc/images/pa/pa-line-0-016.png differ diff --git a/doc/images/pa/pa-lines.png b/doc/images/pa/pa-lines.png index 23c1a7a49f..a4c2d08185 100644 Binary files a/doc/images/pa/pa-lines.png and b/doc/images/pa/pa-lines.png differ diff --git a/doc/images/pa/pa-pattern-batch-plater.png b/doc/images/pa/pa-pattern-batch-plater.png index 04eef48956..b96a4dc3a3 100644 Binary files a/doc/images/pa/pa-pattern-batch-plater.png and b/doc/images/pa/pa-pattern-batch-plater.png differ diff --git a/doc/images/pa/pa-tower-measure.jpg b/doc/images/pa/pa-tower-measure.jpg index d1fd3c49bc..2577b0bd0e 100644 Binary files a/doc/images/pa/pa-tower-measure.jpg and b/doc/images/pa/pa-tower-measure.jpg differ diff --git a/doc/images/pa/pa-tower.jpg b/doc/images/pa/pa-tower.jpg index 0a4c5b0edc..05f053888f 100644 Binary files a/doc/images/pa/pa-tower.jpg and b/doc/images/pa/pa-tower.jpg differ diff --git a/doc/images/retraction/retraction_test_print.jpg b/doc/images/retraction/retraction_test_print.jpg index 716496f483..7b2b864443 100644 Binary files a/doc/images/retraction/retraction_test_print.jpg and b/doc/images/retraction/retraction_test_print.jpg differ diff --git a/doc/images/seam/seam-quality.jpg b/doc/images/seam/seam-quality.jpg index 2e3d76195c..3b539d3671 100644 Binary files a/doc/images/seam/seam-quality.jpg and b/doc/images/seam/seam-quality.jpg differ diff --git a/doc/images/top-bottom-shells/top-bottom-shells.png b/doc/images/top-bottom-shells/top-bottom-shells.png new file mode 100644 index 0000000000..51f1097c0a Binary files /dev/null and b/doc/images/top-bottom-shells/top-bottom-shells.png differ diff --git a/doc/images/vfa/vfa_resonance_avoidance.png b/doc/images/vfa/vfa_resonance_avoidance.png new file mode 100644 index 0000000000..a50bde1c8d Binary files /dev/null and b/doc/images/vfa/vfa_resonance_avoidance.png differ diff --git a/doc/print_prepare/stl-transformation.md b/doc/print_prepare/stl-transformation.md index 7a1ea7ec39..3dd56ff40d 100644 --- a/doc/print_prepare/stl-transformation.md +++ b/doc/print_prepare/stl-transformation.md @@ -11,7 +11,7 @@ In contrast, using STEP files offers a higher-quality mesh that more accurately This setting determines how STEP files are converted into STL files and is displayed during the STEP file import process. -If you don't see this when opening a STEP file, check [Don't show again](#Don't-show-again) below. +If you don't see this when opening a STEP file, check [Don't show again](#dont-show-again) below. ![stl-transformation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/STL-Transformation/stl-transformation.png?raw=true) @@ -25,7 +25,7 @@ A finer mesh will result in a more accurate representation of the original surfa - **Linear Deflection:** Specifies the maximum distance allowed between the original surface and its polygonal approximation. Lower values produce a mesh that more accurately follows the original curvature. - **Angular Deflection:** Defines the maximum allowable angle difference between the actual surface and its tessellated counterpart. Smaller angular deflection values yield a more precise mesh. -#### Split compound and compsolid into multiple objects: +#### Split compound and compsolid into multiple objects Enabling this option will split the imported 3D file into separate objects. This is especially useful for adjusting individual object positions, tweaking print settings, or optimizing the model through simplification. @@ -50,7 +50,7 @@ To access the Simplify Model option, right-click on the object to simplify in th It is recommended to enable the "Show Wireframe" option when running a simplification process to visually inspect the outcome. However, be cautious: overly aggressive simplification may lead to noticeable detail loss, increased ringing, or other printing issues. -### You can Simplify your model using the following options: +### You can Simplify your model using the following options - **Detail Level:** Control the level of detail in the simplified model by choosing from five preset options. This setting allows for a balance between mesh fidelity and performance. - **Decimate Ratio:** Adjust the ratio between the original model's polygon count and that of the simplified model. For instance, a decimate ratio of 0.5 will yield a model with approximately half the original number of polygons. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_advanced.md b/doc/print_settings/multimaterial/multimaterial_settings_advanced.md new file mode 100644 index 0000000000..6ab96e960b --- /dev/null +++ b/doc/print_settings/multimaterial/multimaterial_settings_advanced.md @@ -0,0 +1,47 @@ +# Multimaterial Advanced + +- [Interlocking Beam](#interlocking-beam) +- [Interface Shells](#interface-shells) +- [Maximum Width of Segmented Region](#maximum-width-of-segmented-region) +- [Interlocking depth of Segmented Region](#interlocking-depth-of-segmented-region) +- [Interlocking Beam Width](#interlocking-beam-width) +- [Interlocking Direction](#interlocking-direction) +- [Interlocking Beam Layers](#interlocking-beam-layers) +- [Interlocking Depth](#interlocking-depth) +- [Interlocking Boundary Avoidance](#interlocking-boundary-avoidance) + +## Interlocking Beam + +Generate interlocking beam structure at the locations where different filaments touch. This improves the adhesion between filaments, especially models printed in different materials. + +## Interface Shells + +Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material. + +## Maximum Width of Segmented Region + +Maximum width of a segmented region. Zero disables this feature. + +## Interlocking depth of Segmented Region + +Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature. + +## Interlocking Beam Width + +The width of the interlocking structure beams. + +## Interlocking Direction + +Orientation of interlock beams. + +## Interlocking Beam Layers + +The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects. + +## Interlocking Depth + +The distance from the boundary between filaments to generate interlocking structure, measured in cells. Too few cells will result in poor adhesion. + +## Interlocking Boundary Avoidance + +The distance from the outside of a model where interlocking structures will not be generated, measured in cells. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_filament_for_features.md b/doc/print_settings/multimaterial/multimaterial_settings_filament_for_features.md new file mode 100644 index 0000000000..c6366ffc90 --- /dev/null +++ b/doc/print_settings/multimaterial/multimaterial_settings_filament_for_features.md @@ -0,0 +1,19 @@ +# Filament for Features + +This option is available only for Multi-Extruder printers. + +## Walls + +Filament to print walls. + +## Infill + +Filament to print internal sparse infill. + +## Solid infill + +Filament to print solid infill. + +## Wipe Tower + +The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred). diff --git a/doc/print_settings/multimaterial/multimaterial_settings_flush_options.md b/doc/print_settings/multimaterial/multimaterial_settings_flush_options.md new file mode 100644 index 0000000000..534f399e4f --- /dev/null +++ b/doc/print_settings/multimaterial/multimaterial_settings_flush_options.md @@ -0,0 +1,9 @@ +# Flush Options + +## Flush into objects' infill + +Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be seen outside. It will not take effect, unless the prime tower is enabled. + +## Flush into objects' support + +Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect, unless the prime tower is enabled. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_ooze_prevention.md b/doc/print_settings/multimaterial/multimaterial_settings_ooze_prevention.md new file mode 100644 index 0000000000..f12083b80a --- /dev/null +++ b/doc/print_settings/multimaterial/multimaterial_settings_ooze_prevention.md @@ -0,0 +1,15 @@ +# Ooze prevention + +This option will drop the temperature of the inactive extruders to prevent oozing. + +## Temperature variation + +Temperature difference to be applied when an extruder is not active. The value is not used when 'idle_temperature' in filament settings is set to non-zero value. + +## Preheat time + +To reduce the waiting time after tool change, Orca can preheat the next tool while the current tool is still in use. This setting specifies the time in seconds to preheat the next tool. Orca will insert a M104 command to preheat the tool in advance. + +## Preheat steps + +Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_prime_tower.md b/doc/print_settings/multimaterial/multimaterial_settings_prime_tower.md new file mode 100644 index 0000000000..e35f93e285 --- /dev/null +++ b/doc/print_settings/multimaterial/multimaterial_settings_prime_tower.md @@ -0,0 +1,73 @@ +# Prime Tower + +The wiping tower can be used to clean up the residue on the nozzle and " +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects. + +## Width + +Width of the prime tower. + +## Brim width + +Width of the brim around the prime tower. + +## Wipe Tower Rotation Angle + +Wipe tower rotation angle with respect to x-axis. + +## Maximal bridging distance + +Maximal distance between supports on sparse infill sections. + +## Wipe tower purge lines spacing + +Spacing of purge lines on the wipe tower. + +## Extra flow for purge + +Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically. + +## Maximum wipe tower print speed + +The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead. +When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead. +Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower. +Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled. +For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting. + +## Wall type + +Wipe tower outer wall type. + +### Rectangle + +The default wall type, a rectangle with fixed width and height. + +### Cone + +A cone with a fillet at the bottom to help stabilize the wipe tower. + +#### Stabilization cone apex angle + +Angle at the apex of the cone that is used to stabilize the wipe tower. Large angle means wider base. + +### Rib + +Adds four ribs to the tower wall for enhanced stability. + +#### Extra rib length + +Positive values can increase the size of the rib wall, while negative values can reduce the size. However, the size of the rib wall can not be smaller than that determined by the cleaning volume. + +#### Rib width + +Width of the rib wall. + +#### Fillet wall + +The wall of prime tower will fillet. + +## No sparse layers + +If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print. diff --git a/doc/print_settings/others/others_settings_brim.md b/doc/print_settings/others/others_settings_brim.md new file mode 100644 index 0000000000..858ca6f322 --- /dev/null +++ b/doc/print_settings/others/others_settings_brim.md @@ -0,0 +1,46 @@ +# Brim + +Brim is a flat layer printed around the base of a model to help with adhesion to the print bed. It can be useful for models with small footprints or those that are prone to warping. + +## Type + +This controls the generation of the brim at outer and/or inner side of models. +Auto means the brim width is analyzed and calculated automatically. + +### Painted + +Painted will generate a brim only on painted areas of the model in the Prepare tab. + +### Outer + +Outer will generate a brim around the outer perimeter of the model. +Easier to remove than inner brim but can affect the model's appearance if the brim is not removed cleanly. + +### Inner + +Inner will generate a brim around the inner perimeter of the model. +More difficult to remove than outer brim and may close the model's inner details, but can hide where the brim was removed. + +### Mouse Ears + +Mouse ears are small extensions added to the brim to help with adhesion and prevent warping. +Usually this ears are added in the corners of objects to provide additional support and affect the model's appearance less than a full brim. + +#### Ear max angle + +Maximum angle to let a brim ear appear. +If set to 0, no brim will be created. +If set to ~180, brim will be created on everything but straight sections. + +#### Ear detection radius + +The geometry will be decimated before detecting sharp angles. This parameter indicates the minimum length of the deviation for the decimation. +0 to deactivate. + +## Width + +Distance from model to the outermost brim line. + +## Brim-Object Gap + +A gap between innermost brim line and object can make brim be removed more easily. diff --git a/doc/print_settings/others/others_settings_g_code_output.md b/doc/print_settings/others/others_settings_g_code_output.md new file mode 100644 index 0000000000..6986d9c24e --- /dev/null +++ b/doc/print_settings/others/others_settings_g_code_output.md @@ -0,0 +1,27 @@ +# G-Code Output + +G-code output settings control how the G-code is generated and formatted. These settings can affect the readability of the G-code, the efficiency of the print, and compatibility with various firmware, printers and post-processing tools. + +## Reduce Infill Retraction + +Don't retract when the travel is in infill area absolutely. That means the oozing can't been seen. This can reduce times of retraction for complex model and save printing time, but make slicing and G-code generating slower. + +## Add line number + +Enable this to add line number(Nx) at the beginning of each G-code line. + +## Verbose G-code + +Enable this to get a commented G-code file, with each line explained by a descriptive text. If you print from SD card, the additional weight of the file could make your firmware slow down. + +## Label Objects + +Enable this to add comments into the G-code labeling print moves with what object they belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill. + +## Exclude Objects + +Enable this option to add EXCLUDE OBJECT command in G-code. + +## Filename Format + +Users can define the project file name when exporting. diff --git a/doc/print_settings/others/others_settings_notes.md b/doc/print_settings/others/others_settings_notes.md new file mode 100644 index 0000000000..0699e320fd --- /dev/null +++ b/doc/print_settings/others/others_settings_notes.md @@ -0,0 +1,3 @@ +# Notes + +You can put your notes regarding the filament here. diff --git a/doc/print_settings/others/others_settings_post_processing_scripts.md b/doc/print_settings/others/others_settings_post_processing_scripts.md new file mode 100644 index 0000000000..8b933b7d23 --- /dev/null +++ b/doc/print_settings/others/others_settings_post_processing_scripts.md @@ -0,0 +1,3 @@ +# Post-Processing Scripts + +Here you can set up post-processing scripts that will be executed after slicing. This allows you to modify the G-code output or perform additional tasks. diff --git a/doc/print_settings/others/others_settings_skirt.md b/doc/print_settings/others/others_settings_skirt.md new file mode 100644 index 0000000000..6d695c9999 --- /dev/null +++ b/doc/print_settings/others/others_settings_skirt.md @@ -0,0 +1,46 @@ +# Skirt + +Skirts are additional perimeters printed at the base of the model to prime the nozzle. + +## Loops + +Number of loops for the skirt. Zero means disabling skirt. + +## Type + +- Combined - single skirt for all objects. +- Per object - individual object skirt. + +## Minimum extrusion Length + +Minimum filament extrusion length in mm when printing the skirt. Zero means this feature is disabled. +Using a non-zero value is useful if the printer is set up to print without a prime line. +Final number of loops is not taking into account while arranging or validating objects distance. Increase loop number in such case. + +## Distance + +Distance from skirt to brim or object. + +## Start point + +Angle from the object center to skirt start point. Zero is the most right position, counter clockwise is positive angle. + +## Speed + +Speed of skirt, in mm/s. Zero means use default layer extrusion speed. + +## Height + +How many layers of skirt. Usually only one layer. + +## Shield + +A draft shield is useful to protect an ABS or ASA print from warping and detaching from print bed due to wind draft. It is usually needed only with open frame printers, i.e. without an enclosure. +"Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt height' is used. + +> [!NOTE] +> With the draft shield active, the skirt will be printed at skirt distance from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value. + +## Single loop after first layer + +Limits the draft shield loops to one wall after the first layer. This is useful, on occasion, to conserve filament but may cause the draft shield to warp / crack. diff --git a/doc/print_settings/others/others_settings_special_mode.md b/doc/print_settings/others/others_settings_special_mode.md new file mode 100644 index 0000000000..fa78e4ea57 --- /dev/null +++ b/doc/print_settings/others/others_settings_special_mode.md @@ -0,0 +1,158 @@ +# Special Mode + +- [Slicing Mode](#slicing-mode) + - [Regular](#regular) + - [Close Holes](#close-holes) + - [Even Odd](#even-odd) +- [Print Sequence](#print-sequence) + - [By Layer](#by-layer) + - [Intra-layer order](#intra-layer-order) + - [By Object](#by-object) +- [Spiral vase](#spiral-vase) + - [Smooth Spiral](#smooth-spiral) + - [Max XY Smoothing](#max-xy-smoothing) + - [Spiral starting flow ratio](#spiral-starting-flow-ratio) + - [Spiral finishing flow ratio](#spiral-finishing-flow-ratio) +- [Timelapse](#timelapse) +- [Fuzzy Skin](#fuzzy-skin) + - [Fuzzy Skin Mode](#fuzzy-skin-mode) + - [Contour](#contour) + - [Contour and Hole](#contour-and-hole) + - [All Walls](#all-walls) + - [Noise Type](#noise-type) + - [Classic](#classic) + - [Perlin](#perlin) + - [Billow](#billow) + - [Ridged Multifractal](#ridged-multifractal) + - [Voronoi](#voronoi) + - [Point distance](#point-distance) + - [Skin thickness](#skin-thickness) + - [Skin feature size](#skin-feature-size) + - [Skin Noise Octaves](#skin-noise-octaves) + - [Skin Noise Persistence](#skin-noise-persistence) + - [Apply fuzzy skin to first layer](#apply-fuzzy-skin-to-first-layer) + +## Slicing Mode + +The slicing mode determines how the model is sliced into layers and how the G-code is generated. Different modes can be used to achieve various printing effects or to optimize the print process. + +### Regular + +This is the default slicing mode. It slices the model layer by layer, generating G-code for each layer. + +### Close Holes + +Use "Close holes" to close all holes in the model. + +### Even Odd + +Use "Even-odd" for 3DLabPrint airplane models. + +## Print Sequence + +How multiple objects are printed in a single print job. + +### By Layer + +This option prints all objects layer by layer, one layer at a time. + +#### Intra-layer order + +Print order within a single layer. + +- **Default**: Prints objects based on their position in the bed and travel distance. +- **As object list**: Prints objects in the order they are listed in the object list. + +### By Object + +This option prints each object completely before moving on to the next object. + +## Spiral vase + +Spiralize smooths out the z moves of the outer contour. And turns a solid model into a single walled print with solid bottom layers. The final generated model has no seam. + +### Smooth Spiral + +Smooth Spiral smooths out X and Y moves as well, resulting in no visible seam at all, even in the XY directions on walls that are not vertical. + +#### Max XY Smoothing + +Maximum distance to move points in XY to try to achieve a smooth spiral. If expressed as a %, it will be computed over nozzle diameter. + +### Spiral starting flow ratio + +Sets the starting flow ratio while transitioning from the last bottom layer to the spiral. Normally the spiral transition scales the flow ratio from 0% to 100% during the first loop which can in some cases lead to under extrusion at the start of the spiral. + +### Spiral finishing flow ratio + +Sets the finishing flow ratio while ending the spiral. Normally the spiral transition scales the flow ratio from 100% to 0% during the last loop which can in some cases lead to under extrusion at the end of the spiral. + +## Timelapse + +WIP... + +## Fuzzy Skin + +Randomly jitter while printing the wall, so that the surface has a rough look. This setting controls the fuzzy position. + +### Fuzzy Skin Mode + +#### Contour + +Use "Contour" to apply fuzzy skin only to the outer contour of the model. + +#### Contour and Hole + +Use "Contour and Hole" to apply fuzzy skin to the outer contour and holes of the model. This is useful for models with internal features that you want to highlight. + +#### All Walls + +Use "All Walls" to apply fuzzy skin to external and inner walls of the model. + +### Noise Type + +Noise type to use for fuzzy skin generation. + +#### Classic + +Classic uniform random noise. + +#### Perlin + +Perlin noise, which gives a more consistent texture. + +#### Billow + +Billow noise is similar to Perlin noise, but has a clumpier appearance. It can create more pronounced features and is often used for natural textures. + +#### Ridged Multifractal + +Ridged noise with sharp, jagged features. Creates marble-like textures. + +#### Voronoi + +Voronoi noise divides the surface into voronoi cells, and displaces each one by a random amount. Creates a patchwork texture. + +### Point distance + +average distance between the random points introduced on each line segment. + +### Skin thickness + +The width within which to jitter. It's advised to be below outer wall line width." + +### Skin feature size + +The base size of the coherent noise features, in mm. Higher values will result in larger features. + +### Skin Noise Octaves + +The number of octaves of coherent noise to use. Higher values increase the detail of the noise, but also increase computation time. + +### Skin Noise Persistence + +The decay rate for higher octaves of the coherent noise. Lower values will result in smoother noise. + +### Apply fuzzy skin to first layer + +Whether to apply fuzzy skin on the first layer. diff --git a/doc/print_settings/quality/quality_settings_bridging.md b/doc/print_settings/quality/quality_settings_bridging.md new file mode 100644 index 0000000000..5a429163bf --- /dev/null +++ b/doc/print_settings/quality/quality_settings_bridging.md @@ -0,0 +1,63 @@ +# Bridging + +"Bridging" is a 3D printing technique that allows you to print structures across gaps or voids without direct support underneath. OrcaSlicer provides several parameters to optimize bridge quality, minimizing filament sag and improving the appearance of top layers. + +- [Flow ratio](#flow-ratio) +- [Bridge density](#bridge-density) +- [Thick bridges](#thick-bridges) +- [Extra bridge layers](#extra-bridge-layers) +- [Filter out small internal bridges](#filter-out-small-internal-bridges) +- [Bridge Counterbore hole](#bridge-counterbore-hole) + +## Flow ratio + +Decrease this value slightly (for example 0.9) to reduce the amount of material for bridge, to improve sag. + +The actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio. + +## Bridge density + +This value governs the thickness of the bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill. + +The actual internal bridge flow used is calculated by multiplying this value with the bridge flow ratio, the filament flow ratio, and if set, the object's flow ratio. + +## Thick bridges + +When enabled, thick bridges increase the reliability and strength of bridges, allowing you to span longer distances. However, this may result in a rougher surface finish. Disabling this option can improve the visual quality of bridges, but is recommended only for shorter spans or when using large nozzle sizes. + +## Extra bridge layers + +This option enables the generation of an extra bridge layer over internal and/or external bridges. + +Extra bridge layers help improve bridge appearance and reliability, as the solid infill is better supported. This is especially useful in fast printers, where the bridge and solid infill speeds vary greatly. The extra bridge layer results in reduced pillowing on top surfaces, as well as reduced separation of the external bridge layer from its surrounding perimeters. + +It is generally recommended to set this to at least 'External bridge only', unless specific issues with the sliced model are found. + +**Options:** + +1. **Disabled** - does not generate second bridge layers. This is the default and is set for compatibility purposes. +2. **External bridge only** - generates second bridge layers for external-facing bridges only. Please note that small bridges that are shorter or narrower than the set number of perimeters will be skipped as they would not benefit from a second bridge layer. If generated, the second bridge layer will be extruded parallel to the first bridge layer to reinforce the bridge strength. +3. **Internal bridge only** - generates second bridge layers for internal bridges over sparse infill only. Please note that the internal bridges count towards the top shell layer count of your model. The second internal bridge layer will be extruded as close to perpendicular to the first as possible. If multiple regions in the same island, with varying bridge angles are present, the last region of that island will be selected as the angle reference. +4. **Apply to all** - generates second bridge layers for both internal and external-facing bridges. + +## Filter out small internal bridges + +This option can help reduce pillowing on top surfaces in heavily slanted or curved models. + +By default, small internal bridges are filtered out and the internal solid infill is printed directly over the sparse infill. This works well in most cases, speeding up printing without too much compromise on top surface quality. + +However, in heavily slanted or curved models, especially where too low a sparse infill density is used, this may result in curling of the unsupported solid infill, causing pillowing. + +Enabling limited filtering or no filtering will print internal bridge layer over slightly unsupported internal solid infill. The options below control the sensitivity of the filtering, i.e. they control where internal bridges are created: + +1. **Filter** - enables this option. This is the default behavior and works well in most cases. +2. **Limited filtering** - creates internal bridges on heavily slanted surfaces while avoiding unnecessary bridges. This works well for most difficult models. +3. **No filtering** - creates internal bridges on every potential internal overhang. This option is useful for heavily slanted top surface models; however, in most cases, it creates too many unnecessary bridges. + +## Bridge Counterbore hole + +This option creates bridges for counterbore holes, allowing them to be printed without support. Available modes include: + +1. **None**: No bridge is created. +2. **Partially Bridged**: Only a part of the unsupported area will be bridged. +3. **Sacrificial Layer**: A full sacrificial bridge layer is created. \ No newline at end of file diff --git a/doc/print_settings/quality/quality_settings_ironing.md b/doc/print_settings/quality/quality_settings_ironing.md new file mode 100644 index 0000000000..1df9236ad5 --- /dev/null +++ b/doc/print_settings/quality/quality_settings_ironing.md @@ -0,0 +1,27 @@ +# Ironing + +Ironing is a process used to improve the surface finish of 3D prints by smoothing out the top layers. This is achieved by selectively melting the outermost layer of the print, allowing it to flow and fill in any gaps or imperfections. + +## Type + +This setting controls which layer being ironed. + +## Pattern + +The pattern that will be used when ironing. + +## Flow + +The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface. + +## Line spacing + +The distance between the lines of ironing. + +## Inset + +The distance to keep from the edges. A value of 0 sets this to half of the nozzle diameter. + +## Angle + +The angle ironing is done at. A negative number disables this function and uses the default method. diff --git a/doc/print_settings/quality/quality_settings_layer_height.md b/doc/print_settings/quality/quality_settings_layer_height.md index acdf4effdd..0ea6fa515a 100644 --- a/doc/print_settings/quality/quality_settings_layer_height.md +++ b/doc/print_settings/quality/quality_settings_layer_height.md @@ -2,7 +2,7 @@ This setting controls how tall each printed layer will be. Typically, a smaller layer height produces a better-looking part with less jagged edges, especially around curved sections (like the top of a sphere). However, lower layer heights mean more layers to print, proportionally increasing print time. -### Tips: +## Tips 1. **The optimal layer height depends on the size of your nozzle**. The set layer height must not be taller than 80% of the diameter of the nozzle, else there is little "squish" between the printed layer and the layer below, leading to weaker parts. @@ -10,10 +10,10 @@ This setting controls how tall each printed layer will be. Typically, a smaller For example, it is not uncommon to see "fish scale" type patterns on external walls when printing with a 0.4 mm nozzle at 0.08 mm layer height at speeds of 200mm/sec+. If you observe that pattern, simply increase your layer height to 30% of your nozzle height and/or slow down the print speed considerably. -# First Layer Height +## First Layer Height This setting controls how tall the first layer of the print will be. Typically, this is set to 50% of the nozzle width for optimal bed adhesion. -### Tip: +### Tip A thicker first layer is more forgiving to slight variations to the evenness of the build surface, resulting in a more uniform, visually, first layer. Set it to 0.25mm for a 0.4mm nozzle, for example, if your build surface is uneven or your printer has a slightly inconsistent z offset between print runs. However, as a rule of thumb, try not to exceed 65% of the nozzle width so as to not compromise bed adhesion too much. diff --git a/doc/print_settings/quality/quality_settings_line_width.md b/doc/print_settings/quality/quality_settings_line_width.md index 9c50d9d8a2..ceacab17e0 100644 --- a/doc/print_settings/quality/quality_settings_line_width.md +++ b/doc/print_settings/quality/quality_settings_line_width.md @@ -18,7 +18,7 @@ These settings control how wide the extruded lines are. - **Support:** The line width in mm or as a percentage of the nozzle size used when printing the model’s support structures. -## Tips: +## Tips 1. **Typically, the line width will be anything from 100% up to 150% of the nozzle width**. Due to the way the slicer’s flow math works, a 100% line width will attempt to extrude slightly “smaller” than the nozzle size and when squished onto the layer below will match the nozzle orifice. You can read more on the flow math here: [Flow Math](https://manual.slic3r.org/advanced/flow-math). diff --git a/doc/print_settings/quality/quality_settings_precision.md b/doc/print_settings/quality/quality_settings_precision.md index b6f0bca793..78538bed38 100644 --- a/doc/print_settings/quality/quality_settings_precision.md +++ b/doc/print_settings/quality/quality_settings_precision.md @@ -12,10 +12,9 @@ This section covers the settings that affect the precision of your prints. These - [Precise Z Height](#precise-z-height) - [Polyholes](#polyholes) - ## Slice gap closing radius -Cracks smaller than 2x gap closing radiusCracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low. +Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low. ## Resolution diff --git a/doc/print_settings/quality/quality_settings_wall_and_surfaces.md b/doc/print_settings/quality/quality_settings_wall_and_surfaces.md new file mode 100644 index 0000000000..6ba02d8981 --- /dev/null +++ b/doc/print_settings/quality/quality_settings_wall_and_surfaces.md @@ -0,0 +1,87 @@ +# Wall and surfaces + +- [Walls printing order](#walls-printing-order) + - [Inner/Outer](#innerouter) + - [Inner/Outer/Inner](#innerouterinner) + - [Outer/Inner](#outerinner) + - [Print infill first](#print-infill-first) +- [Wall loop direction](#wall-loop-direction) +- [Surface flow ratio](#surface-flow-ratio) +- [Only one wall](#only-one-wall) + - [Threshold](#threshold) +- [Avoid crossing walls](#avoid-crossing-walls) + - [Max detour length](#max-detour-length) +- [Small area flow compensation](#small-area-flow-compensation) + - [Flow Compensation Model](#flow-compensation-model) + +## Walls printing order + +Print sequence of the internal (inner) and external (outer) walls. + +### Inner/Outer + +Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighbouring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter. + +### Inner/Outer/Inner + +Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases. + +### Outer/Inner + +Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of Inner/Outer/Inner option. However, the z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface. + +### Print infill first + +Order of wall/infill. When the tickbox is unchecked the walls are printed first, which works best in most cases. +Printing infill first may help with extreme overhangs as the walls have the neighbouring infill to adhere to. However, the infill will slightly push out the printed walls where it is attached to them, resulting in a worse external surface finish. It can also cause the infill to shine through the external surfaces of the part. + +## Wall loop direction + +The direction which the wall loops are extruded when looking down from the top. +By default all walls are extruded in counter-clockwise, unless Reverse on even is enabled. Set this to any option other than Auto will force the wall direction regardless of the Reverse on even. + +> [!NOTE] +> This option will be disabled if spiral vase mode is enabled. + +## Surface flow ratio + +This factor affects the amount of material for top solid infill. You can decrease it slightly to have smooth surface finish. +The actual top surface flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio. + +## Only one wall + +Use only one wall on flat surfaces, to give more space to the top infill pattern. + +### Threshold + +If a top surface has to be printed and it's partially covered by another layer, it won't be considered at a top layer where its width is below this value. This can be useful to not let the 'one perimeter on top' trigger on surface that should be covered only by perimeters. This value can be a mm or a % of the perimeter extrusion width. +Warning: If enabled, artifacts can be created if you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts. + +## Avoid crossing walls + +Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is larger than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable. + +### Max detour length + +Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is larger than this value. Detour length could be specified either as an absolute value or as percentage (for example 50%) of a direct travel path. Zero to disable. + +## Small area flow compensation + +Enable flow compensation for small infill areas. + +### Flow Compensation Model + +used to adjust the flow for small infill areas. The model is expressed as a comma separated pair of values for extrusion length and flow correction factors, one per line, in the following format: + +```c++ +0,0; +0.2,0.4444; +0.4,0.6145; +0.6,0.7059; +0.8,0.7619; +1.5,0.8571; +2,0.8889; +3,0.9231; +5,0.9520; +10,1; +``` diff --git a/doc/print_settings/speed/speed_settings_acceleration.md b/doc/print_settings/speed/speed_settings_acceleration.md new file mode 100644 index 0000000000..282d8cada6 --- /dev/null +++ b/doc/print_settings/speed/speed_settings_acceleration.md @@ -0,0 +1,41 @@ +# Acceleration + +Acceleration in 3D printing is usually set on the printer's firmware settings. +This setting will try to override the acceleration when [normal printing acceleration](#normal-printing) value is different than 0. +Orca will limit the acceleration to not exceed the acceleration set in the Printer's Motion Ability settings. + +## Normal printing + +The default acceleration of both normal printing and travel. + +## Outer wall + +Acceleration for outer wall printing. This is usually set to a lower value than normal printing to ensure better quality. + +## Inner wall + +Acceleration for inner wall printing. This is usually set to a higher value than outer wall printing to improve speed. + +## Bridge + +Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration. + +## Sparse infill + +Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration. + +## Internal solid infill + +Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration. + +## Initial layer + +Acceleration of initial layer. Using a lower value can improve build plate adhesion. + +## Top surface + +Acceleration of top surface infill. Using a lower value may improve top surface quality. + +## Travel + +Acceleration of travel moves. This is usually set to a higher value than normal printing to reduce travel time. diff --git a/doc/print_settings/speed/speed_settings_extrusion_rate_smoothing.md b/doc/print_settings/speed/speed_settings_advanced.md similarity index 99% rename from doc/print_settings/speed/speed_settings_extrusion_rate_smoothing.md rename to doc/print_settings/speed/speed_settings_advanced.md index 9c479ec86e..c8c9144272 100644 --- a/doc/print_settings/speed/speed_settings_extrusion_rate_smoothing.md +++ b/doc/print_settings/speed/speed_settings_advanced.md @@ -1,4 +1,4 @@ -# Extrusion rate smoothing +# Speed Advanced - Extrusion rate smoothing Extrusion rate smoothing (ERS), also known as pressure equalizer in Prusa Slicer, aims to **limit the rate of extrusion volume change to be below a user set threshold (the ERS value).** It aims to assist the printer firmware internal motion planners, pressure advance in achieving the desired nozzle flow and reducing deviations against the ideal flow. diff --git a/doc/print_settings/speed/speed_settings_initial_layer_speed.md b/doc/print_settings/speed/speed_settings_initial_layer_speed.md new file mode 100644 index 0000000000..eb17862e01 --- /dev/null +++ b/doc/print_settings/speed/speed_settings_initial_layer_speed.md @@ -0,0 +1,17 @@ +# Initial layer speed + +## Initial layer + +Speed of initial layer except the solid infill part. + +## Initial layer infill + +Speed of solid infill part of initial layer. + +## Initial layer travel speed + +Travel speed of initial layer. + +## Number of slow layers + +The first few layers are printed slower than normal. The speed is gradually increased in a linear fashion over the specified number of layers. diff --git a/doc/print_settings/speed/speed_settings_jerk_xy.md b/doc/print_settings/speed/speed_settings_jerk_xy.md new file mode 100644 index 0000000000..b2a0fa5107 --- /dev/null +++ b/doc/print_settings/speed/speed_settings_jerk_xy.md @@ -0,0 +1,64 @@ +# Jerk XY + +Jerk in 3D printing is usually set on the printer's firmware settings. +This setting will try to override the jerk when [normal printing jerk](#normal-printing) or [Junction Deviation](#junction-deviation) value is different than 0. +Orca will limit the jerk to not exceed the jerk set in the Printer's Motion Ability settings. + +- [Default](#default) + - [Outer wall](#outer-wall) + - [Inner wall](#inner-wall) + - [Infill](#infill) + - [Top surface](#top-surface) + - [Initial layer](#initial-layer) + - [Travel](#travel) +- [Junction Deviation](#junction-deviation) +- [Useful links](#useful-links) + +## Default + +Default Jerk value. + +### Outer wall + +Jerk for outer wall printing. This is usually set to a lower value than normal printing to ensure better quality. + +### Inner wall + +Jerk for inner wall printing. This is usually set to a higher but still reasonable value than outer wall printing to improve speed. + +### Infill + +Jerk for infill printing. This is usually set to a value higher than inner wall printing to improve speed. + +### Top surface + +Jerk for top surface printing. This is usually set to a lower value than infill to ensure better quality. + +### Initial layer + +Jerk for initial layer printing. This is usually set to a lower value than top surface to improve adhesion. + +### Travel + +Jerk for travel printing. This is usually set to a higher value than infill to reduce travel time. + +## Junction Deviation + +Alternative to Jerk, Junction Deviation is the default method for controlling cornering speed in MarlinFW (Marlin2) printers. +Higher values result in more aggressive cornering speeds, while lower values produce smoother, more controlled cornering. + +This value will **only be overwritten** if it is lower than the Junction Deviation value set in Printer settings > Motion ability. If it is higher, the value configured in Motion ability will be used. + +To Calculate your Junction Deviation value, please refer to the [Junction Deviation Calibration guide](cornering-calib#junction-deviation). + +```math +JD = 0,4 \cdot \frac{\text{Jerk}^2}{\text{Accel.}} +``` + +## Useful links + +- [Klipper Kinematics](https://www.klipper3d.org/Kinematics.html?h=accelerat#acceleration) +- [Marlin Junction Deviation](https://marlinfw.org/docs/configuration/configuration.html#junction-deviation-) +- [JD Explained and Visualized, by Paul Wanamaker](https://reprap.org/forum/read.php?1,739819) +- [Computing JD for Marlin Firmware](https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html) +- [Improving GRBL: Cornering Algorithm](https://onehossshay.wordpress.com/2011/09/24/improving_grbl_cornering_algorithm/) diff --git a/doc/print_settings/speed/speed_settings_other_layers_speed.md b/doc/print_settings/speed/speed_settings_other_layers_speed.md new file mode 100644 index 0000000000..528254c31e --- /dev/null +++ b/doc/print_settings/speed/speed_settings_other_layers_speed.md @@ -0,0 +1,59 @@ +# Other layers speed + +- [Outer wall](#outer-wall) +- [Inner wall](#inner-wall) +- [Small perimeters](#small-perimeters) + - [Small perimeters threshold](#small-perimeters-threshold) +- [Sparse infill](#sparse-infill) +- [Internal solid infill](#internal-solid-infill) +- [Top surface](#top-surface) +- [Gap infill](#gap-infill) +- [Ironing speed](#ironing-speed) +- [Support](#support) +- [Support interface](#support-interface) + +## Outer wall + +Speed of outer wall which is outermost and visible. It's used to be slower than inner wall speed to get better quality. + +## Inner wall + +Speed of inner wall which is printed faster than outer wall to reduce print time. + +## Small perimeters + +This separate setting will affect the speed of perimeters having radius <= small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) it will be calculated on the outer wall speed setting above. +Set to zero for auto. + +### Small perimeters threshold + +This sets the threshold for small perimeter length. +Default threshold is 0mm. + +## Sparse infill + +Speed of sparse infill which is printed faster than solid infill to reduce print time. + +## Internal solid infill + +Speed of internal solid infill which is printed faster than top surface speed to reduce print time. + +## Top surface + +Speed of top surface which is printed slower than internal solid infill to get better quality. + +## Gap infill + +Speed of gap infill which is printed faster than top surface speed to reduce print time. + +## Ironing speed + +Ironing speed, typically slower than the top surface speed to ensure a smooth finish. + +## Support + +Speed of support material which is printed slower than the main model to ensure proper adhesion and prevent sagging. + +## Support interface + +Speed of support interface material which is printed slower than the main support material to ensure proper adhesion and prevent sagging. diff --git a/doc/print_settings/speed/speed_settings_overhang_speed.md b/doc/print_settings/speed/speed_settings_overhang_speed.md new file mode 100644 index 0000000000..daf2940137 --- /dev/null +++ b/doc/print_settings/speed/speed_settings_overhang_speed.md @@ -0,0 +1,21 @@ +# Overhang Speed + +## Slow down for overhang + +Enable this option to slow printing down for different overhang degree. + +### Slow down for curled perimeters + +Enable this option to slow down printing in areas where perimeters may have curled upwards. For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers. +It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed slow enough that perimeter curling does not happen. If printing with a high external perimeter speed, this parameter may introduce slight artifacts when slowing down due to the large variance in print speeds. If you notice artifacts, ensure your pressure advance is tuned correctly. + +> [!NOTE] +> When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge. For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied. + +### Overhang speed + +This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used. + +## Bridge speed + +Set speed for external and internal bridges. diff --git a/doc/print_settings/speed/speed_settings_travel.md b/doc/print_settings/speed/speed_settings_travel.md new file mode 100644 index 0000000000..cbbd9d77d3 --- /dev/null +++ b/doc/print_settings/speed/speed_settings_travel.md @@ -0,0 +1,3 @@ +# Travel + +Travel speed is the speed at which the print head moves when not extruding filament. This speed is typically faster than the printing speed, as there is no need to carefully place material. However, setting the travel speed too high can lead to issues such as missed steps or ringing artifacts. diff --git a/doc/print_settings/strength/infill_desc_calculator.xlsx b/doc/print_settings/strength/infill_desc_calculator.xlsx index 3cefcb777e..cbe000af60 100644 Binary files a/doc/print_settings/strength/infill_desc_calculator.xlsx and b/doc/print_settings/strength/infill_desc_calculator.xlsx differ diff --git a/doc/print_settings/strength/strength_settings_advanced.md b/doc/print_settings/strength/strength_settings_advanced.md new file mode 100644 index 0000000000..19504126fd --- /dev/null +++ b/doc/print_settings/strength/strength_settings_advanced.md @@ -0,0 +1,42 @@ +# Strength Advanced + +- [Bridge infill direction](#bridge-infill-direction) +- [Minimum sparse infill threshold](#minimum-sparse-infill-threshold) +- [Infill Combination](#infill-combination) + - [Max layer height](#max-layer-height) +- [Detect narrow internal solid infill](#detect-narrow-internal-solid-infill) +- [Ensure vertical shell thickness](#ensure-vertical-shell-thickness) + +## Bridge infill direction + +Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for bridges. Use 180° for zero angle. + +## Minimum sparse infill threshold + +Sparse infill area which is smaller than threshold value is replaced by internal solid infill. + +## Infill Combination + +Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still printed with original layer height. + +### Max layer height + +Maximum layer height for the combined sparse infill. +Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print time) or a value of ~80% to maximize sparse infill strength. + +The number of layers over which infill is combined is derived by dividing this value with the layer height and rounded down to the nearest decimal. + +Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg 80%). This value must not be larger than the nozzle diameter. + +## Detect narrow internal solid infill + +This option will auto-detect narrow internal solid infill areas. If enabled, the concentric pattern will be used for the area to speed up printing. Otherwise, the rectilinear pattern will be used by default. + +## Ensure vertical shell thickness + +Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers). + +- **None**: No solid infill will be added anywhere. Caution: Use this option carefully if your model has sloped surfaces. +- **Critical Only**: Avoid adding solid infill for walls. +- **Moderate**: Add solid infill for heavily sloping surfaces only. +- **All (default)**: Add solid infill for all suitable sloping surfaces. diff --git a/doc/print_settings/strength/strength_settings_infill.md b/doc/print_settings/strength/strength_settings_infill.md index 6730bf4b5d..cb2868fcdc 100644 --- a/doc/print_settings/strength/strength_settings_infill.md +++ b/doc/print_settings/strength/strength_settings_infill.md @@ -3,6 +3,8 @@ Infill is the internal structure of a 3D print, providing strength and support. It can be adjusted to balance material usage, print time, and part strength. - [Sparse infill density](#sparse-infill-density) +- [Fill Multiline](#fill-multiline) + - [Use cases](#use-cases) - [Direction and Rotation](#direction-and-rotation) - [Direction](#direction) - [Rotation](#rotation) @@ -34,7 +36,7 @@ Infill is the internal structure of a 3D print, providing strength and support. - [Cross Hatch](#cross-hatch) - [Quarter Cubic](#quarter-cubic) - [Zig Zag](#zig-zag) - - [Coss Zag](#coss-zag) + - [Cross Zag](#cross-zag) - [Locked Zag](#locked-zag) ## Sparse infill density @@ -44,6 +46,42 @@ Higher density increases strength but also material usage and print time. Lower Nevertheless, **not all patterns interpret density the same way**, so the actual material usage may vary. You can see each pattern's material usage in the [Sparse Infill Pattern](#sparse-infill-pattern) section. +## Fill Multiline + +This setting allows you to generate your selected [infill pattern](#sparse-infill-pattern) using multiple parallel lines while preserving both the defined [infill density](#sparse-infill-density) and the overall material usage. + +![infill-multiline-1-5](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-1-5.gif?raw=true) + +> [!NOTE] +> Orca's approach is different from other slicers that simply multiply the number of lines and material usage, generating a denser infill than expected. +> +>| Infill Density % | Infill Lines | Orca Density | Other Slicers Density | +>|--------------------|--------------|--------------|-----------------------| +>| 10% | 2 | 10% | 20% | +>| 25% | 2 | 25% | 50% | +>| 40% | 2 | 40% | 80% | +>| 10% | 3 | 10% | 30% | +>| 25% | 3 | 25% | 75% | +>| 40% | 3 | 40% | 120% * | +>| 10% | 5 | 10% | 50% | +>| 25% | 5 | 25% | 125% * | +>| 40% | 5 | 40% | 200% * | +> +> *Other slicers may limit the result to 100%. + +### Use cases + +- Increasing the number of lines (e.g., 2 or 3) can improve part strength and print speed without increasing material usage. +- Fire-retardant applications: Some flame-resistant materials (like PolyMax PC-FR) require a minimum printed wall/infill thickness—often 1.5–3 mm—to comply with standards. Since infill contributes to overall part thickness, using multiple lines helps achieve the necessary thickness without switching to a large nozzle or printing with 100% infill. This is especially useful for high-temperature materials like PC, which are prone to warping when fully solid. +- Creating aesthetically pleasing infill patterns (like [Grid](#grid) or [Honeycomb](#honeycomb)) with multiple line widths—without relying on CAD modeling or being limited to a single extrusion width. + +![infill-multiline-esthetic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-esthetic.gif?raw=true) + +> [!WARNING] +> For self intersecting infills (e.g. [Cubic](#cubic), [Grid](#grid)) multiline count greater than 3 may cause layer shift, extruder clog or other issues due to overlapping of lines on intersection points. +> +> ![infill-multiline-overlapping](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-overlapping.gif?raw=true) + ## Direction and Rotation ### Direction @@ -129,33 +167,33 @@ There is no one-size-fits-all solution, as the best pattern depends on the speci Many patterns may look similar and have similar overall specifications, but they can behave very differently in practice. As most settings in 3D printing, experience is the best way to determine which pattern works best for your specific needs. -| Pattern | X-Y Strength | Z Strength | Material Usage | Print Time | -|-----------------------------------------------|--------------|-------------|----------------|-------------| -| [Concentric](#concentric) | Low | Normal | Normal | Normal | -| [Rectilinear](#rectilinear) | Normal-Low | Low | Normal | Normal-Low | -| [Grid](#grid) | High | High | Normal | Normal-Low | -| [2D Lattice](#2d-lattice) | Normal-Low | Low | Normal | Normal-Low | -| [Line](#line) | Low | Low | Normal | Normal-Low | -| [Cubic](#cubic) | High | High | Normal | Normal-Low | -| [Triangles](#triangles) | High | Normal | Normal | Normal-Low | -| [Tri-hexagon](#tri-hexagon) | High | Normal-High | Normal | Normal-Low | -| [Gyroid](#gyroid) | High | High | Normal | Normal-High | -| [TPMS-D](#tpms-d) | High | High | Normal | High | -| [Honeycomb](#honeycomb) | High | High | High | Ultra-High | -| [Adaptive Cubic](#adaptive-cubic) | Normal-High | Normal-High | Low | Low | -| [Aligned Rectilinear](#aligned-rectilinear) | Normal-Low | Normal | Normal | Normal-Low | -| [2D Honeycomb](#2d-honeycomb) | Normal-Low | Normal-Low | Normal | Normal-Low | -| [3D Honeycomb](#3d-honeycomb) | Normal-High | Normal-High | Normal-Low | High | -| [Hilbert Curve](#hilbert-curve) | Low | Normal | Normal | High | -| [Archimedean Chords](#archimedean-chords) | Low | Normal | Normal | Normal-Low | -| [Octagram Spiral](#octagram-spiral) | Low | Normal | Normal | Normal | -| [Support Cubic](#support-cubic) | Low | Low | Extra-Low | Extra-Low | -| [Lightning](#lightning) | Low | Low | Ultra-Low | Ultra-Low | -| [Cross Hatch](#cross-hatch) | Normal-High | Normal-High | Normal | Normal-High | -| [Quarter Cubic](#quarter-cubic) | High | High | Normal | Normal-Low | -| [Zig Zag](#zig-zag) | Normal-Low | Low | Normal | Normal | -| [Coss Zag](#coss-zag) | Normal | Low | Normal | Normal | -| [Locked Zag](#locked-zag) | Normal-Low | Normal-Low | Normal-High | Extra-High | +| SVG | Pattern | X-Y Strength | Z Strength | Material Usage | Print Time | +|---|---|---|---|---|---| +| ![param_concentric](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_concentric.svg?raw=true) | [Concentric](#concentric) | Low | Normal | Normal | Normal | +| ![param_zig-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_zig-zag.svg?raw=true) | [Rectilinear](#rectilinear) | Normal-Low | Low | Normal | Normal-Low | +| ![param_grid](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_grid.svg?raw=true) | [Grid](#grid) | High | High | Normal | Normal-Low | +| ![param_2dlattice](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_2dlattice.svg?raw=true) | [2D Lattice](#2d-lattice) | Normal-Low | Low | Normal | Normal-Low | +| ![param_line](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_line.svg?raw=true) | [Line](#line) | Low | Low | Normal | Normal-Low | +| ![param_cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_cubic.svg?raw=true) | [Cubic](#cubic) | High | High | Normal | Normal-Low | +| ![param_triangles](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_triangles.svg?raw=true) | [Triangles](#triangles) | High | Normal | Normal | Normal-Low | +| ![param_tri-hexagon](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tri-hexagon.svg?raw=true) | [Tri-hexagon](#tri-hexagon) | High | Normal-High | Normal | Normal-Low | +| ![param_gyroid](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gyroid.svg?raw=true) | [Gyroid](#gyroid) | High | High | Normal | Normal-High | +| ![param_tpmsd](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tpmsd.svg?raw=true) | [TPMS-D](#tpms-d) | High | High | Normal | High | +| ![param_honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_honeycomb.svg?raw=true) | [Honeycomb](#honeycomb) | High | High | High | Ultra-High | +| ![param_adaptivecubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_adaptivecubic.svg?raw=true) | [Adaptive Cubic](#adaptive-cubic) | Normal-High | Normal-High | Low | Low | +| ![param_alignedrectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_alignedrectilinear.svg?raw=true) | [Aligned Rectilinear](#aligned-rectilinear) | Normal-Low | Normal | Normal | Normal-Low | +| ![param_2dhoneycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_2dhoneycomb.svg?raw=true) | [2D Honeycomb](#2d-honeycomb) | Normal-Low | Normal-Low | Normal | Normal-Low | +| ![param_3dhoneycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_3dhoneycomb.svg?raw=true) | [3D Honeycomb](#3d-honeycomb) | Normal-High | Normal-High | Normal-Low | High | +| ![param_hilbertcurve](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_hilbertcurve.svg?raw=true) | [Hilbert Curve](#hilbert-curve) | Low | Normal | Normal | High | +| ![param_archimedeanchords](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_archimedeanchords.svg?raw=true) | [Archimedean Chords](#archimedean-chords) | Low | Normal | Normal | Normal-Low | +| ![param_octagramspiral](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_octagramspiral.svg?raw=true) | [Octagram Spiral](#octagram-spiral) | Low | Normal | Normal | Normal | +| ![param_supportcubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_supportcubic.svg?raw=true) | [Support Cubic](#support-cubic) | Low | Low | Extra-Low | Extra-Low | +| ![param_lightning](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lightning.svg?raw=true) | [Lightning](#lightning) | Low | Low | Ultra-Low | Ultra-Low | +| ![param_crosshatch](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_crosshatch.svg?raw=true) | [Cross Hatch](#cross-hatch) | Normal-High | Normal-High | Normal | Normal-High | +| ![param_quartercubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_quartercubic.svg?raw=true) | [Quarter Cubic](#quarter-cubic) | High | High | Normal | Normal-Low | +| ![param_zigzag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_zigzag.svg?raw=true) | [Zig Zag](#zig-zag) | Normal-Low | Low | Normal | Normal | +| ![param_crosszag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_crosszag.svg?raw=true) | [Cross Zag](#cross-zag) | Normal | Low | Normal | Normal | +| ![param_lockedzag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lockedzag.svg?raw=true) | [Locked Zag](#locked-zag) | Normal-Low | Normal-Low | Normal-High | Extra-High | > [!NOTE] > You can download [infill_desc_calculator.xlsx](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/print_settings/strength/infill_desc_calculator.xlsx?raw=true) used to calculate the values above. @@ -175,7 +213,7 @@ Fills the area with progressively smaller versions of the outer contour, creatin ### Rectilinear -Parallel lines spaced according to infill density. Each layer is printed perpendicular to the previous, resulting in low vertical bonding. Considere using new [Zig Zag](#zig-zag) infill instead. +Parallel lines spaced according to infill density. Each layer is printed perpendicular to the previous, resulting in low vertical bonding. Consider using new [Zig Zag](#zig-zag) infill instead. - **Horizontal Strength (X-Y):** Normal-Low - **Vertical Strength (Z):** Low @@ -201,7 +239,7 @@ Two-layer pattern of perpendicular lines, forming a grid. Overlapping points may ### 2D Lattice -Low-strength pattern with good flexibility. Angle 1 and angle 2 TBD. +Low-strength pattern with good flexibility. You can adjust **Angle 1** and **Angle 2** to optimize the infill for your specific model. Each angle adjusts the plane of each layer generated by the pattern. 0° is vertical. - **Horizontal Strength (X-Y):** Normal-Low - **Vertical Strength (Z):** Low @@ -266,7 +304,7 @@ Similar to the [triangles](#triangles) pattern but offset to prevent triple over ### Gyroid -Mathematical, isotropic surface providing equal strength in all directions. Excellent for strong, flexible prints and resin filling due to its interconnected structure. +Mathematical, isotropic surface providing equal strength in all directions. Excellent for strong, flexible prints and resin filling due to its interconnected structure. This pattern may require more time to slice because of all the points needed to generate each curve. If your model has complex geometry, consider using a simpler infill pattern like [TPMS-D](#tpms-d) or [Cross Hatch](#cross-hatch). - **Horizontal Strength (X-Y):** High - **Vertical Strength (Z):** High @@ -279,7 +317,7 @@ Mathematical, isotropic surface providing equal strength in all directions. Exce ### TPMS-D -Triply Periodic Minimal Surface - D. Hybrid between [Cross Hatch](#cross-hatch) and [Gyroid](#gyroid), combining rigidity and smooth transitions. Isotropic and strong in all directions. +Triply Periodic Minimal Surface (Schwarz Diamond). Hybrid between [Cross Hatch](#cross-hatch) and [Gyroid](#gyroid), combining rigidity and smooth transitions. Isotropic and strong in all directions. This geometry is faster to slice than Gyroid, but slower than Cross Hatch. - **Horizontal Strength (X-Y):** High - **Vertical Strength (Z):** High @@ -332,7 +370,7 @@ Recommended with layer anchoring to improve not perpendicular strength. ### 2D Honeycomb -Vertical Honeycomb pattern. Acceptable torsional stiffness. Developed for low densities structures like wings. Improve over [2D Lattice](#2d-lattice) offers same performance with lower densities.This infill includes a Overhang angle parameter to improve interlayer point of contact and reduce the risk of delamination. +Vertical Honeycomb pattern. Acceptable torsional stiffness. Developed for low densities structures like wings. Improve over [2D Lattice](#2d-lattice) offers same performance with lower densities.This infill includes a Overhang angle parameter to improve the point of contact between layers and reduce the risk of delamination. - **Horizontal Strength (X-Y):** Normal-Low - **Vertical Strength (Z):** Normal-Low @@ -345,7 +383,7 @@ Vertical Honeycomb pattern. Acceptable torsional stiffness. Developed for low de ### 3D Honeycomb -This infill tries to generate a printable honeycomb structure by printing squares and octagons mantaining a vertical angle high enough to mantian contact with the previous layer. +This infill tries to generate a printable honeycomb structure by printing squares and octagons maintaining a vertical angle high enough to maintain contact with the previous layer. - **Horizontal Strength (X-Y):** Normal-High - **Vertical Strength (Z):** Normal-High @@ -425,6 +463,7 @@ Ultra-fast, ultra-low material infill. Designed for speed and efficiency, ideal ### Cross Hatch Similar to [Gyroid](#gyroid) but with linear patterns, creating weak points at internal corners. +Easier to slice but consider using [TPMS-D](#tpms-d) or [Gyroid](#gyroid) for better strength and flexibility. - **Horizontal Strength (X-Y):** Normal-High - **Vertical Strength (Z):** Normal-High @@ -450,7 +489,7 @@ Similar to [Gyroid](#gyroid) but with linear patterns, creating weak points at i ### Zig Zag -Similar to [rectilinear](#rectilinear) with consistent pattern between layers. Allows you to add a Symmetric infil Y axis for models with two symmetric parts. +Similar to [rectilinear](#rectilinear) with consistent pattern between layers. Allows you to add a Symmetric infill Y axis for models with two symmetric parts. - **Horizontal Strength (X-Y):** Normal-Low - **Vertical Strength (Z):** Low @@ -461,9 +500,9 @@ Similar to [rectilinear](#rectilinear) with consistent pattern between layers. A ![infill-top-zig-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-zig-zag.png?raw=true) -### Coss Zag +### Cross Zag -Similar to [Zig Zag](#zig-zag) but displacing each lager with Infill shift step parammeter. +Similar to [Zig Zag](#zig-zag) but displacing each layer with Infill shift step parameter. - **Horizontal Strength (X-Y):** Normal - **Vertical Strength (Z):** Low @@ -472,11 +511,11 @@ Similar to [Zig Zag](#zig-zag) but displacing each lager with Infill shift step - **Print Time:** Normal - **Material/Time (Higher better):** Normal -![infill-top-coss-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-coss-zag.png?raw=true) +![infill-top-cross-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-cross-zag.png?raw=true) ### Locked Zag -Adaptative version of [Zig Zag](#zig-zag) adding an external skin texture to interlock layers and a low material skeleton. +Adaptive version of [Zig Zag](#zig-zag) adding an external skin texture to interlock layers and a low material skeleton. - **Horizontal Strength (X-Y):** Normal-Low - **Vertical Strength (Z):** Normal-Low diff --git a/doc/print_settings/strength/strength_settings_top_bottom_shells.md b/doc/print_settings/strength/strength_settings_top_bottom_shells.md index aa960ac6c8..45e7c942a5 100644 --- a/doc/print_settings/strength/strength_settings_top_bottom_shells.md +++ b/doc/print_settings/strength/strength_settings_top_bottom_shells.md @@ -2,18 +2,36 @@ Controls how the top and bottom solid layers (shells) are generated in the print. -- **Shells:** This is the number of solid layers of shell, including the surface layer. When the thickness calculated by this value is thinner than shell thickness, the shell layers will be increased. -- **Shell Thickness:** The number of solid layers is increased when slicing if the thickness calculated by shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of shell is absolutely determined by shell layers. -- **Infill/Wall Overlap:** Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill. -- **Surface Pattern:** This setting controls the pattern of the surface. The options are: - - **Concentric:** Fills the surface with inward-tracing loops that follow the outer contour. - - **Rectilinear:** Fills the surface with straight lines alternating direction per layer. - - **Monotonic:** Prints lines in a uniform direction for a smoother visual surface. - - **Monotonic Lines:** Similar to Monotonic but avoids overlapping with the perimeter, reducing excess material at joints. May introduce visible seams. - - **Aligned Rectilinear:** The surface is printed with rectilinear lines that are aligned with the infill pattern. - - **Hilbert Curve:** Applies a space-filling curve for even material distribution and a unique appearance. Slow to print but useful in esthetic applications. - - **Archimedean Chords:** Generates concentric arc-like lines, promoting uniform material spread. - - **Octagram Spiral:** Creates an octagonal spiral for decorative, esthetic surfaces. +![top-bottom-shells](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/top-bottom-shells/top-bottom-shells.png?raw=true) + +## Shells Layers + +This is the number of solid layers of shell, including the surface layer. When the thickness calculated by this value is thinner than shell thickness, the shell layers will be increased. + +## Shell Thickness + +The number of solid layers is increased when slicing if the thickness calculated by shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of shell is absolutely determined by shell layers. + +## Surface Density + +This setting controls the density of the top and bottom surfaces. A value of 100% means a solid surface, while lower values create a sparse surface. This can be used for esthetic purposes, gripping or making interfaces with the bed. + +## Infill/Wall Overlap + +Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill. + +## Surface Pattern + +This setting controls the pattern of the surface. The options are: + +- **Concentric:** Fills the surface with inward-tracing loops that follow the outer contour. +- **Rectilinear:** Fills the surface with straight lines alternating direction per layer. +- **Monotonic:** Prints lines in a uniform direction for a smoother visual surface. +- **Monotonic Lines:** Similar to Monotonic but avoids overlapping with the perimeter, reducing excess material at joints. May introduce visible seams. +- **Aligned Rectilinear:** The surface is printed with rectilinear lines that are aligned with the infill pattern. +- **Hilbert Curve:** Applies a space-filling curve for even material distribution and a unique appearance. Slow to print but useful in esthetic applications. +- **Archimedean Chords:** Generates concentric arc-like lines, promoting uniform material spread. +- **Octagram Spiral:** Creates an octagonal spiral for decorative, esthetic surfaces. > [!NOTE] > Some patterns may have further information in its [Sparse Infill Pattern Wiki](strength_settings_infill#sparse-infill-pattern) diff --git a/doc/print_settings/strength/strength_settings_walls.md b/doc/print_settings/strength/strength_settings_walls.md new file mode 100644 index 0000000000..b7c8b03798 --- /dev/null +++ b/doc/print_settings/strength/strength_settings_walls.md @@ -0,0 +1,17 @@ +# Walls + +In 3D printing, "walls" refer to the outer layers of a printed object that provide its shape and structural integrity. Adjusting wall settings can significantly affect the strength, appearance, and print time of your model. + +## Wall loops + +"Wall loops" refers to the number of times the outer wall is printed in a loop. Increasing the wall loops can improve the strength and durability of the print, but may also increase print time. + +## Alternate extra wall + +This setting adds an extra wall to every other layer. This way the infill gets wedged vertically between the walls, resulting in stronger prints. +When this option is enabled, the ensure vertical shell thickness option needs to be disabled. +Using lightning infill together with this option is not recommended as there is limited infill to anchor the extra perimeters to. + +## Detect thin wall + +Detect thin wall which can't contain two line width. And use single line to print. Maybe printed not very well, because it's not closed loop. diff --git a/doc/print_settings/support/support_settings_advanced.md b/doc/print_settings/support/support_settings_advanced.md new file mode 100644 index 0000000000..b90a679b7c --- /dev/null +++ b/doc/print_settings/support/support_settings_advanced.md @@ -0,0 +1,67 @@ +# Support Advanced + +- [Z distance](#z-distance) +- [Support wall loops](#support-wall-loops) +- [Base Pattern](#base-pattern) + - [Base pattern spacing](#base-pattern-spacing) +- [Pattern angle](#pattern-angle) +- [Interface layers](#interface-layers) +- [Interface pattern](#interface-pattern) +- [Interface spacing](#interface-spacing) +- [Normal support expansion](#normal-support-expansion) +- [Support/object XY distance](#supportobject-xy-distance) +- [Support/object first layer gap](#supportobject-first-layer-gap) +- [Don't support bridges](#dont-support-bridges) +- [Independent support layer height](#independent-support-layer-height) + +## Z distance + +The Z gap between support interface and object. + +## Support wall loops + +This setting specifies the count of support walls in the range of [0,2]. 0 means auto. + +## Base Pattern + +Line pattern for the base of the support. + +### Base pattern spacing + +Spacing between support lines. + +## Pattern angle + +Use this setting to rotate the support pattern on the horizontal plane. + +## Interface layers + +The number of interface layers. + +## Interface pattern + +The pattern used for the support interface. + +## Interface spacing + +Spacing of interface lines. Zero means solid interface. + +## Normal support expansion + +Expand (+) or shrink (-) the horizontal span of normal support. + +## Support/object XY distance + +XY separation between an object and its support. + +## Support/object first layer gap + +XY separation between an object and its support at the first layer. + +## Don't support bridges + +Don't support the whole bridge area which make support very large. Bridges can usually be printed directly without support if not very long. + +## Independent support layer height + +Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time. This option will be invalid when the prime tower is enabled. diff --git a/doc/print_settings/support/support_settings_filament.md b/doc/print_settings/support/support_settings_filament.md new file mode 100644 index 0000000000..07903d51db --- /dev/null +++ b/doc/print_settings/support/support_settings_filament.md @@ -0,0 +1,15 @@ +# Support Filament + +Support filament settings allow you to customize the material used for support structures in your 3D prints. This can include settings for the base layer, interface, and support style. + +## Base + +Filament to print support base and raft. "Default" means no specific filament for support and current filament is used. + +## Interface + +Filament to print support interface. "Default" means no specific filament for support interface and current filament is used. + +### Avoid interface filament for base + +Avoid using support interface filament to print support base if possible. diff --git a/doc/print_settings/support/support_settings_ironing.md b/doc/print_settings/support/support_settings_ironing.md new file mode 100644 index 0000000000..52a8d6258e --- /dev/null +++ b/doc/print_settings/support/support_settings_ironing.md @@ -0,0 +1,15 @@ +# Support Ironing + +Ironing is using small flow to print on same height of surface again to make flat surface more smooth. This setting controls which layer being ironed. + +## Pattern + +Select the ironing pattern to use. + +## Flow + +The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface. + +## Line Spacing + +The distance between the lines of ironing. diff --git a/doc/print_settings/support/support_settings_raft.md b/doc/print_settings/support/support_settings_raft.md new file mode 100644 index 0000000000..4677895424 --- /dev/null +++ b/doc/print_settings/support/support_settings_raft.md @@ -0,0 +1,11 @@ +# Raft + +Raft is a base layer that is printed under the object to improve adhesion and prevent warping. It consists of multiple layers of material that create a stable foundation for the print. + +## Layers + +Object will be raised by this number of support layers. + +## Contact Z distance + +Z gap between object and raft. Ignored for soluble interface. diff --git a/doc/print_settings/support/support_settings_support.md b/doc/print_settings/support/support_settings_support.md new file mode 100644 index 0000000000..c9df62c6b1 --- /dev/null +++ b/doc/print_settings/support/support_settings_support.md @@ -0,0 +1,100 @@ +# Support + +Support structures are used in 3D printing to provide stability to overhangs and complex geometries. + +- [Type](#type) + - [Normal](#normal) + - [Tree](#tree) + - [Support critical regions only](#support-critical-regions-only) + - [Auto](#auto) + - [Manual](#manual) +- [Style](#style) + - [Grid](#grid) + - [Snug](#snug) + - [Organic](#organic) + - [Tree Slim](#tree-slim) + - [Tree Strong](#tree-strong) + - [Tree Hybrid](#tree-hybrid) +- [Threshold angle](#threshold-angle) +- [Threshold overlap](#threshold-overlap) +- [Initial layer density](#initial-layer-density) +- [Initial layer expansion](#initial-layer-expansion) +- [On build plate only](#on-build-plate-only) +- [Remove small overhangs](#remove-small-overhangs) + +## Type + +Support structures can be generated in various styles, each suited for different printing needs: + +### Normal + +Normal support structures are generated in a grid pattern, providing a stable base for overhangs and complex geometries. + +### Tree + +Tree-like support structures are designed to minimize material usage while still providing adequate support. They branch out from a central trunk, allowing for more efficient printing. + +#### Support critical regions only + +Only create support for critical regions including sharp tail, cantilever, etc. + +### Auto + +Automatically generates support structures where needed, based on the model's geometry and overhangs and manual placement in the prepare view. + +### Manual + +Limit support generation to specific areas defined by manual placement in the prepare view. + +## Style + +Style and shape of the support. + +### Grid + +Default in normal support, projecting the supports into a regular grid will create more stable supports. + +### Snug + +Snug support towers will save material and reduce object scarring. + +### Organic + +Default style for tree support, which merges slim and organic style branches more aggressively and saves material. + +### Tree Slim + +Slim tree support branches are designed to be more delicate and use less material while still providing adequate support. + +### Tree Strong + +Strong tree support branches are designed to be more robust and provide additional support for heavier overhangs. + +### Tree Hybrid + +Create similar structure to normal support under large flat overhangs. + +## Threshold angle + +Support will be generated for overhangs whose slope angle is below the threshold. + +## Threshold overlap + +If threshold angle is zero, support will be generated for overhangs whose overlap is below the threshold. +The smaller this value is, the steeper the overhang that can be printed without support. + +## Initial layer density + +Density of the first raft or support layer. + +## Initial layer expansion + +Expand the first raft or support layer to improve bed plate adhesion. + +## On build plate only + +Don't create support on model surface, only on build plate. + +## Remove small overhangs + +Remove small overhangs that possibly need no supports. diff --git a/doc/print_settings/support/support_settings_tree.md b/doc/print_settings/support/support_settings_tree.md new file mode 100644 index 0000000000..3f7b86a159 --- /dev/null +++ b/doc/print_settings/support/support_settings_tree.md @@ -0,0 +1,31 @@ +# Tree Support + +This section contains specific settings for tree support structures. + +## Tip Diameter + +Branch tip diameter for organic supports. + +## Branch Distance + +This setting determines the distance between neighboring tree support nodes. + +## Branch Density + +Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs but the supports are harder to remove, thus it is recommended to enable top support interfaces instead of a high branch density value if dense interfaces are needed. + +## Branch Diameter + +This setting determines the initial diameter of support nodes. + +## Branch Diameter Angle + +The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the organic support. + +## Branch Angle + +This setting determines the maximum overhang angle that the branches of tree support are allowed to make. If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther. + +### Preferred Branch Angle + +The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster. diff --git a/doc/printer_settings/adaptive-bed-mesh.md b/doc/printer_settings/adaptive-bed-mesh.md index 445e5083bc..4607d63f94 100644 --- a/doc/printer_settings/adaptive-bed-mesh.md +++ b/doc/printer_settings/adaptive-bed-mesh.md @@ -8,7 +8,7 @@ The implementation is designed to be straightforward, requiring no additional pl ![ABM-PrinterConfig](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Adaptative-Bed-Mesh/ABM-PrinterConfig.png?raw=true) -## Settings in Orca Slicer: +## Settings in Orca Slicer `Bed mesh min`: This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (-99999, -99999), which means there are no limits, thus allowing probing across the entire bed. @@ -31,16 +31,16 @@ The implementation is designed to be straightforward, requiring no additional pl `ALGORITHM`: Identifies the algorithm used for adaptive bed mesh interpolation. This variable is useful for Klipper users. If bed_mesh_probe_count is less than 4, the algorithm is set to `lagrange`. Otherwise, it is set to `bicubic`. -## Example of Adaptive Bed Mesh usage in Orca Slicer: +## Example of Adaptive Bed Mesh usage in Orca Slicer -### Marlin: +### Marlin ```gcode -; Marlin don't support speicify the probe count yet, so we only specify the probe area +; Marlin don't support specify the probe count yet, so we only specify the probe area G29 L{adaptive_bed_mesh_min[0]} R{adaptive_bed_mesh_max[0]} F{adaptive_bed_mesh_min[1]} B{adaptive_bed_mesh_max[1]} T V4 ``` -### Klipper: +### Klipper ```gcode ; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally @@ -48,7 +48,7 @@ G29 L{adaptive_bed_mesh_min[0]} R{adaptive_bed_mesh_max[0]} F{adaptive_bed_mesh_ BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0 ``` -### RRF: +### RRF ```gcode M557 X{adaptive_bed_mesh_min[0]}:{adaptive_bed_mesh_max[0]} Y{adaptive_bed_mesh_min[1]}:{adaptive_bed_mesh_max[1]} P{bed_mesh_probe_count[0]}:{bed_mesh_probe_count[1]} diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 184f943551..cb5c116d47 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8004,6 +8004,10 @@ msgstr "" msgid "Ramming line spacing" msgstr "" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "" @@ -11523,7 +11527,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 5556cac3be..60a9c070dd 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8761,6 +8761,10 @@ msgstr "Ample de la línia de moldejat de punta( ramming )" msgid "Ramming line spacing" msgstr "Espai entre línies de Moldejat de punta( Ramming )" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Calcular Automàticament" @@ -13270,7 +13274,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13297,7 +13301,7 @@ msgstr "" "( alta velocitat/amplada més gran ) a una extrusió de menor flux ( menor " "velocitat/amplada més petita ) i viceversa.\n" "\n" -"Defineix la velocitat màxima a la qual el flux volumètric extruït en mm3/seg " +"Defineix la velocitat màxima a la qual el flux volumètric extruït en mm³/s " "pot canviar amb el temps. Els valors més alts signifiquen que es permeten " "canvis de velocitat d'extrusió més alts, cosa que resulta en transicions de " "velocitat més ràpides.\n" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 684613bbda..43af6bc1a7 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -8494,6 +8494,10 @@ msgstr "Šířka linky při rapidní extruzi" msgid "Ramming line spacing" msgstr "Rozestup linek při rapidní extruzi" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "Pro konstantní průtok stiskněte %1% při přetahování." + msgid "Auto-Calc" msgstr "Automatický výpočet" @@ -12381,7 +12385,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -12408,7 +12412,7 @@ msgstr "" "na extruzi s nižším průtokem (nižší rychlost/menší šířka) a naopak.\n" "\n" "Definuje maximální rychlost, kterou může objemový průtok extrudovaného " -"materiálu v mm3/s měnit v čase. Vyšší hodnoty znamenají, že jsou povoleny " +"materiálu v mm³/s měnit v čase. Vyšší hodnoty znamenají, že jsou povoleny " "větší změny extruzní rychlosti, což vede k rychlejším přechodům rychlosti.\n" "\n" "Hodnota 0 funkci zakáže.\n" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index e9cbfdaab1..a9e9055989 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -8840,6 +8840,10 @@ msgstr "Ramming-Linienbreite" msgid "Ramming line spacing" msgstr "Ramming-Linienabstand" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "Um eine konstante Flussrate zu erhalten, halten Sie %1% gedrückt, während Sie ziehen." + msgid "Auto-Calc" msgstr "Automatisch berechnen" @@ -13378,7 +13382,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13406,7 +13410,7 @@ msgstr "" "kleinere Breite) und umgekehrt wechselt.\n" "\n" "Es definiert die maximale Rate, mit der sich der extrudierte Volumenstrom in " -"mm3/s über die Zeit ändern kann. Höhere Werte bedeuten, dass höhere " +"mm³/s über die Zeit ändern kann. Höhere Werte bedeuten, dass höhere " "Extrusionsratenänderungen zulässig sind, was zu schnelleren " "Geschwindigkeitsübergängen führt.\n" "\n" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index fadcdf48ff..cb18130458 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -8174,6 +8174,10 @@ msgstr "" msgid "Ramming line spacing" msgstr "" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "" @@ -11857,7 +11861,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 321cf83cae..5e55b2dd42 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -8773,6 +8773,10 @@ msgstr "Ancho de línea de Moldeado de Extremo" msgid "Ramming line spacing" msgstr "Separación de línea de moldeado de extremo" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "Para un flujo constante, mantén pulsado %1% mientras arrastras." + msgid "Auto-Calc" msgstr "Calculado automático" @@ -13147,7 +13151,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13174,7 +13178,7 @@ msgstr "" "(alta velocidad/ancho mayor) a una extrusión de menor flujo (menor velocidad/" "ancho menor) y viceversa.\n" "\n" -"Define la velocidad máxima a la que el flujo volumétrico extruido en mm³/s² " +"Define la velocidad máxima a la que el flujo volumétrico extruido en mm³/s " "puede cambiar con el tiempo. Valores más altos significan que se permiten " "cambios de velocidad de extrusión más altos, lo que resulta en transiciones " "de velocidad más rápidas.\n" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 2b692617fd..25426c4d69 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -8868,6 +8868,10 @@ msgstr "Largeur de ligne du pilonnage" msgid "Ramming line spacing" msgstr "Espacement des lignes du pilonnage" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "Pour un débit constant, maintenez %1% tout en faisant glisser." + msgid "Auto-Calc" msgstr "Auto-Calc" @@ -13447,7 +13451,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13474,7 +13478,7 @@ msgstr "" "élevée / largeur de ligne plus grande) à une extrusion à débit plus faible " "(vitesse plus faible / largeur de ligne plus petite) et vice versa.\n" "\n" -"Il définit le taux maximum auquel le débit volumétrique extrudé en mm³/s² " +"Il définit le taux maximum auquel le débit volumétrique extrudé en mm³/s " "peut varier dans le temps. Des valeurs plus élevées signifient que des " "changements du taux d’extrusion plus élevés sont autorisés, ce qui entraîne " "des transitions de vitesse plus rapides.\n" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 39139e3a59..773584736b 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -8406,6 +8406,10 @@ msgstr "Tömörítési vonal szélessége" msgid "Ramming line spacing" msgstr "Tömörítési vonal térköze" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Automatikus számítás" @@ -12176,7 +12180,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index c678181da2..56ccdfbfe1 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -8799,6 +8799,11 @@ msgstr "Larghezza linea di modellazione del filamento" msgid "Ramming line spacing" msgstr "Spaziatura tra linee di modellazione del filamento" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" +"Per ottenere un avanzamento costante, tieni premuto %1% mentre trascini." + msgid "Auto-Calc" msgstr "Calcolo automatico" @@ -13359,7 +13364,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13388,7 +13393,7 @@ msgstr "" "viceversa.\n" "\n" "Definisce la velocità massima con cui la portata volumetrica estrusa in mm³/" -"s² può variare nel tempo. Valori più alti significano che sono consentite " +"s può variare nel tempo. Valori più alti significano che sono consentite " "variazioni più elevate della velocità di estrusione, con conseguenti " "transizioni di velocità più rapide.\n" "\n" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index b391cae343..35bdfaaf52 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -8202,6 +8202,10 @@ msgstr "ラミング線幅" msgid "Ramming line spacing" msgstr "ラミング線間距離" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "流量を一定にするには、%1% を押したままドラッグします。" + msgid "Auto-Calc" msgstr "自動計算" @@ -11901,7 +11905,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index db1ed58756..3be8fd7263 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -8474,6 +8474,10 @@ msgstr "채워넣기 선 너비" msgid "Ramming line spacing" msgstr "채워넣기 선 간격" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "자동 계산" @@ -12686,13 +12690,14 @@ msgstr "" msgid "Extrusion rate smoothing" msgstr "유연한 압출량" +#, fuzzy msgid "" "This parameter smooths out sudden extrusion rate changes that happen when the " "printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -12717,7 +12722,7 @@ msgstr "" "속도/더 작은 너비) 압출로 또는 그 반대로 출력할 때 발생하는 급격한 압출 속도 " "변화를 완화합니다.\n" "\n" -"이는 압출된 압출 압출량(mm3/초)이 시간에 따라 변할 수 있는 최대 속도를 정의합" +"이는 압출된 압출 압출량(mm³/초)이 시간에 따라 변할 수 있는 최대 속도를 정의합" "니다. 값이 높을수록 더 높은 압출 속도 변경이 허용되어 속도 전환이 더 빨라진다" "는 의미입니다.\n" "\n" diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 4e69ab84f9..ec2167c01c 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8738,6 +8738,10 @@ msgstr "Įspaudimo linijos plotis" msgid "Ramming line spacing" msgstr "Įspaudimo tarpai tarp linijų" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Automatinis skaičiavimas" @@ -13160,13 +13164,14 @@ msgstr "" msgid "Extrusion rate smoothing" msgstr "Ekstruzijos greičio išlyginimas" +#, fuzzy msgid "" "This parameter smooths out sudden extrusion rate changes that happen when " "the printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13194,7 +13199,7 @@ msgstr "" "išspaudimo ir atvirkščiai.\n" "\n" "Jis apibrėžia didžiausią greitį, kuriuo gali kisti išspaustas tūrinis " -"srautas mm3/sek. Didesnės vertės reiškia, kad leidžiami didesni ekstruzijos " +"srautas mm³/s. Didesnės vertės reiškia, kad leidžiami didesni ekstruzijos " "greičio pokyčiai, todėl greitis pereina greičiau.\n" "\n" "Reikšmė 0 išjungia šią funkciją.\n" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 632d9ebd6b..5acdc45595 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -8555,6 +8555,10 @@ msgstr "Lijnbreedte voor ramming" msgid "Ramming line spacing" msgstr "Lijnafstand voor ramming" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Automatisch berekenen" @@ -12368,7 +12372,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 1f26741e65..524edc9108 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -8719,6 +8719,10 @@ msgstr "Szerokość linii wyciskania" msgid "Ramming line spacing" msgstr "Odstęp linii wyciskania" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "Aby uzyskać stałe natężenie przepływu, przytrzymaj %1% podczas przeciągania." + msgid "Auto-Calc" msgstr "Auto-obliczenia" @@ -13199,7 +13203,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13226,7 +13230,7 @@ msgstr "" "prędkość/większa szerokość) do wytłaczania o niższym przepływie (mniejsza " "prędkość/mniejsza szerokość) i odwrotnie.\n" "\n" -"Określa maksymalną szybkość, o jaką natężenie przepływu wytłaczania w mm3/s " +"Określa maksymalną szybkość, o jaką natężenie przepływu wytłaczania w mm³/s " "może zmieniać się w czasie. Wyższe wartości oznaczają, że dozwolone są " "większe zmiany szybkości wytłaczania, co skutkuje szybszymi przejściami " "prędkości.\n" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 8abbbcc195..cf1527d712 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -6673,7 +6673,7 @@ msgstr "Volume: %1% pol³\n" #, boost-format msgid "Volume: %1% mm³\n" -msgstr "Volume: %1% mm3\n" +msgstr "Volume: %1% mm³\n" #, boost-format msgid "Triangles: %1%\n" @@ -8750,6 +8750,10 @@ msgstr "Largura da linha de moldeamento" msgid "Ramming line spacing" msgstr "Espaçamento da linha de moldeamento" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Auto-Calc" @@ -13232,7 +13236,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13259,7 +13263,7 @@ msgstr "" "velocidade/maior largura) para uma extrusão de baixo fluxo (baixa velocidade/" "menor largura) e vice-versa.\n" "\n" -"Define a taxa máxima pela qual o fluxo volumétrico extrudado em mm³/s² pode " +"Define a taxa máxima pela qual o fluxo volumétrico extrudado em mm³/s pode " "mudar ao longo do tempo. Valores mais altos significam que mudanças de taxa " "de extrusão mais altas são permitidas, resultando em transições de " "velocidade mais rápidas.\n" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index a8178983d2..3ec1c050bf 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -8845,6 +8845,10 @@ msgstr "Ширина линии при рэмминге" msgid "Ramming line spacing" msgstr "Расстояние между линиями при рэмминге" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "Для постоянного объёмного расхода удерживайте нажатой клавишу %1% при перетаскивании." + msgid "Auto-Calc" msgstr "Авторасчёт" @@ -13408,13 +13412,14 @@ msgstr "" msgid "Extrusion rate smoothing" msgstr "Сглаживание скорости экструзии" +#, fuzzy msgid "" "This parameter smooths out sudden extrusion rate changes that happen when " "the printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 7d252ca6fc..ef750d35d1 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -8400,6 +8400,10 @@ msgstr "" msgid "Ramming line spacing" msgstr "" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Autoberäkna" @@ -12117,7 +12121,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13978,11 +13982,13 @@ msgstr "för stor linjebredd " msgid " not in range " msgstr " inte inom intervallet " +#, fuzzy msgid "Export 3MF" msgstr "Exportera 3mf" +#, fuzzy msgid "Export project as 3MF." -msgstr "Exportera projekt som3mf." +msgstr "Exportera projekt som 3mf." msgid "Export slicing data" msgstr "Exportera beredningsdata" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index a25bb5dbec..d5a17f525d 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -8660,6 +8660,10 @@ msgstr "Sıkıştırma hattı genişliği" msgid "Ramming line spacing" msgstr "Sıkıştırma hattı aralığı" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Otomatik Hesaplama" @@ -13066,7 +13070,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -13093,7 +13097,7 @@ msgstr "" "ekstrüzyona geçtiğinde veya tam tersi olduğunda meydana gelen ani ekstrüzyon " "hızı değişikliklerini düzeltir.\n" "\n" -"Ekstrude edilen hacimsel akışın mm3/sn cinsinden zaman içinde değişebileceği " +"Ekstrude edilen hacimsel akışın mm³/s cinsinden zaman içinde değişebileceği " "maksimum oranı tanımlar. Daha yüksek değerler, daha yüksek ekstrüzyon hızı " "değişikliklerine izin verildiği anlamına gelir ve daha hızlı hız geçişlerine " "neden olur.\n" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 75325c195c..44ef895cd9 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8744,6 +8744,10 @@ msgstr "Ширина ліній раммінгу" msgid "Ramming line spacing" msgstr "Проміжки між лініями раммінгу" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "Автокалькулятор" @@ -13192,13 +13196,14 @@ msgstr "" msgid "Extrusion rate smoothing" msgstr "Вирівнювання швидкості екструзії" +#, fuzzy msgid "" "This parameter smooths out sudden extrusion rate changes that happen when " "the printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 13d5f78cfe..f96e5f7c27 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -8263,6 +8263,10 @@ msgstr "尖端成型线宽" msgid "Ramming line spacing" msgstr "尖端成型线间距" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "自动计算" @@ -12046,7 +12050,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" @@ -12070,14 +12074,14 @@ msgid "" msgstr "" "此参数是打印机从打印高流量挤出(高速/较大宽度)向低流量挤出(低速/较小宽度)" "时用于突然变化挤出速率的平滑,反之亦然。\n" -"它定义了挤出体积流量(mm3/s)随时间变化的最大速率。更高的值意味着允许更高的挤" +"它定义了挤出体积流量(mm³/s)随时间变化的最大速率。更高的值意味着允许更高的挤" "出速率变化,从而产生更快速的过渡。\n" "\n" "值为0将禁用该功能。\n" "\n" "对于高速、高流量的近程挤出机(如Bambu或Voron)通常不需要该值。但是,在特征速" "度变化很大的某些情况下,它可以提供一些边际收益。例如,当由于悬垂而出现严重的" -"减速时。在这些情况下,建议使用一个大的值大约300-350 m3/s2的,因为这刚好允许足" +"减速时。在这些情况下,建议使用一个大的值大约300-350 mm³/s²的,因为这刚好允许足" "够的平滑,以帮助压力提前实现更平滑的流量过渡。\n" "\n" "对于没有压力提前的较慢打印机,该值应该设置得非常低。对于近程挤出机来说10-15 " diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index bd9ee60a19..9009b3bd5a 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -8299,6 +8299,10 @@ msgstr "尖端成型線寬" msgid "Ramming line spacing" msgstr "尖端成型線間距" +#. TRN: The placeholder expands to Ctrl or Cmd (on macOS). +msgid "For constant flow rate, hold %1% while dragging." +msgstr "" + msgid "Auto-Calc" msgstr "自動計算" @@ -12285,7 +12289,7 @@ msgid "" "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" -"It defines the maximum rate by which the extruded volumetric flow in mm³/s² " +"It defines the maximum rate by which the extruded volumetric flow in mm³/s " "can change over time. Higher values mean higher extrusion rate changes are " "allowed, resulting in faster speed transitions.\n" "\n" diff --git a/resources/handy_models/helper_disk.stl b/resources/handy_models/helper_disk.stl deleted file mode 100644 index 94ab0739c9..0000000000 Binary files a/resources/handy_models/helper_disk.stl and /dev/null differ diff --git a/resources/handy_models/torus.stl b/resources/handy_models/torus.stl deleted file mode 100644 index 3919fa5b21..0000000000 Binary files a/resources/handy_models/torus.stl and /dev/null differ diff --git a/resources/images/assemble_return.svg b/resources/images/assemble_return.svg index 314757070e..36c2b266c3 100644 --- a/resources/images/assemble_return.svg +++ b/resources/images/assemble_return.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/backup_tips_img.svg b/resources/images/backup_tips_img.svg index 0640f07390..63d6b5c11b 100644 --- a/resources/images/backup_tips_img.svg +++ b/resources/images/backup_tips_img.svg @@ -2,7 +2,7 @@ Layer 1 - - + + \ No newline at end of file diff --git a/resources/images/param_crosszag.svg b/resources/images/param_crosszag.svg index 0a21257317..30bd346933 100644 --- a/resources/images/param_crosszag.svg +++ b/resources/images/param_crosszag.svg @@ -1,44 +1,199 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/resources/images/param_lockedzag.svg b/resources/images/param_lockedzag.svg index 55e87074ff..8b8d06237b 100644 --- a/resources/images/param_lockedzag.svg +++ b/resources/images/param_lockedzag.svg @@ -1,29 +1,99 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/resources/images/param_resonance_avoidance.svg b/resources/images/param_resonance_avoidance.svg new file mode 100644 index 0000000000..e576cf9b53 --- /dev/null +++ b/resources/images/param_resonance_avoidance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/param_zigzag.svg b/resources/images/param_zigzag.svg index f762e99c9a..effd1750de 100644 --- a/resources/images/param_zigzag.svg +++ b/resources/images/param_zigzag.svg @@ -1,158 +1,61 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + y="0" /> diff --git a/resources/images/placeholder_excel.svg b/resources/images/placeholder_excel.svg index 16eeb39650..69f457e7fd 100644 --- a/resources/images/placeholder_excel.svg +++ b/resources/images/placeholder_excel.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/placeholder_pdf.svg b/resources/images/placeholder_pdf.svg index a07e336d7e..6e7cb3adc0 100644 --- a/resources/images/placeholder_pdf.svg +++ b/resources/images/placeholder_pdf.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/placeholder_txt.svg b/resources/images/placeholder_txt.svg index 113a746d33..e4aa1882f6 100644 --- a/resources/images/placeholder_txt.svg +++ b/resources/images/placeholder_txt.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_close_hover.svg b/resources/images/plate_close_hover.svg index 78154b649e..125142ed3a 100644 --- a/resources/images/plate_close_hover.svg +++ b/resources/images/plate_close_hover.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_close_hover_dark.svg b/resources/images/plate_close_hover_dark.svg index 057950934e..c7546fdf59 100644 --- a/resources/images/plate_close_hover_dark.svg +++ b/resources/images/plate_close_hover_dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_locked.svg b/resources/images/plate_locked.svg index ad62e0be45..292fd5d28a 100644 --- a/resources/images/plate_locked.svg +++ b/resources/images/plate_locked.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_locked_dark.svg b/resources/images/plate_locked_dark.svg index 954e90a96e..a3c4f443db 100644 --- a/resources/images/plate_locked_dark.svg +++ b/resources/images/plate_locked_dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_locked_hover.svg b/resources/images/plate_locked_hover.svg index 9898e71aa0..c93079b21f 100644 --- a/resources/images/plate_locked_hover.svg +++ b/resources/images/plate_locked_hover.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_locked_hover_dark.svg b/resources/images/plate_locked_hover_dark.svg index f12e171e47..89de789327 100644 --- a/resources/images/plate_locked_hover_dark.svg +++ b/resources/images/plate_locked_hover_dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_settings_changed.svg b/resources/images/plate_settings_changed.svg index 3c1cc319c0..f87ffbe062 100644 --- a/resources/images/plate_settings_changed.svg +++ b/resources/images/plate_settings_changed.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_settings_changed_dark.svg b/resources/images/plate_settings_changed_dark.svg index 0858582095..c1d0a0e1bc 100644 --- a/resources/images/plate_settings_changed_dark.svg +++ b/resources/images/plate_settings_changed_dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_settings_changed_hover.svg b/resources/images/plate_settings_changed_hover.svg index f2350ae353..a74227acd4 100644 --- a/resources/images/plate_settings_changed_hover.svg +++ b/resources/images/plate_settings_changed_hover.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/plate_settings_changed_hover_dark.svg b/resources/images/plate_settings_changed_hover_dark.svg index ee72de4a5e..a56f766e3b 100644 --- a/resources/images/plate_settings_changed_hover_dark.svg +++ b/resources/images/plate_settings_changed_hover_dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/rename_edit.svg b/resources/images/rename_edit.svg index 03e40f40c7..ef79670fd6 100644 --- a/resources/images/rename_edit.svg +++ b/resources/images/rename_edit.svg @@ -1,10 +1 @@ - - - - - - - - - - + \ No newline at end of file diff --git a/resources/images/tips_arrow.svg b/resources/images/tips_arrow.svg index eb7da06766..a9798deafd 100644 --- a/resources/images/tips_arrow.svg +++ b/resources/images/tips_arrow.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/toolbar_assembly.svg b/resources/images/toolbar_assembly.svg index 1c2a025f5e..46eece92a4 100644 --- a/resources/images/toolbar_assembly.svg +++ b/resources/images/toolbar_assembly.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/resources/images/toolbar_assembly_dark.svg b/resources/images/toolbar_assembly_dark.svg index f514dcb5cc..f33ae0c5a1 100644 --- a/resources/images/toolbar_assembly_dark.svg +++ b/resources/images/toolbar_assembly_dark.svg @@ -1,7 +1 @@ - - - - - - - + \ No newline at end of file diff --git a/resources/images/toolbar_brimears.svg b/resources/images/toolbar_brimears.svg index 1c5b42af41..eda999582f 100644 --- a/resources/images/toolbar_brimears.svg +++ b/resources/images/toolbar_brimears.svg @@ -1,19 +1 @@ - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/resources/images/toolbar_brimears_dark.svg b/resources/images/toolbar_brimears_dark.svg index fe016e3019..e4c625865b 100644 --- a/resources/images/toolbar_brimears_dark.svg +++ b/resources/images/toolbar_brimears_dark.svg @@ -1,19 +1 @@ - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/resources/images/toolbar_reset_zero.svg b/resources/images/toolbar_reset_zero.svg index 35c7469ab6..10be9c46fc 100644 --- a/resources/images/toolbar_reset_zero.svg +++ b/resources/images/toolbar_reset_zero.svg @@ -1,5 +1 @@ - - - - - + \ No newline at end of file diff --git a/resources/images/toolbar_reset_zero_hover.svg b/resources/images/toolbar_reset_zero_hover.svg index b2b03a214f..10be9c46fc 100644 --- a/resources/images/toolbar_reset_zero_hover.svg +++ b/resources/images/toolbar_reset_zero_hover.svg @@ -1,4 +1 @@ - - - - + \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json index 68e1da8598..6b75717cb6 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json @@ -65,6 +65,6 @@ "machine_start_gcode": ";===== machine: A1 =========================\n;===== date: 20240620 =====================\nG392 S0\nM9833.2\n;M400\n;M73 P1.717\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\n\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A43 B10 L100 C46 D10 M70 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C43 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C41 D10 M80 E41 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E44 F10 N80\nM1006 A0 B10 L100 C49 D10 M80 E49 F10 N80\nM1006 A0 B10 L100 C0 D10 M80 E0 F10 N80\nM1006 A44 B10 L100 C48 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A43 B10 L100 C46 D10 M60 E39 F10 N80\nM1006 W\nM18 \n;=====start printer sound ===================\n\n;=====avoid end stop =================\nG91\nG380 S2 Z40 F1200\nG380 S3 Z-15 F1200\nG90\n\n;===== reset machine status =================\n;M290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.65 Y1.2 Z0.6 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;M211 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\nM1002 gcode_claim_action : 13\n\nG28 X\nG91\nG1 Z5 F1200\nG90\nG0 X128 F30000\nG0 Y254 F3000\nG91\nG1 Z-5 F1200\n\nM109 S25 H140\n\nM17 E0.3\nM83\nG1 E10 F1200\nG1 E-0.5 F30\nM17 D\n\nG28 Z P0 T140; home z with low precision,permit 300deg temperature\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\n\nM1002 judge_flag build_plate_detect_flag\nM622 S1\n G39.4\n G90\n G1 Z5 F1200\nM623\n\n;M400\n;M73 P1.717\n\n;===== prepare print temperature and material ==========\nM1002 gcode_claim_action : 24\n\nM400\n;G392 S1\nM211 X0 Y0 Z0 ;turn off soft endstop\nM975 S1 ; turn on\n\nG90\nG1 X-28.5 F30000\nG1 X-48.2 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-48.2 F3000\n M400\n\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM621 S[initial_no_support_extruder]A\n\nM109 S{nozzle_temperature_range_high[initial_no_support_extruder]} H300\nG92 E0\nG1 E50 F200 ; lower extrusion speed to avoid clog\nM400\nM106 P1 S178\nG92 E0\nG1 E5 F200\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG92 E0\nG1 E-0.5 F300\n\nG1 X-28.5 F30000\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\n\n;G392 S0\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n;M400\n;M73 P1.717\n\n;===== auto extrude cali start =========================\nM975 S1\n;G392 S1\n\nG90\nM83\nT1000\nG1 X-48.2 Y0 Z10 F10000\nM400\nM1002 set_filament_type:UNKNOWN\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\n\nM622 J1\n M1002 gcode_claim_action : 8\n\n M109 S{nozzle_temperature[initial_extruder]}\n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\n \n G1 X-48.2 F3000\n M400\n M984 A0.1 E1 S1 F{outer_wall_volumetric_speed/2.4} H[nozzle_diameter]\n M106 P1 S178\n M400 S7\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;G392 S0\n;===== auto extrude cali end ========================\n\n;M400\n;M73 P1.717\n\nM104 S170 ; prepare to wipe nozzle\nM106 S255 ; turn on fan\n\n;===== mech mode fast check start =====================\nM1002 gcode_claim_action : 3\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q1 A5 K0 O3\nM974 Q1 S2 P0\n\nM970.2 Q1 K1 W58 Z0.1\nM974 S2\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q0 A10 K0 O1\nM974 Q0 S2 P0\n\nM970.2 Q0 K1 W78 Z0.1\nM974 S2\n\nM975 S1\nG1 F30000\nG1 X0 Y5\nG28 X ; re-home XY\n\nG1 Z4 F1200\n\n;===== mech mode fast check end =======================\n\n;M400\n;M73 P1.717\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\n\nM975 S1\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\n;===== remove waste by touching start =====\n\nM104 S170 ; set temp down to heatbed acceptable\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nG0 X108 Y-0.5 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X110 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X112 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X114 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X116 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X118 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X120 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X122 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X124 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X126 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X128 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X130 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X132 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X134 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X136 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X138 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X140 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X142 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X144 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X146 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X148 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;===== remove waste by touching end =====\n\nG1 Z10 F1200\nG0 X118 Y261 F30000\nG1 Z5 F1200\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-50}\n\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S140 ; prepare to abl\nG0 Z5 F20000\n\nG0 X128 Y261 F20000 ; move to exposed steel surface\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z10 F1200\n\n;===== brush material wipe nozzle =====\n\nG90\nG1 Y250 F30000\nG1 X55\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X-35 F30000\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Z5.000 F1200\n\nG90\nG1 X30 Y250.000 F30000\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X35 F30000\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Z10.000 F1200\n\n;===== brush material wipe nozzle end =====\n\nG90\n;G0 X128 Y261 F20000 ; move to exposed steel surface\nG1 Y250 F30000\nG1 X138\nG1 Y261\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nM109 S140\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM211 R; pop softend status\n\n;===== wipe nozzle end ================================\n\n;M400\n;M73 P1.717\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\n\nG90\nG1 Z5 F1200\nG1 X0 Y0 F30000\nG29.2 S1 ; turn on ABL\n\nM190 S[bed_temperature_initial_layer_single]; ensure bed temp\nM109 S140\nM106 S0 ; turn off fan , too noisy\n\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A1 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n\n;===== home after wipe mouth end =======================\n\n;M400\n;M73 P1.717\n\nG1 X108.000 Y-0.500 F30000\nG1 Z0.300 F1200\nM400\nG2814 Z0.32\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; prepare to print\n\n;===== nozzle load line ===============================\n;G90\n;M83\n;G1 Z5 F1200\n;G1 X88 Y-0.5 F20000\n;G1 Z0.3 F1200\n\n;M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n\n;G1 E2 F300\n;G1 X168 E4.989 F6000\n;G1 Z1 F1200\n;===== nozzle load line end ===========================\n\n;===== extrude cali test ===============================\n\nM400\n M900 S\n M900 C\n G90\n M83\n\n M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n G0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G91\n G1 X1 Z-0.300\n G1 X4\n G1 Z1 F1200\n G90\n M400\n\nM900 R\n\nM1002 judge_flag extrude_cali_flag\nM622 J1\n G90\n G1 X108.000 Y1.000 F30000\n G91\n G1 Z-0.700 F1200\n G90\n M83\n G0 X128 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G91\n G1 X1 Z-0.300\n G1 X4\n G1 Z1 F1200\n G90\n M400\nM623\n\nG1 Z0.2\n\n;M400\n;M73 P1.717\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\n;G392 S1 ; turn on clog detection\nM1007 S1 ; turn on mass estimation\nG29.4\n", "machine_end_gcode": ";===== date: 20231229 =====================\nG392 S0 ;turn off nozzle clog detect\n\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\n{if !spiral_mode && print_sequence != \"by object\"}\nM1002 judge_flag timelapse_record_flag\nM622 J1\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM991 S0 P-1 ;end timelapse at safe pos\nM623\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X267 F15000\nT255\nG1 X-28.5 F18000\nG1 X-48.2 F3000\nG1 X-28.5 F18000\nG1 X-48.2 F3000\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 256}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z256 F600\n G1 Z256\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-48 Y180 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A44 B20 L100 C49 D20 M80 E41 F20 N80\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N80\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n;=====printer finish sound=========\n\n;M17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM400\nM18 X Y Z\n\n", "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", - "time_lapse_gcode": ";===================== date: 20240606 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-48.2 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\nM622.1 S1\nM1002 judge_flag g39_3rd_layer_detect_flag\nM622 J1\n ; enable nozzle clog detect at 3rd layer\n {if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X261 Y250 F20000\n M400 P200\n G39 S1\n G0 Z2 F4000\n {endif}\n\n\n M622.1 S1\n M1002 judge_flag g39_detection_flag\n M622 J1\n {if !in_head_wrap_detect_zone}\n M622.1 S0\n M1002 judge_flag g39_mass_exceed_flag\n M622 J1\n {if layer_num > 2}\n G392 S0\n M400\n G90\n M83\n M204 S5000\n G0 Z{max_layer_z + 0.4} F4000\n G39.3 S1\n G0 Z{max_layer_z + 0.4} F4000\n G392 S0\n {endif}\n M623\n {endif}\n M623\nM623\n{endif}\n", + "time_lapse_gcode": ";===================== date: 20240606 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-48.2 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\nM622.1 S1\nM1002 judge_flag g39_3rd_layer_detect_flag\nM622 J1\n ; enable nozzle clog detect at 3rd layer\n {if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X261 Y250 F20000\n M400 P200\n G39 S1\n G0 Z2 F4000\n {endif}\n\n\n M622.1 S1\n M1002 judge_flag g39_detection_flag\n M622 J1\n {if !in_head_wrap_detect_zone}\n M622.1 S0\n M1002 judge_flag g39_mass_exceed_flag\n M622 J1\n {if layer_num > 2}\n G392 S0\n M400\n G90\n M83\n M204 S5000\n G0 Z{max_layer_z + 0.4} F4000\n G39.3 S1\n G0 Z{max_layer_z + 0.4} F4000\n G392 S0\n {endif}\n M623\n {endif}\n M623\nM623\n{endif}\n", "change_filament_gcode": ";===== A1 20240913 =======================\nM1007 S0 ; turn off mass estimation\nG392 S0\nM620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n\nG1 X267 F18000\n\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F1200\n{else}\nM620.11 S0\n{endif}\nM400\n\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nM620.10 A0 F[old_filament_e_feedrate]\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\nM620.10 A1 F[new_filament_e_feedrate] L[flush_length] H[nozzle_diameter] T[nozzle_temperature_range_high]\n\nG1 Y128 F9000\n\n{if next_extruder < 255}\n\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\n\nM400\nG92 E0\nM628 S0\n\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S[nozzle_temperature_range_high]\nM106 P1 S60\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\nM400\nM1002 set_filament_type:{filament_type[next_extruder]}\n{endif}\n\n{if flush_length_1 > 45 && flush_length_2 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_2 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 45 && flush_length_3 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_3 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 45 && flush_length_4 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_4 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n\nM629\n\nM400\nM106 P1 S60\nM109 S[new_filament_temp]\nG1 E6 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM106 P1 S0\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\n\nM622.1 S0\nM9833 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\nM1002 judge_flag filament_need_cali_flag\nM622 J1\n G92 E0\n G1 E-[new_retract_length_toolchange] F1800\n M400\n \n M106 P1 S178\n M400 S4\n G1 X-38.2 F18000\n G1 X-48.2 F3000\n G1 X-38.2 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-38.2 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0 \nM623\n\nM621 S[next_extruder]A\nG392 S0\n\nM1007 S1\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json index 58a4e1a3f8..083223370e 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json @@ -72,6 +72,6 @@ "machine_start_gcode": ";===== machine: A1 mini =========================\n;===== date: 20240620 =====================\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S170\nM140 S[bed_temperature_initial_layer_single]\nG392 S0 ;turn off clog detect\nM9833.2\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B0 L100 C37 D10 M100 E37 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E43 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C49 D10 M100 E49 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C39 D10 M100 E48 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 W\nM18\n;=====avoid end stop =================\nG91\nG380 S2 Z30 F1200\nG380 S3 Z-20 F1200\nG1 Z5 F1200\nG90\n\n;===== reset machine status =================\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.7 Y0.9 Z0.5 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM83\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\n;===== prepare print temperature and material ==========\nM400\nM18\nM109 S100 H170\nM104 S170\nM400\nM17\nM400\nG28 X\n\nM211 X0 Y0 Z0 ;turn off soft endstop ; turn off soft endstop to prevent protential logic problem\n\nM975 S1 ; turn on\n\nG1 X0.0 F30000\nG1 X-13.5 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n G392 S0 ;turn on clog detect\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-13.5 F3000\n M400\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n M104 S{nozzle_temperature_range_high[initial_no_support_extruder]}\n G92 E0\n G1 E50 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M400\n M106 P1 S178\n G92 E0\n G1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G92 E0\n G1 E-0.5 F300\n\n G1 X0 F30000\n G1 X-13.5 F3000\n G1 X0 F30000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X0 F30000\n G1 X-13.5 F3000\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G392 S0 ;turn off clog detect\nM621 S[initial_no_support_extruder]A\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== mech mode fast check============================\nM1002 gcode_claim_action : 3\nG0 X25 Y175 F20000 ; find a soft place to home\n;M104 S0\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S170\n\n; build plate detect\nM1002 judge_flag build_plate_detect_flag\nM622 S1\n G39.4\n M400\nM623\n\nG1 Z5 F3000\nG1 X90 Y-1 F30000\nM400 P200\nM970.3 Q1 A7 K0 O2\nM974 Q1 S2 P0\n\nG1 X90 Y0 Z5 F30000\nM400 P200\nM970 Q0 A10 B50 C90 H15 K0 M20 O3\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X-1 Y10\nG28 X ; re-home XY\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\n\nM104 S170 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nM104 S140\nG0 X90 Y-4 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X91 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X92 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X93 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X94 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X95 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X96 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X97 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X98 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\nG1 X25 Y175 F30000.1 ;Brush material\nG1 Z0.2 F30000.1\nG1 Y185\nG91\nG1 X-30 F30000\nG1 Y-2\nG1 X27\nG1 Y1.5\nG1 X-28\nG1 Y-2\nG1 X30\nG1 Y1.5\nG1 X-30\nG90\nM83\n\nG1 Z5 F3000\nG0 X50 Y175 F20000 ; find a soft place to home\nG28 Z P0 T300; home z with low precision, permit 300deg temperature\nG29.2 S0 ; turn off ABL\n\nG0 X85 Y185 F10000 ;move to exposed steel surface and stop the nozzle\nG0 Z-1.01 F10000\nG91\n\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z5 F30000\nG1 X25 Y175 F30000.1 ;Brush material\nG1 Z0.2 F30000.1\nG1 Y185\nG91\nG1 X-30 F30000\nG1 Y-2\nG1 X27\nG1 Y1.5\nG1 X-28\nG1 Y-2\nG1 X30\nG1 Y1.5\nG1 X-30\nG90\nM83\n\nG1 Z5\nG0 X55 Y175 F20000 ; find a soft place to home\nG28 Z P0 T300; home z with low precision, permit 300deg temperature\nG29.2 S0 ; turn off ABL\n\nG1 Z10\nG1 X85 Y185\nG1 Z-1.01\nG1 X95\nG1 X90\n\nM211 R; pop softend status\n\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== wait heatbed ====================\nM1002 gcode_claim_action : 2\nM104 S0\nM190 S[bed_temperature_initial_layer_single];set bed temp\nM109 S140\n\nG1 Z5 F3000\nG29.2 S1\nG1 X10 Y10 F20000\n\n;===== bed leveling ==================================\n;M1002 set_flag g29_before_print_flag=1\nM1002 judge_flag g29_before_print_flag\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A1 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28 T145\n\nM623\n\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\n\nG1 X-13.5 Y0 Z10 F10000\nG1 E1.2 F500\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{nozzle_temperature[initial_extruder]}\nM400\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\n\nG392 S0 ;turn on clog detect\n\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\nM622 J1\n M1002 gcode_claim_action : 8\n \n M400\n M900 K0.0 L1000.0 M1.0\n G90\n M83\n G0 X68 Y-4 F30000\n G0 Z0.3 F18000 ;Move to start position\n M400\n G0 X88 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X93 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X98 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X103 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X108 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X113 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 Y0 Z0 F20000\n M400\n \n G1 X-13.5 Y0 Z10 F10000\n M400\n \n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X-13.5 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\n \n G1 X-13.5 F3000\n M400\n M984 A0.1 E1 S1 F{outer_wall_volumetric_speed/2.4} H[nozzle_diameter]\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X-13.5 F3000\n M400\n M106 P1 S0\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;===== extrude cali test ===============================\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\nG90\nM83\nG0 X68 Y-2.5 F30000\nG0 Z0.3 F18000 ;Move to start position\nG0 X88 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X93 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X98 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X103 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X108 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X113 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X115 Z0 F20000\nG0 Z5\nM400\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\n\nM400 ; wait all motion done before implement the emprical L parameters\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\nM1007 S1\n\n\n\n", "machine_end_gcode": ";===== date: 20231229 =====================\n;turn off nozzle clog detect\nG392 S0\n\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\n{if !spiral_mode && print_sequence != \"by object\"}\nM1002 judge_flag timelapse_record_flag\nM622 J1\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM991 S0 P-1 ;end timelapse at safe pos\nM623\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X181 F12000\nT255\nG1 X0 F18000\nG1 X-13.0 F3000\nG1 X0 F18000 ; wipe\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 180}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z180 F600\n G1 Z180\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-13 Y180 F3600\n\nG91\nG1 Z-1 F600\nG90\nM83\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M100 E42 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C46 D10 M100 E46 F10 N100\nM1006 A44 B20 L100 C39 D20 M100 E48 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E48 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B20 L100 C41 D20 M100 E49 F20 N100\nM1006 A0 B20 L100 C0 D20 M100 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M100 E37 F20 N100\nM1006 W\n;=====printer finish sound=========\nM400 S1\nM18 X Y Z\n", "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change\n", - "time_lapse_gcode": ";===================== date: 20240606 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\nM622.1 S1\nM1002 judge_flag g39_3rd_layer_detect_flag\nM622 J1\n ; enable nozzle clog detect at 3rd layer\n {if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X187 Y178 F20000\n G39 S1 X187 Y178\n G0 Z2 F4000\n {endif}\n\n\n M622.1 S1\n M1002 judge_flag g39_detection_flag\n M622 J1\n {if !in_head_wrap_detect_zone}\n M622.1 S0\n M1002 judge_flag g39_mass_exceed_flag\n M622 J1\n {if layer_num > 2}\n G392 S0\n M400\n G90\n M83\n M204 S5000\n G0 Z{max_layer_z + 0.4} F4000\n G39.3 S1\n G0 Z{max_layer_z + 0.4} F4000\n G392 S0\n {endif}\n M623\n {endif}\n M623\nM623\n{endif}\n\n\n", + "time_lapse_gcode": ";===================== date: 20240606 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\nM622.1 S1\nM1002 judge_flag g39_3rd_layer_detect_flag\nM622 J1\n ; enable nozzle clog detect at 3rd layer\n {if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X187 Y178 F20000\n G39 S1 X187 Y178\n G0 Z2 F4000\n {endif}\n\n\n M622.1 S1\n M1002 judge_flag g39_detection_flag\n M622 J1\n {if !in_head_wrap_detect_zone}\n M622.1 S0\n M1002 judge_flag g39_mass_exceed_flag\n M622 J1\n {if layer_num > 2}\n G392 S0\n M400\n G90\n M83\n M204 S5000\n G0 Z{max_layer_z + 0.4} F4000\n G39.3 S1\n G0 Z{max_layer_z + 0.4} F4000\n G392 S0\n {endif}\n M623\n {endif}\n M623\nM623\n{endif}\n\n\n", "change_filament_gcode": ";===== machine: A1 mini =========================\n;===== date: 20240913 =====================\nG392 S0\nM1007 S0\nM620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n\nG1 X180 F18000\n\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F1200\n{else}\nM620.11 S0\n{endif}\nM400\n\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nM620.10 A0 F[old_filament_e_feedrate]\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\nM620.10 A1 F[new_filament_e_feedrate] L[flush_length] H[nozzle_diameter] T[nozzle_temperature_range_high]\n\nG1 Y90 F9000\n\n{if next_extruder < 255}\n\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\n\nM400\nG92 E0\nM628 S0\n\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S[nozzle_temperature_range_high]\nM106 P1 S60\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\nM400\nM1002 set_filament_type:{filament_type[next_extruder]}\n{endif}\n\n{if flush_length_1 > 45 && flush_length_2 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_2 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 45 && flush_length_3 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_3 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 45 && flush_length_4 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_4 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n\nM629\n\nM400\nM106 P1 S60\nM109 S[new_filament_temp]\nG1 E5 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM106 P1 S0\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\n\nM622.1 S0\nM9833 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\nM1002 judge_flag filament_need_cali_flag\nM622 J1\n G92 E0\n G1 E-[new_retract_length_toolchange] F1800\n M400\n \n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n M400\n M106 P1 S0 \nM623\n\nM621 S[next_extruder]A\nG392 S0\n\nM1007 S1\n" } diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json index b947c06289..d288e57a52 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json @@ -38,7 +38,7 @@ "Bambu Lab A1 0.4 nozzle" ], "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230707 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", - "machine_end_gcode": ";===== date: 20230428 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n", - "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", + "machine_end_gcode": ";===== date: 20230428 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n", + "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nM620.11 S0\n{endif}\nM400\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json index 5cee189af5..b093a331c8 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json @@ -37,7 +37,7 @@ "Bambu Lab A1 0.4 nozzle" ], "machine_start_gcode": ";===== machine: P1S ========================\n;===== date: 20231107 =====================\n;===== turn on the HB fan & MC board fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\nM710 A1 S255 ;turn on MC fan by default(P1S)\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\n", - "machine_end_gcode": ";===== date: 20230428 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n", - "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", + "machine_end_gcode": ";===== date: 20230428 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n", + "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nM620.11 S0\n{endif}\nM400\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json index 90b3f20147..2c8723b29c 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json @@ -38,6 +38,6 @@ "Bambu Lab A1 0.4 nozzle" ], "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240919 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n", - "machine_end_gcode": ";===== date: 20240528 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos\nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A49 B20 L100 C44 D20 M100 E41 F20 N100\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n", + "machine_end_gcode": ";===== date: 20240528 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos\nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A49 B20 L100 C44 D20 M100 E41 F20 N100\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nM620.11 S0\n{endif}\nM400\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json index 70baeeacec..c89fac55d0 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json @@ -36,6 +36,6 @@ "Bambu Lab A1 0.4 nozzle" ], "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240919 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n", - "machine_end_gcode": ";===== date: 20240528 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos\nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A49 B20 L100 C44 D20 M100 E41 F20 N100\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n", + "machine_end_gcode": ";===== date: 20240528 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos\nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A49 B20 L100 C44 D20 M100 E41 F20 N100\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nM620.11 S0\n{endif}\nM400\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json index 4277bdf3dc..53a487118a 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json @@ -38,6 +38,6 @@ "Bambu Lab A1 0.4 nozzle" ], "machine_start_gcode": ";===== machine: X1E =========================\n;===== date: 20240919 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;==== if Chamber Cooling is necessary ==== \n\n{if (filament_type[initial_no_support_extruder]==\"PLA\") || (filament_type[initial_no_support_extruder]==\"PETG\") || (filament_type[initial_no_support_extruder]==\"TPU\") || (filament_type[initial_no_support_extruder]==\"PVA\") || (filament_type[initial_no_support_extruder]==\"PLA-CF\") || (filament_type[initial_no_support_extruder]==\"PETG-CF\")}\nM1002 gcode_claim_action : 29\nG28\nG90\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nG1 Z75\nM140 S0 ; stop heatbed from heating\nM106 P2 S255 ; open auxiliary fan for cooling\nM106 P3 S255 ; open chamber fan for cooling\nM191 S0 ; wait for chamber temp\nM106 P3 S0 ; reset chamber fan cmd\nM106 P2 S0; reset auxiliary fan cmd\n{endif}\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S290 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n\n;===== set chamber temperature ==========\n{if (overall_chamber_temperature >= 40)}\nM106 P2 S255 ; open big fan to help heating\nM141 S[overall_chamber_temperature] ; Let Chamber begin to heat\n{endif}\n\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;===== wait chamber temperature reaching the reference value =======\n{if (overall_chamber_temperature >= 40)}\nM191 S[overall_chamber_temperature] ; wait for chamber temp\nM106 P2 S0 ; reset chamber fan cmd\n{endif}\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n", - "machine_end_gcode": ";===== date: 20240402 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM141 S0 ; turn off chamber \nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n\n", + "machine_end_gcode": ";===== date: 20240402 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM141 S0 ; turn off chamber \nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n\n", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\n{if long_retraction_when_cut && retraction_distance_when_cut > 2}\nG1 E-[retraction_distance_when_cut] F200\nM400\n{endif}\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\nM400\n{if long_retraction_when_cut && retraction_distance_when_cut > 2}\nG1 E{retraction_distance_when_cut - 2} F200\nG1 E2 F20\nM400\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json b/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json index 4d61d88f87..dfdb9e7ac2 100644 --- a/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json +++ b/resources/profiles/BBL/machine/fdm_bbl_3dp_001_common.json @@ -135,8 +135,8 @@ ], "nozzle_type": "hardened_steel", "single_extruder_multi_material": "1", - "machine_end_gcode": ";===== date: 20230428 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X128 Y250 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n", - "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C10 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", + "machine_end_gcode": ";===== date: 20230428 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X128 Y250 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\n", + "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\nM622.1 S1 ; for prev firmware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n{if timelapse_type == 0} ; timelapse without wipe tower\nM971 S11 C10 O0\n{elsif timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 X65 Y245 F20000 ; move to safe pos\nG17\nG2 Z{layer_z} I0.86 J0.86 P1 F20000\nG1 Y265 F3000\nM400 P300\nM971 S11 C10 O0\nG92 E0\nG1 E[retraction_length] F300\nG1 X100 F5000\nG1 Y255 F20000\n{endif}\nM623\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\n\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\nM400\n\nG92 E0\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM109 S[nozzle_temperature_range_high]\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\nG1 X80 F15000\nG1 X60 F15000\nG1 X80 F15000\nG1 X60 F15000; shake to put down garbage\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A", "machine_pause_gcode": "M400 U1" } \ No newline at end of file diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json index 7a98f46d84..9088b6a34e 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4.json @@ -14,6 +14,9 @@ "filament_start_gcode": [ "; Filament gcode\nM900 K{if nozzle_diameter[0]==0.4}0.03{elsif nozzle_diameter[0]==0.25}0.1{elsif nozzle_diameter[0]==0.3}0.06{elsif nozzle_diameter[0]==0.35}0.05{elsif nozzle_diameter[0]==0.5}0.03{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_MK4IS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.012{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 42.4 42.4 42.4 42.4 42.4 | 0.05 42.4 0.45 42.4 0.95 42.4 1.45 42.4 1.95 42.4 2.45 42.4 2.95 42.4 3.45 42.4 3.95 42.4 4.45 42.4 4.95 42.4" + ], "compatible_printers": [ "Prusa MK4 0.25 nozzle", "Prusa MK4 0.4 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.4.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.4.json index 4a57166b17..ef7fe53360 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S HF0.4.json @@ -8,6 +8,9 @@ "filament_start_gcode": [ "M572 S{if nozzle_diameter[0]==0.4}0.02{elsif nozzle_diameter[0]==0.5}0.018{elsif nozzle_diameter[0]==0.6}0.015{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.25}0.09{elsif nozzle_diameter[0]==0.3}0.065{else}0{endif} ; Filament gcode\nM142 S40 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 42.4 42.4 | 0.05 42.4 0.45 42.4 0.95 42.4 1.45 42.4 1.95 42.4 2.45 42.4 2.95 42.4 3.45 42.4 3.95 42.4 4.45 42.4 4.95 42.4" + ], "from": "system", "inherits": "Prusa Generic ABS @MK4S", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S.json b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S.json index fdbfd006d0..eba67d225a 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S.json +++ b/resources/profiles/Prusa/filament/Prusa Generic ABS @MK4S.json @@ -21,6 +21,9 @@ "filament_start_gcode": [ "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.04{elsif nozzle_diameter[filament_extruder_id]==0.25}0.1{elsif nozzle_diameter[filament_extruder_id]==0.3}0.06{elsif nozzle_diameter[filament_extruder_id]==0.35}0.05{elsif nozzle_diameter[filament_extruder_id]==0.5}0.03{elsif nozzle_diameter[filament_extruder_id]==0.6}0.02{elsif nozzle_diameter[filament_extruder_id]==0.8}0.01{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS|MK4S|MK3.9S).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.02{elsif nozzle_diameter[filament_extruder_id]==0.5}0.018{elsif nozzle_diameter[filament_extruder_id]==0.6}0.012{elsif nozzle_diameter[filament_extruder_id]==0.8}0.01{elsif nozzle_diameter[filament_extruder_id]==0.25}0.09{elsif nozzle_diameter[filament_extruder_id]==0.3}0.065{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S40 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 42.4 42.4 42.4 42.4 42.4 | 0.05 42.4 0.45 42.4 0.95 42.4 1.45 42.4 1.95 42.4 2.45 42.4 2.95 42.4 3.45 42.4 3.95 42.4 4.45 42.4 4.95 42.4" + ], "from": "system", "hot_plate_temp": "110", "hot_plate_temp_initial_layer": "100", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json index 7eedb38b60..9bfd8d09e3 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4.json @@ -41,6 +41,9 @@ "filament_start_gcode": [ "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.035{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.09{elsif nozzle_diameter[0]==0.35}0.08{elsif nozzle_diameter[0]==0.6}0.04{elsif nozzle_diameter[0]==0.5}0.05{elsif nozzle_diameter[0]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_MK4IS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.055{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 42.4 42.4 42.4 42.4 42.4 | 0.05 42.4 0.45 42.4 0.95 42.4 1.45 42.4 1.95 42.4 2.45 42.4 2.95 42.4 3.45 42.4 3.95 42.4 4.45 42.4 4.95 42.4" + ], "compatible_printers": [ "Prusa MK4 0.25 nozzle", "Prusa MK4 0.4 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.4.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.4.json index 4e5af2f62c..b7b1b9b109 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S HF0.4.json @@ -7,6 +7,9 @@ "filament_start_gcode": [ "M572 S{if nozzle_diameter[0]==0.4}0.05{elsif nozzle_diameter[0]==0.5}0.044{elsif nozzle_diameter[0]==0.6}0.035{elsif nozzle_diameter[0]==0.8}0.022{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\n\nM142 S36 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 42.4 42.4 | 0.05 42.4 0.45 42.4 0.95 42.4 1.45 42.4 1.95 42.4 2.45 42.4 2.95 42.4 3.45 42.4 3.95 42.4 4.45 42.4 4.95 42.4" + ], "from": "system", "inherits": "Prusa Generic PETG @MK4S", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S.json b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S.json index 84ed882fea..cf0c4b5f61 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PETG @MK4S.json @@ -22,6 +22,9 @@ "filament_start_gcode": [ "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.07{elsif nozzle_diameter[filament_extruder_id]==0.25}0.12{elsif nozzle_diameter[filament_extruder_id]==0.3}0.09{elsif nozzle_diameter[filament_extruder_id]==0.35}0.08{elsif nozzle_diameter[filament_extruder_id]==0.6}0.04{elsif nozzle_diameter[filament_extruder_id]==0.5}0.05{elsif nozzle_diameter[filament_extruder_id]==0.8}0.02{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS|MK4S|MK3.9S).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.053{elsif nozzle_diameter[filament_extruder_id]==0.5}0.042{elsif nozzle_diameter[filament_extruder_id]==0.6}0.032{elsif nozzle_diameter[filament_extruder_id]==0.8}0.018{elsif nozzle_diameter[filament_extruder_id]==0.25}0.18{elsif nozzle_diameter[filament_extruder_id]==0.3}0.1{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 42.4 42.4 42.4 42.4 42.4 | 0.05 42.4 0.45 42.4 0.95 42.4 1.45 42.4 1.95 42.4 2.45 42.4 2.95 42.4 3.45 42.4 3.95 42.4 4.45 42.4 4.95 42.4" + ], "filament_wipe": "1", "filament_z_hop": "0.15", "from": "system", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json index 6f8952d40e..ceed7886fb 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4.json @@ -17,6 +17,9 @@ "filament_start_gcode": [ "; filament start gcode\nM900 K{if nozzle_diameter[0]==0.4}0.026{elsif nozzle_diameter[0]==0.25}0.14{elsif nozzle_diameter[0]==0.3}0.07{elsif nozzle_diameter[0]==0.35}0.06{elsif nozzle_diameter[0]==0.6}0.03{elsif nozzle_diameter[0]==0.5}0.035{elsif nozzle_diameter[0]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*PRINTER_MODEL_MK4IS.*/}\nM572 S{if nozzle_diameter[0]==0.4}0.026{elsif nozzle_diameter[0]==0.5}0.025{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.014{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 40 40 40 40 40 | 0.05 40 0.45 40 0.95 40 1.45 40 1.95 40 2.45 40 2.95 40 3.45 40 3.95 40 4.45 40 4.95 40" + ], "compatible_printers": [ "Prusa MK4 0.25 nozzle", "Prusa MK4 0.4 nozzle", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.4.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.4.json index 8510abbfd9..946e697786 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.4.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S HF0.4.json @@ -7,6 +7,10 @@ "filament_start_gcode": [ "M572 S{if nozzle_diameter[0]==0.4}0.036{elsif nozzle_diameter[0]==0.5}0.026{elsif nozzle_diameter[0]==0.6}0.02{elsif nozzle_diameter[0]==0.8}0.015{elsif nozzle_diameter[0]==0.25}0.12{elsif nozzle_diameter[0]==0.3}0.08{else}0{endif} ; Filament gcode\n\nM142 S36 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 40 40| 0.05 40 0.45 40 0.95 40 1.45 40 1.95 40 2.45 40 2.95 40 3.45 40 3.95 40 4.45 40 4.95 40" + ], + "from": "system", "inherits": "Prusa Generic PLA @MK4S", "instantiation": "true", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S.json b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S.json index 6034816191..5b6f5690f5 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA @MK4S.json @@ -20,6 +20,9 @@ "filament_start_gcode": [ "M900 K{if nozzle_diameter[filament_extruder_id]==0.4}0.05{elsif nozzle_diameter[filament_extruder_id]==0.25}0.14{elsif nozzle_diameter[filament_extruder_id]==0.3}0.07{elsif nozzle_diameter[filament_extruder_id]==0.35}0.06{elsif nozzle_diameter[filament_extruder_id]==0.6}0.03{elsif nozzle_diameter[filament_extruder_id]==0.5}0.035{elsif nozzle_diameter[filament_extruder_id]==0.8}0.015{else}0{endif} ; Filament gcode\n\n{if printer_notes=~/.*(MK4IS|XLIS|MK4S|MK3.9S).*/}\nM572 S{if nozzle_diameter[filament_extruder_id]==0.4}0.036{elsif nozzle_diameter[filament_extruder_id]==0.5}0.025{elsif nozzle_diameter[filament_extruder_id]==0.6}0.02{elsif nozzle_diameter[filament_extruder_id]==0.8}0.014{elsif nozzle_diameter[filament_extruder_id]==0.25}0.12{elsif nozzle_diameter[filament_extruder_id]==0.3}0.08{else}0{endif} ; Filament gcode\n{endif}\n\nM142 S36 ; set heatbreak target temp" ], + "filament_ramming_parameters": [ + "250 100 40 40 40 40 40 | 0.05 40 0.45 40 0.95 40 1.45 40 1.95 40 2.45 40 2.95 40 3.45 40 3.95 40 4.45 40 4.95 40" + ], "from": "system", "full_fan_speed_layer": "3", "inherits": "fdm_filament_pla", diff --git a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json index 6bb298a0f4..af766ef7fd 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json +++ b/resources/profiles/Prusa/filament/Prusa Generic PLA-CF.json @@ -17,6 +17,9 @@ "slow_down_layer_time": [ "7" ], + "filament_ramming_parameters": [ + "250 100 40 40 40 40 40 | 0.05 40 0.45 40 0.95 40 1.45 40 1.95 40 2.45 40 2.95 40 3.45 40 3.95 40 4.45 40 4.95 40" + ], "compatible_printers": [ "Prusa MK3S 0.25 nozzle", "Prusa MK3S 0.4 nozzle", diff --git a/resources/profiles/Wanhao France.json b/resources/profiles/Wanhao France.json new file mode 100644 index 0000000000..bf745874f3 --- /dev/null +++ b/resources/profiles/Wanhao France.json @@ -0,0 +1,279 @@ +{ + "name": "Wanhao France", + "version": "02.02.00.04", + "force_update": "0", + "description": "Wanhao France D12 configurations", + "machine_model_list": [ + { + "name": "Wanhao D12 230 PRO M2 MONO DUAL", + "sub_path": "machine/D12 230 PRO M2 MONO DUAL.json" + }, + { + "name": "Wanhao D12 230 PRO M2 MONO DUAL PoopTool", + "sub_path": "machine/D12 230 PRO M2 MONO DUAL PoopTool.json" + }, + { + "name": "Wanhao D12 230 PRO SMARTPAD MONO DUAL", + "sub_path": "machine/D12 230 PRO SMARTPAD MONO DUAL.json" + }, + { + "name": "Wanhao D12 230 PRO SMARTPAD MONO DUAL PoopTool", + "sub_path": "machine/D12 230 PRO SMARTPAD MONO DUAL PoopTool.json" + }, + { + "name": "Wanhao D12 230 PRO M2 DIRECT", + "sub_path": "machine/D12 230 PRO M2 DIRECT.json" + }, + { + "name": "Wanhao D12 230 PRO SMARTPAD DIRECT", + "sub_path": "machine/D12 230 PRO SMARTPAD DIRECT.json" + }, + { + "name": "Wanhao D12 300 PRO MAX M2 DIRECT", + "sub_path": "machine/D12 300 PRO M2 DIRECT.json" + }, + { + "name": "Wanhao D12 300 PRO M2 MONO DUAL", + "sub_path": "machine/D12 300 PRO M2 MONO DUAL.json" + }, + { + "name": "Wanhao D12 300 PRO M2 MONO DUAL PoopTool", + "sub_path": "machine/D12 300 PRO M2 MONO DUAL PoopTool.json" + }, + { + "name": "Wanhao D12 300 PRO MAX SMARTPAD DIRECT", + "sub_path": "machine/D12 300 PRO SMARTPAD DIRECT.json" + }, + { + "name": "Wanhao D12 300 PRO SMARTPAD MONO DUAL", + "sub_path": "machine/D12 300 PRO SMARTPAD MONO DUAL.json" + }, + { + "name": "Wanhao D12 300 PRO SMARTPAD MONO DUAL PoopTool", + "sub_path": "machine/D12 300 PRO SMARTPAD MONO DUAL PoopTool.json" + }, + { + "name": "Wanhao D12 500 PRO MAX M2 DIRECT", + "sub_path": "machine/D12 500 PRO M2 DIRECT.json" + }, + { + "name": "Wanhao D12 500 PRO M2 MONO DUAL", + "sub_path": "machine/D12 500 PRO M2 MONO DUAL.json" + }, + { + "name": "Wanhao D12 500 PRO M2 MONO DUAL PoopTool", + "sub_path": "machine/D12 500 PRO M2 MONO DUAL PoopTool.json" + }, + { + "name": "Wanhao D12 500 PRO MAX SMARTPAD DIRECT", + "sub_path": "machine/D12 500 PRO SMARTPAD DIRECT.json" + }, + { + "name": "Wanhao D12 500 PRO SMARTPAD MONO DUAL", + "sub_path": "machine/D12 500 PRO SMARTPAD MONO DUAL.json" + }, + { + "name": "Wanhao D12 500 PRO SMARTPAD MONO DUAL PoopTool", + "sub_path": "machine/D12 500 PRO SMARTPAD MONO DUAL PoopTool.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "0.10mm Standard @Wanhao-D12-230", + "sub_path": "process/0.10mm Standard @Wanhao-D12-230.json" + }, + { + "name": "0.15mm Standard @Wanhao-D12-230", + "sub_path": "process/0.15mm Standard @Wanhao-D12-230.json" + }, + { + "name": "0.20mm Standard @Wanhao-D12-230", + "sub_path": "process/0.20mm Standard @Wanhao-D12-230.json" + }, + { + "name": "0.20mm Standard @Wanhao-D12-230 PoopTool.json", + "sub_path": "process/0.20mm Standard @Wanhao-D12-230 PoopTool.json" + }, + { + "name": "0.24mm Standard @Wanhao-D12-230", + "sub_path": "process/0.24mm Standard @Wanhao-D12-230.json" + }, + { + "name": "0.10mm Standard @Wanhao-D12-300", + "sub_path": "process/0.10mm Standard @Wanhao-D12-300.json" + }, + { + "name": "0.15mm Standard @Wanhao-D12-300", + "sub_path": "process/0.15mm Standard @Wanhao-D12-300.json" + }, + { + "name": "0.20mm Standard @Wanhao-D12-300", + "sub_path": "process/0.20mm Standard @Wanhao-D12-300.json" + }, + { + "name": "0.20mm Standard @Wanhao-D12-300 PoopTool.json", + "sub_path": "process/0.20mm Standard @Wanhao-D12-300 PoopTool.json" + }, + { + "name": "0.24mm Standard @Wanhao-D12-300", + "sub_path": "process/0.24mm Standard @Wanhao-D12-300.json" + }, + { + "name": "0.10mm Standard @Wanhao-D12-500", + "sub_path": "process/0.10mm Standard @Wanhao-D12-500.json" + }, + { + "name": "0.15mm Standard @Wanhao-D12-500", + "sub_path": "process/0.15mm Standard @Wanhao-D12-500.json" + }, + { + "name": "0.20mm Standard @Wanhao-D12-500", + "sub_path": "process/0.20mm Standard @Wanhao-D12-500.json" + }, + { + "name": "0.20mm Standard @Wanhao-D12-500 PoopTool.json", + "sub_path": "process/0.20mm Standard @Wanhao-D12-500 PoopTool.json" + }, + { + "name": "0.24mm Standard @Wanhao-D12-500", + "sub_path": "process/0.24mm Standard @Wanhao-D12-500.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "Yumi Generic PETG", + "sub_path": "filament/Yumi Generic PETG.json" + }, + { + "name": "Yumi Generic PLA", + "sub_path": "filament/Yumi Generic PLA.json" + }, + { + "name": "YUMI PLA Direct Drive", + "sub_path": "filament/YUMI PLA Direct Drive.json" + }, + { + "name": "YUMI PLA Bowden", + "sub_path": "filament/YUMI PLA Bowden.json" + }, + { + "name": "YUMI PETG", + "sub_path": "filament/YUMI PETG.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "sub_path": "machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle.json" + }, + { + "name": "D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "sub_path": "machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json" + }, + { + "name": "D12 230 PRO M2 DIRECT 0.4 nozzle", + "sub_path": "machine/D12 230 PRO M2 DIRECT 0.4 nozzle.json" + }, + { + "name": "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "sub_path": "machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle.json" + + }, + { + "name": "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "sub_path": "machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json" + }, + { + "name": "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle", + "sub_path": "machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json" + }, + { + "name": "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "sub_path": "machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle.json" + }, + { + "name": "D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "sub_path": "machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json" + }, + { + "name": "D12 300 PRO M2 DIRECT 0.4 nozzle", + "sub_path": "machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json" + }, + { + "name": "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "sub_path": "machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle.json" + }, + { + "name": "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "sub_path": "machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json" + }, + { + "name": "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle", + "sub_path": "machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json" + }, + { + "name": "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "sub_path": "machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle.json" + }, + { + "name": "D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "sub_path": "machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json" + }, + { + "name": "D12 500 PRO M2 DIRECT 0.4 nozzle", + "sub_path": "machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json" + }, + { + "name": "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "sub_path": "machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle.json" + }, + { + "name": "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "sub_path": "machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json" + }, + { + "name": "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle", + "sub_path": "machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json" + } + ] +} diff --git a/resources/profiles/Wanhao France/230 - Mono320x320.png b/resources/profiles/Wanhao France/230 - Mono320x320.png new file mode 100644 index 0000000000..017d437a51 Binary files /dev/null and b/resources/profiles/Wanhao France/230 - Mono320x320.png differ diff --git a/resources/profiles/Wanhao France/D12_texture.svg b/resources/profiles/Wanhao France/D12_texture.svg new file mode 100644 index 0000000000..f35bf4608f --- /dev/null +++ b/resources/profiles/Wanhao France/D12_texture.svg @@ -0,0 +1,2275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 DIRECT_cover.png b/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 DIRECT_cover.png new file mode 100644 index 0000000000..f3de8dd9a8 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 DIRECT_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 MONO DUAL PoopTool_cover.png b/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 MONO DUAL PoopTool_cover.png new file mode 100644 index 0000000000..69d5ab2190 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 MONO DUAL PoopTool_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 MONO DUAL_cover.png b/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 MONO DUAL_cover.png new file mode 100644 index 0000000000..f40d1b97c5 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 230 PRO M2 MONO DUAL_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD DIRECT_cover.png b/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD DIRECT_cover.png new file mode 100644 index 0000000000..30a7c68b89 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD DIRECT_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD MONO DUAL PoopTool_cover.png b/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD MONO DUAL PoopTool_cover.png new file mode 100644 index 0000000000..52b5240e8b Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD MONO DUAL PoopTool_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD MONO DUAL_cover.png b/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD MONO DUAL_cover.png new file mode 100644 index 0000000000..532795e6bb Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 230 PRO SMARTPAD MONO DUAL_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 300 PRO M2 MONO DUAL PoopTool_cover.png b/resources/profiles/Wanhao France/Wanhao D12 300 PRO M2 MONO DUAL PoopTool_cover.png new file mode 100644 index 0000000000..ccae266ce0 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 300 PRO M2 MONO DUAL PoopTool_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 300 PRO M2 MONO DUAL_cover.png b/resources/profiles/Wanhao France/Wanhao D12 300 PRO M2 MONO DUAL_cover.png new file mode 100644 index 0000000000..1ced80a5a1 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 300 PRO M2 MONO DUAL_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 300 PRO MAX M2 DIRECT_cover.png b/resources/profiles/Wanhao France/Wanhao D12 300 PRO MAX M2 DIRECT_cover.png new file mode 100644 index 0000000000..8c05407925 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 300 PRO MAX M2 DIRECT_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 300 PRO MAX SMARTPAD DIRECT_cover.png b/resources/profiles/Wanhao France/Wanhao D12 300 PRO MAX SMARTPAD DIRECT_cover.png new file mode 100644 index 0000000000..1fab43fb46 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 300 PRO MAX SMARTPAD DIRECT_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 300 PRO SMARTPAD MONO DUAL PoopTool_cover.png b/resources/profiles/Wanhao France/Wanhao D12 300 PRO SMARTPAD MONO DUAL PoopTool_cover.png new file mode 100644 index 0000000000..8ab5ed5f4d Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 300 PRO SMARTPAD MONO DUAL PoopTool_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 300 PRO SMARTPAD MONO DUAL_cover.png b/resources/profiles/Wanhao France/Wanhao D12 300 PRO SMARTPAD MONO DUAL_cover.png new file mode 100644 index 0000000000..9a79e89095 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 300 PRO SMARTPAD MONO DUAL_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 500 PRO M2 MONO DUAL PoopTool_cover.png b/resources/profiles/Wanhao France/Wanhao D12 500 PRO M2 MONO DUAL PoopTool_cover.png new file mode 100644 index 0000000000..2b36b08763 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 500 PRO M2 MONO DUAL PoopTool_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 500 PRO M2 MONO DUAL_cover.png b/resources/profiles/Wanhao France/Wanhao D12 500 PRO M2 MONO DUAL_cover.png new file mode 100644 index 0000000000..c46474f2bc Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 500 PRO M2 MONO DUAL_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX M2 DIRECT_cover.png b/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX M2 DIRECT_cover.png new file mode 100644 index 0000000000..ca4df33d4b Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX M2 DIRECT_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX M2 DIRECT_cover.png.png b/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX M2 DIRECT_cover.png.png new file mode 100644 index 0000000000..4144e104b4 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX M2 DIRECT_cover.png.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX SMARTPAD DIRECT_cover.png b/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX SMARTPAD DIRECT_cover.png new file mode 100644 index 0000000000..45b6bab849 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 500 PRO MAX SMARTPAD DIRECT_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 500 PRO SMARTPAD MONO DUAL PoopTool_cover.png b/resources/profiles/Wanhao France/Wanhao D12 500 PRO SMARTPAD MONO DUAL PoopTool_cover.png new file mode 100644 index 0000000000..c15a2cd14f Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 500 PRO SMARTPAD MONO DUAL PoopTool_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12 500 PRO SMARTPAD MONO DUAL_cover.png b/resources/profiles/Wanhao France/Wanhao D12 500 PRO SMARTPAD MONO DUAL_cover.png new file mode 100644 index 0000000000..8756aa990a Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12 500 PRO SMARTPAD MONO DUAL_cover.png differ diff --git a/resources/profiles/Wanhao France/Wanhao D12-300_hotend.stl b/resources/profiles/Wanhao France/Wanhao D12-300_hotend.stl new file mode 100644 index 0000000000..fb8ae0b32d Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao D12-300_hotend.stl differ diff --git a/resources/profiles/Wanhao France/Wanhao_D12-230_buildplate_model.stl b/resources/profiles/Wanhao France/Wanhao_D12-230_buildplate_model.stl new file mode 100644 index 0000000000..c474c80902 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao_D12-230_buildplate_model.stl differ diff --git a/resources/profiles/Wanhao France/Wanhao_D12-300_buildplate_model.stl b/resources/profiles/Wanhao France/Wanhao_D12-300_buildplate_model.stl new file mode 100644 index 0000000000..4444018693 Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao_D12-300_buildplate_model.stl differ diff --git a/resources/profiles/Wanhao France/Wanhao_D12-500_buildplate_model.stl b/resources/profiles/Wanhao France/Wanhao_D12-500_buildplate_model.stl new file mode 100644 index 0000000000..462f31e42e Binary files /dev/null and b/resources/profiles/Wanhao France/Wanhao_D12-500_buildplate_model.stl differ diff --git a/resources/profiles/Wanhao France/filament/YUMI PETG.json b/resources/profiles/Wanhao France/filament/YUMI PETG.json new file mode 100644 index 0000000000..161faf9767 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/YUMI PETG.json @@ -0,0 +1,273 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "from": "system", + "is_custom_defined": "0", + "instantiation": "true", + "name": "YUMI PETG", + "inherits": "Yumi Generic PETG", + "filament_vendor": [ "Yumi" ], + "filament_settings_id": [ "YUMI PETG" ], + "filament_type": [ "PETG" ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "nozzle_temperature": [ + "230" + ], + "activate_air_filtration": [ + "0" + ], + "activate_chamber_temp_control": [ + "0" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "bed_type": [ + "Cool Plate" + ], + "chamber_temperature": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "5" + ], + "compatible_printers_condition": "", + "compatible_prints": [], + "compatible_prints_condition": "", + "complete_print_exhaust_fan_speed": [ + "80" + ], + "cool_plate_temp": [ + "35" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "default_filament_colour": [ + "" + ], + "during_print_exhaust_fan_speed": [ + "60" + ], + "enable_overhang_bridge_fan": [ + "1" + ], + "enable_pressure_advance": [ + "0" + ], + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "15" + ], + "filament_cooling_final_speed": [ + "0" + ], + "filament_cooling_initial_speed": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "80" + ], + "filament_diameter": [ + "1.75" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_is_support": [ + "0" + ], + "filament_load_time": [ + "42" + ], + "filament_loading_speed": [ + "0" + ], + "filament_loading_speed_start": [ + "0" + ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_multitool_ramming": [ + "0" + ], + "filament_multitool_ramming_flow": [ + "10" + ], + "filament_multitool_ramming_volume": [ + "10" + ], + "filament_notes": [ + "" + ], + "filament_ramming_parameters": [ + "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" + ], + "filament_retract_before_wipe": [ + "80%" + ], + "filament_retract_lift_above": [ + "nil" + ], + "filament_retract_lift_below": [ + "nil" + ], + "filament_retract_lift_enforce": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], + "filament_retraction_length": [ + "2" + ], + "filament_retraction_minimum_travel": [ + "1" + ], + "filament_retraction_speed": [ + "80" + ], + "filament_shrink": [ + "100%" + ], + "filament_soluble": [ + "0" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "filament_toolchange_delay": [ + "0" + ], + "filament_unload_time": [ + "0" + ], + "filament_unloading_speed": [ + "0" + ], + "filament_unloading_speed_start": [ + "0" + ], + "filament_wipe": [ + "1" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "6" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "50%" + ], + "pressure_advance": [ + "0.05" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "required_nozzle_HRC": [ + "0" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "10" + ], + "slow_down_min_speed": [ + "25" + ], + "support_material_interface_fan_speed": [ + "-1" + ], + "temperature_vitrification": [ + "60" + ], + "textured_plate_temp": [ + "45" + ], + "textured_plate_temp_initial_layer": [ + "45" + ], + "compatible_printers": [ + "D12 230 PRO M2 DIRECT 0.4 nozzle", + "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 300 PRO M2 DIRECT 0.4 nozzle", + "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 500 PRO M2 DIRECT 0.4 nozzle", + "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle" + ] +} diff --git a/resources/profiles/Wanhao France/filament/YUMI PLA Bowden.json b/resources/profiles/Wanhao France/filament/YUMI PLA Bowden.json new file mode 100644 index 0000000000..3ff035b8d7 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/YUMI PLA Bowden.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSR99", + "name": "YUMI PLA Bowden", + "from": "system", + "instantiation": "true", + "inherits": "Yumi Generic PLA", + "filament_vendor": [ "Yumi" ], + "filament_max_volumetric_speed": ["12"], + "filament_flow_ratio": ["0.98"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "cool_plate_temp" : ["60"], + "eng_plate_temp" : ["60"], + "hot_plate_temp" : ["60"], + "textured_plate_temp" : ["60"], + "cool_plate_temp_initial_layer" : ["60"], + "eng_plate_temp_initial_layer" : ["60"], + "hot_plate_temp_initial_layer" : ["60"], + "textured_plate_temp_initial_layer" : ["60"], + "filament_loading_speed": [ + "25" + ], + "filament_loading_speed_start": [ + "25" + ], + "filament_unloading_speed": [ + "25" + ], + "pressure_advance": [ + "0.4" + ], + "compatible_printers": [ + "D12 230 PRO M2 DIRECT 0.4 nozzle", + "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 300 PRO M2 DIRECT 0.4 nozzle", + "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 500 PRO M2 DIRECT 0.4 nozzle", + "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle" + ] +} diff --git a/resources/profiles/Wanhao France/filament/YUMI PLA Direct Drive.json b/resources/profiles/Wanhao France/filament/YUMI PLA Direct Drive.json new file mode 100644 index 0000000000..e78dd5e679 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/YUMI PLA Direct Drive.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSR99", + "name": "YUMI PLA Direct Drive", + "from": "system", + "instantiation": "true", + "inherits": "Yumi Generic PLA", + "filament_vendor": [ "Yumi" ], + "filament_max_volumetric_speed": ["12"], + "filament_flow_ratio": ["0.98"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "cool_plate_temp" : ["60"], + "eng_plate_temp" : ["60"], + "hot_plate_temp" : ["60"], + "textured_plate_temp" : ["60"], + "cool_plate_temp_initial_layer" : ["60"], + "eng_plate_temp_initial_layer" : ["60"], + "hot_plate_temp_initial_layer" : ["60"], + "textured_plate_temp_initial_layer" : ["60"], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.02" + ], + "compatible_printers": [ + "D12 230 PRO M2 DIRECT 0.4 nozzle", + "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 300 PRO M2 DIRECT 0.4 nozzle", + "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 500 PRO M2 DIRECT 0.4 nozzle", + "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle" + ] +} diff --git a/resources/profiles/Wanhao France/filament/Yumi Generic PETG.json b/resources/profiles/Wanhao France/filament/Yumi Generic PETG.json new file mode 100644 index 0000000000..d71632d536 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/Yumi Generic PETG.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "Yumi Generic PETG", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "compatible_printers": [ + "" + ] +} diff --git a/resources/profiles/Wanhao France/filament/Yumi Generic PLA.json b/resources/profiles/Wanhao France/filament/Yumi Generic PLA.json new file mode 100644 index 0000000000..0f45b1efb8 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/Yumi Generic PLA.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "Yumi Generic PLA", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "" + ] +} diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_abs.json b/resources/profiles/Wanhao France/filament/fdm_filament_abs.json new file mode 100644 index 0000000000..b9d4eeda31 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_abs.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_abs", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_asa.json b/resources/profiles/Wanhao France/filament/fdm_filament_asa.json new file mode 100644 index 0000000000..29a752a4ee --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_asa.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_asa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "35" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ASA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_common.json b/resources/profiles/Wanhao France/filament/fdm_filament_common.json new file mode 100644 index 0000000000..9f77975119 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_common.json @@ -0,0 +1,144 @@ +{ + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "overhang_fan_threshold": [ + "95%" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_flow_ratio": [ + "1" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "bed_type": [ + "Cool Plate" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "100" + ] +} diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_pa.json b/resources/profiles/Wanhao France/filament/fdm_filament_pa.json new file mode 100644 index 0000000000..1cd78ec77f --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_pa.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_pa", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "activate_air_filtration": [ + "1" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "100" + ], + "eng_plate_temp_initial_layer": [ + "100" + ], + "fan_cooling_layer_time": [ + "4" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "0" + ], + "filament_cost": [ + "20" + ], + "filament_density": [ + "1.04" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "30" + ], + "required_nozzle_HRC": [ + "40" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "108" + ], + "textured_plate_temp": [ + "100" + ], + "textured_plate_temp_initial_layer": [ + "100" + ] +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_pc.json b/resources/profiles/Wanhao France/filament/fdm_filament_pc.json new file mode 100644 index 0000000000..5729114297 --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_pc.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_pc", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "eng_plate_temp": [ + "110" + ], + "hot_plate_temp": [ + "110" + ], + "textured_plate_temp": [ + "110" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "110" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "23.2" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "60" + ], + "nozzle_temperature": [ + "280" + ], + "temperature_vitrification": [ + "120" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_pet.json b/resources/profiles/Wanhao France/filament/fdm_filament_pet.json new file mode 100644 index 0000000000..2cbef62ede --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_pet.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "80" + ], + "textured_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "textured_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "255" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_pla.json b/resources/profiles/Wanhao France/filament/fdm_filament_pla.json new file mode 100644 index 0000000000..7e2cbc7e3f --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_pla.json @@ -0,0 +1,94 @@ +{ + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_tpu.json b/resources/profiles/Wanhao France/filament/fdm_filament_tpu.json new file mode 100644 index 0000000000..d5cc57fbcc --- /dev/null +++ b/resources/profiles/Wanhao France/filament/fdm_filament_tpu.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_tpu", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "30" + ], + "eng_plate_temp" : [ + "30" + ], + "hot_plate_temp" : [ + "35" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "35" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "filament_retraction_length": [ + "0.4" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "240" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT 0.4 nozzle.json new file mode 100644 index 0000000000..6d546efef3 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT 0.4 nozzle.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "D12 230 PRO M2 DIRECT 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 230 PRO M2 DIRECT", + "version": "2.2.0.4", + "gcode_flavor": "marlin2", + "default_print_profile": "0.20mm Standard @Wanhao-D12-230", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "230x0", + "230x230", + "0x230" + ], + "printable_height": "240", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Direct Drive" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "change_filament_gcode": "M600", + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "70" + ], + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "2" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT.json b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT.json new file mode 100644 index 0000000000..1871e76e0b --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 DIRECT.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 230 PRO M2 DIRECT", + "model_id": "D12 230 PRO M2 DIRECT", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-230_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json new file mode 100644 index 0000000000..b3549b4228 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json @@ -0,0 +1,122 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 230 PRO M2 MONO DUAL PoopTool", + "default_print_profile": "0.20mm Standard @Wanhao-D12-230 PoopTool", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "version": "1.0.1.0", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "nozzle_diameter": [ + "0.4" + ], + "z_hop": [ + "0.4" + ], + "printable_area": [ + "0x0", + "230x0", + "230x230", + "0x230" + ], + "printable_height": "240", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "gcode_flavor": "marlin2", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printer_variant": "0.4", + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG1 X0 Y0 F3000\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "change_filament_gcode": "M201 X20000 ; accélération X temporairement élevée\nM211 S0\n\nG1 E-25 F2000 ; Rétraction initiale normale\nM106 P1 S60 ; Ventilateur auxiliaire activé\n\n{if toolchange_count > 0}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; Spiral lift pour les changements après le premier\n{endif}\n\nG1 Z{max_layer_z + 3.0} F1200 ; Remontée\nG1 X{print_bed_max[0] + 25} F8000 ; Déplacement vers zone de purge\nG4 P3000 ; Pause\n\nG1 E-60 F2000 ; Deuxième rétraction pour atteindre un total de -70 mm\nG92 E0 ; Réinitialise la position extrudeur à 0\nG92 E0\n\nM106 S0 ; Stop ventilateur\nT[next_extruder] ; Changement d’outil \nG1 E60 F2000 \nG1 E35 F600 ; Réinsertion du filament (partiel, évite la surpression)\nG92 E0 ; Réinitialise encore\n\nG1 E32 F300\t\t; Pré-purge\nG92 E0\n\n; FLUSH_START\n;G4 P3000\nG1 E25 F300 ; Purge minimum\n;EXTRA_PURGE\nG1 E{flush_length /1 } F300 ; Purge adaptative\n;G1 E[flush_length] F300 ; Purge adaptative\n; FLUSH_END\n\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 ; Pause de sécurité\n\n;G90\t\t\t\t; Positionnement absolu\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\n;M201 X[default_acceleration] Y[default_acceleration] Z500\n{endif}\n\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\nM106 S0 \nG1 X{print_bed_max[0] + 25} F6000\nG1 E{flush_length /1 } F300 ; Purge adaptative\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 \nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\n\n\n;{if layer_z <= (initial_layer_print_height + 0.001)}\nM201 X[initial_layer_acceleration] \n;{else}\nM201 X[default_acceleration]\n;{endif}\n\nG1 E1 F1800 ; Amorce douce\nM211 S1 ; Réactivation des limites logicielles\nG92 E0 ; Final reset extrudeur", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle.json new file mode 100644 index 0000000000..61d33d7cd7 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL 0.4 nozzle.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 230 PRO M2 MONO DUAL", + "default_print_profile": "0.20mm Standard @Wanhao-D12-230", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "version": "1.0.1.0", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "nozzle_diameter": [ + "0.4" + ], + "z_hop": [ + "0.4" + ], + "printable_area": [ + "0x0", + "230x0", + "230x230", + "0x230" + ], + "printable_height": "240", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "gcode_flavor": "marlin2", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printer_variant": "0.4", + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL PoopTool.json b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL PoopTool.json new file mode 100644 index 0000000000..a654cef01d --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL PoopTool.json @@ -0,0 +1,17 @@ +{ + "type": "machine_model", + "name": "D12 230 PRO M2 MONO DUAL PoopTool", + "model_id": "D12 230 PRO M2 MONO DUAL PoopTool", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-230_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} + + + + + diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL.json b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL.json new file mode 100644 index 0000000000..d26a7a308d --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO M2 MONO DUAL.json @@ -0,0 +1,17 @@ +{ + "type": "machine_model", + "name": "D12 230 PRO M2 MONO DUAL", + "model_id": "D12 230 PRO M2 MONO DUAL", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-230_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} + + + + + diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json new file mode 100644 index 0000000000..409e72679a --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT 0.4 nozzle.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 230 PRO SMARTPAD DIRECT", + "default_print_profile": "0.20mm Standard @Wanhao-D12-230", + "default_filament_profile": [ + "Direct Drive" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "change_filament_gcode": "M600", + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "version": "1.0.1.0", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "nozzle_diameter": [ + "0.4" + ], + "z_hop": [ + "0.4" + ], + "printable_area": [ + "0x0", + "230x0", + "230x230", + "0x230" + ], + "printable_height": "240", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "deretraction_speed": [ + "70" + ], + "gcode_flavor": "klipper", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printer_variant": "0.4", + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "2" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT.json new file mode 100644 index 0000000000..9b06948e0c --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD DIRECT.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 230 PRO SMARTPAD DIRECT", + "model_id": "D12 230 PRO SMARTPAD DIRECT", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-230_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json new file mode 100644 index 0000000000..ef899423d6 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json @@ -0,0 +1,122 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 230 PRO SMARTPAD MONO DUAL PoopTool", + "default_print_profile": "0.20mm Standard @Wanhao-D12-230 PoopTool", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "version": "1.0.1.0", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "nozzle_diameter": [ + "0.4" + ], + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "printable_area": [ + "0x0", + "230x0", + "230x230", + "0x230" + ], + "printable_height": "240", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "gcode_flavor": "klipper", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "400" + ], + "machine_max_speed_y": [ + "400" + ], + "machine_max_speed_z": [ + "12" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.3" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printer_variant": "0.4", + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "0" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "change_filament_gcode": ";;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\nSET_VELOCITY_LIMIT ACCEL=20000 ACCEL_TO_DECEL=6000\nG1 E-25 F2000 ; Rétraction initiale normale\nM106 P1 S60 ; Ventilateur auxiliaire activé\n\n{if toolchange_count > 0}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F6000 ; Spiral lift pour les changements après le premier\n{endif}\n\nG1 Z{max_layer_z + 3.0} F1200 ; Remontée\nG1 X{print_bed_max[0] + 25} F6000 ; Déplacement vers zone de purge\nG4 P3000 ; Pause\n\nG1 E-60 F2000 ; Deuxième rétraction p\nG92 E0 ; Réinitialise la position extrudeur à 0\nG92 E0\n\nM106 S0 ; Stop ventilateur\nT[next_extruder] ; Changement d’outil \nG1 E60 F2000 \nG1 E25 F600 ; Réinsertion du filament (partiel, évite la surpression)\nG92 E0 ; Réinitialise encore\n\nG1 E32 F300\t\t; Pré-purge\nG92 E0\n\n; FLUSH_START\n;G4 P3000\nG1 E25 F300 ; Purge minimum\n;EXTRA_PURGE\nG1 E{flush_length / 1 } F300 ; Purge adaptative\n;G1 E[flush_length] F300 ; Purge adaptative\n; FLUSH_END\n\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 ; Pause de sécurité\n\n;G90\t\t\t\t; Positionnement absolu\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\n;M201 X[default_acceleration] Y[default_acceleration] Z500\n{endif}\n\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\n\n;{if layer_z <= (initial_layer_print_height + 0.001)}\nM201 X[initial_layer_acceleration] \n;{else}\nM201 X[default_acceleration]\n;{endif}\n\nG1 E1.5 F3000\nG92 E0\n;;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\n;M104 S[nozzle_temperature_range_high]\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder] CURRENT=0.5 HOLDCURRENT=0.5\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder] CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder] CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder] CURRENT=0.8 HOLDCURRENT=0.4\n;G1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle.json new file mode 100644 index 0000000000..14b9646f96 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 230 PRO SMARTPAD MONO DUAL", + "default_print_profile": "0.20mm Standard @Wanhao-D12-230", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "version": "1.0.1.0", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "nozzle_diameter": [ + "0.4" + ], + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "printable_area": [ + "0x0", + "230x0", + "230x230", + "0x230" + ], + "printable_height": "240", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "gcode_flavor": "klipper", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "400" + ], + "machine_max_speed_y": [ + "400" + ], + "machine_max_speed_z": [ + "12" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.3" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "printer_variant": "0.4", + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL PoopTool.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL PoopTool.json new file mode 100644 index 0000000000..01b34e5245 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL PoopTool.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 230 PRO SMARTPAD MONO DUAL PoopTool", + "model_id": "D12 230 PRO SMARTPAD MONO DUAL PoopTool", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-230_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL.json b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL.json new file mode 100644 index 0000000000..4f98457631 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 230 PRO SMARTPAD MONO DUAL.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 230 PRO SMARTPAD MONO DUAL", + "model_id": "D12 230 PRO SMARTPAD MONO DUAL", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-230_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json new file mode 100644 index 0000000000..da9f1daaaa --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT 0.4 nozzle.json @@ -0,0 +1,120 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 300 PRO M2 DIRECT 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 300 PRO MAX M2 DIRECT", + "gcode_flavor": "marlin2", + "default_print_profile": "0.20mm Standard @Wanhao-D12-300", + "nozzle_diameter": [ + "0.4" + ], + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "400", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "Direct Drive" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "change_filament_gcode": "M600", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "70" + ], + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "2" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT.json new file mode 100644 index 0000000000..b7a6e1a7ac --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 DIRECT.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 300 PRO M2 DIRECT", + "model_id": "D12 300 PRO M2 DIRECT", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-300_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json new file mode 100644 index 0000000000..d2abed3bd3 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 300 PRO M2 MONO DUAL PoopTool 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 300 PRO M2 MONO DUAL PoopTool", + "gcode_flavor": "marlin2", + "default_print_profile": "0.20mm Standard @Wanhao-D12-300", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "400", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG1 X0 Y0 F3000\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "change_filament_gcode": "M201 X20000 ; accélération X temporairement élevée\nM211 S0\n\nG1 E-25 F2000 ; Rétraction initiale normale\nM106 P1 S60 ; Ventilateur auxiliaire activé\n\n{if toolchange_count > 0}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; Spiral lift pour les changements après le premier\n{endif}\n\nG1 Z{max_layer_z + 3.0} F1200 ; Remontée\nG1 X{print_bed_max[0] + 25} F8000 ; Déplacement vers zone de purge\nG4 P3000 ; Pause\n\nG1 E-60 F2000 ; Deuxième rétraction pour atteindre un total de -70 mm\nG92 E0 ; Réinitialise la position extrudeur à 0\nG92 E0\n\nM106 S0 ; Stop ventilateur\nT[next_extruder] ; Changement d’outil \nG1 E60 F2000 \nG1 E35 F600 ; Réinsertion du filament (partiel, évite la surpression)\nG92 E0 ; Réinitialise encore\n\nG1 E32 F300\t\t; Pré-purge\nG92 E0\n\n; FLUSH_START\n;G4 P3000\nG1 E25 F300 ; Purge minimum\n;EXTRA_PURGE\nG1 E{flush_length /1 } F300 ; Purge adaptative\n;G1 E[flush_length] F300 ; Purge adaptative\n; FLUSH_END\n\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 ; Pause de sécurité\n\n;G90\t\t\t\t; Positionnement absolu\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\n;M201 X[default_acceleration] Y[default_acceleration] Z500\n{endif}\n\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\nM106 S0 \nG1 X{print_bed_max[0] + 25} F6000\nG1 E{flush_length /1 } F300 ; Purge adaptative\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 \nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\n\n\n;{if layer_z <= (initial_layer_print_height + 0.001)}\nM201 X[initial_layer_acceleration] \n;{else}\nM201 X[default_acceleration]\n;{endif}\n\nG1 E1 F1800 ; Amorce douce\nM211 S1 ; Réactivation des limites logicielles\nG92 E0 ; Final reset extrudeur", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle.json new file mode 100644 index 0000000000..f187f33d94 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL 0.4 nozzle.json @@ -0,0 +1,120 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 300 PRO M2 MONO DUAL", + "gcode_flavor": "marlin2", + "default_print_profile": "0.20mm Standard @Wanhao-D12-300", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "400", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL PoopTool.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL PoopTool.json new file mode 100644 index 0000000000..b9fbbd6462 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL PoopTool.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 300 PRO M2 MONO DUAL PoopTool", + "model_id": "D12 300 PRO M2 MONO DUAL PoopTool", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-300_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL.json b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL.json new file mode 100644 index 0000000000..c85c9eaee2 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO M2 MONO DUAL.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 300 PRO M2 MONO DUAL", + "model_id": "D12 300 PRO M2 MONO DUAL", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-300_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json new file mode 100644 index 0000000000..ee4d0b377c --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT 0.4 nozzle.json @@ -0,0 +1,120 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 300 PRO MAX SMARTPAD DIRECT", + "gcode_flavor": "klipper", + "default_print_profile": "0.20mm Standard @Wanhao-D12-300", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "400", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "Direct Drive" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "change_filament_gcode": "M600", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "70" + ], + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "2" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT.json new file mode 100644 index 0000000000..842a6dc3b8 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD DIRECT.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 300 PRO SMARTPAD DIRECT", + "model_id": "D12 300 PRO SMARTPAD DIRECT", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-300_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json new file mode 100644 index 0000000000..bf546cebe2 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 300 PRO SMARTPAD MONO DUAL PoopTool 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 300 PRO SMARTPAD MONO DUAL PoopTool", + "gcode_flavor": "klipper", + "default_print_profile": "0.20mm Standard @Wanhao-D12-300", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "400", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "change_filament_gcode": ";;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\nSET_VELOCITY_LIMIT ACCEL=20000 ACCEL_TO_DECEL=6000\nG1 E-25 F2000 ; Rétraction initiale normale\nM106 P1 S60 ; Ventilateur auxiliaire activé\n\n{if toolchange_count > 0}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F6000 ; Spiral lift pour les changements après le premier\n{endif}\n\nG1 Z{max_layer_z + 3.0} F1200 ; Remontée\nG1 X{print_bed_max[0] + 25} F6000 ; Déplacement vers zone de purge\nG4 P3000 ; Pause\n\nG1 E-60 F2000 ; Deuxième rétraction p\nG92 E0 ; Réinitialise la position extrudeur à 0\nG92 E0\n\nM106 S0 ; Stop ventilateur\nT[next_extruder] ; Changement d’outil \nG1 E60 F2000 \nG1 E25 F600 ; Réinsertion du filament (partiel, évite la surpression)\nG92 E0 ; Réinitialise encore\n\nG1 E32 F300\t\t; Pré-purge\nG92 E0\n\n; FLUSH_START\n;G4 P3000\nG1 E25 F300 ; Purge minimum\n;EXTRA_PURGE\nG1 E{flush_length / 1 } F300 ; Purge adaptative\n;G1 E[flush_length] F300 ; Purge adaptative\n; FLUSH_END\n\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 ; Pause de sécurité\n\n;G90\t\t\t\t; Positionnement absolu\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\n;M201 X[default_acceleration] Y[default_acceleration] Z500\n{endif}\n\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\n\n;{if layer_z <= (initial_layer_print_height + 0.001)}\nM201 X[initial_layer_acceleration] \n;{else}\nM201 X[default_acceleration]\n;{endif}\n\nG1 E1.5 F3000\nG92 E0\n;;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\n;M104 S[nozzle_temperature_range_high]\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder] CURRENT=0.5 HOLDCURRENT=0.5\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder] CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder] CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder] CURRENT=0.8 HOLDCURRENT=0.4\n;G1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle.json new file mode 100644 index 0000000000..11df47cec5 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 300 PRO SMARTPAD MONO DUAL", + "gcode_flavor": "klipper", + "default_print_profile": "0.20mm Standard @Wanhao-D12-300", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "400", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "change_filament_gcode": "M600", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1200" + ], + "machine_max_acceleration_y": [ + "1000" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL PoopTool.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL PoopTool.json new file mode 100644 index 0000000000..be7c457b04 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL PoopTool.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 300 PRO SMARTPAD MONO DUAL PoopTool", + "model_id": "D12 300 PRO SMARTPAD MONO DUAL PoopTool", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-300_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL.json b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL.json new file mode 100644 index 0000000000..75e7dae9db --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 300 PRO SMARTPAD MONO DUAL.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 300 PRO SMARTPAD MONO DUAL", + "model_id": "D12 300 PRO SMARTPAD MONO DUAL", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-300_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json new file mode 100644 index 0000000000..d736ee1a2e --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT 0.4 nozzle.json @@ -0,0 +1,120 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 500 PRO M2 DIRECT 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 500 PRO MAX M2 DIRECT", + "gcode_flavor": "marlin2", + "default_print_profile": "0.20mm Standard @Wanhao-D12-500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "Direct Drive" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "change_filament_gcode": "M600", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "70" + ], + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1000" + ], + "machine_max_acceleration_y": [ + "800" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "2" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT.json new file mode 100644 index 0000000000..4609497a70 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 DIRECT.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 500 PRO M2 DIRECT", + "model_id": "D12 500 PRO M2 DIRECT", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-500_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json new file mode 100644 index 0000000000..6bd3af4086 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 500 PRO M2 MONO DUAL PoopTool 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 500 PRO M2 MONO DUAL PoopTool", + "gcode_flavor": "marlin2", + "default_print_profile": "0.20mm Standard @Wanhao-D12-500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1000" + ], + "machine_max_acceleration_y": [ + "800" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG1 X0 Y0 F3000\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "change_filament_gcode": "M201 X20000 ; accélération X temporairement élevée\nM211 S0\n\nG1 E-25 F2000 ; Rétraction initiale normale\nM106 P1 S60 ; Ventilateur auxiliaire activé\n\n{if toolchange_count > 0}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; Spiral lift pour les changements après le premier\n{endif}\n\nG1 Z{max_layer_z + 3.0} F1200 ; Remontée\nG1 X{print_bed_max[0] + 25} F8000 ; Déplacement vers zone de purge\nG4 P3000 ; Pause\n\nG1 E-60 F2000 ; Deuxième rétraction pour atteindre un total de -70 mm\nG92 E0 ; Réinitialise la position extrudeur à 0\nG92 E0\n\nM106 S0 ; Stop ventilateur\nT[next_extruder] ; Changement d’outil \nG1 E60 F2000 \nG1 E35 F600 ; Réinsertion du filament (partiel, évite la surpression)\nG92 E0 ; Réinitialise encore\n\nG1 E32 F300\t\t; Pré-purge\nG92 E0\n\n; FLUSH_START\n;G4 P3000\nG1 E25 F300 ; Purge minimum\n;EXTRA_PURGE\nG1 E{flush_length /1 } F300 ; Purge adaptative\n;G1 E[flush_length] F300 ; Purge adaptative\n; FLUSH_END\n\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 ; Pause de sécurité\n\n;G90\t\t\t\t; Positionnement absolu\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\n;M201 X[default_acceleration] Y[default_acceleration] Z500\n{endif}\n\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\nM106 S0 \nG1 X{print_bed_max[0] + 25} F6000\nG1 E{flush_length /1 } F300 ; Purge adaptative\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 \nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\n\n\n;{if layer_z <= (initial_layer_print_height + 0.001)}\nM201 X[initial_layer_acceleration] \n;{else}\nM201 X[default_acceleration]\n;{endif}\n\nG1 E1 F1800 ; Amorce douce\nM211 S1 ; Réactivation des limites logicielles\nG92 E0 ; Final reset extrudeur", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle.json new file mode 100644 index 0000000000..3844e2006f --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL 0.4 nozzle.json @@ -0,0 +1,120 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 500 PRO M2 MONO DUAL", + "gcode_flavor": "marlin2", + "default_print_profile": "0.20mm Standard @Wanhao-D12-500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1000" + ], + "machine_max_acceleration_y": [ + "800" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12-230 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\n\n", + "machine_pause_gcode": "M600", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" + } \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL PoopTool.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL PoopTool.json new file mode 100644 index 0000000000..b0080db6f6 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL PoopTool.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 500 PRO M2 MONO DUAL PoopTool", + "model_id": "D12 500 PRO M2 MONO DUAL PoopTool", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-500_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL.json b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL.json new file mode 100644 index 0000000000..2558274239 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO M2 MONO DUAL.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 500 PRO M2 MONO DUAL", + "model_id": "D12 500 PRO M2 MONO DUAL", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-500_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json new file mode 100644 index 0000000000..f8feab9a94 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT 0.4 nozzle.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 500 PRO MAX SMARTPAD DIRECT", + "gcode_flavor": "klipper", + "default_print_profile": "0.20mm Standard @Wanhao-D12-500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "Direct Drive" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "change_filament_gcode": "M600", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "70" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1000" + ], + "machine_max_acceleration_y": [ + "800" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "2" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT.json new file mode 100644 index 0000000000..ab59a2ecab --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD DIRECT.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 500 PRO SMARTPAD DIRECT", + "model_id": "D12 500 PRO SMARTPAD DIRECT", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-500_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json new file mode 100644 index 0000000000..7459620b21 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 500 PRO SMARTPAD MONO DUAL PoopTool 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 500 PRO SMARTPAD MONO DUAL PoopTool", + "gcode_flavor": "klipper", + "default_print_profile": "0.20mm Standard @Wanhao-D12-500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1000" + ], + "machine_max_acceleration_y": [ + "800" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "change_filament_gcode": ";;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\nSET_VELOCITY_LIMIT ACCEL=20000 ACCEL_TO_DECEL=6000\nG1 E-25 F2000 ; Rétraction initiale normale\nM106 P1 S60 ; Ventilateur auxiliaire activé\n\n{if toolchange_count > 0}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F6000 ; Spiral lift pour les changements après le premier\n{endif}\n\nG1 Z{max_layer_z + 3.0} F1200 ; Remontée\nG1 X{print_bed_max[0] + 25} F6000 ; Déplacement vers zone de purge\nG4 P3000 ; Pause\n\nG1 E-60 F2000 ; Deuxième rétraction p\nG92 E0 ; Réinitialise la position extrudeur à 0\nG92 E0\n\nM106 S0 ; Stop ventilateur\nT[next_extruder] ; Changement d’outil \nG1 E60 F2000 \nG1 E25 F600 ; Réinsertion du filament (partiel, évite la surpression)\nG92 E0 ; Réinitialise encore\n\nG1 E32 F300\t\t; Pré-purge\nG92 E0\n\n; FLUSH_START\n;G4 P3000\nG1 E25 F300 ; Purge minimum\n;EXTRA_PURGE\nG1 E{flush_length / 1 } F300 ; Purge adaptative\n;G1 E[flush_length] F300 ; Purge adaptative\n; FLUSH_END\n\nG92 E0\nM106 S255 ; Ventilateur à pleine vitesse\nG4 P5000 ; Pause de sécurité\n\n;G90\t\t\t\t; Positionnement absolu\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\n;M201 X[default_acceleration] Y[default_acceleration] Z500\n{endif}\n\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\nG1 X{print_bed_max[0] + 25} F6000\nG1 X{print_bed_max[0] + 15} F6000\n\n;{if layer_z <= (initial_layer_print_height + 0.001)}\nM201 X[initial_layer_acceleration] \n;{else}\nM201 X[default_acceleration]\n;{endif}\n\nG1 E1.5 F3000\nG92 E0\n;;;;;;;;;;;;;;;;;;;;;;;;;CHANGE FILAMENT G CODE;;;;;;;;;;;;;;;;;;;;;;;;\n;M104 S[nozzle_temperature_range_high]\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder] CURRENT=0.5 HOLDCURRENT=0.5\n;SET_TMC_CURRENT STEPPER=extruder[previous_extruder] CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder] CURRENT=1.0 HOLDCURRENT=0.4\n;SET_TMC_CURRENT STEPPER=extruder[next_extruder] CURRENT=0.8 HOLDCURRENT=0.4\n;G1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle.json new file mode 100644 index 0000000000..2a96569dc8 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle.json @@ -0,0 +1,121 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Wanhao D12 500 PRO SMARTPAD MONO DUAL", + "gcode_flavor": "klipper", + "default_print_profile": "0.20mm Standard @Wanhao-D12-500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "nozzle_type": "brass", + "auxiliary_fan": "0", + "printer_variant": "0.4", + "default_filament_profile": [ + "YUMI PLA Bowden" + ], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nLOG_Z\nTIMELAPSE_TAKE_FRAME\nG92 E0", + "change_filament_gcode": ";M600", + "z_hop": [ + "0.4" + ], + "extra_loading_move": "-2", + "extruder_clearance_height_to_lid": "140", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_radius": "65", + "nozzle_height": "4", + "thumbnails": "48x48/PNG, 300x300/PNG", + "wipe_distance": [ + "2" + ], + "z_hop_types": [ + "Auto Lift" + ], + "deretraction_speed": [ + "25" + ], + "enable_filament_ramming": "0", + "machine_max_acceleration_e": [ + "6000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "5000" + ], + "machine_max_acceleration_travel": [ + "5000", + "500" + ], + "machine_max_acceleration_x": [ + "1000" + ], + "machine_max_acceleration_y": [ + "800" + ], + "machine_max_acceleration_z": [ + "500" + ], + "machine_max_speed_e": [ + "50" + ], + "machine_max_speed_x": [ + "200" + ], + "machine_max_speed_y": [ + "200" + ], + "machine_max_speed_z": [ + "15" + ], + "machine_max_jerk_e": [ + "2.5" + ], + "machine_max_jerk_x": [ + "14" + ], + "machine_max_jerk_y": [ + "14" + ], + "machine_max_jerk_z": [ + "0.2" + ], + "max_layer_height": [ + "0.32" + ], + "min_layer_height": [ + "0.08" + ], + "retract_before_wipe": [ + "0%" + ], + "retraction_length": [ + "5" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "25" + ], + "retract_length_toolchange": [ + "70" + ], + "retract_when_changing_layer": [ + "0" + ], + "machine_end_gcode": "; Wanhao D12 Default End Gcode\nG1 E-30 F11000\nSET_VELOCITY_LIMIT ACCEL=2000 ACCEL_TO_DECEL=1000\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\nG1 Z{max_layer_z + 10.0} F1200\nG92 E0\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=False\nSAVE_VARIABLE VARIABLE=printing_start VALUE=False\nclear_last_file\nG31\nM106 S0\nM106 S0 P3 ;STOP MOTHERBOARD FAN to 0%\nM106 S0 P2 ;STOP AUX FAN to 0%\nPRINT_END\n", + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "G31\nsave_last_file\nSAVE_VARIABLE VARIABLE=was_interrupted VALUE=True\nG21 ; set metrics values\nM104 S[nozzle_temperature_initial_layer] ; set extruder temperature\nM140 S[bed_temperature_initial_layer_single] ; set bed temperature\nG91 ; set relative positioning mode\nG28 ; home\nG90 ; set absolute positioning mode\nG1 X0 Y0 F3000 ; park head\nM117 ; Purge extrudeur\nG92 E0 ; Reset extrudeur\nM109 S[nozzle_temperature_initial_layer] ; set and wait extruder temperature\nM190 S[bed_temperature_initial_layer_single] ; set and wait bed temperature\nBED_MESH_CALIBRATE ADAPTIVE=1 ADAPTIVE_MARGIN=5 ; adaptive bed leveling\n\nG1 Z1.0 F3000 ; Prépare la buse à une petite hauteur\nM83 ; Positionnement relatif pour l'extrudeur\n\n; Purge longue à l'avant du plateau (Y=0), centrée\nG1 X{print_bed_max[0] / 2 - 20} Y0 Z0.3 F5000 ; Début ligne 1\nG1 X{print_bed_max[0] / 2 + 20} Y0 Z0.3 F750 E24 ; Ligne 1 (2x plus longue)\nG1 X{print_bed_max[0] / 2 - 20} Y1 Z0.3 F5000 ; Légère montée et retour\nG1 X{print_bed_max[0] / 2 + 20} Y1 Z0.3 F750 E24 ; Ligne 2\n\nG1 E-5 F1800 ; Rétraction\nM82 ; Positionnement absolu pour l'extrudeur\nG92 E0 ; Reset extrusion\nG1 Z1.0 F3000 ; Légère montée" +} \ No newline at end of file diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL PoopTool.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL PoopTool.json new file mode 100644 index 0000000000..215d601c9d --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL PoopTool.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 500 PRO SMARTPAD MONO DUAL PoopTool", + "model_id": "D12 500 PRO SMARTPAD MONO DUAL PoopTool", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-500_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL.json b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL.json new file mode 100644 index 0000000000..382e165e6a --- /dev/null +++ b/resources/profiles/Wanhao France/machine/D12 500 PRO SMARTPAD MONO DUAL.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "D12 500 PRO SMARTPAD MONO DUAL", + "model_id": "D12 500 PRO SMARTPAD MONO DUAL", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Wanhao France", + "bed_model": "Wanhao_D12-500_buildplate_model.stl", + "bed_texture": "D12_texture", + "hotend_model": "", + "default_materials": "YUMI PLA Bowden;YUMI PETG;" +} diff --git a/resources/profiles/Wanhao France/machine/fdm_machine_common.json b/resources/profiles/Wanhao France/machine/fdm_machine_common.json new file mode 100644 index 0000000000..9d18710897 --- /dev/null +++ b/resources/profiles/Wanhao France/machine/fdm_machine_common.json @@ -0,0 +1,58 @@ +{ + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "printer_technology": "FFF", + "deretraction_speed": ["40"], + "extruder_colour": ["#FCE94F"], + "extruder_offset": ["0x0"], + "gcode_flavor": "marlin", + "silent_mode": "0", + "support_chamber_temp_control": "0", + "support_air_filtration": "0", + "machine_max_acceleration_e": ["5000"], + "machine_max_acceleration_extruding": ["10000"], + "machine_max_acceleration_retracting": ["1000"], + "machine_max_acceleration_x": ["10000"], + "machine_max_acceleration_y": ["10000"], + "machine_max_acceleration_z": ["500"], + "machine_max_speed_e": ["60"], + "machine_max_speed_x": ["500"], + "machine_max_speed_y": ["500"], + "machine_max_speed_z": ["10"], + "machine_max_jerk_e": ["5"], + "machine_max_jerk_x": ["8"], + "machine_max_jerk_y": ["8"], + "machine_max_jerk_z": ["0.4"], + "machine_min_extruding_rate": ["0"], + "machine_min_travel_rate": ["0"], + "max_layer_height": ["0.32"], + "min_layer_height": ["0.08"], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "nozzle_diameter": ["0.4"], + "printer_settings_id": "", + "printer_variant": "0.4", + "retraction_minimum_travel": ["2"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["5"], + "retract_length_toolchange": ["1"], + "z_hop": ["0"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["60"], + "single_extruder_multi_material": "1", + "change_filament_gcode": "", + "wipe": ["1"], + "support_multi_bed_types": "1", + "template_custom_gcode": ";;;;;;;;;;;;;;;;;;;;;;;;CUSTOM G-CODE;;;;;;;;;;;;;;;;;;;;;;;;\n{if curr_bed_type==\"Textured PEI Plate\"}\n SET_GCODE_OFFSET Z=-0.00\n{else}\nSET_GCODE_OFFSET Z=0.0\n{endif}\n{if curr_bed_type==\"Cool Plate\"}\n\n;available bed types are:\n;\"Cool Plate\"\n;\"Engineering Plate\"\n;\"High Temp Plate\"\n;\"Textured PEI Plate\"\n;;;;;;;;;;;;;;;;;;;;;;;;;CUSTOM G-CODE;;;;;;;;;;;;;;;;;;;;;;;;\n", + "z_hop_types": "Normal Lift", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "default_print_profile": "0.16mm Optimal @Bambu Lab X1 Carbon 0.4 nozzle", + "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", + "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end" +} diff --git a/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-230.json b/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-230.json new file mode 100644 index 0000000000..db74d39f95 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-230.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm Standard @Wanhao-D12-230", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.10", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1500", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 DIRECT 0.4 nozzle", + "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-300.json b/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-300.json new file mode 100644 index 0000000000..a2c3192da1 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-300.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm Standard @Wanhao-D12-300", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.1", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 DIRECT 0.4 nozzle", + "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-500.json b/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-500.json new file mode 100644 index 0000000000..6e3907e204 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.10mm Standard @Wanhao-D12-500.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm Standard @Wanhao-D12-500", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.1", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "default_acceleration": "1000", + "outer_wall_acceleration": "700", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "travel_speed": "200", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 DIRECT 0.4 nozzle", + "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle" + ] +} diff --git a/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-230.json b/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-230.json new file mode 100644 index 0000000000..18eccca824 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-230.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Standard @Wanhao-D12-230", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.15", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1500", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 DIRECT 0.4 nozzle", + "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-300.json b/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-300.json new file mode 100644 index 0000000000..1f945122d2 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-300.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Standard @Wanhao-D12-300", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.15", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 DIRECT 0.4 nozzle", + "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-500.json b/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-500.json new file mode 100644 index 0000000000..153a0f4c9d --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.15mm Standard @Wanhao-D12-500.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Standard @Wanhao-D12-500", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.15", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "default_acceleration": "1000", + "outer_wall_acceleration": "700", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "travel_speed": "200", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 DIRECT 0.4 nozzle", + "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle" + ] +} diff --git a/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-230 PoopTool.json b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-230 PoopTool.json new file mode 100644 index 0000000000..c93c5915d2 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-230 PoopTool.json @@ -0,0 +1,61 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Wanhao-D12-230 PoopTool", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "0", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1500", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle PoopTool" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-230.json b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-230.json new file mode 100644 index 0000000000..aec356b4a9 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-230.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Wanhao-D12-230", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1500", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 DIRECT 0.4 nozzle", + "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-300 PoopTool.json b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-300 PoopTool.json new file mode 100644 index 0000000000..9266a00664 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-300 PoopTool.json @@ -0,0 +1,61 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Wanhao-D12-300 PoopTool", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle PoopTool" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-300.json b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-300.json new file mode 100644 index 0000000000..2f9eb4ee41 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-300.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Wanhao-D12-300", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 DIRECT 0.4 nozzle", + "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-500 PoopTool.json b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-500 PoopTool.json new file mode 100644 index 0000000000..c4bfbd6ded --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-500 PoopTool.json @@ -0,0 +1,61 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Wanhao-D12-500 PoopTool", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle PoopTool", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle PoopTool" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-500.json b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-500.json new file mode 100644 index 0000000000..7ed0f418af --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.20mm Standard @Wanhao-D12-500.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Wanhao-D12-500", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "default_acceleration": "1000", + "outer_wall_acceleration": "700", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "travel_speed": "200", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 DIRECT 0.4 nozzle", + "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle" + ] +} diff --git a/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-230.json b/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-230.json new file mode 100644 index 0000000000..9b58090712 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-230.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Standard @Wanhao-D12-230", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.24", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1500", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 230 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 MONO DUAL 0.4 nozzle", + "D12 230 PRO M2 DIRECT 0.4 nozzle", + "D12 230 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-300.json b/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-300.json new file mode 100644 index 0000000000..ccf3e51aa5 --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-300.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Standard @Wanhao-D12-300", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.24", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_acceleration": "1500", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_acceleration": "1000", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 300 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 MONO DUAL 0.4 nozzle", + "D12 300 PRO M2 DIRECT 0.4 nozzle", + "D12 300 PRO SMARTPAD DIRECT 0.4 nozzle" + ] + +} diff --git a/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-500.json b/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-500.json new file mode 100644 index 0000000000..f250231b3c --- /dev/null +++ b/resources/profiles/Wanhao France/process/0.24mm Standard @Wanhao-D12-500.json @@ -0,0 +1,63 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Standard @Wanhao-D12-500", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "layer_height": "0.24", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "default_jerk": "3", + "outer_wall_jerk": "3", + "top_surface_jerk": "3", + "infill_jerk": "3", + "inner_wall_jerk": "3", + "initial_layer_jerk": "3", + "travel_jerk": "8", + "default_acceleration": "1000", + "outer_wall_acceleration": "700", + "elefant_foot_compensation": "0.1", + "enable_prime_tower": "1", + "extra_perimeters_on_overhangs": "1", + "flush_into_support": "0", + "infill_wall_overlap": "20%", + "initial_layer_infill_speed": "45", + "travel_speed": "200", + "initial_layer_speed": "35", + "initial_layer_travel_speed": "100", + "inner_wall_acceleration": "1000", + "internal_bridge_speed": "100", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "90", + "is_custom_defined": "0", + "is_infill_first": "0", + "line_width": "0.42", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "30", + "inner_wall_speed": "60", + "skirt_loops": "0", + "skirt_speed": "0", + "slow_down_layers": "1", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "grid", + "sparse_infill_speed": "120", + "staggered_inner_seams": "1", + "support_line_width": "0.42", + "top_shell_thickness": "1", + "top_surface_acceleration": "1000", + "top_surface_line_width": "0.42", + "top_surface_speed": "40", + "travel_acceleration": "500", + "version": "1.0.1.0", + "wall_generator": "classic", + "wall_loops": "2", + "wipe_before_external_loop": "1", + "wipe_on_loops": "1", + "compatible_printers": [ + "D12 500 PRO SMARTPAD MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 MONO DUAL 0.4 nozzle", + "D12 500 PRO M2 DIRECT 0.4 nozzle", + "D12 500 PRO SMARTPAD DIRECT 0.4 nozzle" + ] +} diff --git a/resources/profiles/Wanhao France/process/fdm_process_common.json b/resources/profiles/Wanhao France/process/fdm_process_common.json new file mode 100644 index 0000000000..8d8a69af33 --- /dev/null +++ b/resources/profiles/Wanhao France/process/fdm_process_common.json @@ -0,0 +1,75 @@ +{ + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "compatible_printers": [], + "print_sequence": "by layer", + "default_acceleration": "10000", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.4", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "internal_bridge_speed": "50", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "20", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "sparse_infill_speed": "50", + "interface_shells": "0", + "detect_overhang_wall": "1", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "3", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "exclude_object": "1", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "top_surface_line_width": "0.4", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0" +} diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 0.6 nozzle.json index ed2ccdf968..61b4348aa5 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S1000 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.4 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.4 nozzle.json index d9f21b697a..8b3d5203f3 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.4 nozzle.json @@ -26,6 +26,6 @@ "retraction_minimum_travel": [ "1" ], - "change_filament_gcode": "G91\nG1 Z{layer_z+z_hop[0]} F1000\nG90", + "change_filament_gcode": "G91\nG1 Z{z_hop[0]} F1000\nG90", "machine_start_gcode": "START_PRINT TOOL_NR=[initial_tool] T_BED=[bed_temperature_initial_layer] T_EXTRUDER=[first_layer_temperature[initial_tool]] T_CHAMBER=[chamber_temperature] {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif}" } \ No newline at end of file diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.6 nozzle.json index 524499d1a7..ff7a82c1e5 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S1000 Dual 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S1000 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S300 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S300 0.6 nozzle.json index 9563cb7d90..14cf1e449c 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S300 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S300 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S300 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.4 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.4 nozzle.json index a461caf5e7..49e7b3cd54 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.4 nozzle.json @@ -26,6 +26,6 @@ "retraction_minimum_travel": [ "1" ], - "change_filament_gcode": "G91\nG1 Z{layer_z+z_hop[0]} F1000\nG90", + "change_filament_gcode": "G91\nG1 Z{z_hop[0]} F1000\nG90", "machine_start_gcode": "START_PRINT TOOL_NR=[initial_tool] T_BED=[bed_temperature_initial_layer] T_EXTRUDER=[first_layer_temperature[initial_tool]] T_CHAMBER=[chamber_temperature] {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif}" } \ No newline at end of file diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.6 nozzle.json index 201caf7162..ec6b43b338 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S300 Dual 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S300 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S400 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S400 0.6 nozzle.json index 786b9f0a63..5dbc9a35cf 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S400 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S400 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S400 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.4 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.4 nozzle.json index 29835e6a14..80be970da4 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.4 nozzle.json @@ -26,6 +26,6 @@ "retraction_minimum_travel": [ "1" ], - "change_filament_gcode": "G91\nG1 Z{layer_z+z_hop[0]} F1000\nG90", + "change_filament_gcode": "G91\nG1 Z{z_hop[0]} F1000\nG90", "machine_start_gcode": "START_PRINT TOOL_NR=[initial_tool] T_BED=[bed_temperature_initial_layer] T_EXTRUDER=[first_layer_temperature[initial_tool]] T_CHAMBER=[chamber_temperature] {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif}" } \ No newline at end of file diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.6 nozzle.json index 4a80df798a..062650be54 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S400 Dual 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S400 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S600 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S600 0.6 nozzle.json index c685f1e8c3..d3e9ea107a 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S600 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S600 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S600 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.4 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.4 nozzle.json index ea8a9d3217..18fa8eb8b7 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.4 nozzle.json @@ -26,6 +26,6 @@ "retraction_minimum_travel": [ "1" ], - "change_filament_gcode": "G91\nG1 Z{layer_z+z_hop[0]} F1000\nG90", + "change_filament_gcode": "G91\nG1 Z{z_hop[0]} F1000\nG90", "machine_start_gcode": "START_PRINT TOOL_NR=[initial_tool] T_BED=[bed_temperature_initial_layer] T_EXTRUDER=[first_layer_temperature[initial_tool]] T_CHAMBER=[chamber_temperature] {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif}" } \ No newline at end of file diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.6 nozzle.json index 47ba10ac25..26429a97a9 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S600 Dual 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S600 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.4 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.4 nozzle.json index 3d489539ec..fc759b7219 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.4 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.4 nozzle.json @@ -128,7 +128,7 @@ ], "nozzle_type": "hardened_steel", "support_chamber_temp_control": "1", - "change_filament_gcode": "G91\nG1 Z{layer_z+z_hop[0]} F1000\nG90", + "change_filament_gcode": "G91\nG1 Z{z_hop[0]} F1000\nG90", "machine_start_gcode": "START_PRINT TOOL_NR=[initial_tool] T_BED=[bed_temperature_initial_layer] T_EXTRUDER=[first_layer_temperature[initial_tool]] T_CHAMBER=[chamber_temperature] {if is_extruder_used[0]}T0_TEMP={first_layer_temperature[0]}{endif} {if is_extruder_used[1]}T1_TEMP={first_layer_temperature[1]}{endif}", "machine_end_gcode": "END_PRINT T_BED=[bed_temperature] T_CHAMBER=[chamber_temperature] COOLDOWN_TIME=120", "machine_pause_gcode": "PAUSE" diff --git a/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.6 nozzle.json b/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.6 nozzle.json index 0555f57c66..68607ddba9 100644 --- a/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.6 nozzle.json +++ b/resources/profiles/Z-Bolt/machine/Z-Bolt S800 Dual 0.6 nozzle.json @@ -13,7 +13,7 @@ "printer_variant": "0.6", "default_print_profile": "0.30mm Standard @Z-Bolt S800 0.6 nozzle", "max_layer_height": [ - "0.36" + "0.42" ], "min_layer_height": [ "0.12" diff --git a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.24_nozzle_0.8.json b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.24_nozzle_0.8.json index 9c780d20db..ea4784cd07 100644 --- a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.24_nozzle_0.8.json +++ b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.24_nozzle_0.8.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "layer_height": "0.24", - "initial_layer_print_height": "0.4", + "initial_layer_print_height": "0.3", "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", diff --git a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.36_nozzle_0.6.json b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.36_nozzle_0.6.json index 7aa1c5ca4e..295e6bdbf7 100644 --- a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.36_nozzle_0.6.json +++ b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.36_nozzle_0.6.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "layer_height": "0.36", - "initial_layer_print_height": "0.3", + "initial_layer_print_height": "0.36", "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", diff --git a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.40_nozzle_0.8.json b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.40_nozzle_0.8.json index 713be9fac8..bf634a7c5b 100644 --- a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.40_nozzle_0.8.json +++ b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.40_nozzle_0.8.json @@ -23,5 +23,7 @@ "top_surface_speed": "150", "bridge_speed": "30", "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5" + "overhang_4_4_speed": "5", + "skin_infill_line_width": "0.82", + "skeleton_infill_line_width": "0.82" } \ No newline at end of file diff --git a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.42_nozzle_0.6.json b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.42_nozzle_0.6.json index 4e3f061c1e..9b9542a589 100644 --- a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.42_nozzle_0.6.json +++ b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.42_nozzle_0.6.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "layer_height": "0.42", - "initial_layer_print_height": "0.3", + "initial_layer_print_height": "0.42", "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", @@ -21,5 +21,7 @@ "sparse_infill_speed": "100", "top_surface_speed": "150", "bridge_speed": "30", - "overhang_3_4_speed": "15" + "overhang_3_4_speed": "15", + "skin_infill_line_width": "0.62", + "skeleton_infill_line_width": "0.62" } \ No newline at end of file diff --git a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.48_nozzle_0.8.json b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.48_nozzle_0.8.json index 5558c196ce..65db353d9a 100644 --- a/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.48_nozzle_0.8.json +++ b/resources/profiles/Z-Bolt/process/fdm_process_zbolt_0.48_nozzle_0.8.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "layer_height": "0.48", - "initial_layer_print_height": "0.4", + "initial_layer_print_height": "0.48", "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", @@ -23,5 +23,7 @@ "top_surface_speed": "150", "bridge_speed": "30", "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5" + "overhang_4_4_speed": "5", + "skin_infill_line_width": "0.82", + "skeleton_infill_line_width": "0.82" } \ No newline at end of file diff --git a/resources/web/model/img/null2.png b/resources/web/model/img/null2.png index 9b932ab3e3..7c41cffc86 100644 Binary files a/resources/web/model/img/null2.png and b/resources/web/model/img/null2.png differ diff --git a/src/expat/xmlparse.c b/src/expat/xmlparse.c index 7ff990fce9..06a65018c0 100644 --- a/src/expat/xmlparse.c +++ b/src/expat/xmlparse.c @@ -6333,6 +6333,15 @@ nextScaffoldPart(XML_Parser parser) int next; if (!dtd->scaffIndex) { + /* Detect and prevent integer overflow. + * The preprocessor guard addresses the "always false" warning + * from -Wtype-limits on platforms where + * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ +#if UINT_MAX >= SIZE_MAX + if (parser->m_groupSize > ((size_t)(-1) / sizeof(int))) { + return -1; + } +#endif dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); if (!dtd->scaffIndex) return -1; diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index e001690ce4..2b0f53a368 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -1303,10 +1303,10 @@ void Layer::make_ironing() IroningParams ironing_params; const PrintRegionConfig &config = layerm->region().config(); if (config.ironing_type != IroningType::NoIroning && - (config.ironing_type == IroningType::AllSolid || - (config.top_shell_layers > 0 && - (config.ironing_type == IroningType::TopSurfaces || - (config.ironing_type == IroningType::TopmostOnly && layerm->layer()->upper_layer == nullptr))))) { + (config.ironing_type == IroningType::AllSolid || + ((config.top_shell_layers > 0 || (this->object()->print()->config().spiral_mode && config.bottom_shell_layers > 1)) && + (config.ironing_type == IroningType::TopSurfaces || + (config.ironing_type == IroningType::TopmostOnly && layerm->layer()->upper_layer == nullptr))))) { if (config.wall_filament == config.solid_infill_filament || config.wall_loops == 0) { // Iron the whole face. ironing_params.extruder = config.solid_infill_filament; @@ -1388,7 +1388,7 @@ void Layer::make_ironing() polygons_append(polys, surface.expolygon); } else { for (const Surface &surface : ironing_params.layerm->slices.surfaces) - if ((surface.surface_type == stTop && region_config.top_shell_layers > 0) || (iron_everything && surface.surface_type == stBottom && region_config.bottom_shell_layers > 0)) + if ((surface.surface_type == stTop && (region_config.top_shell_layers > 0 || this->object()->print()->config().spiral_mode)) || (iron_everything && surface.surface_type == stBottom && region_config.bottom_shell_layers > 0)) // stBottomBridge is not being ironed on purpose, as it would likely destroy the bridges. polygons_append(polys, surface.expolygon); } diff --git a/src/libslic3r/GCode/SpiralVase.cpp b/src/libslic3r/GCode/SpiralVase.cpp index 908411f9c8..6e7f37afc1 100644 --- a/src/libslic3r/GCode/SpiralVase.cpp +++ b/src/libslic3r/GCode/SpiralVase.cpp @@ -132,7 +132,7 @@ std::string SpiralVase::process_layer(const std::string &gcode, bool last_layer) if (line.cmd_is("G1")) { // Orca: Filter out retractions at layer change if (line.retracting(reader) || (line.extruding(reader) && line.dist_XY(reader) < EPSILON)) return; - if (line.has_z() && !line.retracting(reader)) { + if (line.has_z() && !(line.has_x() || line.has_y())) { // If this is the initial Z move of the layer, replace it with a // (redundant) move to the last Z of previous layer. line.set(Z, z); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 723c1eb3ef..721475fa92 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -697,7 +697,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " "A value of 0 means the filament does not support printing on the Cool Plate SuperTack."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Bed temperature"); def->min = 0; def->max = 120; @@ -707,7 +707,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " "A value of 0 means the filament does not support printing on the Cool Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Bed temperature"); def->min = 0; def->max = 300; @@ -717,7 +717,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " "A value of 0 means the filament does not support printing on the Textured Cool Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Bed temperature"); def->min = 0; def->max = 300; @@ -727,7 +727,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " "A value of 0 means the filament does not support printing on the Engineering Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Bed temperature"); def->min = 0; def->max = 300; @@ -737,7 +737,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " "A value of 0 means the filament does not support printing on the High Temp Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Bed temperature"); def->min = 0; def->max = 300; @@ -747,7 +747,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " "A value of 0 means the filament does not support printing on the Textured PEI Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Bed temperature"); def->min = 0; def->max = 300; @@ -758,7 +758,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Initial layer bed temperature"); def->tooltip = L("Bed temperature of the initial layer. " "A value of 0 means the filament does not support printing on the Cool Plate SuperTack."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = 120; def->set_default_value(new ConfigOptionInts{ 35 }); @@ -768,7 +768,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Initial layer bed temperature"); def->tooltip = L("Bed temperature of the initial layer. " "A value of 0 means the filament does not support printing on the Cool Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = 120; def->set_default_value(new ConfigOptionInts{ 35 }); @@ -778,7 +778,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Initial layer bed temperature"); def->tooltip = L("Bed temperature of the initial layer. " "A value of 0 means the filament does not support printing on the Textured Cool Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = 120; def->set_default_value(new ConfigOptionInts{ 40 }); @@ -788,7 +788,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Initial layer bed temperature"); def->tooltip = L("Bed temperature of the initial layer. " "A value of 0 means the filament does not support printing on the Engineering Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = 300; def->set_default_value(new ConfigOptionInts{ 45 }); @@ -798,7 +798,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Initial layer bed temperature"); def->tooltip = L("Bed temperature of the initial layer. " "A value of 0 means the filament does not support printing on the High Temp Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->max = 300; def->set_default_value(new ConfigOptionInts{ 45 }); @@ -807,7 +807,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Initial layer bed temperature"); def->tooltip = L("Bed temperature of the initial layer. " "A value of 0 means the filament does not support printing on the Textured PEI Plate."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = 300; def->set_default_value(new ConfigOptionInts{45}); @@ -1415,7 +1415,7 @@ void PrintConfigDef::init_fff_params() def = this->add("default_acceleration", coFloat); def->label = L("Normal printing"); def->tooltip = L("The default acceleration of both normal printing and travel except initial layer."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(500.0)); @@ -2009,7 +2009,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("This setting stands for how much volume of filament can be melted and extruded per second. " "Printing speed is limited by max volumetric speed, in case of too high and unreasonable speed setting. " "Can't be zero."); - def->sidetext = "mm³/s"; // cubic milimeters per second, don't need translation + def->sidetext = u8"mm³/s"; // cubic milimeters per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 2. }); @@ -2186,7 +2186,7 @@ void PrintConfigDef::init_fff_params() "the nozzle may not be known, and the filament pressure is likely not yet stable. " "Before purging the print head into an infill or a sacrificial object, Orca Slicer will always prime " "this amount of material into the wipe tower to produce successive infill or sacrificial object extrusions reliably."); - def->sidetext = "mm³"; // cubic milimeters, don't need translation + def->sidetext = u8"mm³"; // cubic milimeters, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 15. }); @@ -2217,7 +2217,7 @@ void PrintConfigDef::init_fff_params() def = this->add("filament_multitool_ramming_volume", coFloats); def->label = L("Multi-tool ramming volume"); def->tooltip = L("The volume to be rammed before the tool change."); - def->sidetext = "mm³"; // cubic milimeters, don't need translation + def->sidetext = u8"mm³"; // cubic milimeters, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 10. }); @@ -2225,7 +2225,7 @@ void PrintConfigDef::init_fff_params() def = this->add("filament_multitool_ramming_flow", coFloats); def->label = L("Multi-tool ramming flow"); def->tooltip = L("Flow used for ramming the filament before the tool change."); - def->sidetext = "mm³/s"; // cubic milimeters per second, don't need translation + def->sidetext = u8"mm³/s"; // cubic milimeters per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 10. }); @@ -2233,7 +2233,7 @@ void PrintConfigDef::init_fff_params() def = this->add("filament_density", coFloats); def->label = L("Density"); def->tooltip = L("Filament density. For statistics only."); - def->sidetext = "g/cm³"; // grams per cubic milimeter, don't need translation + def->sidetext = u8"g/cm³"; // grams per cubic milimeter, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 0. }); @@ -2303,7 +2303,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Softening temperature"); def->tooltip = L("The material softens at this temperature, so when the bed temperature is equal to or greater than this, " "it's highly recommended to open the front door and/or remove the upper glass to avoid clogging."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->mode = comSimple; def->set_default_value(new ConfigOptionInts{ 100 }); @@ -2510,7 +2510,7 @@ void PrintConfigDef::init_fff_params() def = this->add("outer_wall_acceleration", coFloat); def->label = L("Outer wall"); def->tooltip = L("Acceleration of outer walls."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(10000)); @@ -2518,7 +2518,7 @@ void PrintConfigDef::init_fff_params() def = this->add("inner_wall_acceleration", coFloat); def->label = L("Inner wall"); def->tooltip = L("Acceleration of inner walls."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(10000)); @@ -2526,7 +2526,7 @@ void PrintConfigDef::init_fff_params() def = this->add("travel_acceleration", coFloat); def->label = L("Travel"); def->tooltip = L("Acceleration of travel moves."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(10000)); @@ -2534,7 +2534,7 @@ void PrintConfigDef::init_fff_params() def = this->add("top_surface_acceleration", coFloat); def->label = L("Top surface"); def->tooltip = L("Acceleration of top surface infill. Using a lower value may improve top surface quality."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(500)); @@ -2542,7 +2542,7 @@ void PrintConfigDef::init_fff_params() def = this->add("outer_wall_acceleration", coFloat); def->label = L("Outer wall"); def->tooltip = L("Acceleration of outer wall. Using a lower value can improve quality."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(500)); @@ -2577,7 +2577,7 @@ void PrintConfigDef::init_fff_params() def = this->add("initial_layer_acceleration", coFloat); def->label = L("Initial layer"); def->tooltip = L("Acceleration of initial layer. Using a lower value can improve build plate adhesion."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(300)); @@ -2730,7 +2730,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Initial layer"); def->full_label = L("Initial layer nozzle temperature"); def->tooltip = L("Nozzle temperature for printing initial layer when using this filament."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = max_temp; def->set_default_value(new ConfigOptionInts { 200 }); @@ -3586,7 +3586,7 @@ void PrintConfigDef::init_fff_params() (void)L("Maximum acceleration of the Y axis"); (void)L("Maximum acceleration of the Z axis"); (void)L("Maximum acceleration of the E axis"); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->mode = comSimple; def->set_default_value(new ConfigOptionFloats(axis.max_acceleration)); @@ -3647,7 +3647,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Maximum acceleration for extruding (M204 P)"); // "Marlin (legacy) firmware flavor will use this also " // "as travel acceleration (M204 T)."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->readonly = false; def->mode = comSimple; @@ -3659,7 +3659,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Maximum acceleration for retracting"); def->category = L("Machine limits"); def->tooltip = L("Maximum acceleration for retracting (M204 R)"); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->readonly = false; def->mode = comSimple; @@ -3670,7 +3670,7 @@ void PrintConfigDef::init_fff_params() def->full_label = L("Maximum acceleration for travel"); def->category = L("Machine limits"); def->tooltip = L("Maximum acceleration for travel (M204 T), it only applies to Marlin 2."); - def->sidetext = "mm/s²"; // milimeters per second per second, don't need translation + def->sidetext = u8"mm/s²"; // milimeters per second per second, don't need translation def->min = 0; def->readonly = false; def->mode = comAdvanced; @@ -3725,7 +3725,7 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("This parameter smooths out sudden extrusion rate changes that happen when " "the printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice versa.\n\n" - "It defines the maximum rate by which the extruded volumetric flow in mm³/s² can change over time. " + "It defines the maximum rate by which the extruded volumetric flow in mm³/s can change over time. " "Higher values mean higher extrusion rate changes are allowed, resulting in faster speed transitions.\n\n" "A value of 0 disables the feature.\n\n" "For a high speed, high flow direct drive printer (like the Bambu lab or Voron) this value is usually not needed. " @@ -3736,7 +3736,7 @@ void PrintConfigDef::init_fff_params() "A value of 10-15 mm³/s² is a good starting point for direct drive extruders and 5-10 mm³/s² for Bowden style.\n\n" "This feature is known as Pressure Equalizer in Prusa slicer.\n\n" "Note: this parameter disables arc fitting."); - def->sidetext = "mm³/s²"; // cubic milimeters per second per second, don't need translation + def->sidetext = u8"mm³/s²"; // cubic milimeters per second per second, don't need translation def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); @@ -3857,7 +3857,7 @@ void PrintConfigDef::init_fff_params() def = this->add("nozzle_volume", coFloat); def->label = L("Nozzle volume"); def->tooltip = L("Volume of nozzle between the cutter and the end of nozzle."); - def->sidetext = "mm³"; // cubic milimeters, don't need translation + def->sidetext = u8"mm³"; // cubic milimeters, don't need translation def->mode = comAdvanced; def->readonly = false; def->set_default_value(new ConfigOptionFloat { 0.0 }); @@ -5369,7 +5369,7 @@ void PrintConfigDef::init_fff_params() "This may be useful if your printer does not support M141/M191 commands, or if you desire " "to handle heat soaking in the print start macro if no active chamber heater is installed." ); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Chamber temperature"); def->min = 0; def->max = max_temp; @@ -5378,7 +5378,7 @@ void PrintConfigDef::init_fff_params() def = this->add("nozzle_temperature", coInts); def->label = L("Other layers"); def->tooltip = L("Nozzle temperature for layers after the initial one."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->full_label = L("Nozzle temperature"); def->min = 0; def->max = max_temp; @@ -5387,7 +5387,7 @@ void PrintConfigDef::init_fff_params() def = this->add("nozzle_temperature_range_low", coInts); def->label = L("Min"); //def->tooltip = L(""); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = max_temp; def->set_default_value(new ConfigOptionInts { 190 }); @@ -5395,7 +5395,7 @@ void PrintConfigDef::init_fff_params() def = this->add("nozzle_temperature_range_high", coInts); def->label = L("Max"); //def->tooltip = L(""); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = max_temp; def->set_default_value(new ConfigOptionInts { 240 }); @@ -5571,7 +5571,7 @@ void PrintConfigDef::init_fff_params() def = this->add("prime_volume", coFloat); def->label = L("Prime volume"); def->tooltip = L("The volume of material to prime extruder on tower."); - def->sidetext = "mm³"; // cubic milimeters, don't need translation + def->sidetext = u8"mm³"; // cubic milimeters, don't need translation def->min = 1.0; def->mode = comSimple; def->set_default_value(new ConfigOptionFloat(45.)); @@ -5750,7 +5750,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Idle temperature"); def->tooltip = L("Nozzle temperature when the tool is currently not used in multi-tool setups. " "This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 to disable."); - def->sidetext = "\u2103" /* °C */; // degrees Celsius, don't need translation + def->sidetext = u8"\u2103" /* °C */; // degrees Celsius, don't need translation def->min = 0; def->max = max_temp; def->set_default_value(new ConfigOptionInts{0}); diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index ecb99bf643..b388d5bd9e 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1004,6 +1004,62 @@ indexed_triangle_set its_make_frustum(double r, double h, double fa) return mesh; } +// Generate the mesh for a torus +// r: major radius (distance from center of tube to center of torus) +// h: minor radius (radius of the tube) +// fa: angular step in radians (smaller = more segments) +indexed_triangle_set its_make_torus(double r, double h, double fa) +{ + indexed_triangle_set mesh; + auto& vertices = mesh.vertices; + auto& facets = mesh.indices; + + // Number of segments around the main ring and the tube + size_t n_major = (size_t)ceil(2. * PI / fa); + size_t n_minor = (size_t)ceil(2. * PI / fa); + + double major_step = 2. * PI / n_major; + double minor_step = 2. * PI / n_minor; + + // Reserve memory for performance + vertices.reserve(n_major * n_minor); + facets.reserve(n_major * n_minor * 2); + + // Generate vertices + for (size_t i = 0; i < n_major; ++i) { + double major_angle = i * major_step; + double cos_major = cos(major_angle); + double sin_major = sin(major_angle); + for (size_t j = 0; j < n_minor; ++j) { + double minor_angle = j * minor_step; + double cos_minor = cos(minor_angle); + double sin_minor = sin(minor_angle); + // Parametric equation for torus + float x = float((r + h * cos_minor) * cos_major); + float y = float((r + h * cos_minor) * sin_major); + float z = float(h * sin_minor); + vertices.emplace_back(Vec3f(x, y, z)); + } + } + + // Generate faces + for (size_t i = 0; i < n_major; ++i) { + size_t inext = (i + 1) % n_major; + for (size_t j = 0; j < n_minor; ++j) { + size_t jnext = (j + 1) % n_minor; + int v0 = int(i * n_minor + j); + int v1 = int(inext * n_minor + j); + int v2 = int(inext * n_minor + jnext); + int v3 = int(i * n_minor + jnext); + // Two triangles per quad + facets.emplace_back(v0, v1, v2); + facets.emplace_back(v0, v2, v3); + } + } + + return mesh; +} + indexed_triangle_set its_make_cone(double r, double h, double fa) { indexed_triangle_set mesh; diff --git a/src/libslic3r/TriangleMesh.hpp b/src/libslic3r/TriangleMesh.hpp index a30d8836ea..927dcfebb0 100644 --- a/src/libslic3r/TriangleMesh.hpp +++ b/src/libslic3r/TriangleMesh.hpp @@ -335,9 +335,10 @@ inline Vec3f its_face_normal(const indexed_triangle_set &its, const int face_idx indexed_triangle_set its_make_cube(double x, double y, double z); indexed_triangle_set its_make_prism(float width, float length, float height); -indexed_triangle_set its_make_cylinder(double r, double h, double fa=(2*PI/360)); -indexed_triangle_set its_make_cone(double r, double h, double fa=(2*PI/360)); -indexed_triangle_set its_make_frustum(double r, double h, double fa=(2*PI/360)); +indexed_triangle_set its_make_cylinder(double r, double h, double fa=(2*PI/180)); +indexed_triangle_set its_make_cone(double r, double h, double fa=(2*PI/180)); +indexed_triangle_set its_make_frustum(double r, double h, double fa=(2*PI/180)); +indexed_triangle_set its_make_torus(double r, double h, double fa); indexed_triangle_set its_make_frustum_dowel(double r, double h, int sectorCount); indexed_triangle_set its_make_pyramid(float base, float height); indexed_triangle_set its_make_sphere(double radius, double fa); @@ -349,10 +350,11 @@ inline indexed_triangle_set its_convex_hull(const indexed_triangle_set &its) { r inline TriangleMesh make_cube(double x, double y, double z) { return TriangleMesh(its_make_cube(x, y, z)); } inline TriangleMesh make_prism(float width, float length, float height) { return TriangleMesh(its_make_prism(width, length, height)); } -inline TriangleMesh make_cylinder(double r, double h, double fa=(2*PI/360)) { return TriangleMesh{its_make_cylinder(r, h, fa)}; } -inline TriangleMesh make_cone(double r, double h, double fa=(2*PI/360)) { return TriangleMesh(its_make_cone(r, h, fa)); } +inline TriangleMesh make_cylinder(double r, double h, double fa=(2*PI/180)) { return TriangleMesh{its_make_cylinder(r, h, fa)}; } +inline TriangleMesh make_cone(double r, double h, double fa=(2*PI/180)) { return TriangleMesh(its_make_cone(r, h, fa)); } inline TriangleMesh make_pyramid(float base, float height) { return TriangleMesh(its_make_pyramid(base, height)); } -inline TriangleMesh make_sphere(double rho, double fa=(2*PI/360)) { return TriangleMesh(its_make_sphere(rho, fa)); } +inline TriangleMesh make_sphere(double rho, double fa=(2*PI/90)) { return TriangleMesh(its_make_sphere(rho, fa)); } +inline TriangleMesh make_torus(double r, double h, double fa=(PI/60)) { return TriangleMesh(its_make_torus(r, h, fa)); } bool its_write_stl_ascii(const char *file, const char *label, const std::vector &indices, const std::vector &vertices); inline bool its_write_stl_ascii(const char *file, const char *label, const indexed_triangle_set &its) { return its_write_stl_ascii(file, label, its.indices, its.vertices); } diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index ff5fac1710..ca73bacd86 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -254,7 +254,7 @@ void MaterialItem::doRender(wxDC &dc) } if (m_selected) { - dc.SetPen(wxColour(0x00, 0xAE, 0x42)); + dc.SetPen(AMS_CONTROL_BRAND_COLOUR); // ORCA Highlight color for selected AMS in send job dialog dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawRoundedRectangle(1, 1, MATERIAL_ITEM_SIZE.x - 1, MATERIAL_ITEM_SIZE.y - 1, 5); } @@ -266,7 +266,7 @@ void MaterialItem::doRender(wxDC &dc) } if (m_selected) { - dc.SetPen(wxColour(0x00, 0xAE, 0x42)); + dc.SetPen(AMS_CONTROL_BRAND_COLOUR); // ORCA Highlight color for selected AMS in send job dialog dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawRoundedRectangle(0, 0, MATERIAL_ITEM_SIZE.x, MATERIAL_ITEM_SIZE.y, 5); } diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 5142701577..4deb621fd5 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -237,9 +237,11 @@ void AuFile::PaintBackground(wxDC &dc) dc.DrawText(m_add_file, pos); } else { - dc.SetPen(AUFILE_GREY200); - dc.SetBrush(AUFILE_GREY200); - dc.DrawRoundedRectangle(0, 0, size.x, size.y, AUFILE_ROUNDING); + // ORCA match look with add button + auto pen_width = FromDIP(2); + dc.SetPen(wxPen(AUFILE_GREY500, pen_width)); + dc.SetBrush(StateColor::darkModeColorFor(AUFILE_GREY200)); + dc.DrawRoundedRectangle(pen_width / 2, pen_width / 2, size.x - pen_width / 2, size.y - pen_width / 2, AUFILE_ROUNDING); dc.DrawBitmap(m_file_bitmap.bmp(), (size.x - m_file_bitmap.GetBmpWidth()) / 2, (size.y - m_file_bitmap.GetBmpHeight()) / 2); } } @@ -251,12 +253,16 @@ void AuFile::PaintForeground(wxDC &dc) wxSize size = m_type == MODEL_PICTURE ? AUFILE_PICTURES_SIZE : AUFILE_SIZE; if (m_hover) { - if (m_type == AddFileButton) { + + // ORCA add hover effect to borders + if (m_type == BILL_OF_MATERIALS || m_type == ASSEMBLY_GUIDE || m_type == OTHERS || m_type == MODEL_PICTURE || m_type == AddFileButton) { auto pen_width = FromDIP(2); dc.SetPen(wxPen(AUFILE_BRAND, pen_width)); - dc.SetBrush(StateColor::darkModeColorFor(AUFILE_BRAND_TRANSPARENT)); + dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawRoundedRectangle(pen_width / 2, pen_width / 2, size.x - pen_width / 2, size.y - pen_width / 2, AUFILE_ROUNDING); + } + if (m_type == AddFileButton) { auto line_length = FromDIP(50); dc.DrawLine(wxPoint((size.x - line_length) / 2, size.y / 2), wxPoint((size.x + line_length) / 2, size.y / 2)); dc.DrawLine(wxPoint(size.x / 2, (size.y - line_length) / 2), wxPoint(size.x / 2, (size.y + line_length) / 2)); diff --git a/src/slic3r/GUI/BedShapeDialog.cpp b/src/slic3r/GUI/BedShapeDialog.cpp index 1aed26e661..9327dc920f 100644 --- a/src/slic3r/GUI/BedShapeDialog.cpp +++ b/src/slic3r/GUI/BedShapeDialog.cpp @@ -375,7 +375,7 @@ wxPanel* BedShapePanel::init_texture_panel() wxStaticText* lbl = dynamic_cast(e.GetEventObject()); if (lbl != nullptr) { bool exists = (m_custom_texture == NONE) || boost::filesystem::exists(m_custom_texture); - lbl->SetForegroundColour(exists ? /*wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)*/wxGetApp().get_label_clr_default() : wxColor(*wxRED)); + lbl->SetForegroundColour(exists ? wxGetApp().get_label_clr_default() : wxColour("#E14747")); // ORCA wxString tooltip_text = ""; if (m_custom_texture != NONE) { @@ -471,7 +471,7 @@ wxPanel* BedShapePanel::init_model_panel() wxStaticText* lbl = dynamic_cast(e.GetEventObject()); if (lbl != nullptr) { bool exists = (m_custom_model == NONE) || boost::filesystem::exists(m_custom_model); - lbl->SetForegroundColour(exists ? /*wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)*/wxGetApp().get_label_clr_default() : wxColor(*wxRED)); + lbl->SetForegroundColour(exists ? wxGetApp().get_label_clr_default() : wxColour("#E14747")); // ORCA wxString tooltip_text = ""; if (m_custom_model != NONE) { diff --git a/src/slic3r/GUI/Calibration.cpp b/src/slic3r/GUI/Calibration.cpp index eae3b2bfbd..d91b47140f 100644 --- a/src/slic3r/GUI/Calibration.cpp +++ b/src/slic3r/GUI/Calibration.cpp @@ -113,11 +113,11 @@ CalibrationDialog::CalibrationDialog(Plater *plater) auto cali_text_right_top = new wxStaticText(cali_right_panel, wxID_ANY, _L("Calibration Flow"), wxDefaultPosition, wxDefaultSize, 0); cali_text_right_top->Wrap(-1); cali_text_right_top->SetFont(::Label::Head_14); - cali_text_right_top->SetForegroundColour(wxColour(0x00, 0xAE, 0x42)); + cali_text_right_top->SetForegroundColour(AMS_CONTROL_BRAND_COLOUR); cali_text_right_top->SetBackgroundColour(BG_COLOR); auto staticline = new ::StaticLine(cali_right_panel); - staticline->SetLineColour(wxColour(0x00, 0xAE, 0x42)); + staticline->SetLineColour(AMS_CONTROL_BRAND_COLOUR); auto calibration_panel = new wxPanel(cali_right_panel); calibration_panel->SetBackgroundColour(BG_COLOR); auto calibration_sizer = new wxBoxSizer(wxVERTICAL); diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 0d99565759..581b9153bb 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -1918,7 +1918,7 @@ MaxVolumetricSpeedPresetPage::MaxVolumetricSpeedPresetPage( titles.push_back(_L("Step")); m_custom_range_panel->set_titles(titles); - m_custom_range_panel->set_unit("mm³/s"); + m_custom_range_panel->set_unit(wxString::FromUTF8("mm³/s")); } } }} diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index aad4c9be30..f57aa5f812 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -586,7 +586,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_line("spiral_mode_max_xy_smoothing", has_spiral_vase && config->opt_bool("spiral_mode_smooth")); toggle_line("spiral_starting_flow_ratio", has_spiral_vase); toggle_line("spiral_finishing_flow_ratio", has_spiral_vase); - bool has_top_shell = config->opt_int("top_shell_layers") > 0; + bool has_top_shell = config->opt_int("top_shell_layers") > 0 || (has_spiral_vase && config->opt_int("bottom_shell_layers") > 1); bool has_bottom_shell = config->opt_int("bottom_shell_layers") > 0; bool has_solid_infill = has_top_shell || has_bottom_shell; toggle_field("top_surface_pattern", has_top_shell); @@ -594,7 +594,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field("top_surface_density", has_top_shell); toggle_field("bottom_surface_density", has_bottom_shell); - for (auto el : { "infill_direction", "sparse_infill_line_width", + for (auto el : { "infill_direction", "sparse_infill_line_width", "fill_multiline","gap_fill_target","filter_out_gap_fill","infill_wall_overlap", "sparse_infill_speed", "bridge_speed", "internal_bridge_speed", "bridge_angle", "internal_bridge_angle", "solid_infill_direction", "solid_infill_rotate_template", "internal_solid_infill_pattern", "solid_infill_filament", }) @@ -609,7 +609,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_field("gap_infill_speed", have_perimeters); for (auto el : { "top_surface_line_width", "top_surface_speed" }) - toggle_field(el, has_top_shell || (has_spiral_vase && has_bottom_shell)); + toggle_field(el, has_top_shell); bool have_default_acceleration = config->opt_float("default_acceleration") > 0; diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index a58186a3f9..aeed5e47eb 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -1448,7 +1448,7 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent) auto *sizer_extr = new wxFlexGridSizer(3, 5, 5); auto *text_extr = new wxStaticText(this, wxID_ANY, _L("Extrusion Temperature:")); - auto *unit_extr = new wxStaticText(this, wxID_ANY, "\u2103" /* °C */); + auto *unit_extr = new wxStaticText(this, wxID_ANY, wxString::FromUTF8("\u2103") /* °C */); sizer_extr->AddGrowableCol(0, 1); sizer_extr->Add(text_extr, 0, wxALIGN_CENTRE_VERTICAL); sizer_extr->Add(spin_extr); @@ -1462,7 +1462,7 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent) auto *sizer_bed = new wxFlexGridSizer(3, 5, 5); auto *text_bed = new wxStaticText(this, wxID_ANY, _L("Bed Temperature:")); - auto *unit_bed = new wxStaticText(this, wxID_ANY, "\u2103" /* °C */); + auto *unit_bed = new wxStaticText(this, wxID_ANY, wxString::FromUTF8("\u2103") /* °C */); sizer_bed->AddGrowableCol(0, 1); sizer_bed->Add(text_bed, 0, wxALIGN_CENTRE_VERTICAL); sizer_bed->Add(spin_bed); diff --git a/src/slic3r/GUI/DragCanvas.cpp b/src/slic3r/GUI/DragCanvas.cpp index 38a827dca8..04d51c0861 100644 --- a/src/slic3r/GUI/DragCanvas.cpp +++ b/src/slic3r/GUI/DragCanvas.cpp @@ -17,6 +17,9 @@ DragCanvas::DragCanvas(wxWindow* parent, const std::vector& colors, { SetBackgroundColour(*wxWHITE); + m_background_color = StateColor::darkModeColorFor("#FFFFFF"); // ORCA + m_border_color = StateColor::darkModeColorFor("#DBDBDB"); // ORCA + m_arrow_bmp = create_scaled_bitmap("plate_settings_arrow", this, 16); set_shape_list(colors, order); @@ -130,15 +133,15 @@ void DragCanvas::on_erase(wxEraseEvent& event) if (event.GetDC()) { auto& dc = *(event.GetDC()); - dc.SetPen(CANVAS_BORDER_COLOR); - dc.SetBrush(*wxWHITE_BRUSH); + dc.SetPen( m_border_color); // ORCA + dc.SetBrush(m_background_color); // ORCA dc.DrawRectangle({ 0,0 }, size); } else { wxClientDC dc(this); - dc.SetPen(CANVAS_BORDER_COLOR); - dc.SetBrush(*wxWHITE_BRUSH); + dc.SetPen( m_border_color); // ORCA + dc.SetBrush(m_background_color); // ORCA dc.DrawRectangle({ 0,0 }, size); } } diff --git a/src/slic3r/GUI/DragCanvas.hpp b/src/slic3r/GUI/DragCanvas.hpp index 7d4c72052e..aa8d8ddfa8 100644 --- a/src/slic3r/GUI/DragCanvas.hpp +++ b/src/slic3r/GUI/DragCanvas.hpp @@ -58,6 +58,8 @@ private: wxPoint m_drag_start_pos; wxBitmap m_arrow_bmp; wxPoint m_max_shape_pos; + wxColour m_background_color; // ORCA + wxColour m_border_color; // ORCA }; diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index 677fff64fe..5eac9d20dc 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -127,21 +127,21 @@ void ExtrusionCalibration::create() wxWindow::GetTextExtent(_L("Bed Temperature")).x), wxWindow::GetTextExtent(_L("Max volumetric speed")).x), EXTRUSION_CALIBRATION_INPUT_SIZE.x); - m_nozzle_temp = new TextInput(m_step_1_panel, wxEmptyString, "\u2103" /* °C */, "", wxDefaultPosition, { max_input_width, EXTRUSION_CALIBRATION_INPUT_SIZE.y }, wxTE_READONLY); + m_nozzle_temp = new TextInput(m_step_1_panel, wxEmptyString, wxString::FromUTF8("\u2103") /* °C */, "", wxDefaultPosition, { max_input_width, EXTRUSION_CALIBRATION_INPUT_SIZE.y }, wxTE_READONLY); nozzle_temp_sizer->Add(nozzle_temp_text, 0, wxALIGN_LEFT); nozzle_temp_sizer->AddSpacer(FromDIP(4)); nozzle_temp_sizer->Add(m_nozzle_temp, 0, wxEXPAND); auto bed_temp_sizer = new wxBoxSizer(wxVERTICAL); auto bed_temp_text = new wxStaticText(m_step_1_panel, wxID_ANY, _L("Bed temperature")); - m_bed_temp = new TextInput(m_step_1_panel, wxEmptyString, "\u2103" /* °C */, "", wxDefaultPosition, { max_input_width, EXTRUSION_CALIBRATION_INPUT_SIZE.y }, wxTE_READONLY); + m_bed_temp = new TextInput(m_step_1_panel, wxEmptyString, wxString::FromUTF8("\u2103") /* °C */, "", wxDefaultPosition, { max_input_width, EXTRUSION_CALIBRATION_INPUT_SIZE.y }, wxTE_READONLY); bed_temp_sizer->Add(bed_temp_text, 0, wxALIGN_LEFT); bed_temp_sizer->AddSpacer(FromDIP(4)); bed_temp_sizer->Add(m_bed_temp, 0, wxEXPAND); auto max_flow_sizer = new wxBoxSizer(wxVERTICAL); auto max_flow_text = new wxStaticText(m_step_1_panel, wxID_ANY, _L("Max volumetric speed")); - m_max_flow_ratio = new TextInput(m_step_1_panel, wxEmptyString, "mm³", "", wxDefaultPosition, { max_input_width, EXTRUSION_CALIBRATION_INPUT_SIZE.y }, wxTE_READONLY); + m_max_flow_ratio = new TextInput(m_step_1_panel, wxEmptyString, wxString::FromUTF8("mm³"), "", wxDefaultPosition, { max_input_width, EXTRUSION_CALIBRATION_INPUT_SIZE.y }, wxTE_READONLY); max_flow_sizer->Add(max_flow_text, 0, wxALIGN_LEFT); max_flow_sizer->AddSpacer(FromDIP(4)); max_flow_sizer->Add(m_max_flow_ratio, 0, wxEXPAND); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 1e400f6421..72ad8f59f5 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -8219,7 +8219,7 @@ void GLCanvas3D::_render_return_toolbar() const float font_size = ImGui::GetFontSize(); ImVec2 real_size = ImVec2(font_size * 4, font_size * 1.7); - ImVec2 button_icon_size = ImVec2(font_size * 1.3, font_size * 1.3); + ImVec2 button_icon_size = ImVec2(font_size * .55, font_size * 1.1); // ORCA ImGuiWrapper& imgui = *wxGetApp().imgui(); Size cnv_size = get_canvas_size(); @@ -8235,12 +8235,16 @@ void GLCanvas3D::_render_return_toolbar() const imgui.set_next_window_size(window_width, window_height, ImGuiCond_Always); #endif + ImVec4 fg_color = m_is_dark ? ImVec4(1.f, 1.f, 1.f, 0.88f) : ImVec4(50 / 255.f, 58 / 255.f, 61 / 255.f, 1.f); + ImVec4 bg_color = m_is_dark ? ImGuiWrapper::COL_TOOLBAR_BG_DARK : ImGuiWrapper::COL_TOOLBAR_BG; + ImVec4 bg_color_hover = bg_color + (m_is_dark ? ImVec4(.03f, .03f, .03f, 0) : ImVec4(-.02f, -.02f, -.02f, 0)); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 18.0f); - ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.149f, 0.180f, 0.188f, 0.3f)); - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.149f, 0.180f, 0.188f, 0.15f)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0.149f, 0.180f, 0.188f, 0.5f)); + ImGui::PushStyleColor(ImGuiCol_Button, bg_color); // ORCA Toolbar color + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, bg_color_hover); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, bg_color); ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.0f, 0.0f, 0.0f, 0.0f)); - ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(1.0f, 1.0f, 1.0f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_Text, fg_color); imgui.begin(_L("Assembly Return"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); @@ -8252,7 +8256,7 @@ void GLCanvas3D::_render_return_toolbar() const ImVec2 uv1 = ImVec2(1.0f, 1.0f); ImVec4 bg_col = ImVec4(0.0f, 0.0f, 0.0f, 0.0f); - ImVec4 tint_col = ImVec4(1.0f, 1.0f, 1.0f, 1.0f); + ImVec4 tint_col = fg_color; // icon color ImVec2 margin = ImVec2(10.0f, 5.0f); if (ImGui::ImageTextButton(real_size,_utf8(L("Return")).c_str(), m_return_toolbar.get_return_texture_id(), button_icon_size, uv0, uv1, -1, bg_col, tint_col, margin)) { @@ -8363,7 +8367,7 @@ void GLCanvas3D::_render_paint_toolbar() const ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(spacing, spacing)); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(spacing, 0)); - ImGui::PushStyleColor(ImGuiCol_WindowBg, { 0.f, 0.f, 0.f, 0.4f }); + ImGui::PushStyleColor(ImGuiCol_WindowBg, m_is_dark ? ImGuiWrapper::COL_TOOLBAR_BG_DARK : ImGuiWrapper::COL_TOOLBAR_BG); // ORCA Toolbar color imgui.set_next_window_pos(0.5f * canvas_w, 0, ImGuiCond_Always, 0.5f, 0.0f); float constraint_window_width = canvas_w - 2 * return_button_margin; diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 2be2190577..07d1bbc006 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2147,17 +2147,17 @@ static TriangleMesh create_mesh(const std::string& type_name, const BoundingBoxf else if (type_name == "Sphere") // Centered around 0, half the sphere below the print bed, half above. // The sphere has the same volume as the box above. - mesh = TriangleMesh(its_make_sphere(0.5 * side, PI / 18)); + mesh = TriangleMesh(its_make_sphere(0.5 * side, PI / 90)); else if (type_name == "Slab") // Sitting on the print bed, left front front corner at (0, 0). mesh = TriangleMesh(its_make_cube(bb.size().x() * 1.5, bb.size().y() * 1.5, bb.size().z() * 0.5)); else if (type_name == "Cone") mesh = TriangleMesh(its_make_cone(0.5 * side, side)); else if (type_name == "Disc") - mesh.ReadSTLFile((Slic3r::resources_dir() + "/handy_models/helper_disk.stl").c_str(), true, nullptr); + mesh = TriangleMesh(its_make_cylinder(0.5 * side, 0.2f)); else if (type_name == "Torus") - mesh.ReadSTLFile((Slic3r::resources_dir() + "/handy_models/torus.stl").c_str(), true, nullptr); - return TriangleMesh(mesh); + mesh = TriangleMesh(its_make_torus(0.5 * side, 0.125 * side,(PI / 60))); + return mesh; } void ObjectList::load_generic_subobject(const std::string& type_name, const ModelVolumeType type) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index 139b21edcc..299e4da3d9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -1932,35 +1932,38 @@ void GLGizmoMeasure::show_distance_xyz_ui() } }; auto add_edit_distance_xyz_box = [this](Vec3d &distance) { - m_imgui->disabled_begin(m_hit_different_volumes.size() == 1); - { + //m_imgui->disabled_begin(m_hit_different_volumes.size() == 1); + //{ if (m_measure_mode == EMeasureMode::ONLY_MEASURE) { m_can_set_xyz_distance = false; } - m_imgui->disabled_begin(!m_can_set_xyz_distance); + bool volume = m_hit_different_volumes.size() == 1; ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); - m_imgui->text_colored(ImGuiWrapper::COL_RED, "X:"); + m_imgui->text_colored(ImGuiWrapper::to_ImVec4(ColorRGBA::X()), "X:"); // ORCA match axis color ImGui::TableSetColumnIndex(1); ImGui::PushItemWidth(m_input_size_max); + m_imgui->disabled_begin(volume || !m_can_set_xyz_distance); // ORCA disable only input box othervise axis colors rendered dimmed ImGui::BBLInputDouble("##measure_distance_x", &m_buffered_distance[0], 0.0f, 0.0f, "%.2f"); + m_imgui->disabled_end(); ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); - m_imgui->text_colored(ImGuiWrapper::COL_GREEN, "Y:"); + m_imgui->text_colored(ImGuiWrapper::to_ImVec4(ColorRGBA::Y()), "Y:"); // ORCA match axis color ImGui::TableSetColumnIndex(1); + m_imgui->disabled_begin(volume || !m_can_set_xyz_distance); // ORCA disable only input box othervise axis colors rendered dimmed ImGui::BBLInputDouble("##measure_distance_y", &m_buffered_distance[1], 0.0f, 0.0f, "%.2f"); m_imgui->disabled_end(); - m_imgui->disabled_begin(!(m_same_model_object && m_can_set_xyz_distance)); ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); - m_imgui->text_colored(ImGuiWrapper::COL_BLUE, "Z:"); + m_imgui->text_colored(ImGuiWrapper::to_ImVec4(ColorRGBA::Z()), "Z:"); // ORCA match axis color ImGui::TableSetColumnIndex(1); + m_imgui->disabled_begin(volume || !(m_same_model_object && m_can_set_xyz_distance)); // ORCA disable only input box othervise axis colors rendered dimmed ImGui::BBLInputDouble("##measure_distance_z", &m_buffered_distance[2], 0.0f, 0.0f, "%.2f"); m_imgui->disabled_end(); - } - m_imgui->disabled_end(); + //} + //m_imgui->disabled_end(); if (m_last_active_item_imgui != m_current_active_imgui_id && m_hit_different_volumes.size() == 2) { Vec3d displacement = Vec3d::Zero(); if (std::abs(m_buffered_distance[0] - distance[0]) > EPSILON) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index a1ee562ea2..b6f8d6e5d5 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -169,6 +169,9 @@ void GLGizmosManager::switch_gizmos_icon_filename() case (EType::Assembly): gizmo->set_icon_filename(m_is_dark ? "toolbar_assembly_dark.svg" : "toolbar_assembly.svg"); break; + case (EType::BrimEars): + gizmo->set_icon_filename(m_is_dark ? "toolbar_brimears_dark.svg" : "toolbar_brimears.svg"); + break; } } diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 8b3cbbeaeb..6b93098aa2 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -176,6 +176,8 @@ const ImVec4 ImGuiWrapper::COL_SEPARATOR_DARK = { 0.24f, 0.24f, 0.27f, 1.0f } const ImVec4 ImGuiWrapper::COL_TITLE_BG = { 0.745f, 0.745f, 0.745f, 1.0f }; const ImVec4 ImGuiWrapper::COL_WINDOW_BG = { 1.000f, 1.000f, 1.000f, 1.0f }; const ImVec4 ImGuiWrapper::COL_WINDOW_BG_DARK = { 45 / 255.f, 45 / 255.f, 49 / 255.f, 1.f }; +const ImVec4 ImGuiWrapper::COL_TOOLBAR_BG = { 250 / 255.f, 250 / 255.f, 250 / 255.f, 1.f }; // ORCA color matches with toolbar_background.png +const ImVec4 ImGuiWrapper::COL_TOOLBAR_BG_DARK = { 57 / 255.f, 60 / 255.f, 66 / 255.f, 1.f }; // ORCA color matches with toolbar_background_dark.png const ImVec4 ImGuiWrapper::COL_ORCA = to_ImVec4(ColorRGBA::ORCA()); int ImGuiWrapper::TOOLBAR_WINDOW_FLAGS = ImGuiWindowFlags_AlwaysAutoResize diff --git a/src/slic3r/GUI/ImGuiWrapper.hpp b/src/slic3r/GUI/ImGuiWrapper.hpp index cd1b3d98e4..65c8225120 100644 --- a/src/slic3r/GUI/ImGuiWrapper.hpp +++ b/src/slic3r/GUI/ImGuiWrapper.hpp @@ -336,6 +336,8 @@ public: static const ImVec4 COL_TITLE_BG; static const ImVec4 COL_WINDOW_BG; static const ImVec4 COL_WINDOW_BG_DARK; + static const ImVec4 COL_TOOLBAR_BG; + static const ImVec4 COL_TOOLBAR_BG_DARK; static const ImVec4 COL_SEPARATOR; static const ImVec4 COL_SEPARATOR_DARK; static const ImVec4 COL_ORCA; diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index b66777acb3..09de590c8b 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -147,8 +147,8 @@ NotificationManager::PopNotification::PopNotification(const NotificationData &n, , m_evt_handler (evt_handler) , m_notification_start (GLCanvas3D::timestamp_now()) { - m_ErrorColor = ImVec4(0.9, 0.36, 0.36, 1); - m_WarnColor = ImVec4(0.99, 0.69, 0.455, 1); + m_ErrorColor = ImGuiWrapper::to_ImVec4(decode_color_to_float_array("#E14747")); // ORCA + m_WarnColor = ImGuiWrapper::to_ImVec4(decode_color_to_float_array("#F59B16")); // ORCA m_NormalColor = ImVec4(0, 0.588, 0.533, 1); m_CurrentColor = m_NormalColor; //Default @@ -370,13 +370,14 @@ void NotificationManager::PopNotification::bbl_render_block_notification(GLCanva use_bbl_theme(); if (m_data.level == NotificationLevel::SeriousWarningNotificationLevel) - { - push_style_color(ImGuiCol_Border, {245.f / 255.f, 155 / 255.f, 22 / 255.f, 1}, true, m_current_fade_opacity); - push_style_color(ImGuiCol_WindowBg, {245.f / 255.f, 155 / 255.f, 22 / 255.f, 1}, true, m_current_fade_opacity); + { // ORCA match and ensure color usage + push_style_color(ImGuiCol_Border, m_WarnColor, true, m_current_fade_opacity); + push_style_color(ImGuiCol_WindowBg, m_WarnColor, true, m_current_fade_opacity); } - if (m_data.level == NotificationLevel::ErrorNotificationLevel) { - push_style_color(ImGuiCol_Border, {225.f / 255.f, 71 / 255.f, 71 / 255.f, 1}, true, m_current_fade_opacity); - push_style_color(ImGuiCol_WindowBg, {225.f / 255.f, 71 / 255.f, 71 / 255.f, 1}, true, m_current_fade_opacity); + if (m_data.level == NotificationLevel::ErrorNotificationLevel) + { // ORCA match and ensure color usage + push_style_color(ImGuiCol_Border, m_ErrorColor, true, m_current_fade_opacity); + push_style_color(ImGuiCol_WindowBg, m_ErrorColor, true, m_current_fade_opacity); } push_style_color(ImGuiCol_Text, { 1,1,1,1 }, true, m_current_fade_opacity); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index fad3fa35ff..49d50e97ee 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -125,7 +125,7 @@ #include "ParamsDialog.hpp" #include "Widgets/Label.hpp" #include "Widgets/RoundedRectangle.hpp" -#include "Widgets/RadioBox.hpp" +#include "Widgets/RadioGroup.hpp" #include "Widgets/CheckBox.hpp" #include "Widgets/Button.hpp" @@ -9555,7 +9555,7 @@ void Plater::_calib_pa_pattern(const Calib_Params& params) if (accels.empty()) { accels.assign({accel}); const auto msg{_L("INFO:") + "\n" + - _L("No accelerations provided for calibration. Use default acceleration value ") + std::to_string(long(accel)) + _L("mm/s²")}; + _L("No accelerations provided for calibration. Use default acceleration value ") + std::to_string(long(accel)) + wxString::FromUTF8("mm/s²")}; get_notification_manager()->push_notification(msg.ToStdString()); } else { // set max acceleration in case of batch mode to get correct test pattern size @@ -10744,23 +10744,12 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) return true; } -class RadioBox; -class RadioSelector -{ -public: - int m_select_id; - int m_groupid; - RadioBox *m_radiobox; -}; -WX_DECLARE_LIST(RadioSelector, RadioSelectorList); - #define PROJECT_DROP_DIALOG_SELECT_PLANE_SIZE wxSize(FromDIP(350), FromDIP(120)) class ProjectDropDialog : public DPIDialog { private: wxColour m_def_color = wxColour(255, 255, 255); - RadioSelectorList m_radio_group; int m_action{1}; bool m_remember_choice{false}; @@ -10773,12 +10762,9 @@ public: wxStaticText *m_fname_s; StaticBox * m_panel_select; - void select_radio(int index); - void on_select_radio(wxMouseEvent &event); void on_select_ok(wxCommandEvent &event); void on_select_cancel(wxCommandEvent &event); - int get_select_radio(int groupid); int get_action() const { return m_action; } void set_action(int index) { m_action = index; } @@ -10796,6 +10782,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) + , m_action(2) { // def setting SetBackgroundColour(m_def_color); @@ -10818,7 +10805,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) m_fname_title = new wxStaticText(this, wxID_ANY, _L("Please select an action"), wxDefaultPosition, wxDefaultSize, 0); m_fname_title->Wrap(-1); - m_fname_title->SetFont(::Label::Body_13); + m_fname_title->SetFont(::Label::Body_14); m_fname_title->SetForegroundColour(wxColour(107, 107, 107)); m_fname_title->SetBackgroundColour(wxColour(255, 255, 255)); @@ -10826,7 +10813,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) m_sizer_fline->Add(0, 0, 0, wxEXPAND | wxLEFT, 5); m_fname_f = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); - m_fname_f->SetFont(::Label::Head_13); + m_fname_f->SetFont(::Label::Head_14); m_fname_f->Wrap(-1); m_fname_f->SetForegroundColour(wxColour(38, 46, 48)); @@ -10835,43 +10822,25 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) m_sizer_name->Add(m_sizer_fline, 1, wxEXPAND, 0); m_fname_s = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); - m_fname_s->SetFont(::Label::Head_13); + m_fname_s->SetFont(::Label::Head_14); m_fname_s->Wrap(-1); m_fname_s->SetForegroundColour(wxColour(38, 46, 48)); m_sizer_name->Add(m_fname_s, 1, wxALL, 0); - m_sizer_main->Add(m_sizer_name, 1, wxEXPAND | wxLEFT | wxRIGHT, 40); + m_sizer_main->Add(m_sizer_name, 1, wxEXPAND | wxLEFT | wxRIGHT, 20); - m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, 5); + auto radio_group = new RadioGroup(this, { + _L("Open as project"), // 0 + _L("Import geometry only") // 1 + }, wxVERTICAL); + radio_group->SetMinSize(wxSize(FromDIP(300),-1)); + radio_group->SetSelection(get_action() - 1); + radio_group->Bind(wxEVT_COMMAND_RADIOBOX_SELECTED, [this, radio_group](wxCommandEvent &e) { + set_action(radio_group->GetSelection() + 1); + }); - m_panel_select = new StaticBox(this, wxID_ANY, wxDefaultPosition, PROJECT_DROP_DIALOG_SELECT_PLANE_SIZE); - StateColor box_colour(std::pair(wxColour("#F8F8F8"), StateColor::Normal)); - StateColor box_border_colour(std::pair(wxColour(*wxWHITE), StateColor::Normal)); - - m_panel_select->SetBackgroundColor(box_colour); - m_panel_select->SetBorderColor(box_border_colour); - m_panel_select->SetCornerRadius(5); - - wxBoxSizer *m_sizer_select_h = new wxBoxSizer(wxHORIZONTAL); - - wxBoxSizer *m_sizer_select_v = new wxBoxSizer(wxVERTICAL); - - - auto select_f = create_item_radiobox(_L("Open as project"), m_panel_select, 1, 0); - auto select_s = create_item_radiobox(_L("Import geometry only"), m_panel_select, 2, 0); - //auto select_t = create_item_radiobox(_L("Import presets only"), m_panel_select,3, 0); - - m_sizer_select_v->Add(select_f, 0, wxEXPAND, 5); - m_sizer_select_v->Add(select_s, 0, wxEXPAND, 5); - //m_sizer_select_v->Add(select_t, 0, wxEXPAND, 5); - select_radio(2); - - m_sizer_select_h->Add(m_sizer_select_v, 0, wxALIGN_CENTER | wxLEFT, 22); - - m_panel_select->SetSizer(m_sizer_select_h); - m_panel_select->Layout(); - m_sizer_main->Add(m_panel_select, 0, wxEXPAND | wxLEFT | wxRIGHT, 40); + m_sizer_main->Add(radio_group, 0, wxEXPAND | wxLEFT | wxRIGHT, 20); m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, 10); @@ -10923,34 +10892,6 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) wxGetApp().UpdateDlgDarkUI(this); } -wxBoxSizer *ProjectDropDialog ::create_item_radiobox(wxString title, wxWindow *parent, int select_id, int groupid) -{ - wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL); - auto radiobox = new RadioBox(parent); - - radiobox->SetBackgroundColour(wxColour(248,248,248)); - sizer->Add(radiobox, 0, wxALL, 5); - sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, 5); - auto text = new wxStaticText(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, 0); - text->Wrap(-1); - text->SetForegroundColour(wxColour(107, 107, 107)); - text->SetBackgroundColour(wxColour(248,248,248)); - sizer->Add(text, 0, wxALL, 5); - - radiobox->Bind(wxEVT_LEFT_DOWN, &ProjectDropDialog::on_select_radio, this); - text->Bind(wxEVT_LEFT_DOWN, [this, radiobox](auto &e) { - e.SetId(radiobox->GetId()); - on_select_radio(e); - }); - - RadioSelector *rs = new RadioSelector; - rs->m_groupid = groupid; - rs->m_radiobox = radiobox; - rs->m_select_id = select_id; - m_radio_group.Append(rs); - - return sizer; -} wxBoxSizer *ProjectDropDialog::create_remember_checkbox(wxString title, wxWindow *parent, wxString tooltip) { wxBoxSizer *m_sizer_checkbox = new wxBoxSizer(wxHORIZONTAL); @@ -10977,63 +10918,6 @@ wxBoxSizer *ProjectDropDialog::create_remember_checkbox(wxString title, wxWindow return m_sizer_checkbox; } -void ProjectDropDialog::select_radio(int index) -{ - m_action = index; - RadioSelectorList::compatibility_iterator it = m_radio_group.GetFirst(); - auto groupid = 0; - - while (it) { - RadioSelector *rs = it->GetData(); - if (rs->m_select_id == index) groupid = rs->m_groupid; - it = it->GetNext(); - } - - it = m_radio_group.GetFirst(); - while (it) { - RadioSelector *rs = it->GetData(); - if (rs->m_groupid == groupid && rs->m_select_id == index) rs->m_radiobox->SetValue(true); - if (rs->m_groupid == groupid && rs->m_select_id != index) rs->m_radiobox->SetValue(false); - it = it->GetNext(); - } -} - -int ProjectDropDialog::get_select_radio(int groupid) -{ - RadioSelectorList::compatibility_iterator it = m_radio_group.GetFirst(); - while (it) { - RadioSelector *rs = it->GetData(); - if (rs->m_groupid == groupid && rs->m_radiobox->GetValue()) { return rs->m_select_id; } - it = it->GetNext(); - } - - return 0; -} -void ProjectDropDialog::on_select_radio(wxMouseEvent &event) -{ - RadioSelectorList::compatibility_iterator it = m_radio_group.GetFirst(); - auto groupid = 0; - - while (it) { - RadioSelector *rs = it->GetData(); - if (rs->m_radiobox->GetId() == event.GetId()) groupid = rs->m_groupid; - it = it->GetNext(); - } - - it = m_radio_group.GetFirst(); - while (it) { - RadioSelector *rs = it->GetData(); - if (rs->m_groupid == groupid && rs->m_radiobox->GetId() == event.GetId()) { - set_action(rs->m_select_id); - rs->m_radiobox->SetValue(true); - } - - - if (rs->m_groupid == groupid && rs->m_radiobox->GetId() != event.GetId()) rs->m_radiobox->SetValue(false); - it = it->GetNext(); - } -} - void ProjectDropDialog::on_select_ok(wxCommandEvent &event) { if (m_remember_choice) { diff --git a/src/slic3r/GUI/RammingChart.cpp b/src/slic3r/GUI/RammingChart.cpp index 4d4bcc5082..9dd1c85965 100644 --- a/src/slic3r/GUI/RammingChart.cpp +++ b/src/slic3r/GUI/RammingChart.cpp @@ -89,12 +89,46 @@ void Chart::draw() { } // axis labels: - wxString label = _(L("Time")) + " ("+_("s")+")"; + wxString label = _(L("Time")) + " (" + _("s") + ")"; dc.GetTextExtent(label,&text_width,&text_height); dc.DrawText(label,wxPoint(0.5*(m_rect.GetRight()+m_rect.GetLeft())-text_width/2.f, m_rect.GetBottom()+0.6*legend_side)); - label = _(L("Volumetric speed")) + " (" + _("mm³/s") + ")"; + label = _(L("Volumetric speed")) + " (" + wxString::FromUTF8("mm³/s") + ")"; dc.GetTextExtent(label,&text_width,&text_height); dc.DrawRotatedText(label,wxPoint(0,0.5*(m_rect.GetBottom()+m_rect.GetTop())+text_width/2.f),90); + + // draw a label with the value above each button + for (auto& button : m_buttons) { + if (!visible_area.Contains(button.get_pos())) + continue; + + wxPoint button_screen_pos = math_to_screen(button.get_pos()); + wxString value_label = wxString().Format(wxT("%.1f"), button.get_pos().m_y); + + int label_width, label_height; + dc.GetTextExtent(value_label, &label_width, &label_height); + + const int padding = 4; + // Calculate label x position + int label_x = button_screen_pos.x - (label_width/2); // centered with button + label_x = std::clamp(label_x, m_rect.GetLeft() + (padding*2), m_rect.GetRight() - label_width - (padding*2)); // adjust to fit within chart bounds + + // Calculate label y position + int label_y = button_screen_pos.y - (side/2) - label_height - (padding*2); // above button + if (label_y - (padding*2) < m_rect.GetTop()) { // move below the button if there isn't enough space + label_y = button_screen_pos.y + (side/2) + (padding*2); + } + + // Draw label background + dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#DBDBDB")), 1)); + wxColour bg_color = StateColor::darkModeColorFor(wxColour("#F1F1F1")); + dc.SetBrush(wxBrush(wxColour(bg_color.Red(), bg_color.Green(), bg_color.Blue(), 204))); // 80% opacity + wxRect label_rect(label_x - padding, label_y - padding, label_width + (2*padding), label_height + (2*padding)); + dc.DrawRoundedRectangle(label_rect, 2); + + // Draw the label text + dc.SetTextForeground(StateColor::darkModeColorFor("#363636")); + dc.DrawText(value_label, wxPoint(label_x, label_y)); + } } void Chart::mouse_right_button_clicked(wxMouseEvent& event) { @@ -111,6 +145,7 @@ void Chart::mouse_right_button_clicked(wxMouseEvent& event) { void Chart::mouse_clicked(wxMouseEvent& event) { + m_uniform = (event.GetModifiers() == wxMOD_CONTROL); wxPoint point = event.GetPosition(); int button_index = which_button_is_clicked(point); if ( button_index != -1) { @@ -136,7 +171,15 @@ void Chart::mouse_moved(wxMouseEvent& event) { } int delta_x = pos.x - m_previous_mouse.x; int delta_y = pos.y - m_previous_mouse.y; - m_dragged->move(fixed_x?0:double(delta_x)/m_rect.GetWidth() * visible_area.m_width,-double(delta_y)/m_rect.GetHeight() * visible_area.m_height); + + double new_y = m_dragged->get_pos().m_y - double(delta_y) / m_rect.GetHeight() * visible_area.m_height; + + if (m_uniform) + for (ButtonToDrag& b : m_buttons) + b.move(fixed_x?0:double(delta_x)/m_rect.GetWidth() * visible_area.m_width, new_y - b.get_pos().m_y); + else + m_dragged->move(fixed_x?0:double(delta_x)/m_rect.GetWidth() * visible_area.m_width, new_y - m_dragged->get_pos().m_y); + m_previous_mouse = pos; recalculate_line(); } diff --git a/src/slic3r/GUI/RammingChart.hpp b/src/slic3r/GUI/RammingChart.hpp index d3f40d4c7d..1517299aed 100644 --- a/src/slic3r/GUI/RammingChart.hpp +++ b/src/slic3r/GUI/RammingChart.hpp @@ -22,7 +22,7 @@ public: SetBackgroundColour(*wxWHITE); SetBackgroundStyle(wxBG_STYLE_PAINT); m_rect = wxRect(wxPoint(legend_side,0),rect.GetSize()-wxSize(legend_side,legend_side)); - visible_area = wxRect2DDouble(0.0, 0.0, sampling*ramming_speed_size, 20.); + visible_area = wxRect2DDouble(0.0, 0.0, sampling*ramming_speed_size, 60.); m_buttons.clear(); if (initial_buttons.size()>0) for (const auto& pair : initial_buttons) @@ -30,7 +30,7 @@ public: recalculate_line(); } void set_xy_range(float x,float y) { - x = int(x/0.5) * 0.5; + x = int(x/0.25) * 0.25; if (x>=0) visible_area.SetRight(x); if (y>=0) visible_area.SetBottom(y); recalculate_line(); @@ -116,6 +116,7 @@ private: wxRect2DDouble visible_area; ButtonToDrag* m_dragged = nullptr; float m_total_volume = 0.f; + bool m_uniform = false; }; diff --git a/src/slic3r/GUI/SavePresetDialog.cpp b/src/slic3r/GUI/SavePresetDialog.cpp index 0918226d5b..2a7b29d7c5 100644 --- a/src/slic3r/GUI/SavePresetDialog.cpp +++ b/src/slic3r/GUI/SavePresetDialog.cpp @@ -9,8 +9,6 @@ #include #include #include -// BBS: add radio button for project embedded preset logic -#include #include "libslic3r/PresetBundle.hpp" @@ -56,7 +54,7 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string &suffix, wxBox } wxStaticText *label_top = new wxStaticText(m_parent, wxID_ANY, from_u8((boost::format(_utf8(L("Save %s as"))) % into_u8(tab->title())).str())); - label_top->SetFont(::Label::Body_13); + label_top->SetFont(::Label::Body_14); label_top->SetForegroundColour(wxColour(38,46,48)); @@ -105,70 +103,20 @@ SavePresetDialog::Item::Item(Preset::Type type, const std::string &suffix, wxBox if (m_type == Preset::TYPE_PRINTER) m_parent->add_info_for_edit_ph_printer(sizer); - // BBS: add project embedded presets logic - wxBoxSizer *radio_sizer = new wxBoxSizer(wxHORIZONTAL); + // ORCA RadioGroup + m_radio_group = new RadioGroup(m_parent, { + _L("User Preset"), // 0 + _L("Preset Inside Project") // 1 + }, wxVERTICAL); - wxBoxSizer *m_sizer_left = new wxBoxSizer(wxHORIZONTAL); + sizer->Add(m_radio_group, 0, wxEXPAND | wxTOP | wxLEFT, BORDER_W); - m_sizer_left->Add(0, 0, 0, wxLEFT, 25); - - m_radio_user = new RadioBox(parent); - m_radio_user->SetBackgroundColour(SAVE_PRESET_DIALOG_DEF_COLOUR); - - m_sizer_left->Add(m_radio_user, 0, wxALIGN_CENTER, 0); - - m_sizer_left->Add(0, 0, 0, wxLEFT, 10); - - auto m_left_text = new wxStaticText(parent, wxID_ANY, _L("User Preset"), wxDefaultPosition, wxDefaultSize, 0); - m_left_text->Wrap(-1); - m_left_text->SetFont(::Label::Body_13); - m_left_text->SetForegroundColour(wxColour(107,107,107)); - m_sizer_left->Add(m_left_text, 0, wxALIGN_CENTER, 0); - - radio_sizer->Add(m_sizer_left, 1, wxALIGN_CENTER, 5); - - wxBoxSizer *m_sizer_right = new wxBoxSizer(wxHORIZONTAL); - - m_sizer_right->Add(0, 0, 0, wxLEFT, 15); - - m_radio_project = new RadioBox(parent); - m_radio_project->SetBackgroundColour(SAVE_PRESET_DIALOG_DEF_COLOUR); - - m_sizer_right->Add(m_radio_project, 0, wxALIGN_CENTER, 0); - - m_sizer_right->Add(0, 0, 0, wxLEFT, 10); - - auto m_right_text = new wxStaticText(parent, wxID_ANY, _L("Preset Inside Project"), wxDefaultPosition, wxDefaultSize, 0); - m_right_text->SetForegroundColour(wxColour(107,107,107)); - m_right_text->SetFont(::Label::Body_13); - m_right_text->Wrap(-1); - m_sizer_right->Add(m_right_text, 0, wxALIGN_CENTER, 0); - - radio_sizer->Add(m_sizer_right, 1, wxEXPAND, 5); - - sizer->Add(radio_sizer, 0, wxEXPAND | wxTOP, BORDER_W); - - auto radio_clicked = [this](wxMouseEvent &e) { - if (m_radio_user->GetId() == e.GetId()) { - m_radio_user->SetValue(true); - m_radio_project->SetValue(false); - m_save_to_project = false; - } - - if (m_radio_project->GetId() == e.GetId()) { - m_radio_user->SetValue(false); - m_radio_project->SetValue(true); - m_save_to_project = true; - } - }; - m_radio_user->Bind(wxEVT_LEFT_DOWN, radio_clicked); - m_radio_project->Bind(wxEVT_LEFT_DOWN, radio_clicked); + m_radio_group->Bind(wxEVT_COMMAND_RADIOBOX_SELECTED, [this](wxCommandEvent &e) { + m_save_to_project = m_radio_group->GetSelection() == 1; + }); bool is_project_embedded = m_presets->get_edited_preset().is_project_embedded; - if (is_project_embedded) - m_radio_project->SetValue(true); - else - m_radio_user->SetValue(true); + m_radio_group->SetSelection(is_project_embedded ? 1 : 0); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ", create item: type" << Preset::get_type_string(m_type) << ", preset " << m_preset_name << ", is_project_embedded = " << is_project_embedded; @@ -240,22 +188,18 @@ void SavePresetDialog::Item::update() } // BBS: add project embedded presets logic - if (existing) { + if (existing) { // ORCA RadioGroup if (existing->is_project_embedded) { - m_radio_project->SetValue(true); + m_radio_group->SetSelection(1); m_save_to_project = true; } else { - m_radio_user->SetValue(true); + m_radio_group->SetSelection(0); m_save_to_project = false; } - m_radio_user->Disable(); - m_radio_project->Disable(); + m_radio_group->Disable(); } else { - m_radio_user->Enable(); - m_radio_project->Enable(); - - m_radio_user->SetValue(!m_save_to_project); - m_radio_project->SetValue(m_save_to_project); + m_radio_group->Enable(); + m_radio_group->SetSelection(m_save_to_project ? 1 : 0); } m_valid_label->SetLabel(info_line); diff --git a/src/slic3r/GUI/SavePresetDialog.hpp b/src/slic3r/GUI/SavePresetDialog.hpp index 748635a6ee..618bfb49c8 100644 --- a/src/slic3r/GUI/SavePresetDialog.hpp +++ b/src/slic3r/GUI/SavePresetDialog.hpp @@ -6,7 +6,7 @@ #include "libslic3r/Preset.hpp" #include "wxExtensions.hpp" #include "GUI_Utils.hpp" -#include "Widgets/RadioBox.hpp" +#include "Widgets/RadioGroup.hpp" #include "Widgets/Button.hpp" #include "Widgets/RoundedRectangle.hpp" #include "Widgets/Label.hpp" @@ -69,9 +69,8 @@ class SavePresetDialog : public DPIDialog PresetCollection* m_presets {nullptr}; //BBS: add project embedded preset relate logic - RadioBox * m_radio_user{nullptr}; - RadioBox * m_radio_project{nullptr}; bool m_save_to_project {false}; + RadioGroup* m_radio_group; // ORCA void update(); }; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 5a1540280f..a164a6fb60 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -162,20 +162,20 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_rename_normal_panel->SetBackgroundColour(*wxWHITE); rename_sizer_v = new wxBoxSizer(wxVERTICAL); rename_sizer_h = new wxBoxSizer(wxHORIZONTAL); - m_rename_text = new wxStaticText(m_rename_normal_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); m_rename_text->SetFont(::Label::Body_13); m_rename_text->SetBackgroundColour(*wxWHITE); m_rename_text->SetMaxSize(wxSize(FromDIP(340), -1)); - rename_editable = new ScalableBitmap(this, "rename_edit", 20); - rename_editable_light = new ScalableBitmap(this, "rename_edit", 20); + rename_editable = new ScalableBitmap(this, "rename_edit", FromDIP(13)); // ORCA Match edit icon and its size + rename_editable_light = new ScalableBitmap(this, "rename_edit", FromDIP(13)); // ORCA Match edit icon and its size m_rename_button = new wxStaticBitmap(m_rename_normal_panel, wxID_ANY, rename_editable->bmp(), wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), 0); m_rename_button->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); }); m_rename_button->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); }); - rename_sizer_h->Add(m_rename_text, 0, wxALIGN_CENTER|wxTOP, FromDIP(2)); - rename_sizer_h->Add(m_rename_button, 0, wxALIGN_CENTER, 0); + rename_sizer_h->Add(m_rename_text, 0, wxALIGN_CENTER, 0); // ORCA align text with icon + rename_sizer_h->Add(m_rename_button, 0, wxALIGN_CENTER| wxLEFT, FromDIP(3)); // ORCA add gap between text and icon rename_sizer_v->Add(rename_sizer_h, 1, wxTOP, 0); + m_rename_normal_panel->SetSizer(rename_sizer_v); m_rename_normal_panel->Layout(); rename_sizer_v->Fit(m_rename_normal_panel); @@ -3626,9 +3626,9 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data) char weight[64]; if (wxGetApp().app_config->get("use_inches") == "1") { - ::sprintf(weight, " %.2f oz", aprint_stats.total_weight * 0.035274); + ::sprintf(weight, "%.2f oz", aprint_stats.total_weight * 0.035274); // ORCA remove spacing before text } else { - ::sprintf(weight, " %.2f g", aprint_stats.total_weight); + ::sprintf(weight, "%.2f g", aprint_stats.total_weight); // ORCA remove spacing before text } m_stext_time->SetLabel(time); @@ -3761,7 +3761,7 @@ void SelectMachineDialog::set_default_from_sdcard() wxString time; time = wxString::Format("%s", short_time(get_time_dhms(float_time))); char weight[64]; - ::sprintf(weight, " %.2f g", float_weight); + ::sprintf(weight, "%.2f g", float_weight); // ORCA remove spacing before text m_stext_time->SetLabel(time); m_stext_weight->SetLabel(weight); } diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 4f290683ef..dd435d2474 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -439,7 +439,7 @@ SendToPrinterDialog::SendToPrinterDialog(Plater *plater) m_rename_text->SetForegroundColour(*wxBLACK); m_rename_text->SetFont(::Label::Body_13); m_rename_text->SetMaxSize(wxSize(FromDIP(390), -1)); - m_rename_button = new Button(m_rename_normal_panel, "", "ams_editable", wxBORDER_NONE, FromDIP(10)); + m_rename_button = new Button(m_rename_normal_panel, "", "rename_edit", wxBORDER_NONE, FromDIP(13)); // ORCA Match edit icon and its size m_rename_button->SetBackgroundColor(*wxWHITE); m_rename_button->SetBackgroundColour(*wxWHITE); @@ -1349,9 +1349,9 @@ void SendToPrinterDialog::set_default() char weight[64]; if (wxGetApp().app_config->get("use_inches") == "1") { - ::sprintf(weight, " %.2f oz", aprint_stats.total_weight*0.035274); + ::sprintf(weight, "%.2f oz", aprint_stats.total_weight*0.035274); // ORCA remove spacing before text }else{ - ::sprintf(weight, " %.2f g", aprint_stats.total_weight); + ::sprintf(weight, "%.2f g", aprint_stats.total_weight); // ORCA remove spacing before text } m_stext_time->SetLabel(time); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 64816c5ab7..c1b4e0ee88 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2115,8 +2115,8 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Precision"), L"param_precision"); - optgroup->append_single_option_line("slice_closing_radius"); - optgroup->append_single_option_line("resolution"); + optgroup->append_single_option_line("slice_closing_radius", "quality_settings_precision#slice-gap-closing-radius"); + optgroup->append_single_option_line("resolution", "quality_settings_precision#resolution"); optgroup->append_single_option_line("enable_arc_fitting", "quality_settings_precision#arc-fitting"); optgroup->append_single_option_line("xy_hole_compensation", "quality_settings_precision#xy-compensation"); optgroup->append_single_option_line("xy_contour_compensation", "quality_settings_precision#xy-compensation"); @@ -2124,17 +2124,17 @@ void TabPrint::build() optgroup->append_single_option_line("elefant_foot_compensation_layers", "quality_settings_precision#elefant-foot-compensation"); optgroup->append_single_option_line("precise_outer_wall", "quality_settings_precision#precise-wall"); optgroup->append_single_option_line("precise_z_height", "quality_settings_precision#precise-z-height"); - optgroup->append_single_option_line("hole_to_polyhole"); - optgroup->append_single_option_line("hole_to_polyhole_threshold"); - optgroup->append_single_option_line("hole_to_polyhole_twisted"); + optgroup->append_single_option_line("hole_to_polyhole", "quality_settings_precision#polyholes"); + optgroup->append_single_option_line("hole_to_polyhole_threshold", "quality_settings_precision#polyholes"); + optgroup->append_single_option_line("hole_to_polyhole_twisted", "quality_settings_precision#polyholes"); optgroup = page->new_optgroup(L("Ironing"), L"param_ironing"); - optgroup->append_single_option_line("ironing_type", "parameter/ironing"); - optgroup->append_single_option_line("ironing_pattern"); - optgroup->append_single_option_line("ironing_flow"); - optgroup->append_single_option_line("ironing_spacing"); - optgroup->append_single_option_line("ironing_inset"); - optgroup->append_single_option_line("ironing_angle"); + optgroup->append_single_option_line("ironing_type", "quality_settings_ironing#type"); + optgroup->append_single_option_line("ironing_pattern", "quality_settings_ironing#pattern"); + optgroup->append_single_option_line("ironing_flow", "quality_settings_ironing#flow"); + optgroup->append_single_option_line("ironing_spacing", "quality_settings_ironing#spacing"); + optgroup->append_single_option_line("ironing_inset", "quality_settings_ironing#inset"); + optgroup->append_single_option_line("ironing_angle", "quality_settings_ironing#angle"); optgroup = page->new_optgroup(L("Wall generator"), L"param_wall_generator"); optgroup->append_single_option_line("wall_generator", "quality_settings_wall_generator"); @@ -2148,35 +2148,35 @@ void TabPrint::build() optgroup->append_single_option_line("min_length_factor", "quality_settings_wall_generator#arachne"); optgroup = page->new_optgroup(L("Walls and surfaces"), L"param_wall_surface"); - optgroup->append_single_option_line("wall_sequence"); - optgroup->append_single_option_line("is_infill_first"); - optgroup->append_single_option_line("wall_direction"); - optgroup->append_single_option_line("print_flow_ratio"); - optgroup->append_single_option_line("top_solid_infill_flow_ratio"); - optgroup->append_single_option_line("bottom_solid_infill_flow_ratio"); - optgroup->append_single_option_line("only_one_wall_top"); - optgroup->append_single_option_line("min_width_top_surface"); - optgroup->append_single_option_line("only_one_wall_first_layer"); - optgroup->append_single_option_line("reduce_crossing_wall"); - optgroup->append_single_option_line("max_travel_detour_distance"); + optgroup->append_single_option_line("wall_sequence", "quality_settings_wall_and_surfaces#walls-printing-order"); + optgroup->append_single_option_line("is_infill_first", "quality_settings_wall_and_surfaces#print-infill-first"); + optgroup->append_single_option_line("wall_direction", "quality_settings_wall_and_surfaces#wall-loop-direction"); + optgroup->append_single_option_line("print_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); + optgroup->append_single_option_line("top_solid_infill_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); + optgroup->append_single_option_line("bottom_solid_infill_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); + optgroup->append_single_option_line("only_one_wall_top", "quality_settings_wall_and_surfaces#only-one-wall"); + optgroup->append_single_option_line("min_width_top_surface", "quality_settings_wall_and_surfaces#threshold"); + optgroup->append_single_option_line("only_one_wall_first_layer", "quality_settings_wall_and_surfaces#only-one-wall"); + optgroup->append_single_option_line("reduce_crossing_wall", "quality_settings_wall_and_surfaces#avoid-crossing-walls"); + optgroup->append_single_option_line("max_travel_detour_distance", "quality_settings_wall_and_surfaces#max-detour-length"); - optgroup->append_single_option_line("small_area_infill_flow_compensation", "small-area-infill-flow-compensation"); + optgroup->append_single_option_line("small_area_infill_flow_compensation", "quality_settings_wall_and_surfaces#small-area-flow-compensation"); Option option = optgroup->get_option("small_area_infill_flow_compensation_model"); option.opt.full_width = true; option.opt.is_code = true; option.opt.height = 15; - optgroup->append_single_option_line(option, "small-area-infill-flow-compensation"); + optgroup->append_single_option_line(option, "quality_settings_wall_and_surfaces#small-area-flow-compensation"); optgroup = page->new_optgroup(L("Bridging"), L"param_bridge"); - optgroup->append_single_option_line("bridge_flow"); - optgroup->append_single_option_line("internal_bridge_flow"); - optgroup->append_single_option_line("bridge_density"); - optgroup->append_single_option_line("internal_bridge_density"); - optgroup->append_single_option_line("thick_bridges"); - optgroup->append_single_option_line("thick_internal_bridges"); - optgroup->append_single_option_line("enable_extra_bridge_layer"); - optgroup->append_single_option_line("dont_filter_internal_bridges"); - optgroup->append_single_option_line("counterbore_hole_bridging"); + optgroup->append_single_option_line("bridge_flow", "quality_settings_bridging#flow-ratio"); + optgroup->append_single_option_line("internal_bridge_flow", "quality_settings_bridging#flow-ratio"); + optgroup->append_single_option_line("bridge_density", "quality_settings_bridging#bridge-density"); + optgroup->append_single_option_line("internal_bridge_density", "quality_settings_bridging#bridge-density"); + optgroup->append_single_option_line("thick_bridges", "quality_settings_bridging#thick-bridges"); + optgroup->append_single_option_line("thick_internal_bridges", "quality_settings_bridging#thick-bridges"); + optgroup->append_single_option_line("enable_extra_bridge_layer", "quality_settings_bridging#extra-bridge-layers"); + optgroup->append_single_option_line("dont_filter_internal_bridges", "quality_settings_bridging#filter-out-small-internal-bridges"); + optgroup->append_single_option_line("counterbore_hole_bridging", "quality_settings_bridging#bridge-counterbore-hole"); optgroup = page->new_optgroup(L("Overhangs"), L"param_overhang"); optgroup->append_single_option_line("detect_overhang_wall"); @@ -2190,24 +2190,24 @@ void TabPrint::build() page = add_options_page(L("Strength"), "custom-gcode_strength"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Walls"), L"param_wall"); - optgroup->append_single_option_line("wall_loops"); - optgroup->append_single_option_line("alternate_extra_wall"); - optgroup->append_single_option_line("detect_thin_wall"); + optgroup->append_single_option_line("wall_loops", "strength_settings_walls#wall-loop"); + optgroup->append_single_option_line("alternate_extra_wall", "strength_settings_walls#alternate-extra-wall"); + optgroup->append_single_option_line("detect_thin_wall", "strength_settings_walls#detect-thin-wall"); optgroup = page->new_optgroup(L("Top/bottom shells"), L"param_shell"); - optgroup->append_single_option_line("top_shell_layers", "strength_top-bottom_shells"); - optgroup->append_single_option_line("top_shell_thickness", "strength_top-bottom_shells"); - optgroup->append_single_option_line("top_surface_density", "strength_top-bottom_shells"); - optgroup->append_single_option_line("top_surface_pattern", "strength_top-bottom_shells"); - optgroup->append_single_option_line("bottom_shell_layers", "strength_top-bottom_shells"); - optgroup->append_single_option_line("bottom_shell_thickness", "strength_top-bottom_shells"); - optgroup->append_single_option_line("bottom_surface_density", "strength_top-bottom_shells"); - optgroup->append_single_option_line("bottom_surface_pattern", "strength_top-bottom_shells"); - optgroup->append_single_option_line("top_bottom_infill_wall_overlap", "strength_top-bottom_shells"); + optgroup->append_single_option_line("top_shell_layers", "strength_settings_top_bottom_shells#shells-layers"); + optgroup->append_single_option_line("top_shell_thickness", "strength_settings_top_bottom_shells#shell-thickness"); + optgroup->append_single_option_line("top_surface_density", "strength_settings_top_bottom_shells#surface-density"); + optgroup->append_single_option_line("top_surface_pattern", "strength_settings_top_bottom_shells#surface-pattern"); + optgroup->append_single_option_line("bottom_shell_layers", "strength_settings_top_bottom_shells#shells-layers"); + optgroup->append_single_option_line("bottom_shell_thickness", "strength_settings_top_bottom_shells#shell-thickness"); + optgroup->append_single_option_line("bottom_surface_density", "strength_settings_top_bottom_shells#surface-density"); + optgroup->append_single_option_line("bottom_surface_pattern", "strength_settings_top_bottom_shells#surface-pattern"); + optgroup->append_single_option_line("top_bottom_infill_wall_overlap", "strength_settings_top_bottom_shells#infillwall-overlap"); optgroup = page->new_optgroup(L("Infill"), L"param_infill"); optgroup->append_single_option_line("sparse_infill_density", "strength_settings_infill#sparse-infill-density"); - optgroup->append_single_option_line("fill_multiline"); // fill multiline + optgroup->append_single_option_line("fill_multiline", "strength_settings_infill##fill-multiline"); optgroup->append_single_option_line("sparse_infill_pattern", "strength_settings_infill#sparse-infill-pattern"); optgroup->append_single_option_line("infill_direction", "strength_settings_infill#direction"); optgroup->append_single_option_line("sparse_infill_rotate_template", "strength_settings_infill#rotation"); @@ -2233,36 +2233,36 @@ void TabPrint::build() optgroup->append_single_option_line("infill_wall_overlap", "strength_settings_infill#infill-wall-overlap"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); - optgroup->append_single_option_line("bridge_angle"); - optgroup->append_single_option_line("internal_bridge_angle"); // ORCA: Internal bridge angle override - optgroup->append_single_option_line("minimum_sparse_infill_area"); - optgroup->append_single_option_line("infill_combination"); - optgroup->append_single_option_line("infill_combination_max_layer_height"); - optgroup->append_single_option_line("detect_narrow_internal_solid_infill"); - optgroup->append_single_option_line("ensure_vertical_shell_thickness"); + optgroup->append_single_option_line("bridge_angle", "strength_settings_advanced#bridge-infill-direction"); + optgroup->append_single_option_line("internal_bridge_angle", "strength_settings_advanced#bridge-infill-direction"); // ORCA: Internal bridge angle override + optgroup->append_single_option_line("minimum_sparse_infill_area", "strength_settings_advanced#minimum-sparse-infill-threshold"); + optgroup->append_single_option_line("infill_combination", "strength_settings_advanced#infill-combination"); + optgroup->append_single_option_line("infill_combination_max_layer_height", "strength_settings_advanced#max-layer-height"); + optgroup->append_single_option_line("detect_narrow_internal_solid_infill", "strength_settings_advanced#detect-narrow-internal-solid-infill"); + optgroup->append_single_option_line("ensure_vertical_shell_thickness", "strength_settings_advanced#ensure-vertical-shell-thickness"); page = add_options_page(L("Speed"), "custom-gcode_speed"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Initial layer speed"), L"param_speed_first", 15); - optgroup->append_single_option_line("initial_layer_speed"); - optgroup->append_single_option_line("initial_layer_infill_speed"); - optgroup->append_single_option_line("initial_layer_travel_speed"); - optgroup->append_single_option_line("slow_down_layers"); + optgroup->append_single_option_line("initial_layer_speed", "speed_settings_initial_layer_speed#initial-layer"); + optgroup->append_single_option_line("initial_layer_infill_speed", "speed_settings_initial_layer_speed#initial-layer-infill"); + optgroup->append_single_option_line("initial_layer_travel_speed", "speed_settings_initial_layer_speed#initial-layer-travel-speed"); + optgroup->append_single_option_line("slow_down_layers", "speed_settings_initial_layer_speed#number-of-slow-layers"); optgroup = page->new_optgroup(L("Other layers speed"), L"param_speed", 15); - optgroup->append_single_option_line("outer_wall_speed"); - optgroup->append_single_option_line("inner_wall_speed"); - optgroup->append_single_option_line("small_perimeter_speed"); - optgroup->append_single_option_line("small_perimeter_threshold"); - optgroup->append_single_option_line("sparse_infill_speed"); - optgroup->append_single_option_line("internal_solid_infill_speed"); - optgroup->append_single_option_line("top_surface_speed"); - optgroup->append_single_option_line("gap_infill_speed"); - optgroup->append_single_option_line("ironing_speed"); - optgroup->append_single_option_line("support_speed"); - optgroup->append_single_option_line("support_interface_speed"); + optgroup->append_single_option_line("outer_wall_speed", "speed_settings_other_layers_speed#outer-wall"); + optgroup->append_single_option_line("inner_wall_speed", "speed_settings_other_layers_speed#inner-wall"); + optgroup->append_single_option_line("small_perimeter_speed", "speed_settings_other_layers_speed#small-perimeters"); + optgroup->append_single_option_line("small_perimeter_threshold", "speed_settings_other_layers_speed#small-perimeters-threshold"); + optgroup->append_single_option_line("sparse_infill_speed", "speed_settings_other_layers_speed#sparse-infill"); + optgroup->append_single_option_line("internal_solid_infill_speed", "speed_settings_other_layers_speed#internal-solid-infill"); + optgroup->append_single_option_line("top_surface_speed", "speed_settings_other_layers_speed#top-surface"); + optgroup->append_single_option_line("gap_infill_speed", "speed_settings_other_layers_speed#gap-infill"); + optgroup->append_single_option_line("ironing_speed", "speed_settings_other_layers_speed#ironing-speed"); + optgroup->append_single_option_line("support_speed", "speed_settings_other_layers_speed#support"); + optgroup->append_single_option_line("support_interface_speed", "speed_settings_other_layers_speed#support-interface"); optgroup = page->new_optgroup(L("Overhang speed"), L"param_overhang_speed", 15); - optgroup->append_single_option_line("enable_overhang_speed", "slow-down-for-overhang"); + optgroup->append_single_option_line("enable_overhang_speed", "speed_settings_overhang_speed#slow-down-for-overhang"); - optgroup->append_single_option_line("slowdown_for_curled_perimeters"); + optgroup->append_single_option_line("slowdown_for_curled_perimeters", "speed_settings_overhang_speed#slow-down-for-curled-perimeters"); Line line = { L("Overhang speed"), L("This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used") }; line.label_path = "slow-down-for-overhang"; line.append_option(optgroup->get_option("overhang_1_4_speed")); @@ -2277,215 +2277,215 @@ void TabPrint::build() optgroup->append_line(line); optgroup = page->new_optgroup(L("Travel speed"), L"param_travel_speed", 15); - optgroup->append_single_option_line("travel_speed"); + optgroup->append_single_option_line("travel_speed", "speed_settings_travel"); optgroup = page->new_optgroup(L("Acceleration"), L"param_acceleration", 15); - optgroup->append_single_option_line("default_acceleration"); - optgroup->append_single_option_line("outer_wall_acceleration"); - optgroup->append_single_option_line("inner_wall_acceleration"); - optgroup->append_single_option_line("bridge_acceleration"); - optgroup->append_single_option_line("sparse_infill_acceleration"); - optgroup->append_single_option_line("internal_solid_infill_acceleration"); - optgroup->append_single_option_line("initial_layer_acceleration"); - optgroup->append_single_option_line("top_surface_acceleration"); - optgroup->append_single_option_line("travel_acceleration"); - optgroup->append_single_option_line("accel_to_decel_enable"); - optgroup->append_single_option_line("accel_to_decel_factor"); + optgroup->append_single_option_line("default_acceleration", "speed_settings_acceleration#normal-printing"); + optgroup->append_single_option_line("outer_wall_acceleration", "speed_settings_acceleration#outer-wall"); + optgroup->append_single_option_line("inner_wall_acceleration", "speed_settings_acceleration#inner-wall"); + optgroup->append_single_option_line("bridge_acceleration", "speed_settings_acceleration#bridge"); + optgroup->append_single_option_line("sparse_infill_acceleration", "speed_settings_acceleration#sparse-infill"); + optgroup->append_single_option_line("internal_solid_infill_acceleration", "speed_settings_acceleration#internal-solid-infill"); + optgroup->append_single_option_line("initial_layer_acceleration", "speed_settings_acceleration#initial-layer"); + optgroup->append_single_option_line("top_surface_acceleration", "speed_settings_acceleration#top-surface"); + optgroup->append_single_option_line("travel_acceleration", "speed_settings_acceleration#travel"); + optgroup->append_single_option_line("accel_to_decel_enable", "speed_settings_acceleration"); + optgroup->append_single_option_line("accel_to_decel_factor", "speed_settings_acceleration"); optgroup = page->new_optgroup(L("Jerk(XY)"), L"param_jerk", 15); - optgroup->append_single_option_line("default_jerk"); - optgroup->append_single_option_line("outer_wall_jerk"); - optgroup->append_single_option_line("inner_wall_jerk"); - optgroup->append_single_option_line("infill_jerk"); - optgroup->append_single_option_line("top_surface_jerk"); - optgroup->append_single_option_line("initial_layer_jerk"); - optgroup->append_single_option_line("travel_jerk"); - optgroup->append_single_option_line("default_junction_deviation"); + optgroup->append_single_option_line("default_jerk", "speed_settings_jerk_xy#default"); + optgroup->append_single_option_line("outer_wall_jerk", "speed_settings_jerk_xy#outer-wall"); + optgroup->append_single_option_line("inner_wall_jerk", "speed_settings_jerk_xy#inner-wall"); + optgroup->append_single_option_line("infill_jerk", "speed_settings_jerk_xy#infill"); + optgroup->append_single_option_line("top_surface_jerk", "speed_settings_jerk_xy#top-surface"); + optgroup->append_single_option_line("initial_layer_jerk", "speed_settings_jerk_xy#initial-layer"); + optgroup->append_single_option_line("travel_jerk", "speed_settings_jerk_xy#travel"); + optgroup->append_single_option_line("default_junction_deviation", "speed_settings_jerk_xy#junction-deviation"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced", 15); - optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope", "speed_settings_extrusion_rate_smoothing"); - optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_segment_length", "speed_settings_extrusion_rate_smoothing"); - optgroup->append_single_option_line("extrusion_rate_smoothing_external_perimeter_only", "speed_settings_extrusion_rate_smoothing"); + optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope", "speed_settings_advanced"); + optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_segment_length", "speed_settings_advanced"); + optgroup->append_single_option_line("extrusion_rate_smoothing_external_perimeter_only", "speed_settings_advanced"); page = add_options_page(L("Support"), "custom-gcode_support"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Support"), L"param_support"); - optgroup->append_single_option_line("enable_support", "support"); - optgroup->append_single_option_line("support_type", "support#support-types"); - optgroup->append_single_option_line("support_style", "support#support-styles"); - optgroup->append_single_option_line("support_threshold_angle", "support#threshold-angle"); - optgroup->append_single_option_line("support_threshold_overlap", "support#threshold-angle"); - optgroup->append_single_option_line("raft_first_layer_density"); - optgroup->append_single_option_line("raft_first_layer_expansion"); - optgroup->append_single_option_line("support_on_build_plate_only"); - optgroup->append_single_option_line("support_critical_regions_only"); - optgroup->append_single_option_line("support_remove_small_overhang"); - //optgroup->append_single_option_line("enforce_support_layers"); + optgroup->append_single_option_line("enable_support", "support_settings_support"); + optgroup->append_single_option_line("support_type", "support_settings_support#type"); + optgroup->append_single_option_line("support_style", "support_settings_support#style"); + optgroup->append_single_option_line("support_threshold_angle", "support_settings_support#threshold-angle"); + optgroup->append_single_option_line("support_threshold_overlap", "support_settings_support#threshold-overlap"); + optgroup->append_single_option_line("raft_first_layer_density", "support_settings_support#initial-layer-density"); + optgroup->append_single_option_line("raft_first_layer_expansion", "support_settings_support#initial-layer-expansion"); + optgroup->append_single_option_line("support_on_build_plate_only", "support_settings_support#on-build-plate-only"); + optgroup->append_single_option_line("support_critical_regions_only", "support_settings_support#support-critical-regions-only"); + optgroup->append_single_option_line("support_remove_small_overhang", "support_settings_support#remove-small-overhangs"); + //optgroup->append_single_option_line("enforce_support_layers", "support_settings_support"); optgroup = page->new_optgroup(L("Raft"), L"param_raft"); - optgroup->append_single_option_line("raft_layers"); - optgroup->append_single_option_line("raft_contact_distance"); + optgroup->append_single_option_line("raft_layers", "support_settings_raft"); + optgroup->append_single_option_line("raft_contact_distance", "support_settings_raft"); optgroup = page->new_optgroup(L("Support filament"), L"param_support_filament"); - optgroup->append_single_option_line("support_filament", "support#support-filament"); - optgroup->append_single_option_line("support_interface_filament", "support#support-filament"); - optgroup->append_single_option_line("support_interface_not_for_body", "support#support-filament"); + optgroup->append_single_option_line("support_filament", "support_settings_filament#base"); + optgroup->append_single_option_line("support_interface_filament", "support_settings_filament#interface"); + optgroup->append_single_option_line("support_interface_not_for_body", "support_settings_filament#avoid-interface-filament-for-base"); optgroup = page->new_optgroup(L("Support ironing"), L"param_ironing"); - optgroup->append_single_option_line("support_ironing"); - optgroup->append_single_option_line("support_ironing_pattern"); - optgroup->append_single_option_line("support_ironing_flow"); - optgroup->append_single_option_line("support_ironing_spacing"); + optgroup->append_single_option_line("support_ironing", "support_settings_ironing"); + optgroup->append_single_option_line("support_ironing_pattern", "support_settings_ironing#pattern"); + optgroup->append_single_option_line("support_ironing_flow", "support_settings_ironing#flow"); + optgroup->append_single_option_line("support_ironing_spacing", "support_settings_ironing#line-spacing"); //optgroup = page->new_optgroup(L("Options for support material and raft")); // Support optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); - optgroup->append_single_option_line("support_top_z_distance", "support#top-z-distance"); - optgroup->append_single_option_line("support_bottom_z_distance", "support#bottom-z-distance"); - optgroup->append_single_option_line("tree_support_wall_count"); - optgroup->append_single_option_line("support_base_pattern", "support#base-pattern"); - optgroup->append_single_option_line("support_base_pattern_spacing", "support#base-pattern"); - optgroup->append_single_option_line("support_angle"); - optgroup->append_single_option_line("support_interface_top_layers", "support#base-pattern"); - optgroup->append_single_option_line("support_interface_bottom_layers", "support#base-pattern"); - optgroup->append_single_option_line("support_interface_pattern", "support#base-pattern"); - optgroup->append_single_option_line("support_interface_spacing", "support#base-pattern"); - optgroup->append_single_option_line("support_bottom_interface_spacing"); - optgroup->append_single_option_line("support_expansion", "support#base-pattern"); - //optgroup->append_single_option_line("support_interface_loop_pattern"); + optgroup->append_single_option_line("support_top_z_distance", "support_settings_advanced#z-distance"); + optgroup->append_single_option_line("support_bottom_z_distance", "support_settings_advanced#z-distance"); + optgroup->append_single_option_line("tree_support_wall_count", "support_settings_advanced#support-wall-loops"); + optgroup->append_single_option_line("support_base_pattern", "support_settings_advanced#base-pattern"); + optgroup->append_single_option_line("support_base_pattern_spacing", "support_settings_advanced#base-pattern-spacing"); + optgroup->append_single_option_line("support_angle", "support_settings_advanced#pattern-angle"); + optgroup->append_single_option_line("support_interface_top_layers", "support_settings_advanced#interface-layers"); + optgroup->append_single_option_line("support_interface_bottom_layers", "support_settings_advanced#interface-layers"); + optgroup->append_single_option_line("support_interface_pattern", "support_settings_advanced#interface-pattern"); + optgroup->append_single_option_line("support_interface_spacing", "support_settings_advanced#interface-spacing"); + optgroup->append_single_option_line("support_bottom_interface_spacing", "support_settings_advanced#interface-spacing"); + optgroup->append_single_option_line("support_expansion", "support_settings_advanced#normal-support-expansion"); + //optgroup->append_single_option_line("support_interface_loop_pattern", "support_settings_advanced"); - optgroup->append_single_option_line("support_object_xy_distance", "support"); - optgroup->append_single_option_line("support_object_first_layer_gap", "support"); - optgroup->append_single_option_line("bridge_no_support", "support#base-pattern"); - optgroup->append_single_option_line("max_bridge_length", "support#tree-support-only-options"); - optgroup->append_single_option_line("independent_support_layer_height", "support"); + optgroup->append_single_option_line("support_object_xy_distance", "support_settings_advanced#supportobject-xy-distance"); + optgroup->append_single_option_line("support_object_first_layer_gap", "support_settings_advanced#supportobject-first-layer-gap"); + optgroup->append_single_option_line("bridge_no_support", "support_settings_advanced#dont-support-bridges"); + optgroup->append_single_option_line("max_bridge_length", "support_settings_advanced"); + optgroup->append_single_option_line("independent_support_layer_height", "support_settings_advanced#independent-support-layer-height"); optgroup = page->new_optgroup(L("Tree supports"), L"param_support_tree"); - optgroup->append_single_option_line("tree_support_tip_diameter"); - optgroup->append_single_option_line("tree_support_branch_distance", "support#tree-support-only-options"); - optgroup->append_single_option_line("tree_support_branch_distance_organic", "support#tree-support-only-options"); - optgroup->append_single_option_line("tree_support_top_rate"); - optgroup->append_single_option_line("tree_support_branch_diameter", "support#tree-support-only-options"); - optgroup->append_single_option_line("tree_support_branch_diameter_organic", "support#tree-support-only-options"); - optgroup->append_single_option_line("tree_support_branch_diameter_angle"); - optgroup->append_single_option_line("tree_support_branch_angle", "support#tree-support-only-options"); - optgroup->append_single_option_line("tree_support_branch_angle_organic", "support#tree-support-only-options"); - optgroup->append_single_option_line("tree_support_angle_slow"); - optgroup->append_single_option_line("tree_support_adaptive_layer_height"); - optgroup->append_single_option_line("tree_support_auto_brim"); - optgroup->append_single_option_line("tree_support_brim_width"); + optgroup->append_single_option_line("tree_support_tip_diameter", "support_settings_tree#tip-diameter"); + optgroup->append_single_option_line("tree_support_branch_distance", "support_settings_tree#branch-distance"); + optgroup->append_single_option_line("tree_support_branch_distance_organic", "support_settings_tree#branch-distance"); + optgroup->append_single_option_line("tree_support_top_rate", "support_settings_tree#branch-density"); + optgroup->append_single_option_line("tree_support_branch_diameter", "support_settings_tree#branch-diameter"); + optgroup->append_single_option_line("tree_support_branch_diameter_organic", "support_settings_tree#branch-diameter"); + optgroup->append_single_option_line("tree_support_branch_diameter_angle", "support_settings_tree#branch-diameter-angle"); + optgroup->append_single_option_line("tree_support_branch_angle", "support_settings_tree#branch-angle"); + optgroup->append_single_option_line("tree_support_branch_angle_organic", "support_settings_tree#branch-angle"); + optgroup->append_single_option_line("tree_support_angle_slow", "support_settings_tree#preferred-branch-angle"); + optgroup->append_single_option_line("tree_support_adaptive_layer_height", "support_settings_tree"); + optgroup->append_single_option_line("tree_support_auto_brim", "support_settings_tree"); + optgroup->append_single_option_line("tree_support_brim_width", "support_settings_tree"); page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Prime tower"), L"param_tower"); - optgroup->append_single_option_line("enable_prime_tower"); - optgroup->append_single_option_line("prime_tower_width"); - optgroup->append_single_option_line("prime_volume"); - optgroup->append_single_option_line("prime_tower_brim_width"); - optgroup->append_single_option_line("wipe_tower_rotation_angle"); - optgroup->append_single_option_line("wipe_tower_bridging"); - optgroup->append_single_option_line("wipe_tower_extra_spacing"); - optgroup->append_single_option_line("wipe_tower_extra_flow"); - optgroup->append_single_option_line("wipe_tower_max_purge_speed"); - optgroup->append_single_option_line("wipe_tower_wall_type"); - optgroup->append_single_option_line("wipe_tower_cone_angle"); - optgroup->append_single_option_line("wipe_tower_extra_rib_length"); - optgroup->append_single_option_line("wipe_tower_rib_width"); - optgroup->append_single_option_line("wipe_tower_fillet_wall"); - optgroup->append_single_option_line("wipe_tower_no_sparse_layers"); - optgroup->append_single_option_line("single_extruder_multi_material_priming"); + optgroup->append_single_option_line("enable_prime_tower", "multimaterial_settings_prime_tower"); + optgroup->append_single_option_line("prime_tower_width", "multimaterial_settings_prime_tower#width"); + optgroup->append_single_option_line("prime_volume", "multimaterial_settings_prime_tower"); + optgroup->append_single_option_line("prime_tower_brim_width", "multimaterial_settings_prime_tower#brim-width"); + optgroup->append_single_option_line("wipe_tower_rotation_angle", "multimaterial_settings_prime_tower#wipe-tower-rotation-angle"); + optgroup->append_single_option_line("wipe_tower_bridging", "multimaterial_settings_prime_tower#maximal-bridging-distance"); + optgroup->append_single_option_line("wipe_tower_extra_spacing", "multimaterial_settings_prime_tower#wipe-tower-purge-lines-spacing"); + optgroup->append_single_option_line("wipe_tower_extra_flow", "multimaterial_settings_prime_tower#extra-flow-for-purge"); + optgroup->append_single_option_line("wipe_tower_max_purge_speed", "multimaterial_settings_prime_tower#maximum-wipe-tower-print-speed"); + optgroup->append_single_option_line("wipe_tower_wall_type", "multimaterial_settings_prime_tower#wall-type"); + optgroup->append_single_option_line("wipe_tower_cone_angle", "multimaterial_settings_prime_tower#stabilization-cone-apex-angle"); + optgroup->append_single_option_line("wipe_tower_extra_rib_length", "multimaterial_settings_prime_tower#extra-rib-length"); + optgroup->append_single_option_line("wipe_tower_rib_width", "multimaterial_settings_prime_tower#rib-width"); + optgroup->append_single_option_line("wipe_tower_fillet_wall", "multimaterial_settings_prime_tower#fillet-wall"); + optgroup->append_single_option_line("wipe_tower_no_sparse_layers", "multimaterial_settings_prime_tower#no-sparse-layers"); + optgroup->append_single_option_line("single_extruder_multi_material_priming", "multimaterial_settings_prime_tower"); optgroup = page->new_optgroup(L("Filament for Features"), L"param_filament_for_features"); - optgroup->append_single_option_line("wall_filament"); - optgroup->append_single_option_line("sparse_infill_filament"); - optgroup->append_single_option_line("solid_infill_filament"); - optgroup->append_single_option_line("wipe_tower_filament"); + optgroup->append_single_option_line("wall_filament", "multimaterial_settings_filament_for_features#walls"); + optgroup->append_single_option_line("sparse_infill_filament", "multimaterial_settings_filament_for_features#infill"); + optgroup->append_single_option_line("solid_infill_filament", "multimaterial_settings_filament_for_features#solid-infill"); + optgroup->append_single_option_line("wipe_tower_filament", "multimaterial_settings_filament_for_features#wipe-tower"); optgroup = page->new_optgroup(L("Ooze prevention"), L"param_ooze_prevention"); - optgroup->append_single_option_line("ooze_prevention"); - optgroup->append_single_option_line("standby_temperature_delta"); - optgroup->append_single_option_line("preheat_time"); - optgroup->append_single_option_line("preheat_steps"); + optgroup->append_single_option_line("ooze_prevention", "multimaterial_settings_ooze_prevention"); + optgroup->append_single_option_line("standby_temperature_delta", "multimaterial_settings_ooze_prevention#temperature-variation"); + optgroup->append_single_option_line("preheat_time", "multimaterial_settings_ooze_prevention#preheat-time"); + optgroup->append_single_option_line("preheat_steps", "multimaterial_settings_ooze_prevention#preheat-steps"); optgroup = page->new_optgroup(L("Flush options"), L"param_flush"); - optgroup->append_single_option_line("flush_into_infill", "reduce-wasting-during-filament-change#wipe-into-infill"); - optgroup->append_single_option_line("flush_into_objects", "reduce-wasting-during-filament-change#wipe-into-object"); - optgroup->append_single_option_line("flush_into_support", "reduce-wasting-during-filament-change#wipe-into-support-enabled-by-default"); + optgroup->append_single_option_line("flush_into_infill", "multimaterial_settings_flush_options#flush-into-objects-infill"); + optgroup->append_single_option_line("flush_into_objects", "multimaterial_settings_flush_options"); + optgroup->append_single_option_line("flush_into_support", "multimaterial_settings_flush_options#flush-into-objects-support"); optgroup = page->new_optgroup(L("Advanced"), L"advanced"); - optgroup->append_single_option_line("interlocking_beam"); - optgroup->append_single_option_line("interface_shells"); - optgroup->append_single_option_line("mmu_segmented_region_max_width"); - optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth"); - optgroup->append_single_option_line("interlocking_beam_width"); - optgroup->append_single_option_line("interlocking_orientation"); - optgroup->append_single_option_line("interlocking_beam_layer_count"); - optgroup->append_single_option_line("interlocking_depth"); - optgroup->append_single_option_line("interlocking_boundary_avoidance"); + optgroup->append_single_option_line("interlocking_beam", "multimaterial_settings_advanced#interlocking-beam"); + optgroup->append_single_option_line("interface_shells", "multimaterial_settings_advanced#interface-shells"); + optgroup->append_single_option_line("mmu_segmented_region_max_width", "multimaterial_settings_advanced#maximum-width-of-segmented-region"); + optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth", "multimaterial_settings_advanced#interlocking-depth-of-segmented-region"); + optgroup->append_single_option_line("interlocking_beam_width", "multimaterial_settings_advanced#interlocking-beam-width"); + optgroup->append_single_option_line("interlocking_orientation", "multimaterial_settings_advanced#interlocking-direction"); + optgroup->append_single_option_line("interlocking_beam_layer_count", "multimaterial_settings_advanced#interlocking-beam-layers"); + optgroup->append_single_option_line("interlocking_depth", "multimaterial_settings_advanced#interlocking-depth"); + optgroup->append_single_option_line("interlocking_boundary_avoidance", "multimaterial_settings_advanced#interlocking-boundary-avoidance"); page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Skirt"), L"param_skirt"); - optgroup->append_single_option_line("skirt_loops"); - optgroup->append_single_option_line("skirt_type"); - optgroup->append_single_option_line("min_skirt_length"); - optgroup->append_single_option_line("skirt_distance"); - optgroup->append_single_option_line("skirt_start_angle"); - optgroup->append_single_option_line("skirt_speed"); - optgroup->append_single_option_line("skirt_height"); - optgroup->append_single_option_line("draft_shield"); - optgroup->append_single_option_line("single_loop_draft_shield"); +optgroup->append_single_option_line("skirt_loops", "others_settings_skirt#loops"); + optgroup->append_single_option_line("skirt_type", "others_settings_skirt#type"); + optgroup->append_single_option_line("min_skirt_length", "others_settings_skirt#minimum-extrusion-length"); + optgroup->append_single_option_line("skirt_distance", "others_settings_skirt#distance"); + optgroup->append_single_option_line("skirt_start_angle", "others_settings_skirt#start-point"); + optgroup->append_single_option_line("skirt_speed", "others_settings_skirt#speed"); + optgroup->append_single_option_line("skirt_height", "others_settings_skirt#height"); + optgroup->append_single_option_line("draft_shield", "others_settings_skirt#shield"); + optgroup->append_single_option_line("single_loop_draft_shield", "others_settings_skirt#single-loop-after-first-layer"); optgroup = page->new_optgroup(L("Brim"), L"param_adhension"); - optgroup->append_single_option_line("brim_type", "auto-brim"); - optgroup->append_single_option_line("brim_width", "auto-brim#manual"); - optgroup->append_single_option_line("brim_object_gap", "auto-brim#brim-object-gap"); - optgroup->append_single_option_line("brim_ears_max_angle"); - optgroup->append_single_option_line("brim_ears_detection_length"); + optgroup->append_single_option_line("brim_type", "others_settings_brim#type"); + optgroup->append_single_option_line("brim_width", "others_settings_brim#width"); + optgroup->append_single_option_line("brim_object_gap", "others_settings_brim#brim-object-gap"); + optgroup->append_single_option_line("brim_ears_max_angle", "others_settings_brim#ear-max-angle"); + optgroup->append_single_option_line("brim_ears_detection_length", "others_settings_brim#ear-detection-radius"); optgroup = page->new_optgroup(L("Special mode"), L"param_special"); - optgroup->append_single_option_line("slicing_mode"); - optgroup->append_single_option_line("print_sequence", "sequent-print"); - optgroup->append_single_option_line("print_order"); - optgroup->append_single_option_line("spiral_mode", "spiral-vase"); - optgroup->append_single_option_line("spiral_mode_smooth", "spiral-vase#smooth"); - optgroup->append_single_option_line("spiral_mode_max_xy_smoothing", "spiral-vase#max-xy-smoothing"); - optgroup->append_single_option_line("spiral_starting_flow_ratio", "spiral-vase#starting-flow-ratio"); - optgroup->append_single_option_line("spiral_finishing_flow_ratio", "spiral-vase#finishing-flow-ratio"); + optgroup->append_single_option_line("slicing_mode", "others_settings_special_mode#slicing-mode"); + optgroup->append_single_option_line("print_sequence", "others_settings_special_mode#print-sequence"); + optgroup->append_single_option_line("print_order", "others_settings_special_mode#intra-layer-order"); + optgroup->append_single_option_line("spiral_mode", "others_settings_special_mode#spiral-vase"); + optgroup->append_single_option_line("spiral_mode_smooth", "others_settings_special_mode#smooth-spiral"); + optgroup->append_single_option_line("spiral_mode_max_xy_smoothing", "others_settings_special_mode#max-xy-smoothing"); + optgroup->append_single_option_line("spiral_starting_flow_ratio", "others_settings_special_mode#spiral-starting-flow-ratio"); + optgroup->append_single_option_line("spiral_finishing_flow_ratio", "others_settings_special_mode#spiral-finishing-flow-ratio"); - optgroup->append_single_option_line("timelapse_type", "Timelapse"); + optgroup->append_single_option_line("timelapse_type", "others_settings_special_mode#timelapse"); - optgroup->append_single_option_line("fuzzy_skin"); - optgroup->append_single_option_line("fuzzy_skin_noise_type"); - optgroup->append_single_option_line("fuzzy_skin_point_distance"); - optgroup->append_single_option_line("fuzzy_skin_thickness"); - optgroup->append_single_option_line("fuzzy_skin_scale"); - optgroup->append_single_option_line("fuzzy_skin_octaves"); - optgroup->append_single_option_line("fuzzy_skin_persistence"); - optgroup->append_single_option_line("fuzzy_skin_first_layer"); + optgroup->append_single_option_line("fuzzy_skin", "others_settings_special_mode#fuzzy-skin"); + optgroup->append_single_option_line("fuzzy_skin_noise_type", "others_settings_special_mode#fuzzy-skin-mode"); + optgroup->append_single_option_line("fuzzy_skin_point_distance", "others_settings_special_mode#point-distance"); + optgroup->append_single_option_line("fuzzy_skin_thickness", "others_settings_special_mode#skin-thickness"); + optgroup->append_single_option_line("fuzzy_skin_scale", "others_settings_special_mode#skin-feature-size"); + optgroup->append_single_option_line("fuzzy_skin_octaves", "others_settings_special_mode#skin-noise-octaves"); + optgroup->append_single_option_line("fuzzy_skin_persistence", "others_settings_special_mode#skin-noise-persistence"); + optgroup->append_single_option_line("fuzzy_skin_first_layer", "others_settings_special_mode#apply-fuzzy-skin-to-first-layer"); optgroup = page->new_optgroup(L("G-code output"), L"param_gcode"); - optgroup->append_single_option_line("reduce_infill_retraction"); - optgroup->append_single_option_line("gcode_add_line_number"); - optgroup->append_single_option_line("gcode_comments"); - optgroup->append_single_option_line("gcode_label_objects"); - optgroup->append_single_option_line("exclude_object"); + optgroup->append_single_option_line("reduce_infill_retraction", "others_settings_g_code_output#reduce-infill-retraction"); + optgroup->append_single_option_line("gcode_add_line_number", "others_settings_g_code_output#add-line-number"); + optgroup->append_single_option_line("gcode_comments", "others_settings_g_code_output#verbose-g-code"); + optgroup->append_single_option_line("gcode_label_objects", "others_settings_g_code_output#label-objects"); + optgroup->append_single_option_line("exclude_object", "others_settings_g_code_output#exclude-objects"); option = optgroup->get_option("filename_format"); // option.opt.full_width = true; option.opt.is_code = true; option.opt.multiline = true; // option.opt.height = 5; - optgroup->append_single_option_line(option); + optgroup->append_single_option_line(option, "others_settings_g_code_output#filename-format"); optgroup = page->new_optgroup(L("Post-processing Scripts"), L"param_gcode", 0); option = optgroup->get_option("post_process"); option.opt.full_width = true; option.opt.is_code = true; option.opt.height = 15; - optgroup->append_single_option_line(option); + optgroup->append_single_option_line(option, "others_settings_post_processing_scripts"); optgroup = page->new_optgroup(L("Notes"), "note", 0); option = optgroup->get_option("notes"); option.opt.full_width = true; option.opt.height = 25;//250; - optgroup->append_single_option_line(option); + optgroup->append_single_option_line(option, "others_settings_notes"); // Orca: hide the dependencies tab for process for now. The UI is not ready yet. // page = add_options_page(L("Dependencies"), "param_profile_dependencies"); // icons ready @@ -4228,7 +4228,7 @@ PageShp TabPrinter::build_kinematics_page() optgroup->append_single_option_line("emit_machine_limits_to_gcode"); // resonance avoidance ported over from qidi slicer - optgroup = page->new_optgroup(L("Resonance Avoidance")); + optgroup = page->new_optgroup(L("Resonance Avoidance"), "param_resonance_avoidance"); optgroup->append_single_option_line("resonance_avoidance"); // Resonance‑avoidance speed inputs { diff --git a/src/slic3r/GUI/Widgets/Button.cpp b/src/slic3r/GUI/Widgets/Button.cpp index 8ebddd95b6..f0ba5e967d 100644 --- a/src/slic3r/GUI/Widgets/Button.cpp +++ b/src/slic3r/GUI/Widgets/Button.cpp @@ -133,7 +133,10 @@ bool Button::Enable(bool enable) return result; } -void Button::SetCanFocus(bool canFocus) { this->canFocus = canFocus; } +void Button::SetCanFocus(bool canFocus) { + StaticBox::SetCanFocus(canFocus); + this->canFocus = canFocus; +} void Button::SetValue(bool state) { diff --git a/src/slic3r/GUI/Widgets/LabeledStaticBox.cpp b/src/slic3r/GUI/Widgets/LabeledStaticBox.cpp index e87f98a98b..6e2357cf43 100644 --- a/src/slic3r/GUI/Widgets/LabeledStaticBox.cpp +++ b/src/slic3r/GUI/Widgets/LabeledStaticBox.cpp @@ -75,6 +75,7 @@ bool LabeledStaticBox::Create( SetForegroundColour( text_color.colorForStates(state_handler.states())); SetBorderColor( border_color.colorForStates(state_handler.states())); SetCanFocus(false); + DisableFocusFromKeyboard(); return true; } diff --git a/src/slic3r/GUI/Widgets/RadioGroup.cpp b/src/slic3r/GUI/Widgets/RadioGroup.cpp index 879481bb63..a5f63a9ac0 100644 --- a/src/slic3r/GUI/Widgets/RadioGroup.cpp +++ b/src/slic3r/GUI/Widgets/RadioGroup.cpp @@ -8,14 +8,15 @@ RadioGroup::RadioGroup( long direction, int row_col_limit ) - : wxPanel(parent, wxID_ANY) + : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER) // ensure wxTAB_TRAVERSAL not applied by default , m_on( this, "radio_on" , 18) , m_off( this, "radio_off" , 18) , m_on_hover( this, "radio_on_hover" , 18) , m_off_hover(this, "radio_off_hover", 18) - , m_disabled( this, "radio_off_hover", 18) + , m_disabled( this, "radio_disabled" , 18) , m_selectedIndex(0) , m_focused(false) + , m_enabled(true) { Create(parent, labels, direction, row_col_limit); } @@ -28,102 +29,103 @@ void RadioGroup::Create( ) { m_labels = labels; + m_item_count = m_labels.size(); + auto bg = parent->GetBackgroundColour(); this->SetBackgroundColour(bg); + + m_text_color = StateColor( + std::pair(wxColour("#6B6A6A"), (int)StateColor::Disabled), + std::pair(wxColour("#363636"), (int)StateColor::Enabled) + ); + + m_focus_color = StateColor( + std::pair(bg , (int)StateColor::NotFocused), + std::pair(wxColour("#009688"), (int)StateColor::Focused) + ); + auto bmp_size = m_on.GetBmpSize(); - int item_count = m_labels.size(); - int item_limit = row_col_limit < 0 ? 1 : row_col_limit > item_count ? item_count : row_col_limit; - int count = (int(item_count / item_limit) + (item_count % item_limit)); + int item_limit = row_col_limit < 0 ? 1 : row_col_limit > m_item_count ? m_item_count : row_col_limit; + int count = (int(m_item_count / item_limit) + (m_item_count % item_limit)); int rows = (direction & wxHORIZONTAL) ? item_limit : count; int cols = (direction & wxHORIZONTAL) ? count : item_limit; wxFlexGridSizer* f_sizer = new wxFlexGridSizer(rows, cols, 0, 0); SetDoubleBuffered(true); - AcceptsFocusFromKeyboard(); - Bind(wxEVT_SET_FOCUS ,([this](wxFocusEvent e) {m_focused = true ;Refresh(); e.Skip();})); - Bind(wxEVT_KILL_FOCUS,([this](wxFocusEvent e) {m_focused = false;Refresh(); e.Skip();})); - Bind(wxEVT_PAINT,([this](wxPaintEvent e) { - wxPaintDC dc(this); - dc.Clear(); - dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#009688")), 1, wxPENSTYLE_SOLID)); - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRectangle( - m_focused ? wxRect( - m_radioButtons[GetSelection()]->GetRect().GetTopLeft() - wxPoint(1, 3), - m_labelButtons[GetSelection()]->GetRect().GetBottomRight() + wxPoint(4, 1) - ) : wxRect(0,0,0,0) - ); - if (m_focused) // Required to take focus again since Refresh causing lossing focus - SetFocus(); - })); - // DPIDialog's uses wxEVT_CHAR_HOOK - Bind(wxEVT_CHAR_HOOK, ([this](wxKeyEvent&e){ - int k = e.GetKeyCode(); - bool is_next = (k == WXK_DOWN || k == WXK_RIGHT); - bool is_prev = (k == WXK_LEFT || k == WXK_UP); - if(m_focused){ - if (is_next) SelectNext(); - else if (is_prev) SelectPrevious(); - e.Skip(!(is_next || is_prev)); - }else{ - e.Skip(); - } - })); - - for (int i = 0; i < item_count; ++i){ + for (int i = 0; i < m_item_count; ++i){ auto rb = new wxStaticBitmap(this, wxID_ANY, m_off.bmp(), wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxNO_BORDER); m_radioButtons.push_back(rb); - rb->Bind(wxEVT_LEFT_DOWN ,([this, i](wxMouseEvent e) {OnClick(i) ; e.Skip();})); + rb->Bind(wxEVT_LEFT_DOWN ,([this, i](wxMouseEvent e) {SetSelection(i, true) ; e.Skip();})); rb->Bind(wxEVT_ENTER_WINDOW,([this, i](wxMouseEvent e) {SetRadioIcon(i, true) ; e.Skip();})); rb->Bind(wxEVT_LEAVE_WINDOW,([this, i](wxMouseEvent e) { // prevent removing hover effect while switching between button and its text - if(wxFindWindowAtPoint(wxGetMousePosition())->GetId() != m_labelButtons[i]->GetId()) + auto win = wxFindWindowAtPoint(wxGetMousePosition()); + if(!win || win->GetId() != m_labelButtons[i]->GetId()) SetRadioIcon(i, false); e.Skip(); })); - auto tx = new wxStaticText(this, wxID_ANY, " " + m_labels[i], wxDefaultPosition, wxDefaultSize); - tx->SetForegroundColour(wxColour("#363636")); + auto tx = new Button(this, m_labels[i]); + if(i != 0) // one focusable control must exist. wxPanel starts taking focus if there is no focusable control + tx->SetCanFocus(false); + tx->SetPaddingSize(FromDIP(wxSize(5,2))); + tx->SetBackgroundColor(bg); + tx->SetCornerRadius(0); + tx->SetBorderWidth(FromDIP(1)); + tx->SetBorderColor(m_focus_color); tx->SetFont(Label::Body_14); - m_labelButtons.push_back(tx); - tx->Bind(wxEVT_LEFT_DOWN ,([this, i](wxMouseEvent e) {OnClick(i) ; e.Skip();})); - tx->Bind(wxEVT_ENTER_WINDOW,([this, i](wxMouseEvent e) {SetRadioIcon(i, true) ; e.Skip();})); - tx->Bind(wxEVT_LEAVE_WINDOW,([this, i](wxMouseEvent e) { + tx->SetTextColor(m_text_color); + tx->Bind(wxEVT_BUTTON ,([this, i](wxCommandEvent e) {SetSelection(i, true) ; e.Skip();})); + tx->Bind(wxEVT_ENTER_WINDOW,([this, i](wxMouseEvent e) {SetRadioIcon(i, true) ; e.Skip();})); + tx->Bind(wxEVT_LEAVE_WINDOW,([this, i](wxMouseEvent e) { // prevent removing hover effect while switching between button and its text - if(wxFindWindowAtPoint(wxGetMousePosition())->GetId() != m_radioButtons[i]->GetId()) + auto win = wxFindWindowAtPoint(wxGetMousePosition()); + if(!win || win->GetId() != m_radioButtons[i]->GetId()) SetRadioIcon(i, false); e.Skip(); })); + tx->Bind(wxEVT_CHAR_HOOK, ([this, tx](wxKeyEvent&e){ + if(tx->HasFocus()){ + int k = e.GetKeyCode(); + bool is_next = (k == WXK_DOWN || k == WXK_RIGHT); + bool is_prev = (k == WXK_LEFT || k == WXK_UP); + if (is_next) SelectNext(); + else if (is_prev) SelectPrevious(); + e.Skip(!(is_next || is_prev)); + }else{ + e.Skip(); + } + })); + m_labelButtons.push_back(tx); wxBoxSizer* radio_sizer = new wxBoxSizer(wxHORIZONTAL); - radio_sizer->Add(rb, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 1); - radio_sizer->Add(tx, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, this->FromDIP(15)); + radio_sizer->Add(rb, 0, wxALIGN_CENTER_VERTICAL); + radio_sizer->Add(tx, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, this->FromDIP(10)); f_sizer->Add(radio_sizer, 0, wxTOP | wxBOTTOM, this->FromDIP(4)); } SetSelection(m_selectedIndex); SetSizer(f_sizer); } -void RadioGroup::OnClick(int i) +void RadioGroup::SetSelection(int index, bool focus) { - m_focused = true; // prevents 2 time refresh - SetSelection(i); -} - -void RadioGroup::SetSelection(int index) -{ - if (index >= 0 && index < static_cast(m_labels.size())){ + if (index >= 0 && index < m_item_count){ + int prev_index = m_selectedIndex; + if(index != prev_index){ // prevent no focusable item on first creation. wxPanel starts taking focus if there is no focusable control + m_labelButtons[index]->SetCanFocus(true); + m_labelButtons[prev_index]->SetCanFocus(false); + } + if(focus) + m_labelButtons[index]->SetFocus(); m_selectedIndex = index; - for (size_t i = 0; i < m_labels.size(); ++i) - SetRadioIcon(i, HasFocus() && i == m_selectedIndex); + for (size_t i = 0; i < m_item_count; ++i) + SetRadioIcon(i, m_labelButtons[index]->HasFocus() && i == m_selectedIndex); wxCommandEvent evt(wxEVT_COMMAND_RADIOBOX_SELECTED, GetId()); evt.SetInt(index); evt.SetString(m_labels[index]); GetEventHandler()->ProcessEvent(evt); - - Refresh(); // refresh on every change } } @@ -134,16 +136,47 @@ int RadioGroup::GetSelection() void RadioGroup::SelectNext(bool focus) { - SetSelection(m_selectedIndex + 1 > (m_radioButtons.size() - 1) ? 0 : m_selectedIndex + 1); + SetSelection(m_selectedIndex + 1 > (m_radioButtons.size() - 1) ? 0 : m_selectedIndex + 1, focus); } void RadioGroup::SelectPrevious(bool focus) { - SetSelection(m_selectedIndex - 1 < 0 ? (m_radioButtons.size() - 1) : m_selectedIndex - 1); + SetSelection(m_selectedIndex - 1 < 0 ? (m_radioButtons.size() - 1) : m_selectedIndex - 1, focus); } void RadioGroup::SetRadioIcon(int i, bool hover) { - auto icon = m_selectedIndex == i ? (hover ? m_on_hover : m_on) : (hover ? m_off_hover : m_off); + auto icon = !m_enabled ? m_disabled : m_selectedIndex == i ? (hover ? m_on_hover : m_on) : (hover ? m_off_hover : m_off); m_radioButtons[i]->SetBitmap(icon.bmp()); +} + +bool RadioGroup::Enable(bool enable) +{ + m_enabled = enable; + bool result = wxPanel::Enable(enable); + + if (result) { + for (size_t i = 0; i < m_item_count; ++i){ + SetRadioIcon(i, false); + m_labelButtons[i]->Enable(enable); // normally disabling parent should do this but not + } + + wxCommandEvent e(EVT_ENABLE_CHANGED); + e.SetEventObject(this); + GetEventHandler()->ProcessEvent(e); + } + + return result; +}; + +// is focused + +bool RadioGroup::Disable() {return RadioGroup::Enable(false);}; + +bool RadioGroup::IsEnabled(){return m_enabled;}; + +void RadioGroup::SetRadioTooltip(int i, wxString tooltip) +{ + m_radioButtons[i]->SetToolTip(tooltip); + m_labelButtons[i]->SetToolTip(tooltip); } \ No newline at end of file diff --git a/src/slic3r/GUI/Widgets/RadioGroup.hpp b/src/slic3r/GUI/Widgets/RadioGroup.hpp index f3e14aa3aa..93dc1df73f 100644 --- a/src/slic3r/GUI/Widgets/RadioGroup.hpp +++ b/src/slic3r/GUI/Widgets/RadioGroup.hpp @@ -10,6 +10,8 @@ #include #include +#include "Button.hpp" + class RadioGroup : public wxPanel { @@ -32,32 +34,41 @@ public: int GetSelection(); - void SetSelection(int index); + void SetSelection(int index, bool focus = false); void SelectNext(bool focus = true); void SelectPrevious(bool focus = true); + bool Enable(bool enable = true) override; + + bool IsEnabled(); + + bool Disable(); + + void SetRadioTooltip(int i, wxString tooltip); + private: std::vector m_labels; std::vector m_radioButtons; - std::vector m_labelButtons; + std::vector m_labelButtons; int m_selectedIndex; + int m_item_count; bool m_focused; + bool m_enabled; + + StateColor m_focus_color; + StateColor m_text_color; + ScalableBitmap m_on; ScalableBitmap m_off; ScalableBitmap m_on_hover; ScalableBitmap m_off_hover; ScalableBitmap m_disabled; - void OnClick(int i); - - void UpdateFocus(bool focus); - void SetRadioIcon(int i, bool hover); - void OnKeyDown(wxKeyEvent& e); }; -#endif // !slic3r_GUI_RADIOGROUP_hpp_ +#endif // !slic3r_GUI_RADIOGROUP_hpp_ \ No newline at end of file diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 58045c57b5..3194909ae5 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -7,6 +7,7 @@ #include "I18N.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" +#include "format.hpp" #include "libslic3r/Color.hpp" #include "Widgets/Button.hpp" #include "Widgets/StaticLine.hpp" @@ -14,6 +15,7 @@ #include "slic3r/Utils/ColorSpaceConvert.hpp" #include "MainFrame.hpp" #include "libslic3r/Config.hpp" +#include "Widgets/Label.hpp" using namespace Slic3r; using namespace Slic3r::GUI; @@ -115,10 +117,24 @@ RammingPanel::RammingPanel(wxWindow* parent, const std::string& parameters) update_ui(m_chart); sizer_chart->Add(m_chart, 0, wxALL, 5); - m_widget_time = new SpinInput(this, wxEmptyString, "ms" , wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 0 , 5000 , 3000, 500); - m_widget_volume = new SpinInput(this, wxEmptyString, "mm³", wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 0 , 10000, 0 ); - m_widget_ramming_line_width_multiplicator = new SpinInput(this, wxEmptyString, "%" , wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 10, 200 , 100 ); - m_widget_ramming_step_multiplicator = new SpinInput(this, wxEmptyString, "%" , wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 10, 200 , 100 ); + // Create help text for constant flow rate dragging + std::string ctrl_str = GUI::shortkey_ctrl_prefix(); + if (!ctrl_str.empty() && ctrl_str.back() == '+') + ctrl_str.pop_back(); // Remove trailing '+' + wxString message = format_wxstr(_L("For constant flow rate, hold %1% while dragging."), ctrl_str); + Label* label = new Label(this, wxEmptyString); + wxClientDC dc(label); + wxString multiline_message; + label->SetFont(Label::Body_14); + label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636"))); + label->split_lines(dc, scale(470), message, multiline_message); + label->SetLabel(multiline_message); + sizer_chart->Add(label, 0, wxEXPAND | wxALL, 5); + + m_widget_time = new SpinInput(this, wxEmptyString, "ms" , wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 0 , 5000 , 3000, 250); + m_widget_volume = new SpinInput(this, wxEmptyString, wxString::FromUTF8("mm³"), wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 0 , 10000, 0 ); + m_widget_ramming_line_width_multiplicator = new SpinInput(this, wxEmptyString, "%" , wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 10, 300 , 100 ); + m_widget_ramming_step_multiplicator = new SpinInput(this, wxEmptyString, "%" , wxDefaultPosition, wxSize(scale(120), -1), wxSP_ARROW_KEYS, 10, 300 , 100 ); auto add_title = [this, sizer_param](wxString label){ auto title = new StaticLine(this, 0, label); diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp index cfe8035844..b902939573 100644 --- a/src/slic3r/GUI/calib_dlg.cpp +++ b/src/slic3r/GUI/calib_dlg.cpp @@ -306,7 +306,7 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat // start temp auto start_temp_sizer = new wxBoxSizer(wxHORIZONTAL); auto start_temp_text = new wxStaticText(this, wxID_ANY, start_temp_str, wxDefaultPosition, st_size, wxALIGN_LEFT); - m_tiStart = new TextInput(this, std::to_string(230), "\u2103" /* °C */, "", wxDefaultPosition, ti_size); + m_tiStart = new TextInput(this, std::to_string(230), wxString::FromUTF8("\u2103") /* °C */, "", wxDefaultPosition, ti_size); m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); start_temp_sizer->Add(start_temp_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); start_temp_sizer->Add(m_tiStart , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); @@ -315,7 +315,7 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat // end temp auto end_temp_sizer = new wxBoxSizer(wxHORIZONTAL); auto end_temp_text = new wxStaticText(this, wxID_ANY, end_temp_str, wxDefaultPosition, st_size, wxALIGN_LEFT); - m_tiEnd = new TextInput(this, std::to_string(190), "\u2103" /* °C */, "", wxDefaultPosition, ti_size); + m_tiEnd = new TextInput(this, std::to_string(190), wxString::FromUTF8("\u2103") /* °C */, "", wxDefaultPosition, ti_size); m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); end_temp_sizer->Add(end_temp_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); end_temp_sizer->Add(m_tiEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); @@ -324,7 +324,7 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat // temp step auto temp_step_sizer = new wxBoxSizer(wxHORIZONTAL); auto temp_step_text = new wxStaticText(this, wxID_ANY, temp_step_str, wxDefaultPosition, st_size, wxALIGN_LEFT); - m_tiStep = new TextInput(this, wxString::FromDouble(5),"\u2103" /* °C */, "", wxDefaultPosition, ti_size); + m_tiStep = new TextInput(this, wxString::FromDouble(5), wxString::FromUTF8("\u2103") /* °C */, "", wxDefaultPosition, ti_size); m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); m_tiStep->Enable(false); temp_step_sizer->Add(temp_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); @@ -353,7 +353,9 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat if(!ti->GetTextCtrl()->GetValue().ToULong(&t)) return; if(t> 350 || t < 170){ - MessageDialog msg_dlg(nullptr, wxString::Format(L"Supported range: 170%s - 350%s","\u2103" /* °C */,"\u2103" /* °C */), wxEmptyString, wxICON_WARNING | wxOK); + MessageDialog msg_dlg(nullptr, wxString::Format(L"Supported range: 170%s - 350%s", + wxString::FromUTF8("\u2103") /* °C */, wxString::FromUTF8("\u2103") /* °C */), + wxEmptyString, wxICON_WARNING | wxOK); msg_dlg.ShowModal(); if(t > 350) t = 350; @@ -479,7 +481,7 @@ MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWin // start vol auto start_vol_sizer = new wxBoxSizer(wxHORIZONTAL); auto start_vol_text = new wxStaticText(this, wxID_ANY, start_vol_str, wxDefaultPosition, st_size, wxALIGN_LEFT); - m_tiStart = new TextInput(this, std::to_string(5), "mm³/s", "", wxDefaultPosition, ti_size); + m_tiStart = new TextInput(this, std::to_string(5), wxString::FromUTF8("mm³/s"), "", wxDefaultPosition, ti_size); m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); start_vol_sizer->Add(start_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); @@ -489,7 +491,7 @@ MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWin // end vol auto end_vol_sizer = new wxBoxSizer(wxHORIZONTAL); auto end_vol_text = new wxStaticText(this, wxID_ANY, end_vol_str, wxDefaultPosition, st_size, wxALIGN_LEFT); - m_tiEnd = new TextInput(this, std::to_string(20), "mm³/s", "", wxDefaultPosition, ti_size); + m_tiEnd = new TextInput(this, std::to_string(20), wxString::FromUTF8("mm³/s"), "", wxDefaultPosition, ti_size); m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); end_vol_sizer->Add(end_vol_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); end_vol_sizer->Add(m_tiEnd , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); @@ -498,7 +500,7 @@ MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWin // vol step auto vol_step_sizer = new wxBoxSizer(wxHORIZONTAL); auto vol_step_text = new wxStaticText(this, wxID_ANY, vol_step_str, wxDefaultPosition, st_size, wxALIGN_LEFT); - m_tiStep = new TextInput(this, wxString::FromDouble(0.5), "mm³/s", "", wxDefaultPosition, ti_size); + m_tiStep = new TextInput(this, wxString::FromDouble(0.5), wxString::FromUTF8("mm³/s"), "", wxDefaultPosition, ti_size); m_tiStart->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); vol_step_sizer->Add(vol_step_text, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2)); vol_step_sizer->Add(m_tiStep , 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));