discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Bug in my code or OpenSCAD?

JD
John David
Thu, Oct 31, 2024 10:51 AM

This discussion on the cone is interesting.  I had to look it up:

"The meaning of CONE is a solid generated by rotating a right triangle
about one of its legs —called also right circular cone."
-- Merriam-Webster  Dictionary

But in the smithy we used to use both solid and hollow "cones" and not all
of them went to a full point. Then I remembered that a truncated cone is
called a 'frustum'...

All that said, I can see defining a primitive which creates both solid and
hollow cones and frustums, and the code snippet above shows how simple that
code can be.  Maybe it would even be fast ;-)

EBo --

On Thu, Oct 31, 2024 at 2:58 AM Jordan Brown via Discuss <
discuss@lists.openscad.org> wrote:

On 10/30/2024 10:32 PM, Caddiy via Discuss wrote:

An anticone needs rotate_extrude?

I wouldn't call either of those shapes cones; I would call the first a
cylinder from which a point-down cone has been subtracted, and the second a
point-up cone from which a cylinder has been subtracted.

You could build either of them with rotate_extrude(), as you have, or you
could build them as the differences above.  Which is "best" probably
depends on whether what you have convenient is the coordinates of the inner
edge, or the coordinates of the point of the cone.

I'd give you difference-between-cone-and-cylinder examples, but I don't
have the coordinates of the point of the cone handy.  I'd have to
extrapolate from the upper side of the triangles.  That's not hard, but
it's midnight and I don't wanna :-)


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

This discussion on the cone is interesting. I had to look it up: "The meaning of CONE is a solid generated by rotating a right triangle about one of its legs —called also right circular cone." -- Merriam-Webster Dictionary But in the smithy we used to use both solid and hollow "cones" and not all of them went to a full point. Then I remembered that a truncated cone is called a 'frustum'... All that said, I can see defining a primitive which creates both solid and hollow cones and frustums, and the code snippet above shows how simple that code can be. Maybe it would even be fast ;-) EBo -- On Thu, Oct 31, 2024 at 2:58 AM Jordan Brown via Discuss < discuss@lists.openscad.org> wrote: > On 10/30/2024 10:32 PM, Caddiy via Discuss wrote: > > An anticone needs rotate_extrude? > > > I wouldn't call either of those shapes cones; I would call the first a > cylinder from which a point-down cone has been subtracted, and the second a > point-up cone from which a cylinder has been subtracted. > > You could build either of them with rotate_extrude(), as you have, or you > could build them as the differences above. Which is "best" probably > depends on whether what you have convenient is the coordinates of the inner > edge, or the coordinates of the point of the cone. > > I'd give you difference-between-cone-and-cylinder examples, but I don't > have the coordinates of the point of the cone handy. I'd have to > extrapolate from the upper side of the triangles. That's not hard, but > it's midnight and I don't wanna :-) > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
NH
nop head
Thu, Oct 31, 2024 11:22 AM

I think cylinder already does that. If you specify two radii you get a
frustum. I can't remember if zero is allowed for a cone.

On Thu, 31 Oct 2024, 10:51 John David via Discuss, <
discuss@lists.openscad.org> wrote:

This discussion on the cone is interesting.  I had to look it up:

"The meaning of CONE is a solid generated by rotating a right triangle
about one of its legs —called also right circular cone."
-- Merriam-Webster  Dictionary

But in the smithy we used to use both solid and hollow "cones" and not all
of them went to a full point. Then I remembered that a truncated cone is
called a 'frustum'...

All that said, I can see defining a primitive which creates both solid and
hollow cones and frustums, and the code snippet above shows how simple that
code can be.  Maybe it would even be fast ;-)

EBo --

On Thu, Oct 31, 2024 at 2:58 AM Jordan Brown via Discuss <
discuss@lists.openscad.org> wrote:

On 10/30/2024 10:32 PM, Caddiy via Discuss wrote:

An anticone needs rotate_extrude?

I wouldn't call either of those shapes cones; I would call the first a
cylinder from which a point-down cone has been subtracted, and the second a
point-up cone from which a cylinder has been subtracted.

You could build either of them with rotate_extrude(), as you have, or you
could build them as the differences above.  Which is "best" probably
depends on whether what you have convenient is the coordinates of the inner
edge, or the coordinates of the point of the cone.

