From 4c80be0feb2a8cd6caaa48d0522f98d7fafefb15 Mon Sep 17 00:00:00 2001 From: Adrian Mariano Date: Tue, 22 Apr 2025 18:23:06 -0400 Subject: [PATCH] remove tex_size defaults for textured_tile, vnf_vertex_array --- shapes3d.scad | 5 ++--- skin.scad | 11 ++++++----- vnf.scad | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/shapes3d.scad b/shapes3d.scad index 8cc8d555..5ae2e1cb 100644 --- a/shapes3d.scad +++ b/shapes3d.scad @@ -1334,10 +1334,9 @@ function textured_tile( ) = assert(is_undef(tex_reps) || is_int(tex_reps) || (all_integer(tex_reps) && len(tex_reps)==2), "tex_reps must be an integer or list of two integers") assert(is_undef(tex_size) || is_vector(tex_size,2) || is_finite(tex_size)) - assert(num_defined([tex_size, tex_reps])<2, "Cannot give both tex_size and tex_reps") + assert(num_defined([tex_size, tex_reps])==1, "Must give exactly one of tex_size and tex_reps") assert(is_undef(size) || is_num(size) || is_vector(size,2) || is_vector(size,3), "size must be a 2-vector or 3-vector") assert(is_undef(size) || num_defined([ysize,h, height, thickness, w1,w2,ang])==0, "Cannot combine size with any other dimensional specifications") - let( inset = is_num(tex_inset)? tex_inset : tex_inset? 1 : 0, default_thick = inset>0 ? 0.1+abs(tex_depth)*inset : 0.1, @@ -1362,7 +1361,7 @@ function textured_tile( texture = _get_texture(texture, tex_rot), tex_reps = is_def(tex_reps) ? force_list(tex_reps,2) - : let(tex_size=is_undef(tex_size)? [5,5] : force_list(tex_size,2)) + : let(tex_size=force_list(tex_size,2)) [round(size.x/tex_size.x), round(size.y/tex_size.y)], extra = is_undef(extra)? tex_reps == [1,1] ? [0,0] : [1,1] : force_list(tex_extra,2), diff --git a/skin.scad b/skin.scad index db2e838a..78954185 100644 --- a/skin.scad +++ b/skin.scad @@ -1182,7 +1182,7 @@ function rotate_sweep( style="min_edge", cp="centroid", atype="hull", anchor="origin", spin=0, orient=UP, start=0, - _tex_inhibit_y_slicing=false + _tex_inhibit_y_slicing ) = assert(num_defined([tex_reps,tex_counts])<2, "In rotate_sweep() the 'tex_counts' parameters has been replaced by 'tex_reps'. You cannot give both.") assert(num_defined([tex_scale,tex_depth])<2, "In linear_sweep() the 'tex_scale' parameter has been replaced by 'tex_depth'. You cannot give both.") @@ -4498,7 +4498,7 @@ function _tile_edge_path_list(vnf, axis, maxopen=1) = /// Arguments: /// shape = The path or region to sweep/extrude. /// texture = A texture name string, or a rectangular array of scalar height values (0.0 to 1.0), or a VNF tile that defines the texture to apply to the revolution surface. See {{texture()}} for what named textures are supported. -/// tex_size = An optional 2D target size for the textures. Actual texture sizes are scaled somewhat to evenly fit the available surface. Default: `[5,5]` +/// tex_size = An optional 2D target size for the textures. Actual texture sizes are scaled somewhat to evenly fit the available surface. /// tex_scale = Scaling multiplier for the texture depth. /// --- /// inset = If numeric, lowers the texture into the surface by that amount, before the tex_scale multiplier is applied. If `true`, insets by exactly `1`. Default: `false` @@ -4522,7 +4522,7 @@ function _textured_revolution( shape, texture, tex_size, tex_scale=1, inset=false, rot=false, shift=[0,0], taper, closed=true, angle=360, - inhibit_y_slicing=false,tex_aspect, pixel_aspect, + inhibit_y_slicing,tex_aspect, pixel_aspect, counts, samples, start=0,tex_extra, style="min_edge", atype="intersect", anchor=CENTER, spin=0, orient=UP @@ -4541,6 +4541,7 @@ function _textured_revolution( assert(num_defined([tex_aspect, pixel_aspect])<=1, "Cannot give both tex_aspect and pixel_aspect") //assert(num_defined([tex_aspect, pixel_aspect])==0 || is_undef(angle), "Cannot give tex_aspect or pixel_aspect if you give angle") let( + inhibit_y_slicing = default(inhibit_y_slicing, is_path(shape) && len(path)==2 ? true : false), regions = !is_path(shape,2)? region_parts(shape) : closed? region_parts([shape]) : let( @@ -4861,7 +4862,7 @@ function _textured_point_array(points, texture, tex_reps, tex_size, tex_samples, col_wrap=false, tex_depth=1, row_wrap=false, caps, cap1, cap2, reverse=false, style="min_edge", tex_extra, tex_skip, sidecaps,sidecap1,sidecap2,normals) = assert(tex_reps==undef || is_int(tex_reps) || (all_integer(tex_reps) && len(tex_reps)==2), "tex_reps must be an integer or list of two integers") assert(tex_size==undef || is_num(tex_size) || is_vector(tex_size,2), "tex_size must be a scalar or 2-vector") - assert(num_defined([tex_size, tex_reps])<2, "Cannot give both tex_size and tex_reps") + assert(num_defined([tex_size, tex_reps])==1, "Must give exactly one of tex_size and tex_reps") assert(in_list(style,["default","alt","quincunx", "convex","concave", "min_edge","min_area","flip1","flip2"])) assert(is_matrix(points[0], n=3),"Point array has the wrong shape or points are not 3d") assert(is_consistent(points), "Non-rectangular or invalid point array") @@ -4877,7 +4878,7 @@ function _textured_point_array(points, texture, tex_reps, tex_size, tex_samples, ptsize=[len(points[0]), len(points)], tex_reps = is_def(tex_reps) ? force_list(tex_reps,2) : let( - tex_size = is_undef(tex_size) ? [5,5] : force_list(tex_size,2), + tex_size = force_list(tex_size,2), xsize = norm(points[0][0]-points[0][1])*(ptsize.x+(col_wrap?1:0)), ysize = norm(points[0][0]-points[1][0])*(ptsize.y+(row_wrap?1:0)) ) diff --git a/vnf.scad b/vnf.scad index f89665e0..a8cf8311 100644 --- a/vnf.scad +++ b/vnf.scad @@ -86,7 +86,7 @@ EMPTY_VNF = [[],[]]; // The standard empty VNF with no vertices or faces. // triangulate = If true, triangulates endcaps to resolve possible CGAL issues. This can be an expensive operation if the endcaps are complex. Default: false // convexity = (module) Max number of times a line could intersect a wall of the shape. // texture = A texture name string, or a rectangular array of scalar height values (0.0 to 1.0), or a VNF tile that defines the texture to apply to vertical surfaces. See {{texture()}} for what named textures are supported. -// tex_size = An optional 2D target size for the textures at `points[0][0]`. Actual texture sizes are scaled somewhat to evenly fit the available surface. Default: `[5,5]` +// tex_size = An optional 2D target size for the textures at `points[0][0]`. Actual texture sizes are scaled somewhat to evenly fit the available surface. // tex_reps = If given instead of tex_size, a 2-vector giving the number of texture tile repetitions in the horizontal and vertical directions. // tex_inset = If numeric, lowers the texture into the surface by the specified proportion, e.g. 0.5 would lower it half way into the surface. If `true`, insets by exactly its full depth. Default: `false` // tex_rot = Rotate texture by specified angle, which must be a multiple of 90 degrees. Default: 0