From 39cdd4b783c12f8adf07c01cf8da246ab5ffc80b Mon Sep 17 00:00:00 2001 From: Adrian Mariano Date: Sun, 30 Nov 2025 16:16:51 -0500 Subject: [PATCH 1/2] fix invalid outputs from module version of path_sweep --- skin.scad | 3 +++ 1 file changed, 3 insertions(+) diff --git a/skin.scad b/skin.scad index d44a48bc..edf3a63e 100644 --- a/skin.scad +++ b/skin.scad @@ -2221,6 +2221,9 @@ module path_sweep(shape, path, method="incremental", normal, closed, twist=0, tw { dummy = assert(is_region(shape) || is_path(shape,2), "\nshape must be a 2D path or region.") assert(in_list(atype, _ANCHOR_TYPES), "\nAnchor type must be \"hull\" or \"intersect\"."); + caps = !closed ? caps + : assert(is_undef(caps) || caps==false || caps==[false,false], "Cannot specify caps when closed=true") + false; trans_scale = path_sweep(shape, path, method, normal, closed, twist, twist_by_length, scale, scale_by_length, symmetry, last_normal, tangent, uniform, relaxed, caps, style, transforms=true,_return_scales=true); transforms = trans_scale[0]; From c2864d8478025f47ade7da3786850026685f3c1e Mon Sep 17 00:00:00 2001 From: Adrian Mariano Date: Sun, 30 Nov 2025 16:20:50 -0500 Subject: [PATCH 2/2] allow array valued shift for prism_connector and attach_prism --- rounding.scad | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rounding.scad b/rounding.scad index df86be4c..50e5c6b3 100644 --- a/rounding.scad +++ b/rounding.scad @@ -4522,9 +4522,10 @@ function _get_obj_type(ind,geom,anchor,prof,edge_r,edge_joint,edge_k) = /// shift = given shift parameter function _check_join_shift(ind,type,shift,flip) = - type=="sphere" ? assert(shift==0, str("Cannot give a (nonzero) shift",ind," for joining to a spherical object")) [0,0,0] - : type=="cyl" ? assert(is_finite(shift), str("Value shift",ind," for cylinder object must be a scalar")) shift*RIGHT - : is_list(type) ? assert(is_finite(shift), str("Value shift",ind," for an edge must be a scalar")) shift*RIGHT + type=="sphere" ? assert(shift==0 || shift==[0,0], str("Cannot give a (nonzero) shift",ind," for joining to a spherical object")) [0,0,0] + : let(fixshift=function(s) is_vector(s,2) && s[0]==0 ? s[1] : s) + type=="cyl" ? assert(is_finite(fixshift(shift)), str("Value shift",ind," for cylinder object must be a scalar or vector of the form [0,s]")) fixshift(shift)*RIGHT + : is_list(type) ? assert(is_finite(fixshift(shift)), str("Value shift",ind," for an edge must be a scalar or vector of the form [0,s]")) fixshift(shift)*RIGHT : /*type==plane*/ assert(is_finite(shift) || is_vector(shift,2), str("Value for shift",ind," for planar face of object must be a scalar or 2-vector")) is_list(shift)? flip ? [shift.y,-shift.x]: shift : flip ? [0,-shift] : [shift,0];