I'd give you difference-between-cone-and-cylinder examples, but I don't
have the coordinates of the point of the cone handy.  I'd have to
extrapolate from the upper side of the triangles.  That's not hard, but
it's midnight and I don't wanna :-)


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

I think cylinder already does that. If you specify two radii you get a frustum. I can't remember if zero is allowed for a cone. On Thu, 31 Oct 2024, 10:51 John David via Discuss, < discuss@lists.openscad.org> wrote: > This discussion on the cone is interesting. I had to look it up: > > "The meaning of CONE is a solid generated by rotating a right triangle > about one of its legs —called also right circular cone." > -- Merriam-Webster Dictionary > > But in the smithy we used to use both solid and hollow "cones" and not all > of them went to a full point. Then I remembered that a truncated cone is > called a 'frustum'... > > All that said, I can see defining a primitive which creates both solid and > hollow cones and frustums, and the code snippet above shows how simple that > code can be. Maybe it would even be fast ;-) > > EBo -- > > On Thu, Oct 31, 2024 at 2:58 AM Jordan Brown via Discuss < > discuss@lists.openscad.org> wrote: > >> On 10/30/2024 10:32 PM, Caddiy via Discuss wrote: >> >> An anticone needs rotate_extrude? >> >> >> I wouldn't call either of those shapes cones; I would call the first a >> cylinder from which a point-down cone has been subtracted, and the second a >> point-up cone from which a cylinder has been subtracted. >> >> You could build either of them with rotate_extrude(), as you have, or you >> could build them as the differences above. Which is "best" probably >> depends on whether what you have convenient is the coordinates of the inner >> edge, or the coordinates of the point of the cone. >> >> I'd give you difference-between-cone-and-cylinder examples, but I don't >> have the coordinates of the point of the cone handy. I'd have to >> extrapolate from the upper side of the triangles. That's not hard, but >> it's midnight and I don't wanna :-) >> >> _______________________________________________ >> OpenSCAD mailing list >> To unsubscribe send an email to discuss-leave@lists.openscad.org >> > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
RW
Raymond West
Thu, Oct 31, 2024 12:49 PM

On 31/10/2024 10:51, John David via Discuss wrote:

This discussion on the cone is interesting.  I had to look it up:

  "The meaning of CONE is a solid generated by rotating a right
triangle about one of its legs —called also right circular cone."
        -- Merriam-Webster  Dictionary

But in the smithy we used to use both solid and hollow "cones" and not
all of them went to a full point. Then I remembered that a truncated
cone is called a 'frustum'...

All that said, I can see defining a primitive which creates both solid
and hollow cones and frustums, and the code snippet above shows how
simple that code can be.  Maybe it would even be fast ;-)

  EBo --

Being pedantic...

I've no idea what a 'leg' of a triangle is, and if there is more than one.

Referring to the Oxford English Dictionary,  (this is for the English
language, not American English)

'A cone is defined as a solid figure with a circular (or other curved)
plane base, tapering to a point.'

(It does not state that the point has to be above the centre of the base)

As NopHead mentioned openscad allows two diameters, so some frustums can
be created.

 A frustum is defined as 'the part of a cone or pyramid intercepted
between two planes'.

Openscad can not directly implement all versions of cones, since in
cone() the point is above the centre of the plane,  nor frustums, since
the planes in cone() are parallel.

https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids

Of course, applying various translations and differences, etc., you can
generate the whole range of cones and fustrums.

The openscad names are a bit awry, in some cases, since  cone() refers
only to a subset of cones,  cubes() are cuboids, etc.

On 31/10/2024 10:51, John David via Discuss wrote: > This discussion on the cone is interesting.  I had to look it up: > >   "The meaning of CONE is a solid generated by rotating a right > triangle about one of its legs —called also right circular cone." >         -- Merriam-Webster  Dictionary > > But in the smithy we used to use both solid and hollow "cones" and not > all of them went to a full point. Then I remembered that a truncated > cone is called a 'frustum'... > > All that said, I can see defining a primitive which creates both solid > and hollow cones and frustums, and the code snippet above shows how > simple that code can be.  Maybe it would even be fast ;-) > >   EBo -- Being pedantic... I've no idea what a 'leg' of a triangle is, and if there is more than one. Referring to the Oxford English Dictionary,  (this is for the English language, not American English) 'A cone is defined as a solid figure with a circular (or other curved) plane base, tapering to a point.' (It does not state that the point has to be above the centre of the base) As NopHead mentioned openscad allows two diameters, so some frustums can be created.  A frustum is defined as 'the part of a cone or pyramid intercepted between two planes'. Openscad can not directly implement all versions of cones, since in cone() the point is above the centre of the plane,  nor frustums, since the planes in cone() are parallel. https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids Of course, applying various translations and differences, etc., you can generate the whole range of cones and fustrums. The openscad names are a bit awry, in some cases, since  cone() refers only to a subset of cones,  cubes() are cuboids, etc.
M
mikeonenine@web.de
Thu, Oct 31, 2024 1:52 PM

