1//////////////////////////////////////////////////////////////////////////////////////////////
2// LibFile: tripod_mounts.scad
3// Mount plates for tripods. Currently only the Manfrotto RC2 plate.
4// Includes:
5// include <BOSL2/std.scad>
6// include <BOSL2/tripod_mounts.scad>
7// FileGroup: Parts
8// FileSummary: Tripod mount plates: RC2
9//////////////////////////////////////////////////////////////////////////////////////////////
10
11
12// Module: manfrotto_rc2_plate()
13// Synopsis: Creates a Manfrotto RC2 tripod quick release mount plate.
14// SynTags: Geom
15// Topics: Parts
16// See Also: threaded_rod()
17// Usage:
18// manfrotto_rc2_plate([chamfer],[anchor],[orient],[spin]) [ATTACHMENTS];
19// Description:
20// Creates a Manfrotto RC2 quick release mount plate to mount to a tripod. The chamfer argument
21// lets you control whether the model edges are chamfered. By default all edges are chamfered,
22// but you can set it to "bot" to chamfer only the bottom, so that connections to a model larger
23// than the plate doin't have a V-groove at the junction. The plate is 10.5 mm thick.
24// Arguments:
25// chamfer = "none" for no chamfer, "all" for full chamfering, and "bot" or "bottom" for bottom chamfering. Default: "all".
26// Examples:
27// manfrotto_rc2_plate();
28// manfrotto_rc2_plate("bot");
29module manfrotto_rc2_plate(chamfer="all",anchor,orient,spin)
30{
31 chsize=0.5;
32
33 dummy = assert(in_list(chamfer, ["bot","bottom","all","none"]), "chamfer must be \"all\", \"bottom\", \"bot\", or \"none\"");
34 chamf_top = chamfer=="all";
35 chamf_bot = in_list(chamfer, ["bot","bottom","all"]);
36
37 length = 52.5;
38 innerlen=43;
39
40 topwid = 37.4;
41 botwid = 42.4;
42
43 thickness = 10.5;
44
45 flat_height=3;
46 angled_size=5;
47 angled_height = thickness - flat_height*2;
48 angled_width = sqrt(angled_size^2-angled_height^2);
49
50 corner_space = 25;
51 corner_space_ht = 4.5;
52
53 left_top=2;
54
55 pts = turtle([
56 "move",botwid,
57 "left",
58 "move", flat_height,
59 "xymove", [-angled_width, angled_height],
60 "move", flat_height,
61 "left",
62 "move", topwid,
63 "left",
64 "move", left_top,
65 "jump", [0,flat_height]
66 ]);
67
68
69 cutout_len=26;
70
71
72 facet = [
73 back(-left_top,select(pts,-3)),
74 each fwd(1.5,select(pts,-2,-1)),
75 [-10,-left_top+select(pts,-1).y],
76 left(10,back(-flat_height,select(pts,-3)))
77 ];
78
79 attachable(anchor,spin,orient,size=[botwid,length,thickness],size2=[topwid,length],shift=[.64115/2,0]){
80 tag_scope()
81 down(thickness/2)
82 diff()
83 linear_sweep(pts,h=length,convexity=4,orient=FWD,anchor=FWD){
84 tag("remove"){
85 zflip_copy()
86 down(.01)fwd(.01)left(.01)position(LEFT+FRONT+BOT)
87 cuboid([corner_space,(length-innerlen)/2,thickness+.02], chamfer=-chsize,
88 orient=FWD,anchor=TOP+LEFT+FWD,edges=chamf_top?"ALL":TOP);
89 fwd(left_top)position(LEFT+BACK)linear_sweep(h=cutout_len,facet,convexity=4,anchor=RIGHT+BACK);
90 }
91 if (chamf_bot){
92 edge_mask(FRONT+LEFT)chamfer_edge_mask(length,chsize);
93 edge_mask(FRONT+RIGHT)chamfer_edge_mask(length,chsize);
94 edge_mask(FRONT+TOP)chamfer_edge_mask(length,chsize);
95 edge_mask(FRONT+BOT)chamfer_edge_mask(length,chsize);
96 edge_mask(TOP+RIGHT)chamfer_edge_mask(length,chsize);
97 edge_mask(BOT+RIGHT)chamfer_edge_mask(length,chsize);
98 zflip_copy(){
99 right(corner_space)edge_mask(TOP+LEFT) chamfer_edge_mask(length,chsize);
100 down((length-innerlen)/2)edge_mask(TOP+LEFT) chamfer_edge_mask(length,chsize);
101 }
102 }
103 if (chamf_top){
104 edge_mask(BACK+LEFT) chamfer_edge_mask(length,chsize);
105 edge_mask(BACK+RIGHT) chamfer_edge_mask(length,chsize);
106 edge_mask(BACK+TOP) chamfer_edge_mask(length,chsize);
107 edge_mask(BACK+BOT) chamfer_edge_mask(length,chsize);
108 }
109 }
110 children();
111 }
112}