107 lines
5.5 KiB
Python
107 lines
5.5 KiB
Python
from cadquery import *
|
|
import math
|
|
|
|
|
|
tabletop_depth = 800 # currently, almost all parameters are derived from the table depth
|
|
#tabletop_depth = 600
|
|
|
|
alpha_max = 70
|
|
|
|
tabletop_adjuster_assembly_spacing = 100 # symmetric distancing assumed
|
|
|
|
feet_adjuster_width = 60 # feet_adjuster is moving part inside adjuster assembly
|
|
feet_adjuster_lenght = 60
|
|
feet_adjuster_height = 60
|
|
|
|
adjuster_assembly_wall_thickness = 20 # might be different for front and back...
|
|
adjuster_assembly_length = tabletop_depth - 2*tabletop_adjuster_assembly_spacing
|
|
adjuster_assembly_width = feet_adjuster_width + 2*adjuster_assembly_wall_thickness
|
|
adjuster_assembly_height = feet_adjuster_height + 2*adjuster_assembly_wall_thickness
|
|
|
|
|
|
bore_holes_distance_feet_adjuster = adjuster_assembly_length - 2*adjuster_assembly_wall_thickness - feet_adjuster_width
|
|
ld = bore_holes_distance_feet_adjuster
|
|
lower_feet_bore_holes_distance = bore_holes_distance_feet_adjuster # this is only the case, if min feet angle is 45 degrees
|
|
|
|
lower_h = ld * math.sqrt(2)*math.sin(math.radians(alpha_max))
|
|
lower_feet_assambly_pivot_point_from_fixed_leg = ld * math.sqrt(2)*math.cos(math.radians(alpha_max))
|
|
lower_feet_assambly_pivot_point_from_moving_end = ld - lower_feet_assambly_pivot_point_from_fixed_leg
|
|
|
|
lower_foot_width = 80
|
|
lower_foot_height = 50
|
|
lower_foot_length = lower_feet_bore_holes_distance + lower_foot_height
|
|
lower_feet_assembly_base_plate_height = 20
|
|
lower_feet_assembly_side_wall_thickness = 25
|
|
lower_feet_assembly_width = 100
|
|
lower_feet_assembly_length = lower_feet_bore_holes_distance + lower_foot_height # 2* 1/2 lower_foot_height
|
|
lower_feet_assembly_height = lower_feet_assembly_base_plate_height + lower_foot_height
|
|
lower_feet_assembly_side_wall_height = lower_foot_height
|
|
lower_feet_assembly_side_wall_radius = lower_foot_height/2
|
|
lower_feet_assembly_side_wall_bearing_hole_distance_from_outer = lower_feet_assembly_side_wall_radius
|
|
lower_feet_assembly_side_wall_bearing_hole_distance_from_bottom = lower_feet_assembly_side_wall_radius
|
|
lower_feet_assembly_bearing_hole_distance_from_assembly_bottom = lower_feet_assembly_base_plate_height + lower_foot_height/2
|
|
lower_feet_assembly_bearing_hole_radius = 11
|
|
lower_feet_assembly_bearing_hole_depth = 10
|
|
lower_feet_assembly_pin_diameter = 10
|
|
|
|
def get_lower_foot_base_plate():
|
|
return Workplane("XY").box(lower_feet_assembly_width,lower_foot_length,lower_feet_assembly_base_plate_height)\
|
|
.edges("|Z").fillet(lower_feet_assembly_side_wall_thickness/2)
|
|
|
|
def get_lower_foot_side_wall_left():
|
|
lower_foot_side_wall_left = Workplane("YZ").box(lower_foot_length,lower_feet_assembly_side_wall_height,lower_feet_assembly_side_wall_thickness)\
|
|
.faces("|Y").edges(">Z").fillet(lower_feet_assembly_side_wall_radius)\
|
|
.faces("-X").edges(">Z").fillet(lower_feet_assembly_side_wall_thickness/2)\
|
|
.faces("+X").workplane()\
|
|
.center(lower_foot_length/2-lower_feet_assembly_side_wall_bearing_hole_distance_from_outer,0).hole(2*lower_feet_assembly_bearing_hole_radius,lower_feet_assembly_bearing_hole_depth)\
|
|
|
|
lower_foot_bearing_pin_slide = Workplane("YZ",origin=((lower_feet_assembly_side_wall_thickness-lower_feet_assembly_bearing_hole_depth)/2,\
|
|
-(lower_feet_bore_holes_distance-lower_feet_assambly_pivot_point_from_moving_end)/2,\
|
|
0))\
|
|
.box(lower_feet_assambly_pivot_point_from_moving_end,lower_feet_assembly_pin_diameter,lower_feet_assembly_bearing_hole_depth)
|
|
|
|
lower_foot_bearing_pin_slide = lower_foot_bearing_pin_slide\
|
|
.union(Workplane("YZ",origin=(lower_feet_assembly_side_wall_thickness/2-lower_feet_assembly_bearing_hole_depth,
|
|
-(lower_feet_bore_holes_distance/2-lower_feet_assambly_pivot_point_from_moving_end),0.00001))\
|
|
.circle(lower_feet_assembly_pin_diameter/2).extrude(lower_feet_assembly_bearing_hole_depth))\
|
|
.union(Workplane("YZ",origin=(lower_feet_assembly_side_wall_thickness/2-lower_feet_assembly_bearing_hole_depth,
|
|
-(lower_feet_bore_holes_distance/2),0))\
|
|
.circle(lower_feet_assembly_pin_diameter/2).extrude(lower_feet_assembly_bearing_hole_depth))
|
|
|
|
lower_foot_side_wall_left = lower_foot_side_wall_left.cut(lower_foot_bearing_pin_slide)
|
|
return lower_foot_side_wall_left
|
|
|
|
|
|
def get_lower_foot_side_wall_right():
|
|
return get_lower_foot_side_wall_left().mirror(mirrorPlane="YZ")
|
|
|
|
#show_object(lower_foot_base_plate)
|
|
#show_object(lower_foot_side_wall_left)
|
|
#show_object(lower_foot_side_wall_right)
|
|
|
|
b1 = Workplane("XY").box(10,5,5)
|
|
b2 = Workplane("XY").box(5,10,5)
|
|
b3 = Workplane("YZ").box(4,4,4)
|
|
|
|
b1 = get_lower_foot_base_plate()
|
|
b2 = get_lower_foot_side_wall_left()
|
|
b3 = get_lower_foot_side_wall_right()
|
|
|
|
#show_object(b1)
|
|
|
|
a1 = Assembly(b1, name="1", color=Color("red"),loc=Location(Vector(0,0,0)))\
|
|
.add(b2, name="2", loc=Location(Vector(-(lower_feet_assembly_width-lower_feet_assembly_side_wall_thickness)/2,0,lower_feet_assembly_base_plate_height/2+lower_feet_assembly_side_wall_radius)))\
|
|
.add(b3, name="3", color=Color("red"), loc=Location(Vector((lower_feet_assembly_width-lower_feet_assembly_side_wall_thickness)/2,0,lower_feet_assembly_base_plate_height/2+lower_feet_assembly_side_wall_radius)))
|
|
|
|
#show_object(a1)
|
|
|
|
a2 = Assembly()\
|
|
.add(a1, name="a1", color=Color(0,1,0,0.8))\
|
|
.add(a1, name="a2",color=Color(1,1,0,0.8), loc=Location(Vector(200,0,0)))
|
|
|
|
a3 = Assembly()\
|
|
.add(a2, name="a2a", color=Color(0,1,0,0.8))\
|
|
.add(a2, name="a3",color=Color(1,1,0,0.8), loc=Location(Vector(0,800,0)))
|
|
|
|
|
|
show_object(a2) |