Jordan Brown wrote:

On 10/30/2024 10:32 PM, Caddiy via Discuss wrote:

An anticone needs rotate_extrude?

You could build either of them with rotate_extrude(), as you have, or
you could build them as the differences above.  Which is "best" probably
depends on whether what you have convenient is the coordinates of the
inner edge, or the coordinates of the point of the cone.

What you have is the height by which you have raised or lowered the spline polygon (+10 for example here), an inside radius (60) and an outside radius (100). The angle would be arctan 10 / (100-60) if that was of interest, but I think it would be easier to deal with linear measurements. To get the anticone from the cone, just swap the coordinates around a bit.

In the code above, two of the coordinates are the same, giving 4 coordinates for a triangle, which is one more than is required to define a triangle, as I originally had in mind to extend the base, but changed my mind and forgot to remove the extra coordinate. To cut a long story short, a polygon can give you the filler-cone plus a bit more in one piece, which a primitive cone can’t.

See, and be amazed:

$fn=100;

//Cone:

rotate_extrude()

polygon([

[60, 0],

[60, 10+20],

[100, 0+20],

[100, 0],

]);

Jordan Brown wrote: > On 10/30/2024 10:32 PM, Caddiy via Discuss wrote: > > > An anticone needs rotate_extrude? > > You could build either of them with rotate_extrude(), as you have, or > you could build them as the differences above.  Which is "best" probably > depends on whether what you have convenient is the coordinates of the > inner edge, or the coordinates of the point of the cone. What you have is the height by which you have raised or lowered the spline polygon (+10 for example here), an inside radius (60) and an outside radius (100). The angle would be arctan 10 / (100-60) if that was of interest, but I think it would be easier to deal with linear measurements. To get the anticone from the cone, just swap the coordinates around a bit. In the code above, two of the coordinates are the same, giving 4 coordinates for a triangle, which is one more than is required to define a triangle, as I originally had in mind to extend the base, but changed my mind and forgot to remove the extra coordinate. To cut a long story short, a polygon can give you the filler-cone plus a bit more in one piece, which a primitive cone can’t. See, and be amazed: `$fn=100;` `//Cone:` `rotate_extrude()` `polygon([` `[60, 0],` `[60, 10+20],` `[100, 0+20],` `[100, 0],` `]);`
JB
Jordan Brown
Thu, Oct 31, 2024 4:54 PM

On 10/31/2024 4:22 AM, nop head via Discuss wrote:

I think cylinder already does that. If you specify two radii you get a
frustum. I can't remember if zero is allowed for a cone.

Yes, and yes.

On 10/31/2024 4:22 AM, nop head via Discuss wrote: > > I think cylinder already does that. If you specify two radii you get a > frustum. I can't remember if zero is allowed for a cone. > Yes, and yes.
JB
Jordan Brown
Thu, Oct 31, 2024 5:16 PM

To cut a long story short, a polygon can give you the filler-cone plus
a bit more in one piece, which a primitive cone can’t.

Sort of.  It depends on what your requirements are for the "plus a bit
more".

If your cone is anchored at the top, scaling it up will expand it at the
base without changing the shape of the top.

This is easy to demonstrate with BOSL2, because you can natively anchor
at the top:

include <BOSL2/std.scad>

s = 1;
scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP);

as you change s, observe that the top portion of the cone stays the same.

It's a tiny bit more complex in base OpenSCAD because base OpenSCAD
cylinders are anchored at their bottoms or centers.

s = 1;
h = 10;
scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h);

(Though you can demonstrate it with an upside-down cone without needing
a translate().)

It even retains the same number of sides as it grows, because cylinder()
decides on the number of sides when it creates the object, and scale()
doesn't affect that choice.

