• Models
  • Contests
  • Slicer
  • Login
  • Start Here
    thingiverse-iconprintables-iconcults3d-iconmakerworld-iconmyminifactory-icon

    3D GO

    3D ModelsContestsCollectionsSaved ModelsOn a mobile device?

3D GO

Privacy Policy
Orchid Pot - Vase-like Mesh 3D Printer File Image 1
Orchid Pot - Vase-like Mesh 3D Printer File Thumbnail 1

Orchid Pot - Vase-like Mesh

Lorro avatarLorro

January 20, 2024

printables-icon
DescriptionCommentsTags

Description

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 packages

import 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(pi*pot_diameter/(4*amplitude))  # 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 + EH*i
    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)

License:

Creative Commons — Attribution

Related Models

Cable Corners... keep cables in corners! preview image

Cable Corners... keep cables in corners!

muzz64 profile image

muzz64

30,986

Headset Hanger 2.0 preview image

Headset Hanger 2.0

RMTB profile image

RMTB

16,780

Baby Birth Tag Holder for the wall  preview image

Baby Birth Tag Holder for the wall

Morganja profile image

Morganja

3,967

Universal Filament Filter and Lubricator preview image

Universal Filament Filter and Lubricator

CreativeTools profile image

CreativeTools

26,114

3D4U by Miele Coffee Clip preview image

3D4U by Miele Coffee Clip

3D4U powered by Miele profile image

3D4U powered by Miele

8,660

Haus-Familienaufsteller „Home“ mit Namensschildern preview image

Haus-Familienaufsteller „Home“ mit Namensschildern

Daniel Lippert profile image

Daniel Lippert

702

SHARKZ... Fun Multipurpose Clips / Holders / Pegs with moving jaws that bite! preview image

SHARKZ... Fun Multipurpose Clips / Holders / Pegs with moving jaws that bite!

muzz64 profile image

muzz64

24,680

Mechanical wall clock preview image

Mechanical wall clock

Harald Andersson profile image

Harald Andersson

6,976