1
0
Fork 0

Initial commit

This commit is contained in:
NGnius (Graham) 2024-04-13 12:48:55 -04:00
commit cad64127d7
84 changed files with 1144447 additions and 0 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
*.gcode
*.cxprj
*.zip

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "nutsnbolts"]
path = nutsnbolts
url = https://github.com/JohK/nutsnbolts

BIN
Carbon_Filter_Grid.STL Normal file

Binary file not shown.

BIN
FP4 back.blend Normal file

Binary file not shown.

BIN
FP4 back.blend1 Normal file

Binary file not shown.

BIN
Fox_-_Voronoi.stl Normal file

Binary file not shown.

BIN
K1 door base 3.stl Normal file

Binary file not shown.

BIN
PETE.stl Normal file

Binary file not shown.

BIN
Peg_winder_10x25mm.stl Normal file

Binary file not shown.

BIN
SaturnV_ver3_print.stl Normal file

Binary file not shown.

BIN
Stock_Holder.stl Normal file

Binary file not shown.

48
bag hanger.scad Normal file
View file

@ -0,0 +1,48 @@
// Bag hanger
// length units are millimeters
rodDiameter = 32;//31.74;
rodRadius = rodDiameter / 2;
hangerThickness = 6.00;
outerHangerRadius = rodRadius + hangerThickness;
fullHeight = 50.00;
hookThickness = 15.00;
hookStemLength = rodRadius * 2;
hookStopperRadius = hangerThickness + 1;
circleResolution=360*4; // faces per rotation
include <ng_common/hollow_cylinder.scad>;
// hanger pole wrapper
difference() {
hollowCylinder(rodRadius, outerHangerRadius, fullHeight);
translate([-rodRadius, 0, -0.01])
cube([rodRadius * 2, outerHangerRadius + 0.01, fullHeight + 0.02]);
translate([-outerHangerRadius, rodRadius - (hangerThickness * 1.5), -0.01])
cube([outerHangerRadius * 2, outerHangerRadius + 0.01, fullHeight + 0.02]);
}
// connector from hanger cylinder to hook
translate([rodRadius, 0, 0])
cube([hangerThickness, hookStemLength + outerHangerRadius, hookThickness]);
// quarter cylinder for hook
translate([0, hookStemLength + outerHangerRadius, 0]) difference() {
hollowCylinder(rodRadius, outerHangerRadius, hookThickness);
translate([-(outerHangerRadius + 0.01),-(outerHangerRadius + 0.01),-0.01])
cube([outerHangerRadius + 0.01, (outerHangerRadius * 2) + 0.02, hookThickness + 0.02]);
translate([-(outerHangerRadius + 0.01),-(outerHangerRadius + 0.01),-0.01])
cube([(outerHangerRadius * 2) + 0.02, outerHangerRadius + 0.02, hookThickness + 0.02]);
}
// hook
translate([0, outerHangerRadius + hookStemLength + outerHangerRadius - (hangerThickness/2)]) {
cylinder(h=fullHeight, r=hangerThickness, $fn=circleResolution);
translate([0,0,fullHeight])
difference() {
cylinder(h=hangerThickness / 2, r=hookStopperRadius, $fn=circleResolution);
translate([- (hookStopperRadius + 0.01),-0.01,-0.01])
cube([(hookStopperRadius * 2) + 0.02, hookStopperRadius + 0.02, hangerThickness / 2+ 0.02]);
}
}

BIN
bag hanger.stl Normal file

Binary file not shown.

62
bb_q10_disassembled.scad Normal file
View file

@ -0,0 +1,62 @@
// Blackberry Q10 frame backing and parts mounts
// length units are millimeters
frameHeight = 202.00;
frameWidth = frameHeight;
frameDepth = 14.00;
frameBorder = 5.00;
screwThreadRadius = 0.7;
screwSupportRadius = 2.00;
include <ng_common/hollow_cylinder.scad>;
// base
cube([frameWidth, 0.4, frameHeight]);
// side frame and loudspeaker
translate([frameWidth - (15 + frameBorder), 0, frameHeight - (30 + frameBorder)]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 2.80);
}
translate([frameWidth - (73.1 + frameBorder), 0, frameHeight - (30 + frameBorder)]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 2.80);
}
// mainboard
translate([frameWidth - (30 + frameBorder), 0, 120 - frameBorder]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 12);
}
translate([frameWidth - (30 + frameBorder), 0, 22.5 - frameBorder]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 12);
}
// keyboard
translate([frameWidth - (85 + frameBorder), 0, 40 + frameBorder]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 7.80);
}
// display and midframe
translate([frameWidth - (95 + frameBorder), 0, 90 + frameBorder]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 7.80);
}
// top back cover
translate([60 + frameBorder, 0, 130 + frameBorder]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 3.00);
}
translate([33.1 + frameBorder, 0, 130 + frameBorder]) {
rotate([90,0,0])
hollowCylinder(screwThreadRadius, screwSupportRadius, 3.00);
}
// bottom back cover
translate([40 + frameBorder, -5, 15 + frameBorder]) {
cube([10, 5, 2]);
}

BIN
bb_q10_disassembled.stl Normal file

Binary file not shown.

BIN
benchy/3DBenchy.3mf Normal file

Binary file not shown.

BIN
benchy/3DBenchy.stl Normal file

Binary file not shown.

View file