In the particular case that this came from, the user was already using
BOSL2, and it happened that the top of the cone was easy to know, and
that since it was cutting away past the bottom of the object the shape
of the "extra" didn't matter.  Net, that negative object could be a
straightforward cone anchored at its top.

> To cut a long story short, a polygon can give you the filler-cone plus > a bit more in one piece, which a primitive cone can’t. > Sort of.  It depends on what your requirements are for the "plus a bit more". If your cone is anchored at the top, scaling it up will expand it at the base without changing the shape of the top. This is easy to demonstrate with BOSL2, because you can natively anchor at the top: include <BOSL2/std.scad> s = 1; scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP); as you change s, observe that the top portion of the cone stays the same. It's a tiny bit more complex in base OpenSCAD because base OpenSCAD cylinders are anchored at their bottoms or centers. s = 1; h = 10; scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h); (Though you can demonstrate it with an upside-down cone without needing a translate().) It even retains the same number of sides as it grows, because cylinder() decides on the number of sides when it creates the object, and scale() doesn't affect that choice. In the particular case that this came from, the user was already using BOSL2, and it happened that the top of the cone was easy to know, and that since it was cutting away past the bottom of the object the shape of the "extra" didn't matter.  Net, that negative object could be a straightforward cone anchored at its top.
M
mikeonenine@web.de
Thu, Oct 31, 2024 7:36 PM

Jordan Brown wrote:

To cut a long story short, a polygon can give you the filler-cone plus
a bit more in one piece, which a primitive cone can’t.

Sort of.  It depends on what your requirements are for the "plus a bit
more".

If your cone is anchored at the top, scaling it up will expand it at the
base without changing the shape of the top.

This is easy to demonstrate with BOSL2, because you can natively anchor
at the top:

include <BOSL2/std.scad>

s = 1;
scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP);

as you change s, observe that the top portion of the cone stays the same.

It's a tiny bit more complex in base OpenSCAD because base OpenSCAD
cylinders are anchored at their bottoms or centers.

s = 1;
h = 10;
scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h);

(Though you can demonstrate it with an upside-down cone without needing
a translate().)

It even retains the same number of sides as it grows, because cylinder()
decides on the number of sides when it creates the object, and scale()
doesn't affect that choice.

In the particular case that this came from, the user was already using
BOSL2, and it happened that the top of the cone was easy to know, and
that since it was cutting away past the bottom of the object the shape
of the "extra" didn't matter.  Net, that negative object could be a
straightforward cone anchored at its top.

A conical face spline joint will need two different cones as fillers to get a flat face at the back of each piece. One piece, with luck or by design, may already have a flat face, or it may even be conical, requiring a negative/hollow cone, that I’m calling an anticone, to get a flat face. But neither a primitive cone nor a BOSL2 cone can handle a negative “h”.

A polygon can. (The polygon is then rotate-extruded to form the desired anticone.)

I wonder, though, how many Hirth joints are conical and why. A conical joint seems like an unnecessary complication, as a plain joint already self-centres very precisely.

Jordan Brown wrote: > > To cut a long story short, a polygon can give you the filler-cone plus > > a bit more in one piece, which a primitive cone can’t. > > Sort of.  It depends on what your requirements are for the "plus a bit > more". > > If your cone is anchored at the top, scaling it up will expand it at the > base without changing the shape of the top. > > This is easy to demonstrate with BOSL2, because you can natively anchor > at the top: > > ``` > include <BOSL2/std.scad> > > s = 1; > scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP); > ``` > > as you change s, observe that the top portion of the cone stays the same. > > It's a tiny bit more complex in base OpenSCAD because base OpenSCAD > cylinders are anchored at their bottoms or centers. > > ``` > s = 1; > h = 10; > scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h); > ``` > > (Though you can demonstrate it with an upside-down cone without needing > a translate().) > > It even retains the same number of sides as it grows, because cylinder() > decides on the number of sides when it creates the object, and scale() > doesn't affect that choice. > > In the particular case that this came from, the user was already using > BOSL2, and it happened that the top of the cone was easy to know, and > that since it was cutting away past the bottom of the object the shape > of the "extra" didn't matter.  Net, that negative object could be a > straightforward cone anchored at its top. A conical face spline joint will need two different cones as fillers to get a flat face at the back of each piece. One piece, with luck or by design, may already have a flat face, or it may even be conical, requiring a negative/hollow cone, that I’m calling an anticone, to get a flat face. But neither a primitive cone nor a BOSL2 cone can handle a negative “h”. A polygon can. (The polygon is then rotate-extruded to form the desired anticone.) I wonder, though, how many Hirth joints are conical and why. A conical joint seems like an unnecessary complication, as a plain joint already self-centres very precisely.
JB
Jordan Brown
Thu, Oct 31, 2024 8:19 PM

