dpellegr/PolyGear

missing functions

malv-c opened this issue · 10 comments

hi
PGDemo(); give :Module cache size: 2 modules
Compiling design (CSG Tree generation)...
WARNING: Ignoring unknown function 'assert'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_undef'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
WARNING: Ignoring unknown function 'is_list'.
Rendering Polygon Mesh using CGAL...
Started 4 worker threads
ERROR: Unable to convert point at index 0 to a vec3 of numbers
ERROR: Unable to convert point at index 0 to a vec3 of numbers
Geometries in cache: 103
Geometry cache size in bytes: 58680
CGAL Polyhedrons in cache: 8
CGAL cache size in bytes: 469696
Total rendering time: 0 hours, 0 minutes, 2 seconds
Top level object is a 3D object:
Simple: yes
Vertices: 34
Halfedges: 102
Edges: 51
Halffacets: 38
Facets: 19
Volumes: 2
Rendering finished.

Can you please update OpenSCAD to v2019.05?

I don't have easy access to older versions, but could you please try adding these three lines at the top of PolyGear.scad (before the include):

module assert(cond, msg) {if (!cond) echo(str("ASSERT FAILED: ",msg));}
function is_undef(var) = var==undef;
function is_list(var) = len(var)!=undef;

Sorry, my bad. Just remove line 157 of PolyGear.scad (where assert is used) and add only

function is_undef(var) = var==undef;
function is_list(var) = len(var)!=undef;

at the beginning.

I gave you a module implementation of assert, which however is and is used as a function. Therefore the syntax error. Since is not that important you can just get rid of it to avoid headaches.

Interior gears are easy: just use OpenSCAD's difference().
For spherical if you mean something like this https://www.sciencedirect.com/science/article/abs/pii/S0924013602000675 probably never, if you mean something like this https://www.shapeways.com/forum/attachments/gear-ball-jpg.558/ you just need bevel gears, you can give spherical external/internal faces by intersect()/difference() with a sphere.
Racks maybe, as soon as I need one or as I receive a good pull request!

  1. I think so, as long as the contact radii match (by default they do since they are half of the tooth height) there should be no problem. Eventually one can also adjust addendum and dedendum. For 3D printing there is also the possibility to adjust the backlash by trial and error according to the printer settings.

  2. Yes, they are quite interesting mechanical pieces, but I feel that they are out of scope. Plenty of the code in this library would be of no use in modelling them. I would probably start from scratch. Clearly if one comes up with a good module, it's ok for me to include and shipping it with PolyGear.