Jdi na navigaci předmětu

OpenSCAD tasks

Easy ones

You should be fine with:

  • 3D primitives (cube, cylinder, sphere, no polyhedron)
  • CSG modeling (union, difference, intersection)
  • transformations (rotate, translate, scale, resize, mirror, no multimatrix, hull or minkowski)
  • for (and intersection_for), if (ternary operator), variables
  • modules
  • math operators and function

STLs: stls.zip

/**
 * Clip
 * clip  for pouch securing
 * @param x total length of the clip
 * @param y total width of the clip
 * @param z total height of the clip
 * @param tooth one tooth side size
 * @param off offset from the closed side
 * @param distance distance between teeth
 */
module clip (x=60,y=20,z=5,tooth=9,off=6,distance=8) {}


/**
 * Dice
 * Basic shape is intersection of a cube and sphere
 * Use for loops to create dots
 * @param cs Cube size (side)
 * @param ds Dot size (radius)
 */
module dice(cs=40, ds=3) {}


/**
 * Parametric drill stand
 * Use for loops
 * @param base_height Base height
 * @param holes Number of holes (each one is 1 mm wider)
 * @param hole_depth Depth of the holes
 * @param stand_step_width One line of holes width
 * @param stand_step_num Holes per line
 */
module drill_stand(
 base_height=10,
 holes=10,
 hole_depth=5,
 stand_step_width=15,
 stand_step_num=5
 ) {}


/**
 * Parametric gear
 * Use for loop for teeth!
 * @param gear_rad Gear radius
 * @param gear_thickness Gear thickness
 * @param center_hole_width Middle square size
 * @param tooth_width Tooth width
 * @param tooth_prot Tooth overlap (how much it goes out of the wheel)
 * @param tooth_count Number of teeth
 */

module gear(
 gear_rad=50,
 gear_thickness=10,
 center_hole_width=10,
 tooth_width=5,
 tooth_prot=5,
 tooth_count=20
) {}


/**
 * Hypercube
 * @author Tomáš Kasalický
 * @param a1 Outer size of outer cube
 * @param a2 Outer size of inner cube
 * @param th Rod with (side of the square profile)
 */
module hypercube(a1=20,a2=10,th=1) {}

/**
 * Chair
 * Simple chair with rungs in backrest.
 * Use for loops!
 * @param rung_number Rung count
 * @param seat_width Width (and length) of the seat
 * @param seat_thickness Seat thickness
 * @param feet_width Feet and rungs thickness
 * @param feet_length Feet length. Starting form bottom part of the seat!
 */

module chair(
  rung_number=5,
  seat_width=19,
  seat_thickness=2,
  feet_width=2,
  feet_length=15
) {}


/**
 * Lego brick
 * @documentation http://cdn.instructables.com/F65/PI3W/HDYZBK5Y/F65PI3WHDYZBK5Y.LARGE.jpg
 * @param num_x Number of pins along X axis
 * @param num_y Number of pins along Y axis
 * @param num_z Height of the brick. In LEGO units. Common piece has 3 units.
 * @param smooth Should the brick be smooth (i.e. no pins)
 *
 * Bottom side might be hollow.
 */
module lego_brick(num_x=10,num_y=2,num_z=1,smooth=false) {}


/**
 * Mug
 * @param r_mug Inner radius of the mug
 * @param z Mug height
 * @param z_base Base height
 * @param r_handle Inner radius of the handle
 * @param w_handle Handle width
 * @param thick Wall thickness
 */
module mug (r_mug=12,z=30,z_base=3,r_handle=10,w_handle=4,thick=1.5) {}


/**
 * Parametric pen holder
 * Create holes by for loops!
 * @param bottom_rad Bottom radius
 * @param base_height Base height
 * @param top_rad Top radius
 * @param hole_count Hoel count
 * @param hole_rad Hole radius
 * @param prot_thickness Hole wall thickness
 * @param prot_angle Angle of holes
 */
module pen_holder(
 bottom_rad=50,
 base_height=50,
 top_rad=25,
 hole_count=5,
 hole_rad=10,
 prot_thickness=2,
 prot_angle=20
) {}


