mirror of
https://github.com/revarbat/BOSL2.git
synced 2025-08-08 14:17:04 +02:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -1763,7 +1763,7 @@ function rect_tube(
|
|||||||
// "hypot_left" = Left side of angled wedge face, bisecting the angle between the left side and angled faces.
|
// "hypot_left" = Left side of angled wedge face, bisecting the angle between the left side and angled faces.
|
||||||
// "hypot_right" = Right side of angled wedge face, bisecting the angle between the right side and angled faces.
|
// "hypot_right" = Right side of angled wedge face, bisecting the angle between the right side and angled faces.
|
||||||
// "top_edge" = Top edge anchor which, unlike the UP anchor, points in direction that bisects the edge, and provides `$edge_length` and `$edge_angle`.
|
// "top_edge" = Top edge anchor which, unlike the UP anchor, points in direction that bisects the edge, and provides `$edge_length` and `$edge_angle`.
|
||||||
//
|
// "bot_edge" = The bottom tip edge with an anchor direction that properly bisects the edge and the `$edge_length` and `$edge_angle` parameters set.
|
||||||
// Example: Centered
|
// Example: Centered
|
||||||
// wedge([20, 40, 15], center=true);
|
// wedge([20, 40, 15], center=true);
|
||||||
// Example: *Non*-Centered
|
// Example: *Non*-Centered
|
||||||
@@ -1794,12 +1794,16 @@ module wedge(size=[1, 1, 1], center, anchor, spin=0, orient=UP)
|
|||||||
right_dir = unit(hypot_dir+RIGHT);
|
right_dir = unit(hypot_dir+RIGHT);
|
||||||
hedge_spin=vector_angle(spindir,rot(from=UP,to=left_dir, p=BACK));
|
hedge_spin=vector_angle(spindir,rot(from=UP,to=left_dir, p=BACK));
|
||||||
topedge_dir = [0, each unit(unit([size.z,size.y])+[-1,0])];
|
topedge_dir = [0, each unit(unit([size.z,size.y])+[-1,0])];
|
||||||
|
botedge_dir = [0, each unit(unit([size.z,size.y])+[0,-1])];
|
||||||
anchors = [
|
anchors = [
|
||||||
named_anchor("hypot", CTR, hypot_dir, 180),
|
named_anchor("hypot", CTR, hypot_dir, 180),
|
||||||
named_anchor("hypot_left", [-size.x/2,0,0], left_dir,-hedge_spin),
|
named_anchor("hypot_left", [-size.x/2,0,0], left_dir,-hedge_spin),
|
||||||
named_anchor("hypot_right", [size.x/2,0,0], right_dir,hedge_spin),
|
named_anchor("hypot_right", [size.x/2,0,0], right_dir,hedge_spin),
|
||||||
named_anchor("top_edge", [0,-size.y/2,size.z/2], topedge_dir, _compute_spin(topedge_dir,RIGHT),
|
named_anchor("top_edge", [0,-size.y/2,size.z/2], topedge_dir, _compute_spin(topedge_dir,RIGHT),
|
||||||
info=[["edge_angle",atan2(size.y,size.z)],["edge_length",size.x]])
|
info=[["edge_angle",atan2(size.y,size.z)],["edge_length",size.x]]),
|
||||||
|
named_anchor("bot_edge", [0,size.y/2, -size.z/2], botedge_dir, _compute_spin(botedge_dir,RIGHT),
|
||||||
|
info=[["edge_angle",atan2(size.z,size.y)],["edge_length",size.x]]),
|
||||||
|
|
||||||
];
|
];
|
||||||
attachable(anchor,spin,orient, size=size, anchors=anchors) {
|
attachable(anchor,spin,orient, size=size, anchors=anchors) {
|
||||||
if (size.z > 0) {
|
if (size.z > 0) {
|
||||||
|
@@ -73,7 +73,8 @@ For cylindrical type attachables, the Z component of the anchor vector must be
|
|||||||
to the bottom rim, the middle side, or the top rim of the cylindrical or conical shape.
|
to the bottom rim, the middle side, or the top rim of the cylindrical or conical shape.
|
||||||
The X and Y components can be any value, pointing towards the circular perimeter of the cone.
|
The X and Y components can be any value, pointing towards the circular perimeter of the cone.
|
||||||
These combined let you point at any place on the bottom or top rims, or at an arbitrary
|
These combined let you point at any place on the bottom or top rims, or at an arbitrary
|
||||||
side wall.
|
side wall. When the Z component is zero you can omit it and pass just
|
||||||
|
an [X,Y] vector.
|
||||||
|
|
||||||
```openscad-3D
|
```openscad-3D
|
||||||
include <BOSL2/std.scad>
|
include <BOSL2/std.scad>
|
||||||
@@ -92,6 +93,14 @@ include <BOSL2/std.scad>
|
|||||||
cylinder(r1=25, r2=15, h=60, anchor=cylindrical_to_xyz(1,30,1));
|
cylinder(r1=25, r2=15, h=60, anchor=cylindrical_to_xyz(1,30,1));
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Here we anchor using a 2D XY vector where the Z value is assumed to be
|
||||||
|
zero:
|
||||||
|
|
||||||
|
```openscad-3D
|
||||||
|
include <BOSL2/std.scad>
|
||||||
|
cylinder(r=25, h=6, anchor=[-1,-2]);
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
For Spherical type attachables, you can pass a vector that points at any arbitrary place on
|
For Spherical type attachables, you can pass a vector that points at any arbitrary place on
|
||||||
|
Reference in New Issue
Block a user