mirror of
https://github.com/BelfrySCAD/BOSL2.git
synced 2024-12-29 00:09:41 +00:00
add highlight and highlight_this
This commit is contained in:
parent
6b50f2d373
commit
9ed7a3ec48
3 changed files with 99 additions and 24 deletions
|
@ -43,6 +43,9 @@ $ghost_this=false;
|
||||||
$ghost=false;
|
$ghost=false;
|
||||||
$ghosting=false; // Ghosting is in effect, so don't apply it again
|
$ghosting=false; // Ghosting is in effect, so don't apply it again
|
||||||
|
|
||||||
|
$highlight_this=false;
|
||||||
|
$highlight=false;
|
||||||
|
|
||||||
_ANCHOR_TYPES = ["intersect","hull"];
|
_ANCHOR_TYPES = ["intersect","hull"];
|
||||||
|
|
||||||
|
|
||||||
|
@ -1154,8 +1157,8 @@ module tag_this(tag)
|
||||||
// that don't use {{attachable()}} or built in modules such as
|
// that don't use {{attachable()}} or built in modules such as
|
||||||
// - `polygon()`
|
// - `polygon()`
|
||||||
// - `projection()`
|
// - `projection()`
|
||||||
// - `polyhedron()` (or use [`vnf_polyhedron()`](vnf.scad#vnf_polyhedron))
|
// - `polyhedron()` (or use {{vnf_polyhedron()}})
|
||||||
// - `linear_extrude()` (or use [`linear_sweep()`](regions.scad#linear_sweep))
|
// - `linear_extrude()` (or use {{linear_sweep()}})
|
||||||
// - `rotate_extrude()`
|
// - `rotate_extrude()`
|
||||||
// - `surface()`
|
// - `surface()`
|
||||||
// - `import()`
|
// - `import()`
|
||||||
|
@ -3107,24 +3110,15 @@ module attachable(
|
||||||
if (expose_tags || _is_shown()){
|
if (expose_tags || _is_shown()){
|
||||||
if (!keep_color)
|
if (!keep_color)
|
||||||
_color($color)
|
_color($color)
|
||||||
if (($ghost || $ghost_this) && !$ghosting)
|
_show_ghost() children(0);
|
||||||
%union(){
|
|
||||||
$ghosting=true;
|
|
||||||
children(0);
|
|
||||||
}
|
|
||||||
else children(0);
|
|
||||||
else {
|
else {
|
||||||
$save_color=undef; // Force color_this() color in effect to persist for the entire object
|
$save_color=undef; // Force color_this() color in effect to persist for the entire object
|
||||||
if (($ghost || $ghost_this) && !$ghosting)
|
_show_ghost() children(0);
|
||||||
%union(){
|
|
||||||
$ghosting=true;
|
|
||||||
children(0);
|
|
||||||
}
|
|
||||||
else children(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let(
|
let(
|
||||||
$ghost_this=false,
|
$ghost_this=false,
|
||||||
|
$highlight_this=false,
|
||||||
$tag=default($save_tag,$tag),
|
$tag=default($save_tag,$tag),
|
||||||
$save_tag=undef,
|
$save_tag=undef,
|
||||||
$color=default($save_color,$color),
|
$color=default($save_color,$color),
|
||||||
|
@ -3134,6 +3128,26 @@ module attachable(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module _show_highlight()
|
||||||
|
{
|
||||||
|
if ($highlight || $highlight_this)
|
||||||
|
#children();
|
||||||
|
else
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module _show_ghost()
|
||||||
|
{
|
||||||
|
if (($ghost || $ghost_this) && !$ghosting)
|
||||||
|
%union(){
|
||||||
|
$ghosting=true;
|
||||||
|
_show_highlight()children();
|
||||||
|
}
|
||||||
|
else _show_highlight()children();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Function: reorient()
|
// Function: reorient()
|
||||||
// Synopsis: Calculates the transformation matrix needed to reorient an object.
|
// Synopsis: Calculates the transformation matrix needed to reorient an object.
|
||||||
// SynTags: Trans, Path, VNF
|
// SynTags: Trans, Path, VNF
|
||||||
|
|
73
color.scad
73
color.scad
|
@ -161,21 +161,74 @@ module color_overlaps(color="red") {
|
||||||
%children();
|
%children();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Section: Setting Object Transparency
|
// Section: Setting Object Modifiers
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Module: highlight()
|
||||||
|
// Synopsis: Sets # modifier for attachable children and their descendents.
|
||||||
|
// SynTags: Trans
|
||||||
|
// Topics: Attachments, Modifiers
|
||||||
|
// See Also: highlight_this(), ghost(), ghost_this(), recolor(), color_this()
|
||||||
|
// Usage:
|
||||||
|
// highlight([highlight]) CHILDREN;
|
||||||
|
// Description:
|
||||||
|
// Sets the `#` modifier for the attachable children and their descendents until another {{highlight()}} or {{highlight_this()}}.
|
||||||
|
// By default, turns `#` on, which makes the children transparent pink and displays them even if they are subtracted from the model.
|
||||||
|
// Give the `false` parameter to disable the modifier and restore children to normal.
|
||||||
|
// Do not mix this with user supplied `#` modifiers anywhere in the geometry tree.
|
||||||
|
// Arguments:
|
||||||
|
// highlight = If true set the descendents to use `#`; if false, disable `#` for descendents. Default: true
|
||||||
|
// Example(3D):
|
||||||
|
// highlight() cuboid(10)
|
||||||
|
// highlight(false) attach(RIGHT,BOT)cuboid(5);
|
||||||
|
function highlight(highlight) = no_function("highlight");
|
||||||
|
module highlight(highlight=true)
|
||||||
|
{
|
||||||
|
$highlight=highlight;
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Module: highlight_this()
|
||||||
|
// Synopsis: Apply # modifier to children at a single level.
|
||||||
|
// SynTags: Trans
|
||||||
|
// Topics: Attachments, Modifiers
|
||||||
|
// See Also: highlight(), ghost(), ghost_this(), recolor(), color_this()
|
||||||
|
// Usage:
|
||||||
|
// highlight_this() CHILDREN;
|
||||||
|
// Description:
|
||||||
|
// Applies the `#` modifier to the children at a single level, reverting to the previous highlight state for further descendents.
|
||||||
|
// This works only with attachables and you cannot give the `#` operator anywhere in the geometry tree.
|
||||||
|
// Example(3D):
|
||||||
|
// highlight_this()
|
||||||
|
// cuboid(10)
|
||||||
|
// attach(TOP,BOT)cuboid(5);
|
||||||
|
function highlight_this() = no_function("highlight_this");
|
||||||
|
module highlight_this()
|
||||||
|
{
|
||||||
|
$highlight_this=true;
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Module: ghost()
|
// Module: ghost()
|
||||||
// Synopsis: Sets transparency for attachable children and their descendents.
|
// Synopsis: Sets % modifier for attachable children and their descendents.
|
||||||
// SynTags: Trans
|
// SynTags: Trans
|
||||||
// Topics: Attachments
|
// Topics: Attachments, Modifiers
|
||||||
// See Also: ghost_this(), recolor(), color_this()
|
// See Also: ghost_this(), recolor(), color_this()
|
||||||
// Usage:
|
// Usage:
|
||||||
// ghost([ghost]) CHILDREN;
|
// ghost([ghost]) CHILDREN;
|
||||||
// Description:
|
// Description:
|
||||||
// Sets the transparency for the attachable children and their descendents until another {{ghost()}} or {{ghost_this()}}.
|
// Sets the `%` modifier for the attachable children and their descendents until another {{ghost()}} or {{ghost_this()}}.
|
||||||
// By default, turns transparency on. Give the `false` parameter to disable transparency.
|
// By default, turns `%` on, which makes the children gray and also removes them from interaction with the model.
|
||||||
// Do not mix this with user supplied `%` operators anywhere in the geometry tree.
|
// Give the `false` parameter to disable the modifier and restore children to normal.
|
||||||
|
// Do not mix this with user supplied `%` modifiers anywhere in the geometry tree.
|
||||||
// Arguments:
|
// Arguments:
|
||||||
// ghost = If true set the descendents to be transparent; if false, disable transparency. Default: true
|
// ghost = If true set the descendents to use `%`; if false, disable `%` for descendents. Default: true
|
||||||
// Example(3D):
|
// Example(3D):
|
||||||
// ghost() cuboid(10)
|
// ghost() cuboid(10)
|
||||||
// ghost(false) cuboid(5);
|
// ghost(false) cuboid(5);
|
||||||
|
@ -188,14 +241,14 @@ module ghost(ghost=true)
|
||||||
|
|
||||||
|
|
||||||
// Module: ghost_this()
|
// Module: ghost_this()
|
||||||
// Synopsis: Makes the children at a single level transparent.
|
// Synopsis: Apply % modifier to children at a single level.
|
||||||
// SynTags: Trans
|
// SynTags: Trans
|
||||||
// Topics: Attachments
|
// Topics: Attachments, Modifiers
|
||||||
// See Also: ghost(), recolor(), color_this()
|
// See Also: ghost(), recolor(), color_this()
|
||||||
// Usage:
|
// Usage:
|
||||||
// ghost_this() CHILDREN;
|
// ghost_this() CHILDREN;
|
||||||
// Description:
|
// Description:
|
||||||
// Makes the children transparent for one level, reverting to the previous transparency state for further descendents.
|
// Applies the `%` modifier to the children at a single level, reverting to the previous ghost state for further descendents.
|
||||||
// This works only with attachables and you cannot give the `%` operator anywhere in the geometry tree.
|
// This works only with attachables and you cannot give the `%` operator anywhere in the geometry tree.
|
||||||
// Example(3D):
|
// Example(3D):
|
||||||
// ghost_this() cuboid(10)
|
// ghost_this() cuboid(10)
|
||||||
|
|
|
@ -1609,6 +1609,14 @@ function real_roots(p,eps=undef,tol=1e-14) =
|
||||||
// x0 = endpoint of interval to search for root
|
// x0 = endpoint of interval to search for root
|
||||||
// x1 = second endpoint of interval to search for root
|
// x1 = second endpoint of interval to search for root
|
||||||
// tol = tolerance for solution. Default: 1e-15
|
// tol = tolerance for solution. Default: 1e-15
|
||||||
|
// Example(2D): Solve x*sin(x)=4
|
||||||
|
// f = function (x) x*sin(x)-4;
|
||||||
|
// root=root_find(f, 0,25); // root = 15.2284
|
||||||
|
// // Graphical verification
|
||||||
|
// stroke([for(x=[0:25]) [x,f(x)]],width=.2);
|
||||||
|
// color("red")move([root,f(root)])
|
||||||
|
// circle(r=.25,$fn=16);
|
||||||
|
|
||||||
|
|
||||||
// The algorithm is based on Brent's method and is a combination of
|
// The algorithm is based on Brent's method and is a combination of
|
||||||
// bisection and inverse quadratic approximation, where bisection occurs
|
// bisection and inverse quadratic approximation, where bisection occurs
|
||||||
|
|
Loading…
Reference in a new issue