On 10/31/2024 12:36 PM, Caddiy via Discuss wrote:

A conical face spline joint will need two different cones as fillers
to get a flat face at the back of each piece. One piece, with luck or
by design, may already have a flat face, or it may even be conical,
requiring a negative/hollow cone, that I’m calling an anticone, to get
a flat face. But neither a primitive cone nor a BOSL2 cone can handle
a negative “h”.

I don't know beans about a conical face spline joint, and am having a
hard time following your description.

I just know that the OP's model had teeth with bottoms that touched a
cone, that needed to have the bottom little bit differenced off.  The OP
did this using a rotate-extruded triangle, when a plain old cone would
work fine and be simpler.

OP's solution:

module _chamferF() {
    A = -_toothHeight/2 - .1;
    B = -_toothHeight/2 + _chamferHeight;
    
    pts = [[0, _conic], 
           [_or+tiny, A], 
           [_or+tiny, B]];
    #rotate_extrude(angle = 360)
    polygon(pts);
}

Note:  that's a "hollow" cone.

Simpler solution:

module _chamferF() {
#up(_conic + _chamferHeight)
scale(1.5)
zcyl(h = _toothHeight/2 + _conic, r1 = _or, r2 = 0, anchor=TOP);
}

On 10/31/2024 12:36 PM, Caddiy via Discuss wrote: > > A conical face spline joint will need two different cones as fillers > to get a flat face at the back of each piece. One piece, with luck or > by design, may already have a flat face, or it may even be conical, > requiring a negative/hollow cone, that I’m calling an anticone, to get > a flat face. But neither a primitive cone nor a BOSL2 cone can handle > a negative “h”. > I don't know beans about a conical face spline joint, and am having a hard time following your description. I just know that the OP's model had teeth with bottoms that touched a cone, that needed to have the bottom little bit differenced off.  The OP did this using a rotate-extruded triangle, when a plain old cone would work fine and be simpler. OP's solution: module _chamferF() {     A = -_toothHeight/2 - .1;     B = -_toothHeight/2 + _chamferHeight;          pts = [[0, _conic],            [_or+tiny, A],            [_or+tiny, B]];     #rotate_extrude(angle = 360)     polygon(pts); } Note:  that's a "hollow" cone. Simpler solution: module _chamferF() { #up(_conic + _chamferHeight) scale(1.5) zcyl(h = _toothHeight/2 + _conic, r1 = _or, r2 = 0, anchor=TOP); }
BC
Bob Carlson
Thu, Oct 31, 2024 8:27 PM

I have encountered exactly one hirth spline IRL and it was conical. I made some attachments for my golf cart (carries just my bag). The spot where options are attached has a hirth spline to prevent rotation of the things attached. It is conical, 60 teeth and 35 mm in D. I made a matching part without understanding anything about the hirth spline or knowing the name.

It seems obvious that the cone shape makes it easier to center the parts by hand as you put new attachments on.

  • Bob

On Oct 31, 2024, at 12:36, Caddiy via Discuss discuss@lists.openscad.org wrote:

Jordan Brown wrote:

To cut a long story short, a polygon can give you the filler-cone plus a bit more in one piece, which a primitive cone can’t.

Sort of.  It depends on what your requirements are for the "plus a bit more".

If your cone is anchored at the top, scaling it up will expand it at the base without changing the shape of the top.

This is easy to demonstrate with BOSL2, because you can natively anchor at the top:

include <BOSL2/std.scad>

s = 1;
scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP);
as you change s, observe that the top portion of the cone stays the same.

It's a tiny bit more complex in base OpenSCAD because base OpenSCAD cylinders are anchored at their bottoms or centers.

s = 1;
h = 10;
scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h);
(Though you can demonstrate it with an upside-down cone without needing a translate().)

It even retains the same number of sides as it grows, because cylinder() decides on the number of sides when it creates the object, and scale() doesn't affect that choice.

