Orchid Pot - Vase-like Mesh
We calculate the final price from your selected file. You review and accept it before payment.
Saved on this device.
Orchid Pot that provides ventilation for the roots. Fully parametric and adjustable for your printer
- Rating
- 0 / 5
- Likes
- 15
- Downloads
- 53
- Makes
- 0
- Views
- 791
- Reviews
- 0
Updated at source:
Model information
- Source
- Printables
- Category
- Living Room
- License
- Creative Commons — Attribution
This is a model designed with fullcontrol gcode.
Follow the interacitve tutorial from github or use one of my pre-sliced files (S, M and L available), but be sure to alter the start and end gcode!
#import packagesimport fullcontrol as fc
from math import sin, cos, pi, tau, log1p
#design parameters
design_name = 'orchid_pot'
nozzle_temp = 230
bed_temp = 75
print_speed = 1200
fan_percent = 50
EH = 0.2 # extrusion heigth
EW = 0.5 # extrusion width
printer_name = 'prusa_i3'
functional parameters
center_x = 125
center_y = 105
pot_heigth = 100 # heigth of the pot in mm
pot_diameter = 65 # base diamter of the pot
amplitude = 1.2 # amplitude of the ripples in mm
waves = int(pipot_diameter/(4amplitude)) # No. of ripples, calculated to match with the amplitude
segments = waves * 8 # makes sure each sine-wave consists of 8 points
stacked_waves = 5 # No. of ripples before the phase gets inverted
layers = int(pot_heigth/EH) # No. of layers calculated from extrusion heigth and pot heigth
base_layers = 4 # No. of solid layers
aesthetic parameters
bulges = 7 # No. of bulges
bulge_depth = 3 # amplitude of bulges
other parameters used for design generation
clockwise = bool(True)
flip = 1
steps = []
for i in range (base_layers):
steps.append(fc.Fan(speed_percent = i/base_layers * fan_percent))
current_z = EH + EHi
spiral_starting_radius = pot_diameter/2 + log1p(10(i/layers)) + amplitude
spiral_turns = int(spiral_starting_radius/EW)
steps.extend(fc.spiralXY(fc.Point(x = center_x, y = center_y, z = current_z), spiral_starting_radius, EW/2, tau, spiral_turns, 2000, clockwise))
steps.extend(fc.travel_to(fc.polar_to_point(fc.Point(x = center_x, y = center_y, z = current_z + EH), spiral_starting_radius, tau)))
if (clockwise == True):
clockwise = False
else:
clockwise = True
steps.append(fc.Fan(speed_percent = fan_percent))
for layer in range(base_layers, layers):
current_z = EH + EH*layer
steps.extend(fc.travel_to(fc.Point(z = current_z)))
if ((layer - base_layers) % stacked_waves == 0):
flip = flip * (-1)
for k in range(segments):
current_ripple = flip*amplitude*sin(tau*waves*k/segments)
current_bulge = bulge_depth * (layer/layers) * sin(tau * bulges * k/segments + 0.5 * tau * (layer/layers))
if (layer < layers-3):
current_radius = (pot_diameter/2 + current_ripple + current_bulge) + 2*bulge_depth*log1p(10*((layer/layers)))
else:
steps.append(fc.ExtrusionGeometry(width=1.5))
steps.append(fc.Printer(print_speed=300))
current_radius = (pot_diameter/2 + current_bulge) + 2*bulge_depth*log1p(10*((layer/layers)))
current_angle = tau * k / segments
steps.append(fc.polar_to_point(fc.Point(x=center_x, y =center_y, z = current_z), current_radius, current_angle))
fc.transform(steps, 'plot', fc.PlotControls(color_type='print_sequence'))
#fc.transform(steps, 'plot', fc.PlotControls(color_type='print_sequence', style="line"))
gcode_controls = fc.GcodeControls(
printer_name=printer_name,
save_as=design_name,
initialization_data={
'primer': 'front_lines_then_y',
'print_speed': print_speed,
'nozzle_temp': nozzle_temp,
'bed_temp': bed_temp,
'fan_percent': fan_percent,
'extrusion_width': EW,
'extrusion_height': EH})
gcode = fc.transform(steps, 'gcode', gcode_controls)