mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2025-01-06 12:19:47 +00:00
Merge branch 'master' into revarbat_dev
This commit is contained in:
commit
5bb44cdc06
4 changed files with 149 additions and 98 deletions
|
@ -179,7 +179,7 @@ function _bezier_matrix(N) =
|
||||||
|
|
||||||
|
|
||||||
// Function: bezier_curve()
|
// Function: bezier_curve()
|
||||||
// Synopsis: Computes a number of uniformly distributed points along a bezier curve.
|
// Synopsis: Computes a specified number of points on a bezier curve.
|
||||||
// SynTags: Path
|
// SynTags: Path
|
||||||
// Topics: Bezier Curves
|
// Topics: Bezier Curves
|
||||||
// See Also: bezier_curve(), bezier_curvature(), bezier_tangent(), bezier_derivative(), bezier_points()
|
// See Also: bezier_curve(), bezier_curvature(), bezier_tangent(), bezier_derivative(), bezier_points()
|
||||||
|
@ -261,7 +261,7 @@ function bezier_tangent(bezier, u) =
|
||||||
|
|
||||||
|
|
||||||
// Function: bezier_curvature()
|
// Function: bezier_curvature()
|
||||||
// Synopsis: Returns the curvature values at one or more given positions along a bezier curve.
|
// Synopsis: Returns the curvature at one or more given positions along a bezier curve.
|
||||||
// Topics: Bezier Curves
|
// Topics: Bezier Curves
|
||||||
// See Also: bezier_tangent(), bezier_derivative(), bezier_points()
|
// See Also: bezier_tangent(), bezier_derivative(), bezier_points()
|
||||||
// Usage:
|
// Usage:
|
||||||
|
@ -437,7 +437,7 @@ function bezpath_points(bezpath, curveind, u, N=3) =
|
||||||
|
|
||||||
|
|
||||||
// Function: bezpath_curve()
|
// Function: bezpath_curve()
|
||||||
// Synopsis: Takes a bezier path and converts it into a path of points.
|
// Synopsis: Converts bezier path into a path of points.
|
||||||
// SynTags: Path
|
// SynTags: Path
|
||||||
// Topics: Bezier Paths
|
// Topics: Bezier Paths
|
||||||
// See Also: bezier_points(), bezier_curve(), bezpath_points()
|
// See Also: bezier_points(), bezier_curve(), bezpath_points()
|
||||||
|
@ -474,7 +474,7 @@ function bezpath_curve(bezpath, splinesteps=16, N=3, endpoint=true) =
|
||||||
|
|
||||||
|
|
||||||
// Function: bezpath_closest_point()
|
// Function: bezpath_closest_point()
|
||||||
// Synopsis: Finds the closest part of a bezier path to a give point.
|
// Synopsis: Finds the closest point on a bezier path to a given point.
|
||||||
// Topics: Bezier Paths
|
// Topics: Bezier Paths
|
||||||
// See Also: bezpath_points(), bezpath_curve(), bezier_points(), bezier_curve(), bezier_closest_point()
|
// See Also: bezpath_points(), bezpath_curve(), bezier_points(), bezier_curve(), bezier_closest_point()
|
||||||
// Usage:
|
// Usage:
|
||||||
|
|
54
gears.scad
54
gears.scad
|
@ -26,7 +26,7 @@
|
||||||
// Section: Gears
|
// Section: Gears
|
||||||
|
|
||||||
// Function&Module: spur_gear()
|
// Function&Module: spur_gear()
|
||||||
// Synopsis: Creates a spur gear shape.
|
// Synopsis: Creates a spur gear, helical gear, or internal ring gear.
|
||||||
// SynTags: Geom, VNF
|
// SynTags: Geom, VNF
|
||||||
// Topics: Gears, Parts
|
// Topics: Gears, Parts
|
||||||
// See Also: rack(), spur_gear(), spur_gear2d(), bevel_gear()
|
// See Also: rack(), spur_gear(), spur_gear2d(), bevel_gear()
|
||||||
|
@ -37,9 +37,17 @@
|
||||||
// vnf = spur_gear(pitch, teeth, thickness, [shaft_diam=], ...);
|
// vnf = spur_gear(pitch, teeth, thickness, [shaft_diam=], ...);
|
||||||
// vnf = spur_gear(mod=, teeth=, thickness=, [shaft_diam=], ...);
|
// vnf = spur_gear(mod=, teeth=, thickness=, [shaft_diam=], ...);
|
||||||
// Description:
|
// Description:
|
||||||
// Creates a (potentially helical) involute spur gear. The module `spur_gear()` gives an involute
|
// Creates a involute spur gear, helical gear, or internal ring gear. The module `spur_gear()` gives an involute
|
||||||
// spur gear, with reasonable defaults for all the parameters. Normally, you should just choose the
|
// spur gear, with reasonable defaults for all the parameters. Normally, you should just choose the
|
||||||
// first 4 parameters, and let the rest be default values. The module `spur_gear()` gives a gear in
|
// first 4 parameters, and let the rest be default values. Spur gears have straight teeth and
|
||||||
|
// mesh together on parallel shafts without creating any axial thrust. The teeth engage suddenly across their
|
||||||
|
// entire width, creating stress and noise. Helical gears have angled teeth and engage more gradually, so they
|
||||||
|
// run more smoothly and quietly, however they do produce thrust along the gear axis. This can be
|
||||||
|
// circumvented using herringbone or double helical gears, which have no axial thrust and also self-align.
|
||||||
|
// Helical gears can mesh along shafts that are not parallel, where the angle between the shafts is
|
||||||
|
// the sum of the helical angles of the two gears.
|
||||||
|
// .
|
||||||
|
// The module `spur_gear()` gives a gear in
|
||||||
// the XY plane, centered on the origin, with one tooth centered on the positive Y axis. The most
|
// the XY plane, centered on the origin, with one tooth centered on the positive Y axis. The most
|
||||||
// important is `pitch_radius()`, which tells how far apart to space gears that are meshing, and
|
// important is `pitch_radius()`, which tells how far apart to space gears that are meshing, and
|
||||||
// `outer_radius()`, which gives the size of the region filled by the gear. A gear has a "pitch
|
// `outer_radius()`, which gives the size of the region filled by the gear. A gear has a "pitch
|
||||||
|
@ -120,6 +128,24 @@
|
||||||
// color("#fc7") left(r1+r4) zrot(a4) spur_gear(pitch,n4,thickness,hole,hide=n4-3);
|
// color("#fc7") left(r1+r4) zrot(a4) spur_gear(pitch,n4,thickness,hole,hide=n4-3);
|
||||||
// color("#ccc") fwd(r1) right(pitch*$t)
|
// color("#ccc") fwd(r1) right(pitch*$t)
|
||||||
// rack(pitch=pitch,teeth=n5,thickness=thickness,height=rack_base,anchor=CENTER,orient=BACK);
|
// rack(pitch=pitch,teeth=n5,thickness=thickness,height=rack_base,anchor=CENTER,orient=BACK);
|
||||||
|
// Example: Helical gears meshing with non-parallel shafts
|
||||||
|
// ang1 = 30;
|
||||||
|
// ang2 = 10;
|
||||||
|
// pitch = 5;
|
||||||
|
// n = 20;
|
||||||
|
// r = pitch_radius(pitch,n);
|
||||||
|
// left(r) spur_gear(
|
||||||
|
// pitch=pitch, teeth=n, thickness=10,
|
||||||
|
// shaft_diam=5, helical=ang1, slices=12,
|
||||||
|
// $fa=1, $fs=1
|
||||||
|
// );
|
||||||
|
// right(r)
|
||||||
|
// xrot(ang1+ang2)
|
||||||
|
// zrot(360/n/2-5) spur_gear(
|
||||||
|
// pitch=pitch, teeth=n, thickness=10,
|
||||||
|
// shaft_diam=5, helical=ang2, slices=12,
|
||||||
|
// $fa=1, $fs=1
|
||||||
|
// );
|
||||||
// Example(Anim,Frames=36,VPT=[0,0,0],VPR=[55,0,25],VPD=375): Planetary Gear Assembly
|
// Example(Anim,Frames=36,VPT=[0,0,0],VPR=[55,0,25],VPD=375): Planetary Gear Assembly
|
||||||
// rteeth=56; pteeth=16; cteeth=24;
|
// rteeth=56; pteeth=16; cteeth=24;
|
||||||
// pitch=5; thick=10; pa=20;
|
// pitch=5; thick=10; pa=20;
|
||||||
|
@ -240,7 +266,7 @@ module spur_gear(
|
||||||
|
|
||||||
|
|
||||||
// Function&Module: spur_gear2d()
|
// Function&Module: spur_gear2d()
|
||||||
// Synopsis: Creates a 2D spur gear shape.
|
// Synopsis: Creates a 2D spur gear or internal ring gear.
|
||||||
// SynTags: Geom, Path
|
// SynTags: Geom, Path
|
||||||
// Topics: Gears, Parts
|
// Topics: Gears, Parts
|
||||||
// See Also: rack(), spur_gear(), spur_gear2d(), bevel_gear()
|
// See Also: rack(), spur_gear(), spur_gear2d(), bevel_gear()
|
||||||
|
@ -365,7 +391,7 @@ module spur_gear2d(
|
||||||
|
|
||||||
|
|
||||||
// Function&Module: rack()
|
// Function&Module: rack()
|
||||||
// Synopsis: Creates a gear rack shape.
|
// Synopsis: Creates a straight or helical gear rack.
|
||||||
// SynTags: Geom, VNF
|
// SynTags: Geom, VNF
|
||||||
// Topics: Gears, Parts
|
// Topics: Gears, Parts
|
||||||
// See Also: rack2d(), spur_gear(), spur_gear2d(), bevel_gear()
|
// See Also: rack2d(), spur_gear(), spur_gear2d(), bevel_gear()
|
||||||
|
@ -515,7 +541,7 @@ function rack(
|
||||||
|
|
||||||
|
|
||||||
// Function&Module: rack2d()
|
// Function&Module: rack2d()
|
||||||
// Synopsis: Creates a 2D gear rack shape.
|
// Synopsis: Creates a 2D gear rack.
|
||||||
// SynTags: Geom, Path
|
// SynTags: Geom, Path
|
||||||
// Topics: Gears, Parts
|
// Topics: Gears, Parts
|
||||||
// See Also: rack(), spur_gear(), spur_gear2d(), bevel_gear()
|
// See Also: rack(), spur_gear(), spur_gear2d(), bevel_gear()
|
||||||
|
@ -639,7 +665,7 @@ module rack2d(
|
||||||
|
|
||||||
|
|
||||||
// Function&Module: bevel_gear()
|
// Function&Module: bevel_gear()
|
||||||
// Synopsis: Creates a possibly spiral beveled gear shape.
|
// Synopsis: Creates a straight or spiral bevel gear.
|
||||||
// SynTags: Geom, VNF
|
// SynTags: Geom, VNF
|
||||||
// Topics: Gears, Parts
|
// Topics: Gears, Parts
|
||||||
// See Also: rack(), rack2d(), spur_gear(), spur_gear2d(), bevel_pitch_angle(), bevel_gear()
|
// See Also: rack(), rack2d(), spur_gear(), spur_gear2d(), bevel_pitch_angle(), bevel_gear()
|
||||||
|
@ -652,7 +678,13 @@ module rack2d(
|
||||||
// Description:
|
// Description:
|
||||||
// Creates a (potentially spiral) bevel gear. The module `bevel_gear()` gives a bevel gear, with
|
// Creates a (potentially spiral) bevel gear. The module `bevel_gear()` gives a bevel gear, with
|
||||||
// reasonable defaults for all the parameters. Normally, you should just choose the first 4
|
// reasonable defaults for all the parameters. Normally, you should just choose the first 4
|
||||||
// parameters, and let the rest be default values. The module `bevel_gear()` gives a gear in the XY
|
// parameters, and let the rest be default values. In straight bevel gear sets, when each tooth
|
||||||
|
// engages it inpacts the corresponding tooth. The abrupt tooth engagement causes impact stress
|
||||||
|
// which makes them more prone to breakage. Spiral bevel gears have teeth formed along spirals so
|
||||||
|
// they engage more gradually, resulting in a less abrupt transfer of force, so they are quieter
|
||||||
|
// in operation and less likely to break.
|
||||||
|
// .
|
||||||
|
// The module `bevel_gear()` gives a gear in the XY
|
||||||
// plane, centered on the origin, with one tooth centered on the positive Y axis. The various
|
// plane, centered on the origin, with one tooth centered on the positive Y axis. The various
|
||||||
// functions below it take the same parameters, and return various measurements for the gear. The
|
// functions below it take the same parameters, and return various measurements for the gear. The
|
||||||
// most important is `pitch_radius()`, which tells how far apart to space gears that are meshing,
|
// most important is `pitch_radius()`, which tells how far apart to space gears that are meshing,
|
||||||
|
@ -900,7 +932,7 @@ module bevel_gear(
|
||||||
|
|
||||||
|
|
||||||
// Function&Module: worm()
|
// Function&Module: worm()
|
||||||
// Synopsis: Creates a worm shape that will mate with a worm gear.
|
// Synopsis: Creates a worm that will mate with a worm gear.
|
||||||
// SynTags: Geom, VNF
|
// SynTags: Geom, VNF
|
||||||
// Topics: Gears, Parts
|
// Topics: Gears, Parts
|
||||||
// See Also: worm(), worm_gear(), rack(), rack2d(), spur_gear(), spur_gear2d(), bevel_pitch_angle(), bevel_gear()
|
// See Also: worm(), worm_gear(), rack(), rack2d(), spur_gear(), spur_gear2d(), bevel_pitch_angle(), bevel_gear()
|
||||||
|
@ -1021,7 +1053,7 @@ module worm(
|
||||||
|
|
||||||
|
|
||||||
// Function&Module: worm_gear()
|
// Function&Module: worm_gear()
|
||||||
// Synopsis: Creates a worm gear shape that will mate with a worm.
|
// Synopsis: Creates a worm gear that will mate with a worm.
|
||||||
// SynTags: Geom, VNF
|
// SynTags: Geom, VNF
|
||||||
// Topics: Gears, Parts
|
// Topics: Gears, Parts
|
||||||
// See Also: worm(), worm_gear(), rack(), rack2d(), spur_gear(), spur_gear2d(), bevel_pitch_angle(), bevel_gear()
|
// See Also: worm(), worm_gear(), rack(), rack2d(), spur_gear(), spur_gear2d(), bevel_pitch_angle(), bevel_gear()
|
||||||
|
@ -1039,7 +1071,7 @@ module worm(
|
||||||
// worm_diam = The pitch diameter of the worm gear to match to. Default: 30
|
// worm_diam = The pitch diameter of the worm gear to match to. Default: 30
|
||||||
// worm_starts = The number of lead starts on the worm gear to match to. Default: 1
|
// worm_starts = The number of lead starts on the worm gear to match to. Default: 1
|
||||||
// worm_arc = The arc of the worm to mate with, in degrees. Default: 60 degrees
|
// worm_arc = The arc of the worm to mate with, in degrees. Default: 60 degrees
|
||||||
// crowning = The amount to oversize the virtual hobbing cutter used to make the teeth, to add a slight crowning to the teeth to make them fir the work easier. Default: 1
|
// crowning = The amount to oversize the virtual hobbing cutter used to make the teeth, to add a slight crowning to the teeth to make them fit the work easier. Default: 1
|
||||||
// left_handed = If true, the gear returned will have a left-handed spiral. Default: false
|
// left_handed = If true, the gear returned will have a left-handed spiral. Default: false
|
||||||
// pressure_angle = Controls how straight or bulged the tooth sides are. In degrees. Default: 20
|
// pressure_angle = Controls how straight or bulged the tooth sides are. In degrees. Default: 20
|
||||||
// backlash = Gap between two meshing teeth, in the direction along the circumference of the pitch circle. Default: 0
|
// backlash = Gap between two meshing teeth, in the direction along the circumference of the pitch circle. Default: 0
|
||||||
|
|
|
@ -168,7 +168,7 @@ function hex_drive_mask(size,length,l,h,height,anchor,spin,orient) = no_function
|
||||||
// See Also: phillips_mask(), hex_drive_mask(), torx_mask(), phillips_depth(), phillips_diam(), robertson_mask()
|
// See Also: phillips_mask(), hex_drive_mask(), torx_mask(), phillips_depth(), phillips_diam(), robertson_mask()
|
||||||
// Usage:
|
// Usage:
|
||||||
// torx_mask(size, l, [center]) [ATTACHMENTS];
|
// torx_mask(size, l, [center]) [ATTACHMENTS];
|
||||||
// Description: Creates a torx bit tip.
|
// Description: Creates a torx bit tip. The anchors are located on the circumscribing cylinder. See {{torx_info()}} for allowed sizes.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// size = Torx size.
|
// size = Torx size.
|
||||||
// l = Length of bit.
|
// l = Length of bit.
|
||||||
|
@ -191,7 +191,6 @@ module torx_mask(size, l=5, center, anchor, spin=0, orient=UP) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Module: torx_mask2d()
|
// Module: torx_mask2d()
|
||||||
// Synopsis: Creates the 2D cross section for a torx drive recess.
|
// Synopsis: Creates the 2D cross section for a torx drive recess.
|
||||||
// SynTags: Geom
|
// SynTags: Geom
|
||||||
|
@ -199,13 +198,12 @@ module torx_mask(size, l=5, center, anchor, spin=0, orient=UP) {
|
||||||
// See Also: phillips_mask(), hex_drive_mask(), torx_mask(), phillips_depth(), phillips_diam(), torx_info(), robertson_mask()
|
// See Also: phillips_mask(), hex_drive_mask(), torx_mask(), phillips_depth(), phillips_diam(), torx_info(), robertson_mask()
|
||||||
// Usage:
|
// Usage:
|
||||||
// torx_mask2d(size);
|
// torx_mask2d(size);
|
||||||
// Description: Creates a torx bit 2D profile.
|
// Description: Creates a torx bit 2D profile. The anchors are located on the circumscribing circle. See {{torx_info()}} for allowed sizes.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// size = Torx size.
|
// size = Torx size.
|
||||||
// Example(2D):
|
// Example(2D):
|
||||||
// torx_mask2d(size=30, $fa=1, $fs=1);
|
// torx_mask2d(size=30, $fa=1, $fs=1);
|
||||||
module torx_mask2d(size) {
|
module torx_mask2d(size,anchor=CENTER,spin) {
|
||||||
no_children($children);
|
|
||||||
info = torx_info(size);
|
info = torx_info(size);
|
||||||
od = info[0];
|
od = info[0];
|
||||||
id = info[1];
|
id = info[1];
|
||||||
|
@ -213,6 +211,7 @@ module torx_mask2d(size) {
|
||||||
rounding = info[4];
|
rounding = info[4];
|
||||||
base = od - 2*tip;
|
base = od - 2*tip;
|
||||||
$fn = quantup(segs(od/2),12);
|
$fn = quantup(segs(od/2),12);
|
||||||
|
attachable(anchor,spin,two_d=true,d=od){
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
circle(d=base);
|
circle(d=base);
|
||||||
|
@ -234,6 +233,8 @@ module torx_mask2d(size) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
children();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -251,6 +252,10 @@ module torx_mask2d(size) {
|
||||||
// - Drive Hole Depth
|
// - Drive Hole Depth
|
||||||
// - External Tip Rounding Radius
|
// - External Tip Rounding Radius
|
||||||
// - Inner Rounding Radius
|
// - Inner Rounding Radius
|
||||||
|
// .
|
||||||
|
// The allowed torx sizes are:
|
||||||
|
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 27, 30, 40, 45, 50, 55,
|
||||||
|
// 60, 70, 80, 90, 100.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// size = Torx size.
|
// size = Torx size.
|
||||||
function torx_info(size) =
|
function torx_info(size) =
|
||||||
|
@ -333,6 +338,11 @@ function torx_depth(size) = torx_info(size)[2];
|
||||||
// ang = taper angle of each face. Default: 2.5
|
// ang = taper angle of each face. Default: 2.5
|
||||||
// ---
|
// ---
|
||||||
// $slop = enlarge recess by this twice amount. Default: 0
|
// $slop = enlarge recess by this twice amount. Default: 0
|
||||||
|
// anchor = Translate so anchor point is at origin (0,0,0). See [anchor](attachments.scad#subsection-anchor). Default: TOP
|
||||||
|
// spin = Rotate this many degrees around the Z axis after anchor. See [spin](attachments.scad#subsection-spin). Default: `0`
|
||||||
|
// orient = Vector to rotate top towards, after spin. See [orient](attachments.scad#subsection-orient). Default: `UP`
|
||||||
|
// Side Effects:
|
||||||
|
// Sets tag to "remove" if no tag is set.
|
||||||
// Example:
|
// Example:
|
||||||
// robertson_mask(size=2);
|
// robertson_mask(size=2);
|
||||||
// Example:
|
// Example:
|
||||||
|
@ -340,7 +350,7 @@ function torx_depth(size) = torx_info(size)[2];
|
||||||
// cyl(d1=2, d2=8, h=4, anchor=TOP);
|
// cyl(d1=2, d2=8, h=4, anchor=TOP);
|
||||||
// robertson_mask(size=2);
|
// robertson_mask(size=2);
|
||||||
// }
|
// }
|
||||||
module robertson_mask(size, extra=1, ang=2.5) {
|
module robertson_mask(size, extra=1, ang=2.5,anchor=TOP,spin,orient) {
|
||||||
dummy=assert(is_int(size) && size>=0 && size<=4);
|
dummy=assert(is_int(size) && size>=0 && size<=4);
|
||||||
Mmin = [0.0696, 0.0900, 0.1110, 0.1315, 0.1895][size];
|
Mmin = [0.0696, 0.0900, 0.1110, 0.1315, 0.1895][size];
|
||||||
Mmax = [0.0710, 0.0910, 0.1126, 0.1330, 0.1910][size];
|
Mmax = [0.0710, 0.0910, 0.1126, 0.1330, 0.1910][size];
|
||||||
|
@ -353,13 +363,17 @@ module robertson_mask(size, extra=1, ang=2.5) {
|
||||||
F = (Fmin + Fmax) / 2 * INCH;
|
F = (Fmin + Fmax) / 2 * INCH;
|
||||||
h = T + extra;
|
h = T + extra;
|
||||||
Mslop=M+2*get_slop();
|
Mslop=M+2*get_slop();
|
||||||
down(T) {
|
|
||||||
intersection(){
|
|
||||||
Mtop = Mslop + 2*adj_ang_to_opp(F+extra,ang);
|
Mtop = Mslop + 2*adj_ang_to_opp(F+extra,ang);
|
||||||
Mbot = Mslop - 2*adj_ang_to_opp(T-F,ang);
|
Mbot = Mslop - 2*adj_ang_to_opp(T-F,ang);
|
||||||
|
anchors = [named_anchor("standard",[0,0,T-h/2], UP, 0)];
|
||||||
|
default_tag("remove")
|
||||||
|
attachable(anchor,spin,orient,size=[Mbot,Mbot,T],size2=[Mtop,Mtop],anchors=anchors){
|
||||||
|
down(T/2)
|
||||||
|
intersection(){
|
||||||
prismoid([Mbot,Mbot],[Mtop,Mtop],h=h,anchor=BOT);
|
prismoid([Mbot,Mbot],[Mtop,Mtop],h=h,anchor=BOT);
|
||||||
cyl(d1=0, d2=Mslop/(T-F)*sqrt(2)*h, h=h, anchor=BOT);
|
cyl(d1=0, d2=Mslop/(T-F)*sqrt(2)*h, h=h, anchor=BOT);
|
||||||
}
|
}
|
||||||
|
children();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1442,6 +1442,8 @@ module screw_head(screw_info,details=false, counterbore=0,flat_height,teardrop=f
|
||||||
|
|
||||||
counterbore = counterbore_temp==0 && head!="flat" ? counterbore_temp : counterbore_temp + 0.01;
|
counterbore = counterbore_temp==0 && head!="flat" ? counterbore_temp : counterbore_temp + 0.01;
|
||||||
adj_diam = struct_val(screw_info, "diameter") + head_oversize; // Used for determining chamfers and ribbing
|
adj_diam = struct_val(screw_info, "diameter") + head_oversize; // Used for determining chamfers and ribbing
|
||||||
|
attachable(){
|
||||||
|
union(){
|
||||||
if (head!="flat" && counterbore>0){
|
if (head!="flat" && counterbore>0){
|
||||||
d = head=="hex"? 2*head_size/sqrt(3) : head_size;
|
d = head=="hex"? 2*head_size/sqrt(3) : head_size;
|
||||||
if (teardrop)
|
if (teardrop)
|
||||||
|
@ -1500,6 +1502,9 @@ module screw_head(screw_info,details=false, counterbore=0,flat_height,teardrop=f
|
||||||
if (head=="hex")
|
if (head=="hex")
|
||||||
up(head_height/2)_nutshape(head_size,head_height,"hex",false,true);
|
up(head_height/2)_nutshape(head_size,head_height,"hex",false,true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
union(){};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue