Compare commits
9 Commits
898dc86c84
...
44c0a0e3e3
Author | SHA1 | Date |
---|---|---|
|
44c0a0e3e3 | 3 weeks ago |
|
9eee35cf14 | 3 weeks ago |
|
747e242c81 | 4 weeks ago |
|
19342ddaa2 | 2 months ago |
|
a8136a2a1b | 2 months ago |
|
feff671562 | 2 months ago |
|
915e436460 | 2 months ago |
|
5c0fdf1ac0 | 2 months ago |
|
f4591a2188 | 2 months ago |
4 changed files with 433 additions and 68 deletions
@ -0,0 +1,232 @@ |
|||
from cadquery import exporters |
|||
from cq_warehouse.extensions import Workplane |
|||
from cq_warehouse.fastener import * |
|||
from cq_warehouse.thread import * |
|||
import cadquery as cq |
|||
|
|||
screw_simple = False # Controls whether to not actually make the screw threads, saves time running it for testing |
|||
|
|||
screw_length = 15 # FIXME need different ones for different holes |
|||
handle_screw = ButtonHeadScrew( |
|||
size="M6-1", |
|||
fastener_type="iso7380_1", |
|||
length=screw_length * MM, |
|||
simple=screw_simple, |
|||
hand="left", |
|||
) |
|||
|
|||
magnet_diameter = 4.92 |
|||
magnet_radius = magnet_diameter / 2.0 |
|||
|
|||
prong_width = 20.0 |
|||
prong_dist = 228 - prong_width |
|||
prong_height = 23.5 |
|||
prong_thickness = 7.7 |
|||
|
|||
wall_thickness = 5.4 |
|||
depth = 128 |
|||
width = 240 |
|||
height = 133 |
|||
magnet_buffer_space = 0.3 |
|||
|
|||
foot_diameter = 8.8 |
|||
foot_radius = foot_diameter / 2.0 |
|||
|
|||
result = Workplane() |
|||
result = result.box( |
|||
width + wall_thickness, depth + wall_thickness, height + wall_thickness |
|||
) |
|||
|
|||
result = ( |
|||
result.workplane(offset=0) |
|||
.move(wall_thickness, 0) |
|||
.box( |
|||
width + wall_thickness, |
|||
depth - wall_thickness, |
|||
height - wall_thickness, |
|||
combine="cut", |
|||
) |
|||
) |
|||
|
|||
# Magnet holes |
|||
result = ( |
|||
result.workplane(offset=wall_thickness) |
|||
.move(width / 2.0 - magnet_diameter, 0) |
|||
.box( |
|||
magnet_diameter + magnet_buffer_space + 1.5, |
|||
depth, |
|||
height + wall_thickness * 2, |
|||
combine="cut", |
|||
) |
|||
) |
|||
|
|||
result = ( |
|||
result.workplane(offset=-(height / 2.0) + 1.5) |
|||
.move( |
|||
width / 2.0 - wall_thickness + (magnet_buffer_space / 2.0), |
|||
-(depth / 2.0) + wall_thickness, |
|||
) |
|||
.line(0, depth - wall_thickness * 2) |
|||
.vertices() |
|||
.cylinder(6.6, magnet_radius, combine="cut") |
|||
) |
|||
|
|||
door_side_magnet_cut_left = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=depth / 2.0) |
|||
.move( |
|||
width / 2.0 - wall_thickness + (magnet_buffer_space / 2.0), |
|||
-depth / 2.0 + wall_thickness + 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
door_side_magnet_cut_right = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=-(depth / 2.0)) |
|||
.move( |
|||
width / 2.0 - wall_thickness + (magnet_buffer_space / 2.0), |
|||
-depth / 2.0 + wall_thickness + 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
result = result.cut(door_side_magnet_cut_left) |
|||
result = result.cut(door_side_magnet_cut_right) |
|||
|
|||
door_side_magnet_cut_left_top = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=depth / 2.0) |
|||
.move( |
|||
width / 2.0 - wall_thickness + (magnet_buffer_space / 2.0), |
|||
depth / 2.0 - wall_thickness - 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
door_side_magnet_cut_right_top = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=-(depth / 2.0)) |
|||
.move( |
|||
width / 2.0 - wall_thickness + (magnet_buffer_space / 2.0), |
|||
depth / 2.0 - wall_thickness - 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
result = result.cut(door_side_magnet_cut_left_top) |
|||
result = result.cut(door_side_magnet_cut_right_top) |
|||
|
|||
# slots to fit the oscilloscope in |
|||
# move 38 mm back |
|||
scope_slots = ( |
|||
Workplane("ZX") |
|||
.workplane(offset=(height / 2.0)) |
|||
.move(depth / 2.0 - wall_thickness - 38, -(width / 2.0) + 13) |
|||
.line(0, prong_dist) |
|||
.vertices() |
|||
.box(prong_thickness, prong_width, wall_thickness * 3) |
|||
) |
|||
|
|||
result = result.cut(scope_slots) |
|||
|
|||
feet_cut = ( |
|||
Workplane("ZX") |
|||
.workplane(offset=-depth / 2.0 - 2) |
|||
.move(0, 0) |
|||
.rect(height - wall_thickness * 6, width - wall_thickness * 6) |
|||
.vertices() |
|||
.cylinder(1.4, foot_radius) |
|||
) |
|||
|
|||
result = result.cut(feet_cut) |
|||
|
|||
## Doors |
|||
|
|||
door = Workplane() |
|||
door = door.box(wall_thickness, depth, height) |
|||
|
|||
## Door magnets |
|||
|
|||
door = ( |
|||
door.workplane(offset=-(height / 2.0) - 1) |
|||
.move( |
|||
0, |
|||
-(depth / 2.0) + wall_thickness, |
|||
) |
|||
.line(0, depth - wall_thickness * 2) |
|||
.vertices() |
|||
.cylinder(6.6, magnet_radius, combine="cut") |
|||
) |
|||
|
|||
_door_side_magnet_cut_left = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=(depth / 2.0)) |
|||
.move( |
|||
0, |
|||
-depth / 2.0 + wall_thickness + 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
_door_side_magnet_cut_right = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=-(depth / 2.0)) |
|||
.move( |
|||
0, |
|||
-depth / 2.0 + wall_thickness + 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
door = door.cut(_door_side_magnet_cut_left) |
|||
door = door.cut(_door_side_magnet_cut_right) |
|||
|
|||
_door_side_magnet_cut_left_top = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=depth / 2.0) |
|||
.move( |
|||
0, |
|||
depth / 2.0 - wall_thickness - 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
_door_side_magnet_cut_right_top = ( |
|||
Workplane("XZ") |
|||
.workplane(offset=-(depth / 2.0)) |
|||
.move( |
|||
0, |
|||
depth / 2.0 - wall_thickness - 7, |
|||
) |
|||
.cylinder(4.3, magnet_radius) |
|||
) |
|||
|
|||
door = door.cut(_door_side_magnet_cut_left_top) |
|||
door = door.cut(_door_side_magnet_cut_right_top) |
|||
|
|||
# door_handle_cut = Workplane().union(screw_thread.rotate((0, 0, 0), (0, 1, 0), 270)) |
|||
door = ( |
|||
door.rotate((0, 0, 0), (0, 1, 0), 270) |
|||
.workplane(offset=6.0) |
|||
.move(60, 0) |
|||
.threadedHole(handle_screw, 8, simple=screw_simple, fit="Close") |
|||
) |
|||
|
|||
handle = ( |
|||
Workplane() |
|||
.union(handle_screw) |
|||
.workplane(offset=5) |
|||
.cylinder(8, 6, combine="cut") |
|||
.workplane(offset=5) |
|||
.cylinder(5, 3.5) |
|||
) |
|||
|
|||
cq.exporters.export(result, "/home/deck/model_files/organizer.stl") |
|||
cq.exporters.export(door, "/home/deck/model_files/organizer_door.stl") |
|||
cq.exporters.export(handle, "/home/deck/model_files/organizer_door_handle.stl") |
|||
|
|||
try: |
|||
show_object(handle) |
|||
except NameError: |
|||
pass |
@ -0,0 +1,30 @@ |
|||
from cadquery import exporters |
|||
from cq_warehouse.extensions import Workplane |
|||
from cq_warehouse.fastener import * |
|||
from cq_warehouse.thread import * |
|||
from svg_path import addSvgPath |
|||
from svgpathtools import svg2paths |
|||
from cqmore.polygon import regularPolygon |
|||
import cadquery as cq |
|||
import cqmore |
|||
|
|||
Workplane = cqmore.extend(Workplane) |
|||
Workplane.addSvgPath = addSvgPath |
|||
|
|||
pot_knob = cq.importers.importStep("/home/deck/Downloads/pot_knob.step") |
|||
gain_result = Workplane() |
|||
probe_result = Workplane() |
|||
|
|||
gain_result = gain_result.workplane(offset=13.7).center(0, -2).text("AUDIO", 3.5, 2) |
|||
gain_result = pot_knob.cut(gain_result) |
|||
|
|||
probe_result = probe_result.workplane(offset=13.7).center(0, -2).text("PROBE", 3.5, 2) |
|||
probe_result = pot_knob.cut(probe_result) |
|||
|
|||
cq.exporters.export(gain_result, "/home/deck/model_files/pot_knob_gain.stl") |
|||
cq.exporters.export(probe_result, "/home/deck/model_files/pot_knob_probe.stl") |
|||
|
|||
try: |
|||
show_object(gain_result) |
|||
except NameError: |
|||
pass |
Loading…
Reference in new issue