SuperSlicer
SuperSlicer copied to clipboard
Pressure advance calibration tool
new pressure advance calibration tool ! - yay :)
i've read how orca does this, and i wanted it to do it differently. not a fan of the "custom gcode lines"
per_objects_gcode
i'm hoping to be a powerfull tool that can be used in later features / calibration tools
example;
- user configures it to add the 'camera snapshot macro' it would take a snapshot per that object
- user configures it to make the printer 'beep' when it prints that object.
- configures it to call a klipper macro to change toolhead.
theres a fair few areas where it can be used.
still alot of work to-do!
generates and slices model just fine.
few bugs to workout, mainly with CalibrationPressureAdvDialog.cpp model sizing, handling default values, converting float/percent values, hard coding in where retraction/seams would be, having the values be use input choices(not combo boxes)
per_objects_gcode
later can be used to insert the smooth_time bits aswell.
can i please get help with inserting the per_objects_gcode
where it's supposed to be ? 🙏
i'm not entirely sure how the Gcode generation works, and how to get it to process each object/volume and layers
would also need to add the "first layer pa"first_pa
for the first layer only too(i've noticed during all my PA prints the first layers PA value needs to get set for the first layer speed, otherwise it looks like it has bad layer squish. but it's actually PA doing that.)
-currently generates the model and only writes the PA values at the start of the file(helps verifying it's correct) note: cmake will throw a fit if you don't rebuild the deps 🙃
Thanks, i'll review it tomorrow. Do you want it to be merged on the 2.4, 2.5 or directly into the 2.7 branch? Currently the master is on the 2.4. and master_dev is on the 2.5. Maybe I should just rename them master_24 and master_25 like prusa does.
Do you want it to be merged on the 2.4, 2.5 or directly into the 2.7 branch?
that's a good question! currently alot of users are just jumping from release to release. so i think 2.7 would be best, just to help with debugging and the devs jumping between versions.
another bug i've found is the models will need to be scaled correctly so the selected extrusion roles widths will work correctly(although this might be already fixed in the 2.7 merge) but then scaling the models will "skew" the model slightly so it will no longer be a "perfect" 90° bend
pretty pictures :)
to add with the main calibration configure page i would like it to have a " dropdown" row so the user can select the extra calibration tools to make based on selection for "numbers of tests to create" i'm not at all familiar with wxWidgets 😢
what do you mean by "dropdown row" ? something like the flow help/details in the width& flow tab in print settings?
what do you mean by "dropdown row" ? something like the flow help/details in the width& flow tab in print settings?
theres been requests to be able to have several PA calibration tests on a single plate.
easiest way i've found is to have the user select them on the main GUI (screenshot below).
number of tests to create = 3
would create two separate rows for the user to adjust parameters for.
clicking generate
would then create 3 PA tests each model would have the parameters for the selected ER roles.
what you can do: have a box were you select the number of items. set a callback on this box
my_combo_box->Bind(wxEVT_COMBOBOX, [this, my_combo_box](wxCommandEvent&) {
this->redraw_bars(my_combo_box->GetSelection())
}, my_combo_box->GetId());
and when the value change: . if more than before, add a row . if less than before, remove a row
I think the best is to create a wxFlexGridSizer to store your table. just set the number of cols. when you add a line, add all item of the row (same number of Add as the col number) when you remove a line, call Remove(GetItemCount()-1) the number of col you set. I think it could work.
I think the best is to create a wxFlexGridSizer to store your table. just set the number of cols. when you add a line, add all item of the row (same number of Add as the col number) when you remove a line, call Remove(GetItemCount()-1) the number of col you set. I think it could work.
sorry for the delay, i haven't had much spare time recently. i'm not familiar with WxWidgets so this is a real challenge for me. I'm going to need to put aside some more time and mess around with wxFormBuilder to see what would work for the GUI
You can left it to me, but then you'll have to describe exactly the behaviour you need (input, output, drawing, etc..).
can you make it work for both .4 and .6 noxxles? Orca currently has an issue with the .6 - looks to be a purely mechanical issue with proper line widths not being set in the generator properly.
can you make it work for both .4 and .6 noxxles? Orca currently has an issue with the .6 - looks to be a purely mechanical issue with proper line widths not being set in the generator properly.
thanks for mentioning that. i've changed nozzle sizes and everything breaks 🙃 with my new changes, selecting a 0.4mm nozzle the wall count/ect is good using a 0.8mm nozzle the wall count gets calculated to 6(not my target of 4)the model itself doubles in size, not ideal i know..
but i'll keep messing around with the math to try keep the models the same size+scale for widths for regardless of nozzle_size
You can left it to me, but then you'll have to describe exactly the behaviour you need (input, output, drawing, etc..).
thank you, I should be able to figure out the math/scaling issue to get everything aligned up. due to the scaling/positioning issues, i think it would be 'easier' to create several models for each nozzle size. this way the models don't change size in xy, they will just have different 'thickness'
as for the GUI, it will just need to have that "dropdown box" so users can select other variables for the other PA test to run(so they can run several tests for 1 plate), how it 'looks' doesn't really matter that much. planning on including "smooth_time" with it too, but that's an easy enough change with a bool checkbox and some text changes.
working on it.
- i'll rework object_gcode so it work, and add region_gcode.
- i'll fix the acceleration (currently they won't split fills) and put the ironing one into the object. when it's finished, i'll retry your calibration.
I've merged your latest changes into the /dev branch https://github.com/supermerill/SuperSlicer/commit/03906fa85a89e1eff76b243e0025d140dc081c58 I applied this path of mine:
- move object & region-based config into the object, so the current main config won't change that much.
- apply ensure_on_bed() so there isn't any sinking model
- "update plater" only once. btw, on my win10, i didn't need to resize my window for the field to appear.
thank you, i think this tool is almost finished, just need more feedback from the users now. i can't think of any other improvements for it.( until i get the PA injection per ER role completed that is. )
move object & region-based config into the object, so the current main config won't change that much.
i was planning on switching this over aswell, but wasn't sure what other configs might need to be changed. (still need more feedback from users)
apply ensure_on_bed() so there isn't any sinking model
might need to adjust the z scale/position for the numbers
btw, on my win10, i didn't need to resize my window for the field to appear.
that was fixed with the void CalibrationPressureAdvDialog::on_row_change()
function, i don't think the flashing can be fixed though