Jdi na navigaci předmětu

Coursework Summer 2015/2016

You can also view previous assignments, just for inspiration.

Varování:

This is not actual course work you are in archive!

Crystals

The topic of this course work are crystals. Your task is to write OpenSCAD modules for generating deterministic and random crystals based on the input; prepare one of the assigned crystals for 3D printings; print it and postprocess it if needed.

Crystal generators

Create OpenSCAD crystal module that renders crystals, with the following interface:

module crystal(thorns=[]) { ... }

Vector (array) thorns has definitions of crystal’s thorns. One thorn is defined by it’s rotation, length and number of segments.

thorns_abstract = [[[rotx, roty, rotz], height, circumr, seg], ...];
thorns_example = [[[0,0,0], 30, 3, 4], [[90,0,0], 25.5, 2.65, 7]];

Each thorn has shape similar to the following picture (click to enlarge):

rect10491

The center of bottom side resides in the origin (point [0, 0, 0]). Before the rotation the thorn points upwards along the positive Z axis. The total length/height of the thorn is height (in the thorns_abstract example above), the breakpoint is in cubic root distance of the end (see pic for more mathematics explanation). The thorn has a regular-polygon-shaped profile. Circumscribed circle of such polygon has radius of circumr in the breakpoint, and circumr/3 at the bottom. The polygon has seg edges/vertices. Thorn is rotated from it’s original upwards pointing position by the [rotx, roty, rotz] vector.

A crystal is only bunch of such thorns, nothing else (no central object exist).

For the thorns_example from above, this is how it should look like:

2example

Your next task is a module that generates a (pseudo)random crystal. It doesn’t get the list of thorns as it’s arguments, but only intervals and number of thorns.

module random_crystal(nthorns=350, rot=[-90,100], height=[20,40], circumr=[2,4.5], seg=[3,10]) { ... }
  • nthorns is count of thorns
  • all other arguments are 2-items vectors with min and max possible values of thorn’s features with the same name (rot is interval for all rotx, roty and rotz)

Use rands() for random number generating. Be aware that seg is always an integer (unlike other values). Make sure that all the integers in given interval (including the min and max provided) have the same chance to be randomly selected (achieve discrete uniform distribution). This is necessary to get all the points.

For default arguments, this is how a crystal might look like (but it’s random, so it should look different each time):

350example

Your crystals

Each of you has been assigned 3 randomly generated crystals (and data to generate them). You get them in the form of data for your crystal() module and in STL as well. It is possible that your crystals will take too much time to generate with F6, that’s all right, that’s why we give you STLs as well. For testing, just use F5 or subset of the data.

If you want to test your full dataset anyway, you might need to enlarge Turn of rendering at value in OpenSCAD settings.

You can find your crystals at the following URLs:

Where XXX is to be replaced with numbers from this list:

removed

Pre-processing

Choose one of the crystals assigned to you (the one you think will be the easiest) and prepare it for 3D printing. You can do almost anything with it (repair mesh, cut, rotate, add support structure…​), but the dimensions and shape of the printed crystal should stay the same as in the STL.

Output of this task is one or many STL files ready for slicing, and a brief description of your actions (and reasons for them) (not necessarily in written form, but you must be able to describe it).

Slicing

Use any slicer tool to slice your STL(s) form previous section. Use proper profiles and adjust the settings as you see fit. For Slic3r strat with slic3r-config-bundle.ini.zip (be sure not to use general -default- profiles and to use Load Config Bundle option). Profiles for other slicers are not provided, but you are free to create your own based on the Slic3r profiles.

Output of this task is exported slicing profile and one or more GCODE file(s). You can print more STLs at once, if they fit into the printing bed, or in sequence if not or if you just simply wan to do it that way. (Combinations possible as well.)

Printing and post-processing

At dates published in KOS, you will print your course work in the lab. The material will be ABS, the printers will be the same as in classrooms. You will use your submitted GCODE file(s). It is necessary to post-process the print (unless you print it in some magical way) - remove support, sandpaper it, glue it together etc.

The output is a physical model of one of your crystals, as similar to the digital original as possible.

You only get 5 hours for printing and post-processing, check your print time before you submit the gcodes.

If you print fails totally, you can get a second attempt. But you can only gain more points for the printing itself. Example: You fail the slicing part, get 0 points for that and the print fails as well (and you get 0 points there as well) =* you can print next time and gain points for the print, but you will not get nay points for your re-sliced model.

If the print fails because of HW error, it’s not your fault and you can always get a new attempt.

Submitting, points and deadlines

Upload a ZIP archive with any suitable name to your Edux namespace and link it form there. All textual notes belongs directly to you Edux namespace, no need to put them in txt files inside the archive.

Submit the following in the archive:

  • scad file with crystal and random_crystal modules
  • scad file with crystal call downloaded from Edux (the one you selected)
  • STL with crystal from Eduxu (the one you selected)
  • STL file(s) you’ve sliced
  • GCODE file(s) for printing
  • Exported slicer profile
  • any more files you need to make this work (scripts, netfabb projects, scad files with helper modules, etc.)

Deadline is 19.6.2016 including that day (or the start of your “zápočtový termín” (the thing you sign into in KOS to print your course work), if that’s sooner). Late submitting: For each extra started week (even if that’s one second) you loose 10 points. You don’t get negative points in total for your course work (if you should get negative, you get 0 instead). When your “zápočtový termín” starts, the archive has to be already submitted to Edux.

Exams period at FIT ČVUT ends at 1.7.2016, you can submit and/or print later, but you need to get prior approval from us and accept all risks associated with such action.

Points are awarded according to this table:

OpenSCAD modules10
crystal module works as described here3mandatory in this section
random_crystal module works as described here4mandatory in this section
Source code is readable, commented and follows DRY3
Pre-processing10
Well prepared STL(s)5mandatory in this section
Mesh in all STLs is valid 2-manifold5
Slicing10
Supports (not needed (5 p.), needed and auto-generated* (2.5 p.), not needed but generated (0 p.))5
Good slicing options (perimeters, infill, layer height…​)5
Printing and post-processing20
It is a physical copy of your crystal, it is post-processed (no supports, glued together, etc.)5mandatory in this section
No errors clearly caused by bad STLs or slicing7.5
No errors clearly caused by bad printing (Z height, bad temperatures, no juice applied, etc.)7.5
  • Only support generated while slicing is considered bad here. Manually added support on STL level is fine.
Důležité:

You’ll need to bring your own device (preferably laptop) that’s capable to connect to WiFi or LAN and can run OctoPrint. You need to be able to tell us your MAC address if needed.

Points are split into 4 sections. Mandatory in this section means, that without accomplishing this you cannot get any points form that section. In case of second print attempt, you cannot get new points for other sections but Printing and post-processing.