@ -0,0 +1,603 @@
[Default]
acceleration_breaking=50
acceleration_breaking_enable=true
acceleration_enabled=false
acceleration_infill=12000
acceleration_ironing=5000
acceleration_layer_0=500
acceleration_limit_mess="[[0.5,1.0,100,6000,210],[1.0,1.5,80,5500,200],[1.5,2.0,60,5000,190]]"
acceleration_limit_mess_enable=false
acceleration_prime_tower=12000
acceleration_print=12000
acceleration_print_layer_0=500
acceleration_roofing=5000
acceleration_skirt_brim=500
acceleration_support=12000
acceleration_support_bottom=12000
acceleration_support_infill=12000
acceleration_support_interface=12000
acceleration_support_roof=12000
acceleration_topbottom=5000
acceleration_travel=12000
acceleration_travel_layer_0=500
acceleration_wall=5000
acceleration_wall_0=5000
acceleration_wall_x=5000
adaptive_layer_height_enabled=false
adaptive_layer_height_threshold=0.20000000298023224
adaptive_layer_height_variation=0.03999999910593033
adaptive_layer_height_variation_step=0.03999999910593033
adhesion_type=autobrim
alternate_carve_order=true
alternate_extra_perimeter=false
anti_overhang_mesh=false
arc_configure_enable=true
arc_tolerance=10.00
belt_enable=false
bottom_layers=2
bottom_skin_expand_distance=0.80
bottom_skin_preshrink=0.80
bottom_thickness=0.8
bridge_enable_more_layers=true
bridge_settings_enabled=true
bridge_skin_density=100
bridge_skin_density_2=75
bridge_skin_density_3=80
bridge_skin_material_flow=100
bridge_skin_material_flow_2=100
bridge_skin_material_flow_3=110
bridge_skin_speed=125.00
bridge_skin_speed_2=125.00
bridge_skin_speed_3=125.00
bridge_skin_support_threshold=50
bridge_sparse_infill_max_density=0.00
bridge_wall_coast=100
bridge_wall_material_flow=80
bridge_wall_min_length=2
bridge_wall_speed=125.00
brim_gap=0.1
brim_line_count=19
brim_outside_only=true
brim_replaces_support=false
brim_width=8
carve_multiple_volumes=false
change_color=false
change_color_mode=back_list
clean_between_layers=false
coasting_enable=false
coasting_min_volume=0.800000011920929
coasting_speed=90
coasting_volume=0.06
conical_overhang_angle=50
conical_overhang_enabled=false
connect_infill_polygons=false
connect_skin_polygons=false
cross_infill_density_image=
cross_infill_pocket_size=4.00
cross_support_density_image=
cutting_mesh=false
draft_shield_dist=10
draft_shield_enabled=false
draft_shield_height=10
draft_shield_height_limitation=full
expand_skins_expand_distance=0.80
export_format=gcode
exposure_time=6
extruder_prime_pos_x=0
extruder_prime_pos_y=0
fill_outline_gaps=true
fill_perimeter_gaps=nowhere
filter_out_tiny_gaps=true
first_change_color=0
flow_rate_extrusion_offset_factor=100
flow_rate_max_extrusion_offset=0
gcode_offset_zadjust=-0.05
gradual_infill_step_height=1.5
gradual_infill_steps=1
gradual_support_infill_step_height=1
gradual_support_infill_steps=0
has_preview_img=true
hole_xy_offset=0
infill_angles=[]
infill_before_walls=false
infill_combination=false
infill_enable_travel_optimization=false
infill_extruder_nr=-1
infill_has_default_inset=false
infill_line_distance=4.00
infill_mesh=false
infill_mesh_order=0
infill_multiplier=1
infill_offset_x=0
infill_offset_y=0
infill_overlap=10.00
infill_overlap_mm=0.04
infill_pattern=lines
infill_randomize_start_location=false
infill_sparse_density=10.00
infill_sparse_thickness=0.25
infill_step_layers=1
infill_support_angle=40
infill_support_enabled=false
infill_wall_line_count=0
infill_wipe_dist=0.10
initial_bottom_layers=2
initial_layer_reserve=0
inset_direction=inside_out
ironing_enabled=false
ironing_flow=10
ironing_inset=0.38
ironing_line_spacing=0.10000000149011612
ironing_monotonic=false
ironing_only_highest_layer=false
ironing_pattern=zigzag
jerk_enabled=true
jerk_infill=8
jerk_ironing=8
jerk_layer_0=8
jerk_prime_tower=8
jerk_print=8
jerk_print_layer_0=8
jerk_roofing=8
jerk_skirt_brim=8
jerk_support=8
jerk_support_bottom=8
jerk_support_infill=8
jerk_support_interface=8
jerk_support_roof=8
jerk_topbottom=8
jerk_travel=30
jerk_travel_layer_0=30
jerk_wall=8
jerk_wall_0=8
jerk_wall_x=8
klipper_time_estimate_enable=false
laser_close_type=
laser_work_speed=1800
layer_0_z_overlap=0.12999999523162842
layer_height=0.25
layer_height_0=0.25
machine_support_slicer_type=FDM
magic_fuzzy_skin_enabled=false
magic_fuzzy_skin_outside_only=false
magic_fuzzy_skin_point_density=1.25
magic_fuzzy_skin_point_dist=0.800000011920929
magic_fuzzy_skin_thickness=0.30000001192092896
magic_mesh_surface_mode=normal
magic_spiralize=false
material_shrinkage_percentage_x=100.0
material_shrinkage_percentage_y=100.0
max_extrusion_before_wipe=10
max_part_outline_num=1000
max_skin_angle_for_expansion=75
mesh_rotation_matrix="[[1,0,0], [0,1,0], [0,0,1]]"
meshfix_extensive_stitching=false
meshfix_keep_open_polygons=false
meshfix_maximum_deviation=0.05000000074505806
meshfix_maximum_resolution=0.25
meshfix_maximum_travel_resolution=0.42
meshfix_union_all=true
meshfix_union_all_remove_holes=false
min_even_wall_line_width=0.3
min_infill_area=35
min_odd_wall_line_width=0.3
min_skin_width_for_expansion=0.13
min_wall_line_width=0.3
minimum_bottom_area=10
minimum_interface_area=10
minimum_polygon_circumference=1
minimum_roof_area=10
minimum_support_area=2
mold_angle=40
mold_enabled=false
mold_roof_height=0.5
mold_width=5
multiple_mesh_overlap=0.15000000596046448
ooze_shield_angle=60
ooze_shield_dist=2
ooze_shield_enabled=false
optimize_wall_printing_order=true
power_slowdown_layers=12
preImg_h=200
preImg_w=200
preview_img_type=jpg
prime_blob_enable=false
prime_tower_brim_enable=false
prime_tower_enable=false
prime_tower_min_volume=15
prime_tower_position_x=20
prime_tower_position_y=20
prime_tower_size=20
prime_tower_type=single
prime_tower_wipe_enabled=true
print_sequence=all_at_once
raft_acceleration=500
raft_airgap=0.25
raft_base_acceleration=500
raft_base_extruder_nr=0
raft_base_fan_speed=0
raft_base_jerk=8
raft_base_line_spacing=1.600000023841858
raft_base_line_width=0.800000011920929
raft_base_speed=20
raft_base_thickness=0.30
raft_fan_speed=0
raft_init_flow_ratio=110
raft_init_layer_num=1
raft_interface_acceleration=500
raft_interface_extruder_nr=0
raft_interface_fan_speed=0
raft_interface_jerk=8
raft_interface_line_spacing=1.0800000429153442
raft_interface_line_width=0.8
raft_interface_speed=30
raft_interface_thickness=0.38
raft_jerk=8
raft_margin=10
raft_smoothing=5
raft_speed=60
raft_surface_acceleration=500
raft_surface_extruder_nr=0
raft_surface_fan_speed=0
raft_surface_jerk=8
raft_surface_layers=2
raft_surface_line_spacing=0.4
raft_surface_speed=40
raft_surface_thickness=0.25
raft_top_layer_num=2
relative_extrusion=false
remove_empty_first_layers=true
retract_speed=150
roofing_angles=[ ]
roofing_extruder_nr=-1
roofing_layer_count=1
roofing_monotonic=true
roofing_only_one_wall=false
roofing_pattern=zigzag
screen_size=Sermoon D3
second_change_color=0
set_small_feature_grading=false
set_wall_overhang_grading=false
single_extrusion_walls=false
single_wall_model=false
skin_angles=[ ]
skin_edge_support_layers=0
skin_edge_support_thickness=0
skin_no_small_gaps_heuristic=false
skin_outline_count=1
skin_overlap=0.00
skin_overlap_mm=0.00
skin_preshrink=0.80
skirt_brim_minimal_length=250
skirt_brim_speed=60
skirt_gap=3
skirt_line_count=1
slice_accelerate_enabled=false
slicing_tolerance=middle
small_feature_grading=A_First
small_feature_max_length=25
small_feature_speed_factor=80.00
small_feature_speed_factor_0=80.00
small_hole_max_size=6
smooth_spiralized_contours=true
spaghetti_flow=100
spaghetti_infill_enabled=false
spaghetti_infill_extra_volume=20
spaghetti_infill_stepped=true
spaghetti_inset=0.20000000298023224
spaghetti_max_height=2
spaghetti_max_infill_angle=10
special_advance_enable=false
special_angle_per_step=0
special_cool_min_layer_time_1=5
special_cool_min_layer_time_2=5
special_cool_min_layer_time_3=5
special_cool_min_layer_time_4=5
special_dynamic_point_flow=false
special_dynamic_point_flow_angle=45
special_dynamic_point_flow_factor=100
special_exact_flow_enable=false
special_material_flow_travel=20
special_mold_evacuation=false
special_mold_support_Xnumbers=6
special_mold_support_Ynumbers=8
special_mold_support_infill_line_distance=30
special_mold_top_layers=32
special_narrow_area_concentric_infill=false
special_object_cancel=false
special_slope_slice_angle=0
special_slope_slice_axis=Y
special_small_feature_max_length_1=18.850000381469727
special_small_feature_max_length_2=18.850000381469727
special_small_feature_max_length_3=18.850000381469727
special_small_feature_max_length_4=18.850000381469727
special_small_feature_speed_factor_0_1=35
special_small_feature_speed_factor_0_2=35
special_small_feature_speed_factor_0_3=35
special_small_feature_speed_factor_0_4=35
special_small_feature_speed_factor_1=35
special_small_feature_speed_factor_2=35
special_small_feature_speed_factor_3=35
special_small_feature_speed_factor_4=35
speed_infill=300.00
speed_ironing=166.67
speed_layer_0=60
speed_limit_to_height="[[100,150,100,6000,210],[150,200,80,5500,200],[200,250,60,5000,190]]"
speed_limit_to_height_enable=false
speed_min_travel_speed_length=1.0
speed_prime_tower=300.00
speed_print=300
speed_print_layer_0=100.00
speed_roofing=250.00
speed_slowdown_layers=2
speed_support=300.00
speed_support_bottom=200.00
speed_support_infill=300.00
speed_support_interface=200.00
speed_support_roof=200.00
speed_topbottom=250.00
speed_travel=500
speed_travel_layer_0=200.00
speed_wall=150.00
speed_wall_0=250.00
speed_wall_x=240.00
speed_z_hop=10
sub_div_rad_add=0.40
support_angle=60
support_bottom_angles=[ ]
support_bottom_density=33.29999923706055
support_bottom_distance=0.4000000059604645
support_bottom_enable=true
support_bottom_extruder_nr=0
support_bottom_height=0.800000011920929
support_bottom_line_distance=1.3200000524520874
support_bottom_offset=0
support_bottom_pattern=zigzag
support_bottom_stair_step_height=0.30000001192092896
support_bottom_stair_step_width=5
support_brim_enable=true
support_brim_line_count=14
support_brim_width=6
support_conical_angle=30
support_conical_enabled=false
support_conical_min_width=5
support_connect_zigzags=true
support_enable=false
support_extruder_nr=0
support_extruder_nr_layer_0=0
support_fan_enable=false
support_infill_angles=[ ]
support_infill_extruder_nr=0
support_infill_rate=15
support_infill_sparse_thickness=0.25
support_initial_layer_line_distance=2.2
support_interface_angles=[ ]
support_interface_density=33.29999923706055
support_interface_enable=true
support_interface_extruder_nr=0
support_interface_height=0.800000011920929
support_interface_offset=0
support_interface_pattern=zigzag
support_interface_skip_height=0.20000000298023224
support_join_distance=2
support_line_distance=2.67
support_mesh=false
support_mesh_clip=false
support_mesh_drop_down=true
support_offset=2
support_pattern=zigzag
support_roof_angles=[ ]
support_roof_density=33.29999923706055
support_roof_enable=true
support_roof_extruder_nr=0
support_roof_height=0.800000011920929
support_roof_line_distance=1.3200000524520874
support_roof_offset=0
support_roof_pattern=zigzag
support_skip_some_zags=false
support_skip_zag_per_mm=20
support_structure=normal
support_top_distance=0.20000000298023224
support_tower_diameter=3
support_tower_maximum_supported_diameter=3
support_tower_roof_angle=65
support_tree_angle=40
support_tree_branch_diameter=5
support_tree_branch_diameter_angle=5
support_tree_branch_distance=1
support_tree_collision_resolution=0.2199999988079071
support_tree_enable=false
support_tree_max_diameter=15
support_tree_top_rate=10
support_type=everywhere
support_use_towers=false
support_wall_count=0
support_xy_distance=0.800000011920929
support_xy_distance_overhang=0.20000000298023224
support_xy_overrides_z=xy_overrides_z
support_z_distance=0.1
support_zag_skip_count=5
switch_extruder_retraction_speeds=20
third_change_color=0
thumbnail_h=48
thumbnail_w=48
top_bottom_extruder_nr=-1
top_bottom_pattern=zigzag
top_bottom_pattern_0=zigzag
top_bottom_thickness=0.8
top_layers=2
top_skin_expand_distance=0.80
top_skin_preshrink=0.80
top_thickness=0.8
travel_compensate_overlapping_walls_0_enabled=true
travel_compensate_overlapping_walls_enabled=true
travel_compensate_overlapping_walls_x_enabled=true
unify_walls_print_direction=true
wall_0_extruder_nr=-1
wall_0_inset=0.00
wall_0_wipe_dist=0.2
wall_extruder_nr=-1
wall_hole_speed_factor=100
wall_line_count=2
wall_min_flow=0
wall_min_flow_retract=false
wall_ordering_overhang_angle=45
wall_overhang_angle=60
wall_overhang_speed_1=0
wall_overhang_speed_2=50.00
wall_overhang_speed_3=35.00
wall_overhang_speed_4=10.00
wall_overhang_speed_factor=50
wall_thickness=0.87
wall_x_extruder_nr=-1
wipe_brush_pos_x=100
wipe_hop_amount=0.20000000298023224
wipe_hop_enable=false
wipe_hop_speed=10
wipe_move_distance=20
wipe_pause=0
wipe_repeat_count=5
wipe_retraction_amount=0.800000011920929
wipe_retraction_enable=true
wipe_retraction_extra_prime_amount=0
wipe_retraction_prime_speed=25
wipe_retraction_retract_speed=25
wipe_retraction_speed=25
wireframe_bottom_delay=0
wireframe_drag_along=0.6000000238418579
wireframe_enabled=false
wireframe_fall_down=0.5
wireframe_flat_delay=0.10000000149011612
wireframe_flow=100
wireframe_flow_connection=100
wireframe_flow_flat=100
wireframe_height=3
wireframe_nozzle_clearance=1
wireframe_printspeed=5
wireframe_printspeed_bottom=5
wireframe_printspeed_down=5
wireframe_printspeed_flat=5
wireframe_printspeed_up=5
wireframe_roof_drag_along=0.800000011920929
wireframe_roof_fall_down=2
wireframe_roof_inset=3
wireframe_roof_outer_delay=0.20000000298023224
wireframe_straight_before_down=20
wireframe_strategy=compensate
wireframe_top_delay=0
wireframe_top_jump=0.6000000238418579
wireframe_up_half_speed=0.30000001192092896
xy_offset=0
xy_offset_enable=false
xy_offset_layer_0=0
z_offset=0
z_seam_corner=z_seam_corner_inner
z_seam_max_angle=162
z_seam_min_angle_diff=36
z_seam_position=back
z_seam_relative=true
z_seam_type=sharpest_corner
z_seam_x=110.0
z_seam_y=220.0
zadjust_enable=false
zig_zaggify_infill=false
zig_zaggify_support=false
[Extruder]
before_wipe_retraction_amount_percent=70
infill_line_width=0.4
initial_layer_line_width=0.44
initial_layer_line_width_factor=110
layer_start_x=0.0
layer_start_y=0.0
limit_support_retractions=true
line_width=0.4
raft_surface_line_width=0.4
retract_at_layer_change=false
retraction_amount=0.5
retraction_combing=no_outer_surfaces
retraction_combing_max_distance=15
retraction_count_max=100
retraction_during_traveling=false
retraction_enable=true
retraction_extra_prime_amount=0
retraction_extrusion_window=0.80
retraction_hop=0.2
retraction_hop_after_extruder_switch=true
retraction_hop_after_extruder_switch_height=1
retraction_hop_enabled=false
retraction_hop_only_when_collides=false
retraction_hop_type=directlift
retraction_min_travel=2.00
retraction_prime_speed=40
retraction_retract_speed=40
retraction_speed=40
retraction_wipe=true
roofing_line_width=0.4
skin_line_width=0.4
skirt_brim_line_width=0.4
support_line_width=0.4
switch_extruder_extra_prime_amount=0
switch_extruder_prime_speed=20
switch_extruder_retraction_amount=16
switch_extruder_retraction_speed=20
travel_avoid_distance=0.625
travel_avoid_other_parts=true
travel_avoid_supports=true
travel_retract_before_outer_wall=true
wall_line_width_0=0.4
wall_line_width_x=0.4
wipe_length=2
[Material]
bridge_fan_speed=20
bridge_fan_speed_2=0
bridge_fan_speed_3=0
build_volume_temperature=28
cool_cds_fan_enable=true
cool_cds_fan_speed=50
cool_cds_fan_start_at_height=0.5
cool_chamber_fan_enable=true
cool_fan_enabled=true
cool_fan_full_layer=2
cool_fan_speed_0=0
cool_fan_speed_max=100
cool_fan_speed_min=50
cool_infill_speed_slowdown_first=false
cool_lift_head=false
cool_min_layer_time=2.00
cool_min_layer_time_fan_speed_max=15
cool_min_speed=20
cool_overhang_bridge_force_cooling=true
cool_overhang_fan_speed=100
cool_overhang_threshold=50
cool_small_feature_fan_speed_factor=50
cool_special_cds_fan_speed=80
infill_material_flow=100
material_bed_temperature=45
material_bed_temperature_layer_0=45
material_final_print_temperature=225.00
material_flow_dependent_temperature=false
material_flow_layer_0=100
material_flow_ratio=100
material_flow_temp_graph="[[5.0,220],[10.0,230]]"
material_initial_print_temperature=230.00
material_print_temperature=240.00
material_shrinkage_percentage_z=100.0
material_standby_temperature=180
material_type=Castable
prime_tower_flow=100
skin_material_flow=100
skirt_brim_material_flow=100
speed_slowtofast_slowdown=false
speed_slowtofast_slowdown_revise_acceleration=1500
speed_slowtofast_slowdown_revise_distance=55
speed_slowtofast_slowdown_revise_speed_factor=30
support_bottom_material_flow=100
support_interface_material_flow=100
support_material_flow=80
support_roof_material_flow=100
support_supported_skin_fan_speed=100
wall_0_material_flow=95
wall_material_flow=100
wall_x_material_flow=100

