Jdi na navigaci předmětu

Coursework Summer 2014/2015

Proteins

The topic of this year’s semester work are proteins. Your task is to develop OpenSCAD module, which generates protein models, which match given parameters, other part of your assignment is to correctly prepare the final model which will come out of your modul to print, last not least is to print it and perform all necessary actions afterwards.

Protein generator

Develop OpenSCAD modul protein which keeps given modul interface, which will render model of protein depending on given parameters.

module protein(aminos=[],bindings=[]) { ... }

Vector (array) aminos contains definition of amino-acids. One amino-acid is represented by one ball with given center location and radius. Data are stored in four-element vectors [x,y,z,r], where first 3 elements describes location of ball center and the last element is radius. Vector aminos is vector of vectors:

aminos = [[x1, y1, z1, r1], [x2, y2, z2, r2], ...];

Vector bindings contains two-elements vectors (pair) of index of vector aminos. These pairs of amino-acids shall be connected by linkage, which will be described down bellow.

bindings = [[0, 1], [1, 8], ...]; // example

Linkage of two animo-acids is created by using center ball, placed by it’s center exactly to the center of two centers of two amino-acids, with radius of avg(ra,rb)/2, where avg is arithmetic average. ra and rb are radiuses of two amino-acids, which you are trying to link together. You shall use hull() with both balls in connection, BUT with each one of them APART. For better understanding please see the picture below.

protein

A and B are centers of two balls in linkage. Point S lays in middle of abscissa AB. Radius of middle ball is half of arithmetical average of edge balls. Both of the edge balls will be hulled by the middle separately.

Linkages can go across each others. All amino-acids has at least one linkage. It’s forbidden to manipulate with $fn and $fs variables!

This is example of module which process arguments from vectors:

module echoprotein(aminos=[],bindings=[]) {
    for (binding = bindings) {
        echo("Koule A:");
        echo("x", aminos[binding[0]][0]);
        echo("y", aminos[binding[0]][1]);
        echo("z", aminos[binding[0]][2]);
        echo("r", aminos[binding[0]][3]);
        echo("Koule B:");
        echo("x", aminos[binding[1]][0]);
        echo("y", aminos[binding[1]][1]);
        echo("z", aminos[binding[1]][2]);
        echo("r", aminos[binding[1]][3]);
    }
}

Example of income arguments:

protein([
        [0,0,0,3],
        [12,0,5,4],
        [14,-2,0,3.5],
        [-3,0,-3,1],
        [0,8,0,2],
    ],
    [
        [0,2],
        [1,3],
        [1,4],
        [3,4],
    ]
);
protein sample
printed protein

Your Proteins

You have been assigned to 3 different automatically generated proteins. You have them as raw data arguments for module protein(), you have them also as .STL files. Most probably you will not be able to render the model on your computer within some time interval which will not be too long. You shall use subset of these data to test your solution.

Your proteins are accessible on these addresses:

You need to replace XXX with digits from this list:

abdukana 045 001 002
allazelv 003 004 005
amirovag 006 007 008
bolatzau 009 010 011
cartocri 012 013 014
cuberang 015 016 017
gasimfar 018 019 020
liutoole 021 022 023
macridan 024 025 026
moonheej 027 028 029
oviedjai 030 031 032
pukhavik 033 034 035
roiburom 036 037 038
seyidzau 039 040 041
stratolg 042 043 044

Pre-processing

Choose which ever protein out of the 3 that has been given to you and prepare it for print. You can do what ever you want with this model (rotate, cut, fix, add support), but it is neccessary to keep dimensions of protein. Output of this section is one or more STL files, which are ready for slicing, and very brief description of the things which you did with the original model and why. (This brief description is not to be written but you need to explain all the steps to the person which will check your model).

Slicing

Slice it by which ever program you prefer, you can also develop you own slicer if you like. For Slic3r use slic3r-config-bundle.ini.zip (hot-end 3dráty, filament 1.75 ABS), for KISSlicer are here, you need to change some parameters in configs to get the print right, do not use them as they are! After you slice your model, you need to export used config, you also need to keep sliced model in .GCODE. Fit all your objects on one plate and subbmit to us one GCODE file!

Print and post-proccessing

You can find the dates and times for printing in KOS. You will be printing your gcode in our lab. You need to post-proccess printed object afterward (remove supports, glue it together etc.). The print should look like the given model.

In case total failure it is possible to retry with new .GCODE, but only once. In case of failure which is not from you doing the try is not considered.

Submission, evaluation and terms

Upload .ZIP archive to EDUX, link will point to this location from your namespace. Every additional text please put to your namespace.

What do you submit?

  • scad file containing modul protein
  • scad file with call to your modul with arguments
  • STL file with your chosen protein
  • STL file which you will print
  • GCODES
  • Slicer config you used
  • Any necessary files we need to evaluate you work

Last possible date to submit you work is midnight the day before you go to print the work.

Points according to this:

OpenSCAD module10
Modul works accordingly the task7mandatory
Source code is well written and accordingly commented3
Preparation for printing10
Well prepared STLs5mandatory
Mesh is valid in all STL files5
Slicing10
Supports (are not necessary (5 p.), justified use* (2.5 p.), unjustified use (0 p.))5
Well chosen parameters for printing (perimeters, infill, height of layer)5
Print20
The printed model is accordingly by task, the object is post-proccessed5mandatory
The printed model does not have any defects caused by wrong preparation it self for printing7.5
The printed model does not have any defects caused by wrong usage of printer (preparation of heat bed, bad temperature)7.5
  • We lower your points only fot automatically generated support (by slicers).

Evaluation is divided to 4 parts. mandatory means that if you fail in this one you will not receive any points from the section it is in!