FullControlXYZ / fullcontrol

Python version of FullControl for toolpath design (and more) - the readme below is best source of information
GNU General Public License v3.0
672 stars 78 forks source link

Add Prusa Mk3.9/Mk4 configuration #81

Closed VorpalBlade closed 7 months ago

VorpalBlade commented 7 months ago

This takes the existing prusa i3 and do the minimum modifications needed for Prusa Mk3.9/Mk4 printers. Note that this is pretty different from what PrusaSlicer generates for these printers still.

VorpalBlade commented 7 months ago

NOTE: Not ready for merging, but would appreciate feedback on approach taken, plus some hints on how I can test this on the pin support challenge (code for that seems to be missing in the repository, and I don't want to do a large print for this). In fact, where is the website interface code? Not in this repo?

fullcontrol-xyz commented 7 months ago

Excellent thanks!

Looks nice and concise.

Can you initially test using something v simple like the box in the design template, or the ripple-texture demo?

I just need to tidy up the other website models, to make them easy to understand, since I may originally have coded them in an unintuitive way. And some aspects/checks in the designs are not required when using python. I will release them soon.

Website code is in a completely different repo. Also planned to be released as soon as I have time. That's got no new 'FullControl' stuff in though (except the models). It's mostly a threejs visualisation script and html/js (Svelte)

VorpalBlade commented 7 months ago

Website code is in a completely different repo. Also planned to be released as soon as I have time. That's got no new 'FullControl' stuff in though (except the models). It's mostly a threejs visualisation script and html/js (Svelte)

Would be cool to integrate that into the notebooks, the live preview in the notebooks are kind of limited comparatively. I'm not much of a notebook person (nor a frontend dev) so I can't really comment on if this is feasible. I mostly write C++ and Rust (and some Python for test harnesses).

VorpalBlade commented 7 months ago

The ripple texture is printing currently

VorpalBlade commented 7 months ago

So this is the relevant part of the PrusaSlicer start g-code for selecting probing temp. Quite complicated!

M104 T0 S{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; set extruder temp for bed leveling
M109 T0 R{((filament_notes[0]=~/.*HT_MBL10.*/) ? (first_layer_temperature[0] - 10) : (filament_type[0] == "PC" or filament_type[0] == "PA") ? (first_layer_temperature[0] - 25) : (filament_type[0] == "FLEX") ? 210 : (filament_type[0]=~/.*PET.*/) ? 175 : 170)} ; wait for temp

Summary:

VorpalBlade commented 7 months ago

Printed fine, though has some slight stringing (which makes no sense to me, for a vase mode print). The (PLA) filament was several years old though.

AndyGlx commented 7 months ago

Excellent! I'll merge it.

Exposing nozzle_probe_temp to the end user seems simplest (I think it is already naturally exposed, since the designed can add any value they like to the initialization_data dictionary - but I'll check). Giving it a hardcode default value of 175 seems reasonable. Most people will never even need to know it exists, but it's there if someone definitely wants a different temperature for a specific material they can simply over-ride it.

Yep getting the js visualiser into a nice usable format is one of the intentions. The code for that is very separate from the code for the website. It is possible to do it in a jupyter notebook with js running for one cell, but I'm not sure if that will practically work without issue. Something to be tested! But if not, running on locally installed python will be nice.

P.s. the stringing may be because the ripple demo makes the nozzle move in and out with a wavy patter and prints quite thick extrudates. So, the nozzle edges may slightly touch some bit of polymer somehow when doing the ripple. Maybe if it's extruding a really thick wall.

AndyGlx commented 7 months ago

Success! Adding 'nozzle_probe_temp': 120, to the initialization_data in GcodeControl object works to change the probe temperature in gcode from default 170.

Thanks very much for working through this and adding it as a printer option! It's really useful.

I've recently put in a good chunk of time to get the cura printer profiles importable into FullControl, which will give users a huge selection! (release in a week or two I hope) BUT there is no mk4 in cura, which I was peeved about cos I know people want it. But you solved the problem!

image

VorpalBlade commented 6 months ago

Hi, I wanted to use this for having another go at the pin support challenge, but the new profile is not up on the website? What are my options given that the pin support ipynb is not in this repo?

fullcontrol-xyz commented 6 months ago

I need to add the pinsupport challenge model to this repo (long overdue!). Until then, you can generate the GCode for the existing prusa profile and copy/paste the correct start/end GCode.