In the particular case that this came from, the user was already using BOSL2, and it happened that the top of the cone was easy to know, and that since it was cutting away past the bottom of the object the shape of the "extra" didn't matter.  Net, that negative object could be a straightforward cone anchored at its top.

A conical face spline joint will need two different cones as fillers to get a flat face at the back of each piece. One piece, with luck or by design, may already have a flat face, or it may even be conical, requiring a negative/hollow cone, that I’m calling an anticone, to get a flat face. But neither a primitive cone nor a BOSL2 cone can handle a negative “h”.

A polygon can. (The polygon is then rotate-extruded to form the desired anticone.)

I wonder, though, how many Hirth joints are conical and why. A conical joint seems like an unnecessary complication, as a plain joint already self-centres very precisely.


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org

I have encountered exactly one hirth spline IRL and it was conical. I made some attachments for my golf cart (carries just my bag). The spot where options are attached has a hirth spline to prevent rotation of the things attached. It is conical, 60 teeth and 35 mm in D. I made a matching part without understanding anything about the hirth spline or knowing the name. It seems obvious that the cone shape makes it easier to center the parts by hand as you put new attachments on. - Bob > On Oct 31, 2024, at 12:36, Caddiy via Discuss <discuss@lists.openscad.org> wrote: > > Jordan Brown wrote: > > To cut a long story short, a polygon can give you the filler-cone plus a bit more in one piece, which a primitive cone can’t. > > Sort of. It depends on what your requirements are for the "plus a bit more". > > If your cone is anchored at the top, scaling it up will expand it at the base without changing the shape of the top. > > This is easy to demonstrate with BOSL2, because you can natively anchor at the top: > > include <BOSL2/std.scad> > > s = 1; > scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP); > as you change s, observe that the top portion of the cone stays the same. > > It's a tiny bit more complex in base OpenSCAD because base OpenSCAD cylinders are anchored at their bottoms or centers. > > s = 1; > h = 10; > scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h); > (Though you can demonstrate it with an upside-down cone without needing a translate().) > > It even retains the same number of sides as it grows, because cylinder() decides on the number of sides when it creates the object, and scale() doesn't affect that choice. > > In the particular case that this came from, the user was already using BOSL2, and it happened that the top of the cone was easy to know, and that since it was cutting away past the bottom of the object the shape of the "extra" didn't matter. Net, that negative object could be a straightforward cone anchored at its top. > > A conical face spline joint will need two different cones as fillers to get a flat face at the back of each piece. One piece, with luck or by design, may already have a flat face, or it may even be conical, requiring a negative/hollow cone, that I’m calling an anticone, to get a flat face. But neither a primitive cone nor a BOSL2 cone can handle a negative “h”. > > A polygon can. (The polygon is then rotate-extruded to form the desired anticone.) > > I wonder, though, how many Hirth joints are conical and why. A conical joint seems like an unnecessary complication, as a plain joint already self-centres very precisely. > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org <mailto:discuss-leave@lists.openscad.org>
AM
Adrian Mariano
Thu, Oct 31, 2024 8:39 PM

I looked up Hirth joints online and found no indication at all that a
conical hirth joint exists.  No pictures.  Nobody selling them.  Nobody
describing them.  So that did make me wonder what the advantage is.  Is it
in fact easier to connect conical joints?  The joint is said to self-center
normally and it could be made so the parts are identical, which is a
simplification compared to a conical design where you need two different
parts.

Personally I think the simplest way to chamfer the teeth of this joint is
as in the code I posted: in 2d on the profile.  No cone required.

On Thu, Oct 31, 2024 at 4:27 PM Bob Carlson via Discuss <
discuss@lists.openscad.org> wrote:

I have encountered exactly one hirth spline IRL and it was conical. I made
some attachments for my golf cart (carries just my bag). The spot where
options are attached has a hirth spline to prevent rotation of the things
attached. It is conical, 60 teeth and 35 mm in D. I made a matching part
without understanding anything about the hirth spline or knowing the name.

It seems obvious that the cone shape makes it easier to center the parts
by hand as you put new attachments on.

  • Bob

On Oct 31, 2024, at 12:36, Caddiy via Discuss discuss@lists.openscad.org
wrote:

Jordan Brown wrote:

To cut a long story short, a polygon can give you the filler-cone plus a
bit more in one piece, which a primitive cone can’t.

Sort of.  It depends on what your requirements are for the "plus a bit
more".