/**
 * Plate
 * Rectangular plate for electronic device with corner screw holes
 * @param x Plate width
 * @param y Plate length
 * @param z Plate height
 * @param c Hole center distance form sides
 * @param r Hole radius
 * @param b Pillar radius
 * @param h Pillar height
 */
module plate(x=70,y=90,z=2,c=5,r=1.5,b=2.5,h=3) {}


/**
 * Parametric SIM card adapter
 * @param x1,y1 outer adapter dimensions
 * @param x2,y2 inner adapter dimensions
 * @param z adapter height
 * @param off_x,off_y offset of the hole
 * Don't forget the corner
 * If the hole doesn't fit in, make the outer part large enough
 * The corner cut line should come trough 3/4 of Y side.
 */
module sim_card(x1=18,y1=14,x2=10,y2=8,z=1,off_x=1,off_y=1) {}


/**
 * Snowman
 * @param r Biggest snowball radius
 * @param factor Size of a smaller snowball as a fraction of the bigger one (0.7 = 70 %)
 * @param overlap Snowballs height overlap as a fraction of height of the bigger snowball (0.2 = 20 %)
 * Only make 3 snowballs on top of each other, no decorations necessary
 */
module snowman(r=50,factor=0.7,overlap=0.2) {}


/**
 * Parametric wall hook
 * Create holes by for loops!
 * @param hook_rad Hook curve INNER radius
 * @param hook_thickness Hook thickness (depth from wall)
 * @param hook_width Hook width
 * @param top_hook_angle Angle of top part (for coats)
 * @param top_hook_length Length of top part (for coats)
 * @param top_hook_distance Flat part height (distance form top part to curve)
 * @param hole_rad Mount holes radius
 * @param hole_count Number of mount holes
 */

module wall_hook(
 hook_rad=10,
 hook_thickness=10,
 hook_width=10,
 top_hook_angle=30,
 top_hook_length=50,
 top_hook_distance=30,
 hole_rad=2,
 hole_count=2
) {}

Harder ones

STL files

Arm

arm
/**
 * Mechanical arm
 * @param h Arm height (counted from holes centers)
 * @param off_set Top and bottom part offset
 * @param thick Arm thickness
 * @param number_holes Number of holes on each side
 * @param hole_radius Holes radius and distance (from each other and from border)
 * @author Jakub Průša
 */

module arm(
	height=60,
	offset=-25,
	thick=3,
	number_holes=2,
	hole_radius=3
) {
  //insert your code here...
}

Batman

batman
/**
 * Batman cookie cutter
 * @param x/y/z Outer size along X/Y/Z axis
 * @param thick Wall thick
 * @author Jakub Průša, Miro Hroncok
 */
module batman(
	x=100,
	y=60,
	z=15,
	thick=2
) {
  //insert your code here...
}

Disc

disc
/**
 * Parametric robot wheel
 * @param radius Disc radius
 * @param height Disc height
 * @param r_hole Central hole radius
 * @param reduce_offset Reduce holes offset from border
 * @param reduce_num Number of reduce holes
 * Reduce hole size? Make them fit.
 * @author Marek Žehra
 */

module wheel (
  radius=50,
  height=10,
  r_hole=2,
  reduce_offset=5,
  reduce_num=4
) {
  //insert your code here...
}

Helix

helix
/**
 * Helix
 * @param d Helix distance from each other (center to center, measured on XY plane)
 * @param o Helix radius (measured on XY plane)
 * @param h Helix height without base
 * @param s Rotation in degrees on one mm of height (positive or negative direction)
 * @param db Base diameter
 * @param hb Base height
 * One slice should have 50 µm
 * @author Miro Hrončok
 */
module helix(d=10,o=1,h=50,s=18,db=13,hb=1) {
  //insert your code here...
}

Snowman

snowman
/**
 * Snowman
 * @param r Biggest snowball radius
 * @param factor Size of a smaller snowball as a fraction of the bigger one (0.7 = 70 %)
 * @param overlap Snowballs height overlap as a fraction of height of the bigger snowball (0.2 = 20 %)
 * @param balls Number of snowballs (use recursion)
 * Only make snowballs on top of each other, no decorations necessary
 * @author Miro Hrončok
 */
module snowman(r=50,factor=0.7,overlap=0.2,balls=3) {
  //insert your code here...
}