mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2025-01-04 11:19:44 +00:00
commit
2eb231ec9b
3 changed files with 107 additions and 1 deletions
|
@ -48,6 +48,7 @@ PrioritizeFiles:
|
||||||
metric_screws.scad
|
metric_screws.scad
|
||||||
bottlecaps.scad
|
bottlecaps.scad
|
||||||
screw_drive.scad
|
screw_drive.scad
|
||||||
|
tripod_mounts.scad
|
||||||
DefineHeader(BulletList): Side Effects
|
DefineHeader(BulletList): Side Effects
|
||||||
DefineHeader(Table;Headers=Anchor Name|Position): Extra Anchors
|
DefineHeader(Table;Headers=Anchor Name|Position): Extra Anchors
|
||||||
DefineHeader(Table;Headers=Anchor Type|What it is): Anchor Types
|
DefineHeader(Table;Headers=Anchor Type|What it is): Anchor Types
|
||||||
|
|
|
@ -956,7 +956,7 @@ module spiral_sweep(poly, h, r, turns=1, higbee, center, r1, r2, d, d1, d2, higb
|
||||||
// ushape = [[-10, 0],[-10, 10],[ -7, 10],[ -7, 2],[ 7, 2],[ 7, 7],[ 10, 7],[ 10, 0]];
|
// ushape = [[-10, 0],[-10, 10],[ -7, 10],[ -7, 2],[ 7, 2],[ 7, 7],[ 10, 7],[ 10, 0]];
|
||||||
// elliptic_arc = xscale(2, p=arc($fn=64,angle=[180,0], r=30)); // Clockwise
|
// elliptic_arc = xscale(2, p=arc($fn=64,angle=[180,0], r=30)); // Clockwise
|
||||||
// path_sweep(ushape, path3d(elliptic_arc), method="manual", normal=UP+RIGHT);
|
// path_sweep(ushape, path3d(elliptic_arc), method="manual", normal=UP+RIGHT);
|
||||||
// Example(NoScales): Here we changed the ellipse to be more pointy, and with the same results as above we get a shape with an irregularity in the middle where it maintains the specified direction around the point of the ellipse. If the ellipse were more pointing, this would result in a bad polyhedron:
|
// Example(NoScales): Here we changed the ellipse to be more pointy, and with the same results as above we get a shape with an irregularity in the middle where it maintains the specified direction around the point of the ellipse. If the ellipse were more pointy, this would result in a bad polyhedron:
|
||||||
// ushape = [[-10, 0],[-10, 10],[ -7, 10],[ -7, 2],[ 7, 2],[ 7, 7],[ 10, 7],[ 10, 0]];
|
// ushape = [[-10, 0],[-10, 10],[ -7, 10],[ -7, 2],[ 7, 2],[ 7, 7],[ 10, 7],[ 10, 0]];
|
||||||
// elliptic_arc = yscale(2, p=arc($fn=64,angle=[180,0], r=30)); // Clockwise
|
// elliptic_arc = yscale(2, p=arc($fn=64,angle=[180,0], r=30)); // Clockwise
|
||||||
// path_sweep(ushape, path3d(elliptic_arc), method="manual", normal=UP+RIGHT);
|
// path_sweep(ushape, path3d(elliptic_arc), method="manual", normal=UP+RIGHT);
|
||||||
|
|
105
tripod_mounts.scad
Normal file
105
tripod_mounts.scad
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// LibFile: tripod_mounts.scad
|
||||||
|
// Mount plates for tripods. Currently only the Manfrotto RC2 plate.
|
||||||
|
// Includes:
|
||||||
|
// include <BOSL2/std.scad>
|
||||||
|
// include <BOSL2/tripod_mounts.scad>
|
||||||
|
// FileGroup: Parts
|
||||||
|
// FileSummary: Tripod mount plates: RC2
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
// Module: manfrotto_rc2_plate()
|
||||||
|
// Usage:
|
||||||
|
// manfrotto_rc2_plate([chamfer],[anchor],[orient],[spin]) [ATTACHMENTS];
|
||||||
|
// Description:
|
||||||
|
// Creates a Manfrotto RC2 quick release mount plate to mount to a tripod. The chamfer argument
|
||||||
|
// lets you control whether the model edges are chamfered. By default all edges are chamfered,
|
||||||
|
// but you can set it to "bot" to chamfer only the bottom, so that connections to a model larger
|
||||||
|
// than the plate doin't have a V-groove at the junction. The plate is 10.5 mm thick.
|
||||||
|
// Arguments:
|
||||||
|
// chamfer = "none" for no chamfer, "all" for full chamfering, and "bot" or "bottom" for bottom chamfering. Default: "all".
|
||||||
|
// Examples:
|
||||||
|
// manfrotto_rc2_plate();
|
||||||
|
// manfrotto_rc2_plate("bot");
|
||||||
|
module manfrotto_rc2_plate(chamfer="all",anchor,orient,spin)
|
||||||
|
{
|
||||||
|
chsize=0.5;
|
||||||
|
|
||||||
|
assert(in_list(chamfer, ["bot","bottom","all","none"]), "chamfer must be \"all\", \"bottom\", \"bot\", or \"none\"");
|
||||||
|
chamf_top = chamfer=="all";
|
||||||
|
chamf_bot = in_list(chamfer, ["bot","bottom","all"]);
|
||||||
|
|
||||||
|
length = 52.5;
|
||||||
|
innerlen=43;
|
||||||
|
|
||||||
|
topwid = 37.4;
|
||||||
|
botwid = 42.4;
|
||||||
|
|
||||||
|
thickness = 10.5;
|
||||||
|
|
||||||
|
flat_height=3;
|
||||||
|
angled_size=5;
|
||||||
|
angled_height = thickness - flat_height*2;
|
||||||
|
angled_width = sqrt(angled_size^2-angled_height^2);
|
||||||
|
|
||||||
|
corner_space = 25;
|
||||||
|
corner_space_ht = 4.5;
|
||||||
|
|
||||||
|
left_top=2;
|
||||||
|
|
||||||
|
pts = turtle([
|
||||||
|
"move",botwid,
|
||||||
|
"left",
|
||||||
|
"move", flat_height,
|
||||||
|
"xymove", [-angled_width, angled_height],
|
||||||
|
"move", flat_height,
|
||||||
|
"left",
|
||||||
|
"move", topwid,
|
||||||
|
"left",
|
||||||
|
"move", left_top,
|
||||||
|
"jump", [0,flat_height]
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
cutout_len=26;
|
||||||
|
|
||||||
|
|
||||||
|
facet = [
|
||||||
|
back(-left_top,select(pts,-3)),
|
||||||
|
each fwd(1.5,select(pts,-2,-1)),
|
||||||
|
[-10,-left_top+select(pts,-1).y],
|
||||||
|
left(10,back(-flat_height,select(pts,-3)))
|
||||||
|
];
|
||||||
|
|
||||||
|
attachable(anchor,spin,orient,size=[botwid,length,thickness],size2=[topwid,length],shift=[.64115/2,0]){
|
||||||
|
down(thickness/2)
|
||||||
|
diff()
|
||||||
|
linear_sweep(pts,h=length,convexity=4,orient=FWD,anchor=FWD){
|
||||||
|
zflip_copy()
|
||||||
|
down(.01)fwd(.01)left(.01)position(LEFT+FRONT+BOT)
|
||||||
|
cuboid([corner_space,(length-innerlen)/2,thickness+.02], chamfer=-chsize, $tags="remove",
|
||||||
|
orient=FWD,anchor=TOP+LEFT+FWD,edges=chamf_top?"ALL":TOP);
|
||||||
|
fwd(left_top)position(LEFT+BACK)linear_sweep(h=cutout_len,facet,convexity=4,$tags="remove",anchor=RIGHT+BACK);
|
||||||
|
if (chamf_bot){
|
||||||
|
edge_mask(FRONT+LEFT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(FRONT+RIGHT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(FRONT+TOP)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(FRONT+BOT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(TOP+RIGHT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(BOT+RIGHT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
zflip_copy(){
|
||||||
|
right(corner_space)edge_mask(TOP+LEFT) chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
down((length-innerlen)/2)edge_mask(TOP+LEFT) chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (chamf_top){
|
||||||
|
edge_mask(BACK+LEFT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(BACK+RIGHT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(BACK+TOP)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
edge_mask(BACK+BOT)chamfer_edge_mask(length,chsize,$tags="remove");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue