mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2024-12-29 16:29:40 +00:00
Merge branch 'master' into revarbat_dev
This commit is contained in:
commit
6db9ec6f17
5 changed files with 19 additions and 14 deletions
|
@ -700,7 +700,9 @@ function offset(
|
|||
outsidecorner = len(sharpcorners)==2 ? [false,false]
|
||||
:
|
||||
[for(i=[0:len(goodsegs)-1])
|
||||
let(prevseg=select(goodsegs,i-1))
|
||||
let(prevseg=select(goodsegs,i-1))
|
||||
i==0 && !closed ? false // In open case first entry is bogus
|
||||
:
|
||||
(goodsegs[i][1]-goodsegs[i][0]) * (goodsegs[i][0]-sharpcorners[i]) > 0
|
||||
&& (prevseg[1]-prevseg[0]) * (sharpcorners[i]-prevseg[1]) > 0
|
||||
],
|
||||
|
|
|
@ -376,9 +376,11 @@ function _rounding_offsets(edgespec,z_dir=1) =
|
|||
r = struct_val(edgespec,"r"),
|
||||
cut = struct_val(edgespec,"cut"),
|
||||
k = struct_val(edgespec,"k"),
|
||||
radius = in_list(edgetype,["circle","teardrop"])?
|
||||
(is_def(cut) ? cut/(sqrt(2)-1) : r) :
|
||||
edgetype=="chamfer"? first_defined([sqrt(2)*cut,r]) : undef,
|
||||
radius = in_list(edgetype,["circle","teardrop"])
|
||||
? (is_def(cut) ? cut/(sqrt(2)-1) : r)
|
||||
:edgetype=="chamfer"
|
||||
? (is_def(cut) ? sqrt(2)*cut : r)
|
||||
: undef,
|
||||
chamf_angle = struct_val(edgespec, "angle"),
|
||||
cheight = struct_val(edgespec, "chamfer_height"),
|
||||
cwidth = struct_val(edgespec, "chamfer_width"),
|
||||
|
@ -786,9 +788,9 @@ function _path_join(paths,joint,k=0.5,i=0,result=[],relocate=true,closed=false)
|
|||
// triangle = [[0,0],[10,0],[5,10]];
|
||||
// offset_sweep(triangle, height=6, bottom = os_circle(r=-2),steps=16,offset_maxstep=0.01);
|
||||
// Example: Here is the star chamfered at the top with a teardrop rounding at the bottom. Check out the rounded corners on the chamfer. Note that a very small value of `offset_maxstep` is needed to keep these round. Observe how the rounded star points vanish at the bottom in the teardrop: the number of vertices does not remain constant from layer to layer.
|
||||
// star = star(5, r=22, ir=13);
|
||||
// rounded_star = round_corners(star, cut=flatten(repeat([.5,0],5)), $fn=24);
|
||||
// offset_sweep(rounded_star, height=20, bottom=os_teardrop(r=4), top=os_chamfer(width=4,offset_maxstep=.1));
|
||||
// star = star(5, r=22, ir=13);
|
||||
// rounded_star = round_corners(star, cut=flatten(repeat([.5,0],5)), $fn=24);
|
||||
// offset_sweep(rounded_star, height=20, bottom=os_teardrop(r=4), top=os_chamfer(width=4,offset_maxstep=.1));
|
||||
// Example: We round a cube using the continous curvature rounding profile. But note that the corners are not smooth because the curved square collapses into a square with corners. When a collapse like this occurs, we cannot turn `check_valid` off.
|
||||
// square = square(1);
|
||||
// rsquare = round_corners(square, method="smooth", cut=0.1, k=0.7, $fn=36);
|
||||
|
|
|
@ -310,7 +310,9 @@ function _screw_info_english(diam, threadcount, head, thread, drive) =
|
|||
[2, [ 3, 1.5, undef, undef, undef]],
|
||||
],
|
||||
entry = struct_val(UTS_socket, diam),
|
||||
hexdepth = is_def(entry[3]) ? entry[3] : if_def(diam) ? diam/2 : undef,
|
||||
hexdepth = is_def(entry[3]) ? entry[3]
|
||||
: is_def(diam) ? diam/2
|
||||
: undef,
|
||||
drive_size = drive=="hex" ? [["drive_size",inch*entry[1]], ["drive_depth",inch*hexdepth]] :
|
||||
drive=="torx" ? [["drive_size",entry[2]],["drive_depth",inch*entry[4]]] : []
|
||||
)
|
||||
|
|
|
@ -801,8 +801,7 @@ function associate_vertices(polygons, split, curpoly=0) =
|
|||
curpoly==len(polygons)-1 ? polygons :
|
||||
let(
|
||||
polylen = len(polygons[curpoly]),
|
||||
cursplit = force_list(split[curpoly]),
|
||||
fdsa= echo(cursplit=cursplit)
|
||||
cursplit = force_list(split[curpoly])
|
||||
)
|
||||
assert(len(split)==len(polygons)-1,str(split,"Split list length mismatch: it has length ", len(split)," but must have length ",len(polygons)-1))
|
||||
assert(polylen<=len(polygons[curpoly+1]),str("Polygon ",curpoly," has more vertices than the next one."))
|
||||
|
@ -1143,9 +1142,9 @@ module sweep(shape, transforms, closed=false, caps, convexity=10,
|
|||
// path_sweep(ushape, knot_path, closed=true, method="natural");
|
||||
// Example: knot with twist. Note if you twist it the other direction the center section untwists because of the natural twist there. Also compare to the "incremental" method which has less twist in the center.
|
||||
// function knot(a,b,t) = // rolling knot
|
||||
// [ a * cos (3 * t) / (1 - b* sin (2 *t)),
|
||||
// a * sin( 3 * t) / (1 - b* sin (2 *t)),
|
||||
// 1.8 * b * cos (2 * t) /(1 - b* sin (2 *t))];
|
||||
// [ a * cos (3 * t) / (1 - b* sin (2 *t)),
|
||||
// a * sin( 3 * t) / (1 - b* sin (2 *t)),
|
||||
// 1.8 * b * cos (2 * t) /(1 - b* sin (2 *t))];
|
||||
// a = 0.8; b = sqrt (1 - a * a);
|
||||
// ksteps = 400;
|
||||
// knot_path = [for (i=[0:ksteps-1]) 50 * knot(a,b,(i/ksteps)*360)];
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
BOSL_VERSION = [2,0,562];
|
||||
BOSL_VERSION = [2,0,565];
|
||||
|
||||
|
||||
// Section: BOSL Library Version Functions
|
||||
|
|
Loading…
Reference in a new issue