Binary file not shown.

View file

@ -0,0 +1,88 @@
// Tube mount for bike trainer control dial
// length units are millimeters
// built on its side, so depth is x-axis, height is y-axiz, width is z-axis
mountWidth = 25.83;
mountDepth = 36.7;
mountHeight = 6.69;
rubberHoleWidth = 5.20;
rubberHoleSunkWidth = 8.20;
rubberHoleDepth = 8.92;
rubberHoleSunkDepth = rubberHoleDepth;
rubberHoleSunkHeight = 1.5;
screwHoleRadius = 3.50/2;
screwHoleDepthOffset = 4.67 + screwHoleRadius;
screwSpikeWidthOffset = 7.10;
screwSpikeWidth = 2.30;
screwSpikeDepthOffset = 2.00;
screwSpikeDepth = 5.5;
ledgeGapHeightOffset = 2.80;
ledgeGapHeight = mountHeight + 0.01 - ledgeGapHeightOffset;//3.18;
ledgeGapDepth = 5.41;
ledgeGapWidth = 9.02;
handlebarStemRadius = 33.45 / 2;
handlebarRadius = 32.07 / 2;
clampRadius = handlebarRadius + 1.5;
clampInnerRadius = handlebarRadius;
clampHeightOffset = 3.75;
clampEndHeightOffset = clampRadius * 1.85;
circleResolution=360*2; // faces per rotation
difference() {
union() {
// mount base
cube([mountDepth, mountHeight, mountWidth]);
// circular clamp
translate([mountDepth/2, clampRadius + clampHeightOffset, mountWidth/2]) {
rotate([0, 0, 0]) {
difference() {
cylinder(h = mountWidth, r = clampRadius, center=true, $fn=circleResolution);
union() {
cylinder(h = mountWidth * 1.1, r = clampInnerRadius, center=true, $fn=circleResolution);
translate([-(clampRadius + 0.01), clampEndHeightOffset - clampRadius, -(mountWidth/2 + 0.01)]) {
cube([(clampRadius * 2) + 0.02, clampRadius * 2.02, mountWidth + 0.02]);
}
}
}
}
}
}
union() {
// hole for rubber grip to clip in
translate([(mountDepth/2)-(rubberHoleDepth/2), -0.01, (mountWidth/2) - (rubberHoleWidth/2)]) {
cube([rubberHoleDepth, 10, rubberHoleWidth]);
}
// slightly larger hole so rubber grip clip can clip
translate([(mountDepth/2)-(rubberHoleSunkDepth/2), -0.01, (mountWidth/2) - (rubberHoleSunkWidth/2)]) {
cube([rubberHoleSunkDepth, mountHeight- rubberHoleSunkHeight, rubberHoleSunkWidth]);
}
// screw hole
translate([screwHoleDepthOffset, -0.01, (mountWidth/2)]) {
rotate([-90,0,0]) {
cylinder(h = mountHeight + 0.02, r = screwHoleRadius, $fn=circleResolution);
}
}
// lower hole for spikes on each side of screw
translate([screwSpikeDepthOffset, -0.01, screwSpikeWidthOffset]) {
cube([screwSpikeDepth, 5, screwSpikeWidth]);
}
// higher hole for spikes on each side of screw
translate([screwSpikeDepthOffset, -0.01, mountWidth - (screwSpikeWidth + screwSpikeWidthOffset)]) {
cube([screwSpikeDepth, 5, screwSpikeWidth]);
}
// lower ledge at x-axis high end for dial's clip
translate([mountDepth - ledgeGapDepth, ledgeGapHeightOffset, -0.01]) {
cube([ledgeGapDepth + 0.01, ledgeGapHeight, ledgeGapWidth + 0.01]);
}
// higher ledge at x-axis high end for dial's clip
translate([mountDepth - ledgeGapDepth, ledgeGapHeightOffset, mountWidth + 0.01 -ledgeGapWidth]) {
cube([ledgeGapDepth + 0.01, ledgeGapHeight, ledgeGapWidth + 0.01]);
}
}
}

BIN
bike trainer dial mount.stl Normal file

Binary file not shown.

BIN
bulbasaur_voronoi.stl Normal file

Binary file not shown.

BIN
charmander_voronoi.stl Normal file

Binary file not shown.

646480
eeveesupportfinal.stl Normal file

File diff suppressed because it is too large Load diff

20
fp4 back.scad Normal file
View file

@ -0,0 +1,20 @@
// Fairphone 4 back cover
// length units are millimeters
rimWidth = 2.375;
coverWidth = 74;
coverHeight = 160;
coverThickness = 2.71;
plasticThickness = 0.87;
union() {
difference() {
cube([coverWidth, coverHeight, coverThickness]);
translate ([rimWidth, rimWidth, -0.01]) {
cube([coverWidth - (2*rimWidth), coverHeight - (2*rimWidth), plasticThickness]);
}
}
translate([33.59 + rimWidth, 4.39 + rimWidth, coverThickness - plasticThickness]) {
cube([32, 32, 3.58]);
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
This thing was created by Thingiverse user the1maximus, and is licensed under Creative Commons - Attribution - Non-Commercial

View file

@ -0,0 +1 @@
Creality K1 / K1 Max Spool Roller by the1maximus on Thingiverse: https://www.thingiverse.com/thing:6316092

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

64
hole_size_test.scad Normal file
View file

@ -0,0 +1,64 @@
include <ng_common/hollow_cylinder.scad>;
// first row (1mm outer)
translate([0,0,0]) {
rotate([0,0,0])
hollowCylinder(0.6, 1, 5);
}
translate([4,0,0]) {
rotate([0,0,0])
hollowCylinder(0.5, 1, 5);
}
translate([8,0,0]) {
rotate([0,0,0])
hollowCylinder(0.4, 1, 5);
}
translate([12,0,0]) {
rotate([0,0,0])
hollowCylinder(0.3, 1, 5);
}
// second row (1.5mm outer)
translate([0,4,0]) {
rotate([0,0,0])
hollowCylinder(0.6, 1.5, 5);
}
translate([4,4,0]) {
rotate([0,0,0])
hollowCylinder(0.5, 1.5, 5);
}
translate([8,4,0]) {
rotate([0,0,0])
hollowCylinder(0.4, 1.5, 5);
}
translate([12,4,0]) {
rotate([0,0,0])
hollowCylinder(0.3, 1.5, 5);
}
// third row (2mm outer, inner increasing)
translate([0,8,0]) {
rotate([0,0,0])
hollowCylinder(0.6, 2, 5);
}
translate([4,8,0]) {
rotate([0,0,0])
hollowCylinder(0.7, 2, 5);
}
translate([8,8,0]) {
rotate([0,0,0])
hollowCylinder(0.8, 2, 5);
}
translate([12,8,0]) {
rotate([0,0,0])
hollowCylinder(0.9, 2, 5);
}

BIN
hole_size_test.stl Normal file

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,79 @@
// LG Ultrawide monitor headphone mount
// Mounted on back of monitor instead of monitor stand
// length units are millimeters
mountHeightEnd = 22.52;
mountHeightStart = 26.46;
mountWidthEnd = 15.00;
mountWidthStart = 14.52;
mountWidthScrewInset = 8.43;
screwHoleDistanceInner = 8.56;
screwHoleDistanceOuter = 14.68;
screwHoleToMountBottom = 4.27;
screwHoleToMountTop = 4.16;
screwDiameter = 4.50;
screwRadius = screwDiameter / 2;
mountToScreenBottomHeight = 30.00; //27.55;
screenBaseThickness = 45.00;
mountProtrusionFromScreenBack = 33.10;
headphoneArmLength = 50.00;
miscThickness = 6.00;
circleResolution=360*4; // faces per rotation
union() {
translate([0, 0, mountToScreenBottomHeight + miscThickness]) mountEnd(miscThickness);
headphoneMount(miscThickness);
//mountEnd(miscThickness);
}
module mountEnd(thickness) {
difference() {
cube([mountWidthEnd, thickness, mountHeightEnd]);
union() {
translate([mountWidthEnd / 2, thickness / 2, screwHoleToMountBottom + screwRadius])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
translate([mountWidthEnd / 2, thickness / 2, screwHoleToMountBottom])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
translate([mountWidthEnd / 2, thickness / 2, screwHoleToMountBottom + screwRadius/2])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
translate([mountWidthEnd / 2, thickness / 2, mountHeightEnd - (screwHoleToMountTop + screwRadius)])
rotate([-90, 0, 0])
cylinder(r = screwRadius, h = thickness + 0.02, center=true, $fn=circleResolution);
}
}
}
module headphoneMount(thickness) {
// stock down from monitor mount to clear bottom of monitor
cube([mountWidthEnd, thickness, mountToScreenBottomHeight + thickness]);
//color("red") cube([mountWidthEnd, thickness + screenBaseThickness + mountProtrusionFromScreenBack, thickness]);
// quarter circle under monitor
translate ([mountWidthEnd/2, screenBaseThickness + mountProtrusionFromScreenBack, 0]) difference() {
cylinder(r = screenBaseThickness + mountProtrusionFromScreenBack, h = thickness, $fn=circleResolution);
translate([0,0,-0.01])
cylinder(r = (screenBaseThickness + mountProtrusionFromScreenBack) - (mountWidthEnd), h = thickness + 0.02, $fn=circleResolution);
translate([-(screenBaseThickness + mountProtrusionFromScreenBack) - 0.01, thickness, -0.01])
cube([(screenBaseThickness + mountProtrusionFromScreenBack) * 2.01, (screenBaseThickness + mountProtrusionFromScreenBack), thickness + 0.02]);
translate([mountWidthEnd/2, -(screenBaseThickness + mountProtrusionFromScreenBack)-0.01, -0.01])
cube([screenBaseThickness + mountProtrusionFromScreenBack, screenBaseThickness + mountProtrusionFromScreenBack + thickness+0.02, thickness + 0.02]);
}
// right angle connection reinforcement quarter circle
difference() {
cube([mountWidthEnd, mountWidthEnd + 0.25, mountWidthEnd + thickness]);
translate([-0.01, mountWidthEnd + thickness, mountWidthEnd + thickness])
rotate([0,90,0])
cylinder(r = mountWidthEnd * 1.02, h = mountWidthEnd + 0.02, $fn=circleResolution);
}
// headphone arm
translate([-(screenBaseThickness + mountProtrusionFromScreenBack) + (mountWidthEnd / 2), (screenBaseThickness + mountProtrusionFromScreenBack + thickness), 0]) {
cube([mountWidthEnd,headphoneArmLength + thickness,thickness]);
translate([0, headphoneArmLength + thickness, 0])
cube([mountWidthEnd, thickness, thickness * 2]);
}
}

BIN
monitor headphone mount.stl Normal file

Binary file not shown.

View file

@ -0,0 +1,8 @@
module hollowCylinder(innerRadius, outerRadius, height, $fn = 360) {
difference() {
cylinder(r=outerRadius, h = height, $fn=$fn);
translate([0, 0, -0.01]) cylinder(r=innerRadius, h = height + 0.02, $fn=$fn);
}
}
//hollowCylinder(1, 2, 10);

1
nutsnbolts Submodule

@ -0,0 +1 @@
Subproject commit c16d745606ff3d069021809289137d77e19281d8

BIN
pikachu_voronoi.stl Normal file

Binary file not shown.

BIN
plateholder.stl Normal file

Binary file not shown.

135
server sbc mount.scad Normal file
View file

@ -0,0 +1,135 @@
// Modular Single Board Computer mount for server rack
// length units are millimeters
rackFunctionalWidth = 450.85; // distance between server rack side rails
sbcFullThickness = 34.0; // full height of board including PoE HAT and GPIO extensions
boardThicknessExactSBC = 1.40;
boardThicknessExactPoEHAT = 1.69;
boardThickness = 2.0; // approximate thickness of circuit boards (HAT and SBC)
sbcInterBoardThickness = 21.20; // distance between PoE HAT board and SBC board
sbcPinToEdgeDistanceExact = 1.40;
sbcPinToEdgeDistance = 1.5; // approximate lip between GPIO pins and edge of circuit board
sbcGPIOPinHeight = 7.60; // distance from HAT top to top of GPIO pins
sbcDepth = 85.00;
moduleMultiplier = 11; // modules per server rack width
mountWidth = 450.85 / moduleMultiplier;
mountHeight = 16;//63.5; // 2U height
mountStructuralQuantum = 1.5; // minimum unit for structural components
mountStructuralDepth = sbcDepth / 4;
sideWallWidth = (mountWidth - sbcFullThickness) / 2;
clipThicknessMultiplier = 6;
clipDepthMultiplier = 1.1;
unsupportedMaxExtension = mountStructuralQuantum * 2;
circleResolution=360*2; // faces per rotation
union() {
// SBC slot
translate ([(mountWidth / 2) - (sbcFullThickness / 2), 0, 0]) {
union() {
cube([
sbcFullThickness,
mountStructuralDepth,
mountStructuralQuantum
]);
translate([
sbcGPIOPinHeight + boardThickness,
0,
0
]) {
difference() {
cube([
sbcInterBoardThickness,
mountStructuralDepth,
mountStructuralQuantum + sbcPinToEdgeDistance
]);
translate([-0.4, mountStructuralDepth - 3, -0.01]) {
rotate([0,0,-45])
#linear_extrude(height=(mountStructuralQuantum + sbcPinToEdgeDistance) * 1.01) {
text("α4·NG", size=6, font="Noto Sans Mono:style=Bold");
}
}
}
}
}
}
// left side panel and mount
translate([0, 0, 0]) {
difference() {
cube([
sideWallWidth,
mountStructuralDepth,
mountHeight,
]);
translate([-0.01, -0.01, -0.01]) {
// front clip (female)
cube([
sideWallWidth * 1.01,
mountStructuralQuantum * 1.11,
mountHeight * 1.01
]);
translate([mountStructuralQuantum, mountStructuralQuantum, 0]) {
cube([
sideWallWidth,
mountStructuralQuantum * (0.01 + clipDepthMultiplier),
mountHeight * 1.01
]);
}
// back rod (female)
translate([-0.01, mountStructuralDepth - (mountStructuralQuantum * ((clipThicknessMultiplier / 2) + 1)), mountStructuralQuantum * 8]) {
rotate([0, 90, 0]) {
cylinder(h=sideWallWidth * 4, r=mountStructuralQuantum * clipThicknessMultiplier / 2, $fn=circleResolution, center=true);
}
}
}
}
}
// right side panel and mount
translate([sbcFullThickness + sideWallWidth, 0, 0]) {
cube([
sideWallWidth,
mountStructuralDepth,
mountHeight,
]);
// front clip (male)
translate([0, 0, 0]) {
cube([
sideWallWidth + mountStructuralQuantum * 1.15,
mountStructuralQuantum,
mountStructuralQuantum * clipThicknessMultiplier
]);
translate([sideWallWidth + mountStructuralQuantum * 1.15,0,0]) {
cube([
mountStructuralQuantum / 2,
mountStructuralQuantum * (clipDepthMultiplier + 1),
mountStructuralQuantum * clipThicknessMultiplier
]);
}
translate([sideWallWidth + mountStructuralQuantum * 1.65, 0, 0]) {
polyhedron(points = [
// y-plane points
[0,0,0],
[sideWallWidth - (mountStructuralQuantum * 1.55), 0, 0],
[0,0,mountStructuralQuantum * clipThicknessMultiplier],
[sideWallWidth - (mountStructuralQuantum * 1.55), 0, mountStructuralQuantum * clipThicknessMultiplier],
// x-plane points
[0, mountStructuralQuantum * (clipDepthMultiplier + 1), 0],
[0, mountStructuralQuantum * (clipDepthMultiplier + 1), mountStructuralQuantum * clipThicknessMultiplier]
], faces = [
[0, 2, 3, 1], //[0, 1, 2, 3],
[0, 4, 5, 2], //[0, 2, 4, 5],
[1, 3, 5, 4], //[1, 3, 4, 5],
[0, 1, 4],
[2, 5, 3]
]);
}
}
// back rod (male)
translate([sideWallWidth, mountStructuralDepth - (mountStructuralQuantum * ((clipThicknessMultiplier / 2) + 1)), mountStructuralQuantum * 8]) {
rotate([0, 90, 0]) {
cylinder(h=unsupportedMaxExtension * 2, r=mountStructuralQuantum * clipThicknessMultiplier * 0.48, $fn=circleResolution, center=true);
}
}
}
}

BIN
server sbc mount.stl Normal file

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,98 @@
// Valve Index headset and controllers mount
// length units are millimeters
tableLegDiameter = 44.5;
screwToLeg = 15.42;
screwHeadDiameter = 9.00;
screwThreadHole = 5.00;
headsetBottomSupportWidth = 25.40;
legWrapperWidth = 5.00;
clampHeight = 100.0;
circleResolution=360*2; // faces per rotation
difference() {
union() {
// leg clamp
difference() {
cylinder(h=100, r=tableLegDiameter/2 + legWrapperWidth, $fn=circleResolution);
union() {
translate([0,0,-0.05]) {
cylinder(h=clampHeight + 0.1, r=tableLegDiameter/2, $fn=circleResolution);
}
translate([-clampHeight,screwHeadDiameter, -0.05]) {
cube([clampHeight*2, clampHeight, clampHeight + 0.1]);
}
}
}
// leg screw connection
translate([-screwHeadDiameter,-(screwToLeg+screwHeadDiameter+tableLegDiameter/2),clampHeight-27.0]) {
difference() {
cube([screwHeadDiameter * 2, screwToLeg + screwHeadDiameter, 27.0]);
union() {
rotate([0, 90, 0]) {
translate([42, -45, screwHeadDiameter+0.1
]) {
cylinder(h=screwHeadDiameter*2.5, r=78.0, center=true, $fn=circleResolution);
}
}
// space for screw head
translate([screwHeadDiameter, screwHeadDiameter/2, 15]) {
cylinder(h=12.0, r=screwHeadDiameter*0.55, center=true, $fn=circleResolution);
translate([-screwHeadDiameter*0.55,-screwHeadDiameter,-6])
cube([screwHeadDiameter*1.1, 10, 12]);
}
}
}
}
// headset hook
translate([-screwHeadDiameter,-(legWrapperWidth+headsetBottomSupportWidth*1.5+tableLegDiameter/2),0]) {
union() {
cube([screwHeadDiameter*2, legWrapperWidth+headsetBottomSupportWidth*1.5, legWrapperWidth*1.5]);
translate([0, -legWrapperWidth*0.99, 0]) {
cube([screwHeadDiameter*2, legWrapperWidth, legWrapperWidth*3]);
}
translate([0, (headsetBottomSupportWidth*1.5)-14, legWrapperWidth*1.5]) {
difference() {
cube([screwHeadDiameter*2, 12+legWrapperWidth,10]);
translate([-50,0,12+legWrapperWidth]) {
rotate([0,90,0]) {
cylinder(h=100, r=12+legWrapperWidth, $fn=circleResolution);
}
}
}
}
}
}
// left controller hook
translate([-(legWrapperWidth+legWrapperWidth+tableLegDiameter/2), 0, 0]) {
cube([legWrapperWidth+legWrapperWidth, screwHeadDiameter, legWrapperWidth]);
translate([-legWrapperWidth*0.99,0,0]){
cube([legWrapperWidth, screwHeadDiameter, legWrapperWidth*2]);
}
}
// right controller hook
translate([tableLegDiameter/2, 0, 0]) {
cube([legWrapperWidth+legWrapperWidth, screwHeadDiameter, legWrapperWidth]);
translate([legWrapperWidth+legWrapperWidth*0.99,0,0]){
cube([legWrapperWidth, screwHeadDiameter, legWrapperWidth*2]);
}
}
}
// extra critical space deletion
union() {
// table leg
translate([0,0,-0.05]) {
cylinder(h=clampHeight + 0.1, r=tableLegDiameter/2, $fn=circleResolution);
}
translate([-clampHeight,10, -0.05]) {
cube([clampHeight*2, clampHeight, clampHeight + 0.1]);
}
// screw hole
translate([0, -(screwToLeg+screwHeadDiameter/2 + tableLegDiameter/2), 200]) {
cylinder(h=250.0, r=screwThreadHole/2, center=true, $fn=circleResolution);
}
}
}

BIN
valve index desk mount.stl Normal file

Binary file not shown.

63
voronoi/voronoi.scad Normal file
View file

@ -0,0 +1,63 @@
// (c)2013 Felipe Sanches <juca@members.fsf.org>
// licensed under the terms of the GNU GPL version 3 (or later)
function normalize(v) = v/(sqrt(v[0]*v[0] + v[1]*v[1]));
module voronoi(points, L=200, thickness=1, round=6, nuclei=true){
for (p=points){
difference(){
minkowski(){
intersection_for(p1=points){
if (p!=p1){
translate((p+p1)/2 - normalize(p1-p) * (thickness+round))
assign(angle=90+atan2(p[1]-p1[1], p[0]-p1[0])){
rotate([0,0,angle])
translate([-L,-L])
square([2*L, L]);
}
}
}
circle(r=round, $fn=20);
}
if (nuclei)
translate(p) circle(r=1, $fn=20);
}
}
}
module random_voronoi(n=20, nuclei=true, L=200, thickness=1, round=6, min=0, max=100, seed=42){
x = rands(min, max, n, seed);
y = rands(min, max, n, seed+1);
for (i=[0:n-1]){
difference(){
minkowski(){
intersection_for(j=[0:n-1]){
if (i!=j){
assign(p=[x[i],y[i]], p1=[x[j],y[j]]){
translate((p+p1)/2 - normalize(p1-p) * (thickness+round))
assign(angle=90+atan2(p[1]-p1[1], p[0]-p1[0])){
rotate([0,0,angle])
translate([-L,-L])
square([2*L, L]);
}
}
}
}
circle(r=round, $fn=20);
}
if (nuclei)
translate([x[i],y[i]]) circle(r=1, $fn=20);
}
}
}
// example with an explicit list of points:
// point_set = [[0,0],[30,0],[20,10],[50,20],[15,30],[85,30],[35,30],[12,60], [45,50],[80,80],[20,-40],[-20,20],[-15,10],[-15,50]];
// voronoi(points=point_set, round=4, nuclei=false);
// example with randomly generated set of points
random_voronoi(n=64, round=6, min=0, max=300);