If your cone is anchored at the top, scaling it up will expand it at the
base without changing the shape of the top.

This is easy to demonstrate with BOSL2, because you can natively anchor at
the top:

include <BOSL2/std.scad>

s = 1;
scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP);

as you change s, observe that the top portion of the cone stays the same.

It's a tiny bit more complex in base OpenSCAD because base OpenSCAD
cylinders are anchored at their bottoms or centers.

s = 1;
h = 10;
scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h);

(Though you can demonstrate it with an upside-down cone without needing a
translate().)

It even retains the same number of sides as it grows, because cylinder()
decides on the number of sides when it creates the object, and scale()
doesn't affect that choice.

In the particular case that this came from, the user was already using
BOSL2, and it happened that the top of the cone was easy to know, and that
since it was cutting away past the bottom of the object the shape of the
"extra" didn't matter.  Net, that negative object could be a
straightforward cone anchored at its top.

A conical face spline joint will need two different cones as fillers to
get a flat face at the back of each piece. One piece, with luck or by
design, may already have a flat face, or it may even be conical, requiring
a negative/hollow cone, that I’m calling an anticone, to get a flat face.
But neither a primitive cone nor a BOSL2 cone can handle a negative “h”.

A polygon can. (The polygon is then rotate-extruded to form the desired
anticone.)

I wonder, though, how many Hirth joints are conical and why. A conical
joint seems like an unnecessary complication, as a plain joint already
self-centres very precisely.


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

I looked up Hirth joints online and found no indication at all that a conical hirth joint exists. No pictures. Nobody selling them. Nobody describing them. So that did make me wonder what the advantage is. Is it in fact easier to connect conical joints? The joint is said to self-center normally and it could be made so the parts are identical, which is a simplification compared to a conical design where you need two different parts. Personally I think the simplest way to chamfer the teeth of this joint is as in the code I posted: in 2d on the profile. No cone required. On Thu, Oct 31, 2024 at 4:27 PM Bob Carlson via Discuss < discuss@lists.openscad.org> wrote: > I have encountered exactly one hirth spline IRL and it was conical. I made > some attachments for my golf cart (carries just my bag). The spot where > options are attached has a hirth spline to prevent rotation of the things > attached. It is conical, 60 teeth and 35 mm in D. I made a matching part > without understanding anything about the hirth spline or knowing the name. > > It seems obvious that the cone shape makes it easier to center the parts > by hand as you put new attachments on. > > - Bob > > On Oct 31, 2024, at 12:36, Caddiy via Discuss <discuss@lists.openscad.org> > wrote: > > Jordan Brown wrote: > > To cut a long story short, a polygon can give you the filler-cone plus a > bit more in one piece, which a primitive cone can’t. > > Sort of. It depends on what your requirements are for the "plus a bit > more". > > If your cone is anchored at the top, scaling it up will expand it at the > base without changing the shape of the top. > > This is easy to demonstrate with BOSL2, because you can natively anchor at > the top: > > include <BOSL2/std.scad> > > s = 1; > scale(s) zcyl(r1=10, r2=0, h=10, anchor=TOP); > > as you change s, observe that the top portion of the cone stays the same. > > It's a tiny bit more complex in base OpenSCAD because base OpenSCAD > cylinders are anchored at their bottoms or centers. > > s = 1; > h = 10; > scale(s) translate([0,0,-h]) cylinder(r1=10, r2=0, h=h); > > (Though you can demonstrate it with an upside-down cone without needing a > translate().) > > It even retains the same number of sides as it grows, because cylinder() > decides on the number of sides when it creates the object, and scale() > doesn't affect that choice. > > In the particular case that this came from, the user was already using > BOSL2, and it happened that the top of the cone was easy to know, and that > since it was cutting away past the bottom of the object the shape of the > "extra" didn't matter. Net, that negative object could be a > straightforward cone anchored at its top. > > A conical face spline joint will need two different cones as fillers to > get a flat face at the back of each piece. One piece, with luck or by > design, may already have a flat face, or it may even be conical, requiring > a negative/hollow cone, that I’m calling an anticone, to get a flat face. > But neither a primitive cone nor a BOSL2 cone can handle a negative “h”. > > A polygon can. (The polygon is then rotate-extruded to form the desired > anticone.) > > I wonder, though, how many Hirth joints are conical and why. A conical > joint seems like an unnecessary complication, as a plain joint already > self-centres very precisely. > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >