1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-09-04 20:56:07 +02:00

Compare commits

..

12 Commits

Author SHA1 Message Date
Chris Palmer
72d9c398bc Merge branch 'martinbudden-teardrop_angle' 2021-12-14 21:35:37 +00:00
Chris Palmer
608f0b2db0 Simplified teardrop top length calculation. 2021-12-14 21:22:29 +00:00
Chris Palmer
7f8dfb9e73 Merge branch 'teardrop_angle' of https://github.com/martinbudden/NopSCADlib into martinbudden-teardrop_angle 2021-12-14 20:50:39 +00:00
Chris Palmer
c9de51fbbb Updated changelog. 2021-12-14 17:57:36 +00:00
Chris Palmer
30b7d966a1 Merge branch 'martinbudden-camera_fov' 2021-12-14 17:55:06 +00:00
Chris Palmer
abe1b1db01 Updated readme. 2021-12-14 17:53:10 +00:00
Chris Palmer
8835fa0b7d Merge branch 'camera_fov' of https://github.com/martinbudden/NopSCADlib into martinbudden-camera_fov 2021-12-14 17:49:08 +00:00
Martin Budden
71f935de8e Corrected FOV handling. 2021-12-14 12:11:03 +00:00
Chris Palmer
b0a6a873c0 Merge branch 'martinbudden-core_xy_improvements' 2021-12-12 23:21:27 +00:00
Chris Palmer
0771d4742c Updated changelog. 2021-12-12 23:18:28 +00:00
Martin Budden
8682d0a470 Allow configuration of teardrop angle. 2021-12-11 09:34:49 +00:00
Martin Budden
4138ed438e Added ability to display camera field of view. 2021-08-09 15:10:59 +01:00
6 changed files with 48 additions and 12 deletions

View File

@@ -3,6 +3,22 @@
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
### [v18.1.0](https://github.com/nophead/NopSCADlib/releases/tag/v18.1.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v18.0.0...v18.1.0 "diff with v18.0.0")
* 2021-12-14 [`abe1b1d`](https://github.com/nophead/NopSCADlib/commit/abe1b1db0157a86af14a68ec42bdaa3e079e73a3 "show commit") [C.P.](# "Chris Palmer") Updated readme.
* 2021-12-14 [`71f935d`](https://github.com/nophead/NopSCADlib/commit/71f935de8e24673a10707cfe434a2faaf3de1c28 "show commit") [M.B.](# "Martin Budden") Corrected FOV handling.
* 2021-08-09 [`4138ed4`](https://github.com/nophead/NopSCADlib/commit/4138ed438e1111bafbe3bee17021a922966c334b "show commit") [M.B.](# "Martin Budden") Added ability to display camera field of view.
## [v18.0.0](https://github.com/nophead/NopSCADlib/releases/tag/v18.0.0 "show release") Breaking Changes [...](https://github.com/nophead/NopSCADlib/compare/v17.10.0...v18.0.0 "diff with v17.10.0")
* 2021-12-12 [`970c538`](https://github.com/nophead/NopSCADlib/commit/970c5384960bb4c436cb789a1c5869c0a4adfaa5 "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
* 2021-12-12 [`cec790e`](https://github.com/nophead/NopSCADlib/commit/cec790ec09befd2631734cda88f3254043955638 "show commit") [M.B.](# "Martin Budden") Fixed y-carriage plain pulley and test.
* 2021-11-27 [`e71db80`](https://github.com/nophead/NopSCADlib/commit/e71db80093e5131908dff4a6ecba02e5c213a7d8 "show commit") [M.B.](# "Martin Budden") Improvements to `core_xy`
1. Better default parameters
2. Changed `plain_idler_offset` to work in x and y, to facilitate larger idler pulleys
### [v17.10.0](https://github.com/nophead/NopSCADlib/releases/tag/v17.10.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v17.9.0...v17.10.0 "diff with v17.9.0")
* 2021-12-12 [`c31f58a`](https://github.com/nophead/NopSCADlib/commit/c31f58a4fdf5163dc56b98e89f1a98d08cdfded2 "show commit") [C.P.](# "Chris Palmer") Updated images and readme.

View File

@@ -35,6 +35,7 @@ cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // min
show_rays = is_undef($show_rays) ? false : $show_rays; // show camera sight lines and light direction
show_threads = is_undef($show_threads) ? false : $show_threads; // show screw threads
show_plugs = is_undef($show_plugs) ? false : $show_plugs; // plugs on headers
teardrop_angle = is_undef($teardrop_angle) ? 45 : $teardrop_angle; // teardrop angle
pp1_colour = is_undef($pp1_colour) ? rr_green : $pp1_colour;// printed part colour 1, RepRap logo colour
pp2_colour = is_undef($pp2_colour) ? crimson : $pp2_colour;// printed part colour 2
pp3_colour = is_undef($pp3_colour) ? "SteelBlue" : $pp3_colour;// printed part colour 3

View File

@@ -678,6 +678,7 @@ PCB cameras.
|:--- |:--- |
| `camera_connector_pos(type)` | The flex connector block for the camera itself's position |
| `camera_connector_size(type)` | The flex connector block for the camera itself's size |
| `camera_fov(type)` | The field of view of the camera lens |
| `camera_lens(type)` | Stack of lens parts, can be round, rectangular or rounded rectangular, with optional tapered aperture |
| `camera_lens_offset(type)` | Offset of the lens center from the PCB centre |
| `camera_pcb(type)` | The PCB part of the camera |
@@ -685,7 +686,7 @@ PCB cameras.
### Modules
| Module | Description |
|:--- |:--- |
| `camera(type, show_lens = true)` | Draw specified PCB camera |
| `camera(type, show_lens = true, fov_distance = 0, fov = undef)` | Draw specified PCB camera |
| `camera_lens(type, offset = 0, show_lens = true)` | Draw the lens stack, with optional offset for making a clearance hole |
![cameras](tests/png/cameras.png)

View File

@@ -34,15 +34,18 @@ module teardrop(h, r, center = true, truncate = true, chamfer = 0, chamfer_both_
mirror([side, 0, 0])
intersection() {
hull()
translate([offset, 0]) {
circle4n(R);
translate([offset, 0]) {
circle4n(R);
if(truncate)
translate([0, R / 2])
square([2 * R * (sqrt(2) - 1), R], center = true);
else
polygon([[0, 0], [eps, 0], [0, R * sqrt(2)]]);
}
if (teardrop_angle > 0) {
x = R * tan(teardrop_angle / 2);
if(truncate)
translate([0, R / 2])
square([2 * x, R], center = true);
else
polygon([[0, 0], [eps, 0], [0, R + x * tan(min(teardrop_angle, 90 - eps))]]);
}
}
translate([0, -2 * R])
square([R, 4 * R]);
}

View File

@@ -28,6 +28,7 @@ function camera_lens_offset(type) = type[3]; //! Offset of the lens center fro
function camera_lens(type) = type[4]; //! Stack of lens parts, can be round, rectangular or rounded rectangular, with optional tapered aperture
function camera_connector_pos(type) = type[5]; //! The flex connector block for the camera itself's position
function camera_connector_size(type)= type[6]; //! The flex connector block for the camera itself's size
function camera_fov(type) = type[7]; //! The field of view of the camera lens
module camera_lens(type, offset = 0, show_lens = true) //! Draw the lens stack, with optional offset for making a clearance hole
color(grey(20))
@@ -57,7 +58,7 @@ module camera_lens(type, offset = 0, show_lens = true) //! Draw the lens stack,
}
}
module camera(type, show_lens = true) { //! Draw specified PCB camera
module camera(type, show_lens = true, fov_distance = 0, fov = undef) { //! Draw specified PCB camera
vitamin(str("camera(", type[0], "): ", type[1]));
pcb = camera_pcb(type);
@@ -66,6 +67,18 @@ module camera(type, show_lens = true) { //! Draw specified PCB camera
translate_z(pcb_thickness(pcb)) {
camera_lens(type, show_lens = show_lens);
if (show_lens&& fov_distance > 0) {
lens = camera_lens(type);
fov = is_undef(fov) ? camera_fov(type) : fov;
if (is_list(fov))
#translate_z(lens[2][0].z) // note: use of # is deliberate, to show highlighted field of view
translate(camera_lens_offset(type))
hull() {
cube([lens[1][1]/2, lens[1][1]/2, eps], center=true);
translate_z(fov_distance)
cube([2 * fov_distance * tan(fov.x / 2), 2 * fov_distance * tan(fov.y / 2), eps], center=true);
}
}
conn = camera_connector_size(type);
if(conn) {

View File

@@ -32,7 +32,8 @@ rpi_camera_v1 = ["rpi_camera_v1", "Raspberry Pi camera V1", rpi_camera_v1_pcb, [
[[0, 0, 4], 7.5 / 2],
[[0, 0, 5], 5.5 / 2, [1.5/2, 2/2, 0.5]],
],
[0, 12 - 1.5 - 2.5], [8, 5, 1]
[0, 12 - 1.5 - 2.5], [8, 5, 1],
[54, 41] // FOV
];
rpi_camera_v2_pcb = ["", "", 25, 23.862, 1, 2, 2.2, 0, "green", false, [[2, -2], [-2, -2], [2, -14.5], [-2, -14.5]],
@@ -47,7 +48,8 @@ rpi_camera_v2 = ["rpi_camera_v2", "Raspberry Pi camera V2", rpi_camera_v2_pcb, [
[[0, 0, 4], 7.5 / 2],
[[0, 0, 5], 5.5 / 2, [1.5/2, 2/2, 0.5]],
],
[-13.8 + 12.5, 23.862 / 2 - 4.7], [8.5, 4, 1]
[-13.8 + 12.5, 23.862 / 2 - 4.7], [8.5, 4, 1],
[62.2, 48.8] // FOV
];
rpi_camera_pcb = ["", "", 36, 36, 1.6, 0, 3.2, 0, "green", false, [[3.5, -3.5], [-3.5, -3.5], [3.5, 3.5], [-3.5, 3.5]],