kennetek / gridfinity-rebuilt-openscad

A ground-up rebuild of the stock gridfinity bins in OpenSCAD
Other
1.14k stars 164 forks source link

Automatically split baseplate size according to printer bed size #115

Open jottr opened 1 year ago

jottr commented 1 year ago

I want to print a baseplate that is larger than my print bed. Currently I have to split the baseplate into two printable parts, that are screwed together. This results in wasted space, since the grid is not utilizing the available space optimally.

Example render of the problem:

image

It would be very useful to have two variables print_bedx and print_bedy, and then offer an option to automatically splitting large grids.

Ruudjhuu commented 1 year ago

I am not 100% sure if I understand your intentions. But the screw together feature is created for creating baseplates larger than print beds. If you turn of the fit to drawer feature and screw together multipile baseplates there wont be wasted space.

like this:

image

jottr commented 1 year ago

Thanks for trying to help.

So given a printer bed of 235x235 mm, and a desired base plate size of 630x294 mm, how would I set this up?

I'm aware of this section:

/* [Fit to Drawer] */
// minimum length of baseplate along x (leave zero to ignore, will automatically fill area if gridx is zero)
distancex = 0;
// minimum length of baseplate along y (leave zero to ignore, will automatically fill area if gridy is zero)
distancey = 0;

So, if I set this to my print bed size, how would I then define the desired base plate size?

I.e.

/* [Fit to Drawer] */
// minimum length of baseplate along x (leave zero to ignore, will automatically fill area if gridx is zero)
distancex = 235;
// minimum length of baseplate along y (leave zero to ignore, will automatically fill area if gridy is zero)
distancey = 235;

results in this

image

What I want instead is a baseplate of the desired dimension, split into the size that fits my print bed. I don't want to calculate this manually. I want a function do this for me.

To summarize. I want to provide the base plate size, the print bed size, and openscad figure out the rest for me. I.e. cut the 630x294 mm grid into 235x235 mm wide parts, calculate optimal space distribution across the pieces and add matching screw holes in the required positions.

Ruudjhuu commented 1 year ago

I understand you want to automate it. That is currently not supported and for now it should be done manually. This would be a feature request.

However, if you did this manually, it should not result in wasted space. keep in mind the fit to drawer section has 2 more variables which influence the space on the sides.

scenario: 630x 294 will result in a grid of 15 x 7 in total. This means no fit to drawer feature is necessary: -> distancex = 0 distancey=0 I would create the following baseplates with screw_together_minimal enabled and screw them all together or even without screw_together_minimal and have a perfect fit in your drawer (if you want to place it in a drawer):

jottr commented 1 year ago

Thanks for the explanation. So let's make this a feature request then, and remove the "question" label. I'd be happy to help with implementation if this is a feature that would be generally desired by maintainers.

starthal commented 3 months ago

The only problems (albeit minor) with the manual method:

Another approach could be to export a single model of the full desired size, and then split it in the slicer, or with a separate script. That would solve the corner fillet issue. However there would be no screw-together holes between parts.

I suggest new parameters for "maximum build size x/y". Assuming we are using a "screw-together" style:

As I understand, OpenSCAD can't export multiple objects at once anyway. This method would provide a complete model that can be split deterministically.