discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Better way of creating a curved slope?

AG
Alex Gibson
Sat, Feb 27, 2021 4:58 PM

That’s a really interesting design – but I mostly want to agree and +1 your sentiment.

It’s healthy to want to improve and change things – but there are things OpenSCAD can do and enable that would be far harder than other software, and I am very grateful to the developers for their hard work to make and keep it working!

Cheers,

Alex Gibson

admg consulting

edumaker limited

·        Project management

·        Operations & Process improvement

·        3D Printing

From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of fred via Discuss
Sent: 27 February 2021 16:18
To: OpenSCAD general discussion
Cc: fred
Subject: Re: [OpenSCAD] Openscad is often almost perfect

That's an interesting construct. I've not seen a radial fingerboard before.

How do you feel about converting it to a parametric version?

On Saturday, February 27, 2021, 10:46:07 AM EST, Ray West raywest@raywest.com wrote:

Sometimes, i look at what is possible using openscad, in just a few
lines I can produce something that using some other cad software, would
be tedious, to say the least. And then it can be 3D printed, giving a
'needed' functional item that would be tricky to make in some other way.
This is a feather board, if you are familiar with a table saw or router,
you will know what it is. It is clamped by an 8mm coach bolt, but it is
trivial to resize it to whatever size is required. It prints OK in Petg
(pla may be too brittle), with 4 walls or so, maybe 10% infill. It will
work with far fewer fingers, of course, but it will let you keep all
your fingers!

module arm(){
difference(){
union(){
difference(){
cylinder(15,50,50);
translate([5,0,0])cylinder(15,40,40);
translate([-80,0,0])cube(100);
}
translate([-43,0,0]) cylinder (15,12,12); //round end
}
translate([-43,0,0]) cube([9,9,115],true);// 9mm squarehole
}
}

//arm();

module finger(){
rotate([0,0,-130]){
translate([-1,0,0])cube([2,30 ,15]);  //2mm thick fingers
}
}

//finger();

module fingers(){
for (i=[-90:4:70]){
rotate([0,0,i])translate([0,-48,0])finger();
}
}

$fn=100;

difference(){
union(){
arm();
fingers();
}
translate([35,-21,0])rotate([0,0,30])cube(100); // chop off end

difference(){                    //'flatten' ends
cylinder (15,200,200);
cylinder(15,70,70);

}
}


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient

Virus-free.  http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient www.avg.com

That’s a really interesting design – but I mostly want to agree and +1 your sentiment. It’s healthy to want to improve and change things – but there are things OpenSCAD can do and enable that would be far harder than other software, and I am very grateful to the developers for their hard work to make and keep it working! Cheers, Alex Gibson admg consulting edumaker limited · Project management · Operations & Process improvement · 3D Printing From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of fred via Discuss Sent: 27 February 2021 16:18 To: OpenSCAD general discussion Cc: fred Subject: Re: [OpenSCAD] Openscad is often almost perfect That's an interesting construct. I've not seen a radial fingerboard before. How do you feel about converting it to a parametric version? On Saturday, February 27, 2021, 10:46:07 AM EST, Ray West <raywest@raywest.com> wrote: Sometimes, i look at what is possible using openscad, in just a few lines I can produce something that using some other cad software, would be tedious, to say the least. And then it can be 3D printed, giving a 'needed' functional item that would be tricky to make in some other way. This is a feather board, if you are familiar with a table saw or router, you will know what it is. It is clamped by an 8mm coach bolt, but it is trivial to resize it to whatever size is required. It prints OK in Petg (pla may be too brittle), with 4 walls or so, maybe 10% infill. It will work with far fewer fingers, of course, but it will let you keep all your fingers! module arm(){ difference(){ union(){ difference(){ cylinder(15,50,50); translate([5,0,0])cylinder(15,40,40); translate([-80,0,0])cube(100); } translate([-43,0,0]) cylinder (15,12,12); //round end } translate([-43,0,0]) cube([9,9,115],true);// 9mm squarehole } } //arm(); module finger(){ rotate([0,0,-130]){ translate([-1,0,0])cube([2,30 ,15]); //2mm thick fingers } } //finger(); module fingers(){ for (i=[-90:4:70]){ rotate([0,0,i])translate([0,-48,0])finger(); } } $fn=100; difference(){ union(){ arm(); fingers(); } translate([35,-21,0])rotate([0,0,30])cube(100); // chop off end difference(){ //'flatten' ends cylinder (15,200,200); cylinder(15,70,70); } } _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Virus-free. <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> www.avg.com
NH
nop head
Sat, Feb 27, 2021 5:43 PM

I think the triangulation for linear extrude with twist has been improved
recently by the theHans.

On Sat, 27 Feb 2021 at 16:07, adrianv avm4@cornell.edu wrote:

That's a clever approach that I completely overlooked.  I suppose I tend
to forget about the twist parameter for linear_extrude, perhaps in part
because it usually produces a bad result with how the shape is
triangulated.  But in this case it's OK.

Parkinbot wrote
With all that advanced stuff, we shouldn't forget that there is a simple
solution with native means for this specific problem:

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
[hidden email]
http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


Sent from the OpenSCAD mailing list archive http://forum.openscad.org/
at Nabble.com.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

I think the triangulation for linear extrude with twist has been improved recently by the theHans. On Sat, 27 Feb 2021 at 16:07, adrianv <avm4@cornell.edu> wrote: > That's a clever approach that I completely overlooked. I suppose I tend > to forget about the twist parameter for linear_extrude, perhaps in part > because it usually produces a bad result with how the shape is > triangulated. But in this case it's OK. > > Parkinbot wrote > With all that advanced stuff, we shouldn't forget that there is a simple > solution with native means for this specific problem: > > > > > > > -- > Sent from: http://forum.openscad.org/ > _______________________________________________ > OpenSCAD mailing list > [hidden email] > <http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > > ------------------------------ > Sent from the OpenSCAD mailing list archive <http://forum.openscad.org/> > at Nabble.com. > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
A
adrianv
Sat, Feb 27, 2021 6:38 PM

Is that in a dev version?  Because when I try

intersection(){
linear_extrude(15, twist=90, convexity=8)
square(10,center=true);
translate([50/2,0,0])cube(50,center=true);
}

I get this pretty terrible result:

http://forum.openscad.org/file/t2477/twisted3.png

Making this model well requires either a lot more horizontal slices (which I
find ugly) or resampling the square to have more than four points so that
you aren't trying to approximate the curved sides with long triangles.

http://forum.openscad.org/file/t2477/twisted2.png

nophead wrote

I think the triangulation for linear extrude with twist has been improved
recently by the theHans.

On Sat, 27 Feb 2021 at 16:07, adrianv <

avm4@

> wrote:

That's a clever approach that I completely overlooked.  I suppose I tend
to forget about the twist parameter for linear_extrude, perhaps in part
because it usually produces a bad result with how the shape is
triangulated.  But in this case it's OK.

Parkinbot wrote
With all that advanced stuff, we shouldn't forget that there is a simple
solution with native means for this specific problem:

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
[hidden email]
<http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad>
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


Sent from the OpenSCAD mailing list archive
<http://forum.openscad.org/>
at Nabble.com.


OpenSCAD mailing list

Discuss@.openscad

Discuss@.openscad

Is that in a dev version? Because when I try intersection(){ linear_extrude(15, twist=90, convexity=8) square(10,center=true); translate([50/2,0,0])cube(50,center=true); } I get this pretty terrible result: <http://forum.openscad.org/file/t2477/twisted3.png> Making this model well requires either a lot more horizontal slices (which I find ugly) or resampling the square to have more than four points so that you aren't trying to approximate the curved sides with long triangles. <http://forum.openscad.org/file/t2477/twisted2.png> nophead wrote > I think the triangulation for linear extrude with twist has been improved > recently by the theHans. > > On Sat, 27 Feb 2021 at 16:07, adrianv &lt; > avm4@ > &gt; wrote: > >> That's a clever approach that I completely overlooked. I suppose I tend >> to forget about the twist parameter for linear_extrude, perhaps in part >> because it usually produces a bad result with how the shape is >> triangulated. But in this case it's OK. >> >> Parkinbot wrote >> With all that advanced stuff, we shouldn't forget that there is a simple >> solution with native means for this specific problem: >> >> >> >> >> >> >> -- >> Sent from: http://forum.openscad.org/ >> _______________________________________________ >> OpenSCAD mailing list >> [hidden email] >> &lt;http:///user/SendEmail.jtp?type=email&amp;email=Discuss%40.openscad&gt; >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> >> >> ------------------------------ >> Sent from the OpenSCAD mailing list archive >> &lt;http://forum.openscad.org/&gt; >> at Nabble.com. >> _______________________________________________ >> OpenSCAD mailing list >> > Discuss@.openscad >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> > > _______________________________________________ > OpenSCAD mailing list > Discuss@.openscad > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org -- Sent from: http://forum.openscad.org/
NH
nop head
Sat, Feb 27, 2021 6:48 PM

I think the improvement was just picking the best diagonal to split the
quads, so yes, to twist something with few vertices you still need to add
some manually to get roughly square quads.

On Sat, 27 Feb 2021 at 18:39, adrianv avm4@cornell.edu wrote:

Is that in a dev version?  Because when I try

intersection(){
linear_extrude(15, twist=90, convexity=8)
square(10,center=true);
translate([50/2,0,0])cube(50,center=true);
}

I get this pretty terrible result:

Making this model well requires either a lot more horizontal slices (which
I find ugly) or resampling the square to have more than four points so that
you aren't trying to approximate the curved sides with long triangles.

nophead wrote
I think the triangulation for linear extrude with twist has been improved
recently by the theHans.

On Sat, 27 Feb 2021 at 16:07, adrianv <[hidden email]
http:///user/SendEmail.jtp?type=email&email=avm4%40> wrote:

That's a clever approach that I completely overlooked.  I suppose I tend
to forget about the twist parameter for linear_extrude, perhaps in part
because it usually produces a bad result with how the shape is
triangulated.  But in this case it's OK.

Parkinbot wrote
With all that advanced stuff, we shouldn't forget that there is a simple
solution with native means for this specific problem:

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
[hidden email]
http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad

http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


Sent from the OpenSCAD mailing list archive http://forum.openscad.org/
at Nabble.com.


OpenSCAD mailing list
[hidden email]

I think the improvement was just picking the best diagonal to split the quads, so yes, to twist something with few vertices you still need to add some manually to get roughly square quads. On Sat, 27 Feb 2021 at 18:39, adrianv <avm4@cornell.edu> wrote: > Is that in a dev version? Because when I try > > intersection(){ > linear_extrude(15, twist=90, convexity=8) > square(10,center=true); > translate([50/2,0,0])cube(50,center=true); > } > > I get this pretty terrible result: > > > > Making this model well requires either a lot more horizontal slices (which > I find ugly) or resampling the square to have more than four points so that > you aren't trying to approximate the curved sides with long triangles. > > > > > nophead wrote > I think the triangulation for linear extrude with twist has been improved > recently by the theHans. > > On Sat, 27 Feb 2021 at 16:07, adrianv <[hidden email] > <http:///user/SendEmail.jtp?type=email&email=avm4%40>> wrote: > > > That's a clever approach that I completely overlooked. I suppose I tend > > to forget about the twist parameter for linear_extrude, perhaps in part > > because it usually produces a bad result with how the shape is > > triangulated. But in this case it's OK. > > > > Parkinbot wrote > > With all that advanced stuff, we shouldn't forget that there is a simple > > solution with native means for this specific problem: > > > > > > > > > > > > > > -- > > Sent from: http://forum.openscad.org/ > > _______________________________________________ > > OpenSCAD mailing list > > [hidden email] > > <http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad> > <http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad%3E> > > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > > > > > ------------------------------ > > Sent from the OpenSCAD mailing list archive <http://forum.openscad.org/> > > at Nabble.com. > > _______________________________________________ > > OpenSCAD mailing list > > [hidden email] > <http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad> > > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > > > _______________________________________________ > OpenSCAD mailing list > [hidden email] > <http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > > ------------------------------ > Sent from the OpenSCAD mailing list archive <http://forum.openscad.org/> > at Nabble.com. > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
RW
Ray West
Sat, Feb 27, 2021 7:00 PM

I guess, I, or anyone, could replace the values with a list of
variables. But that sort of defeats my quick and dirty solution for me.
The part that would give me the headache, would be calculating the angle
and location of the final cube which is used to 'chop off the end' . For
the various sizes I've printed this, I manually adjust it as needed. The
curved shape acts as a jamming cam, provided there is enough friction
between the wood and the plastic. Some commercial versions here
https://www.youtube.com/watch?v=jMiwsGaX2f4 (at about 6:50).

On 27/02/2021 16:58, Alex Gibson wrote:

That’s a really interesting design – but I mostly want to agree and +1
your sentiment.

It’s healthy to want to improve and change things – but there are
things OpenSCAD can do and enable that would be far harder than other
software, and I am very grateful to the developers for their hard work
to make and keep it working!

Cheers,

Alex Gibson

admgconsulting

edumaker limited

·Project management

·Operations & Process improvement

·3D Printing

*From:*Discuss [mailto:discuss-bounces@lists.openscad.org] *On Behalf
Of *fred via Discuss
Sent: 27 February 2021 16:18
To: OpenSCAD general discussion
Cc: fred
Subject: Re: [OpenSCAD] Openscad is often almost perfect

That's an interesting construct. I've not seen a radial fingerboard
before.

How do you feel about converting it to a parametric version?

On Saturday, February 27, 2021, 10:46:07 AM EST, Ray West
raywest@raywest.com wrote:

Sometimes, i look at what is possible using openscad, in just a few
lines I can produce something that using some other cad software, would
be tedious, to say the least. And then it can be 3D printed, giving a
'needed' functional item that would be tricky to make in some other way.
This is a feather board, if you are familiar with a table saw or router,
you will know what it is. It is clamped by an 8mm coach bolt, but it is
trivial to resize it to whatever size is required. It prints OK in Petg
(pla may be too brittle), with 4 walls or so, maybe 10% infill. It will
work with far fewer fingers, of course, but it will let you keep all
your fingers!

module arm(){
difference(){
union(){
difference(){
cylinder(15,50,50);
    translate([5,0,0])cylinder(15,40,40);
        translate([-80,0,0])cube(100);
}
translate([-43,0,0]) cylinder (15,12,12); //round end
}
translate([-43,0,0]) cube([9,9,115],true);// 9mm squarehole
}
}

//arm();

module finger(){
    rotate([0,0,-130]){
translate([-1,0,0])cube([2,30 ,15]);  //2mm thick fingers
}
}

//finger();

module fingers(){
for (i=[-90:4:70]){
rotate([0,0,i])translate([0,-48,0])finger();
}
}

$fn=100;

difference(){
union(){
arm();
fingers();
}
translate([35,-21,0])rotate([0,0,30])cube(100); // chop off end

difference(){                    //'flatten' ends
    cylinder (15,200,200);
    cylinder(15,70,70);

}
}


OpenSCAD mailing list
Discuss@lists.openscad.org mailto:Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient

Virus-free. www.avg.com
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

I guess, I, or anyone, could replace the values with a list of variables. But that sort of defeats my quick and dirty solution for me. The part that would give me the headache, would be calculating the angle and location of the final cube which is used to 'chop off the end' . For the various sizes I've printed this, I manually adjust it as needed. The curved shape acts as a jamming cam, provided there is enough friction between the wood and the plastic. Some commercial versions here https://www.youtube.com/watch?v=jMiwsGaX2f4 (at about 6:50). On 27/02/2021 16:58, Alex Gibson wrote: > > That’s a really interesting design – but I mostly want to agree and +1 > your sentiment. > > It’s healthy to want to improve and change things – but there are > things OpenSCAD can do and enable that would be far harder than other > software, and I am very grateful to the developers for their hard work > to make and keep it working! > > Cheers, > > Alex Gibson > > admgconsulting > > edumaker limited > > ·Project management > > ·Operations & Process improvement > > ·3D Printing > > *From:*Discuss [mailto:discuss-bounces@lists.openscad.org] *On Behalf > Of *fred via Discuss > *Sent:* 27 February 2021 16:18 > *To:* OpenSCAD general discussion > *Cc:* fred > *Subject:* Re: [OpenSCAD] Openscad is often almost perfect > > That's an interesting construct. I've not seen a radial fingerboard > before. > > How do you feel about converting it to a parametric version? > > On Saturday, February 27, 2021, 10:46:07 AM EST, Ray West > <raywest@raywest.com> wrote: > > Sometimes, i look at what is possible using openscad, in just a few > lines I can produce something that using some other cad software, would > be tedious, to say the least. And then it can be 3D printed, giving a > 'needed' functional item that would be tricky to make in some other way. > This is a feather board, if you are familiar with a table saw or router, > you will know what it is. It is clamped by an 8mm coach bolt, but it is > trivial to resize it to whatever size is required. It prints OK in Petg > (pla may be too brittle), with 4 walls or so, maybe 10% infill. It will > work with far fewer fingers, of course, but it will let you keep all > your fingers! > > module arm(){ > difference(){ > union(){ > difference(){ > cylinder(15,50,50); >     translate([5,0,0])cylinder(15,40,40); >         translate([-80,0,0])cube(100); > } > translate([-43,0,0]) cylinder (15,12,12); //round end > } > translate([-43,0,0]) cube([9,9,115],true);// 9mm squarehole > } > } > > //arm(); > > module finger(){ >     rotate([0,0,-130]){ > translate([-1,0,0])cube([2,30 ,15]);  //2mm thick fingers > } > } > > //finger(); > > module fingers(){ > for (i=[-90:4:70]){ > rotate([0,0,i])translate([0,-48,0])finger(); > } > } > > > $fn=100; > > difference(){ > union(){ > arm(); > fingers(); > } > translate([35,-21,0])rotate([0,0,30])cube(100); // chop off end > > difference(){                    //'flatten' ends >     cylinder (15,200,200); >     cylinder(15,70,70); > > > } > } > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org <mailto:Discuss@lists.openscad.org> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > <http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org> > > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> > > > > Virus-free. www.avg.com > <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> > > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
A
adrianv
Sat, Feb 27, 2021 7:01 PM

No, the improvement is not the result of flipping the diagonals on the long
quads.  The improvement is the result of using square quads instead of very
long narrow ones.  I think OpenSCAD does the best it can under the
constraint of using long twisted quads.  Long twisted quads are just
fundamentally bad.  No matter how you pick the diagonal it's going to give
an irregular shape, a poor approximation to the curve you want.  The way to
fix it is to subdivide them so they're not long, but more square-like, so
you have more facets to approximate the curve.  (Or subdivide them sideways
so they are super narrow, which is what people more often do.  I think this
requires more facets to achieve the same quality.)

nophead wrote

I think the improvement was just picking the best diagonal to split the
quads, so yes, to twist something with few vertices you still need to add
some manually to get roughly square quads.

On Sat, 27 Feb 2021 at 18:39, adrianv <

avm4@

> wrote:

Is that in a dev version?  Because when I try

intersection(){
linear_extrude(15, twist=90, convexity=8)
square(10,center=true);
translate([50/2,0,0])cube(50,center=true);
}

I get this pretty terrible result:

Making this model well requires either a lot more horizontal slices
(which
I find ugly) or resampling the square to have more than four points so
that
you aren't trying to approximate the curved sides with long triangles.

nophead wrote
I think the triangulation for linear extrude with twist has been improved
recently by the theHans.

On Sat, 27 Feb 2021 at 16:07, adrianv <[hidden email]
<http:///user/SendEmail.jtp?type=email&email=avm4%40>> wrote:

That's a clever approach that I completely overlooked.  I suppose I

tend

to forget about the twist parameter for linear_extrude, perhaps in part
because it usually produces a bad result with how the shape is
triangulated.  But in this case it's OK.

Parkinbot wrote
With all that advanced stuff, we shouldn't forget that there is a

simple

solution with native means for this specific problem:

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
[hidden email]

<http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad>
<http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad%3E>

<http://forum.openscad.org/>

at Nabble.com.


OpenSCAD mailing list
[hidden email]

<http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad>


OpenSCAD mailing list
[hidden email]
<http:///user/SendEmail.jtp?type=email&email=Discuss%40.openscad>
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


Sent from the OpenSCAD mailing list archive
<http://forum.openscad.org/>
at Nabble.com.


OpenSCAD mailing list

Discuss@.openscad

Discuss@.openscad

No, the improvement is not the result of flipping the diagonals on the long quads. The improvement is the result of using square quads instead of very long narrow ones. I think OpenSCAD does the best it can under the constraint of using long twisted quads. Long twisted quads are just fundamentally bad. No matter how you pick the diagonal it's going to give an irregular shape, a poor approximation to the curve you want. The way to fix it is to subdivide them so they're not long, but more square-like, so you have more facets to approximate the curve. (Or subdivide them sideways so they are super narrow, which is what people more often do. I think this requires more facets to achieve the same quality.) nophead wrote > I think the improvement was just picking the best diagonal to split the > quads, so yes, to twist something with few vertices you still need to add > some manually to get roughly square quads. > > On Sat, 27 Feb 2021 at 18:39, adrianv &lt; > avm4@ > &gt; wrote: > >> Is that in a dev version? Because when I try >> >> intersection(){ >> linear_extrude(15, twist=90, convexity=8) >> square(10,center=true); >> translate([50/2,0,0])cube(50,center=true); >> } >> >> I get this pretty terrible result: >> >> >> >> Making this model well requires either a lot more horizontal slices >> (which >> I find ugly) or resampling the square to have more than four points so >> that >> you aren't trying to approximate the curved sides with long triangles. >> >> >> >> >> nophead wrote >> I think the triangulation for linear extrude with twist has been improved >> recently by the theHans. >> >> On Sat, 27 Feb 2021 at 16:07, adrianv <[hidden email] >> &lt;http:///user/SendEmail.jtp?type=email&amp;email=avm4%40&gt;> wrote: >> >> > That's a clever approach that I completely overlooked. I suppose I >> tend >> > to forget about the twist parameter for linear_extrude, perhaps in part >> > because it usually produces a bad result with how the shape is >> > triangulated. But in this case it's OK. >> > >> > Parkinbot wrote >> > With all that advanced stuff, we shouldn't forget that there is a >> simple >> > solution with native means for this specific problem: >> > >> > >> > >> > >> > >> > >> > -- >> > Sent from: http://forum.openscad.org/ >> > _______________________________________________ >> > OpenSCAD mailing list >> > [hidden email] >> > >> &lt;http:///user/SendEmail.jtp?type=email&amp;email=Discuss%40.openscad&gt; >> &lt;http:///user/SendEmail.jtp?type=email&amp;email=Discuss%40.openscad%3E&gt; >> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> > >> > >> > ------------------------------ >> > Sent from the OpenSCAD mailing list archive >> &lt;http://forum.openscad.org/&gt; >> > at Nabble.com. >> > _______________________________________________ >> > OpenSCAD mailing list >> > [hidden email] >> &lt;http:///user/SendEmail.jtp?type=email&amp;email=Discuss%40.openscad&gt; >> > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> > >> >> _______________________________________________ >> OpenSCAD mailing list >> [hidden email] >> &lt;http:///user/SendEmail.jtp?type=email&amp;email=Discuss%40.openscad&gt; >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> >> >> ------------------------------ >> Sent from the OpenSCAD mailing list archive >> &lt;http://forum.openscad.org/&gt; >> at Nabble.com. >> _______________________________________________ >> OpenSCAD mailing list >> > Discuss@.openscad >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> > > _______________________________________________ > OpenSCAD mailing list > Discuss@.openscad > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org -- Sent from: http://forum.openscad.org/
F
fred
Sat, Feb 27, 2021 7:29 PM

Yeah, that's the thing about parametric modeling. One attempts to keep the assignments relative to each other in an appropriate manner. Replacing the values with assignments isn't going to work well if one does not know the precise purpose of a specific value and/or assignment.
I've done a few models, far simpler than this, in which the assignments broke when I made a single change. It's worthwhile in the long run, for some models, allowing for scaling changes without problems appearing.
I've used hit-or-miss modeling in the past for the quick-and-dirty outputs as well.

On Saturday, February 27, 2021, 2:01:20 PM EST, Ray West <raywest@raywest.com> wrote:  

I guess, I, or anyone, could replace the values with a list of variables. But that sort of defeats my quick and dirty solution for me. The part that would give me the headache, would be calculating the angle and location of the final cube which is used to 'chop off the end' . For the various sizes I've printed this, I manually adjust it as needed. The curved shape acts as a jamming cam, provided there is enough friction between the wood and the plastic. Some commercial versions here https://www.youtube.com/watch?v=jMiwsGaX2f4 (at about 6:50).

On 27/02/2021 16:58, Alex Gibson wrote:

_filtered {} _filtered {} _filtered {} _filtered {} _filtered {}#yiv8648966637 p.yiv8648966637MsoNormal, #yiv8648966637 li.yiv8648966637MsoNormal, #yiv8648966637 div.yiv8648966637MsoNormal {margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:New;}#yiv8648966637 a:link, #yiv8648966637 span.yiv8648966637MsoHyperlink {color:blue;text-decoration:underline;}#yiv8648966637 a:visited, #yiv8648966637 span.yiv8648966637MsoHyperlinkFollowed {color:purple;text-decoration:underline;}#yiv8648966637 span.yiv8648966637EmailStyle17 {color:#1F497D;}#yiv8648966637 .yiv8648966637MsoChpDefault {font-size:10.0pt;}#yiv8648966637 div.yiv8648966637WordSection1 {}#yiv8648966637 ol {margin-bottom:0cm;}#yiv8648966637 ul {margin-bottom:0cm;}
That’s a really interesting design – but I mostly want to agree and +1 your sentiment.

 

It’s healthy to want to improve and change things – but there are things OpenSCAD can do and enable that would be far harder than other software, and I am very grateful to the developers for their hard work to make and keep it working!

 

Cheers,

 

Alex Gibson

 

admg consulting

 

edumaker limited

 

·         Project management

·         Operations & Process improvement

·         3D Printing

 

From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of fred via Discuss
Sent: 27 February 2021 16:18
To: OpenSCAD general discussion
Cc: fred
Subject: Re: [OpenSCAD] Openscad is often almost perfect

 

That's an interesting construct. I've not seen a radial fingerboard before.

How do you feel about converting it to a parametric version?

 

On Saturday, February 27, 2021, 10:46:07 AM EST, Ray West raywest@raywest.com wrote:

 

 

Sometimes, i look at what is possible using openscad, in just a few
lines I can produce something that using some other cad software, would
be tedious, to say the least. And then it can be 3D printed, giving a
'needed' functional item that would be tricky to make in some other way.
This is a feather board, if you are familiar with a table saw or router,
you will know what it is. It is clamped by an 8mm coach bolt, but it is
trivial to resize it to whatever size is required. It prints OK in Petg
(pla may be too brittle), with 4 walls or so, maybe 10% infill. It will
work with far fewer fingers, of course, but it will let you keep all
your fingers!

module arm(){
difference(){
union(){
difference(){
cylinder(15,50,50);
    translate([5,0,0])cylinder(15,40,40);
        translate([-80,0,0])cube(100);
}
translate([-43,0,0]) cylinder (15,12,12); //round end
}
translate([-43,0,0]) cube([9,9,115],true);// 9mm squarehole
}
}

//arm();

module finger(){
    rotate([0,0,-130]){
translate([-1,0,0])cube([2,30 ,15]);  //2mm thick fingers
}
}

//finger();

module fingers(){
for (i=[-90:4:70]){
rotate([0,0,i])translate([0,-48,0])finger();
}
}

$fn=100;

difference(){
union(){
arm();
fingers();
}
translate([35,-21,0])rotate([0,0,30])cube(100); // chop off end

difference(){                    //'flatten' ends
    cylinder (15,200,200);
    cylinder(15,70,70);

}
}


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

 

|

|
Virus-free. www.avg.com
|

 


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

Yeah, that's the thing about parametric modeling. One attempts to keep the assignments relative to each other in an appropriate manner. Replacing the values with assignments isn't going to work well if one does not know the precise purpose of a specific value and/or assignment. I've done a few models, far simpler than this, in which the assignments broke when I made a single change. It's worthwhile in the long run, for some models, allowing for scaling changes without problems appearing. I've used hit-or-miss modeling in the past for the quick-and-dirty outputs as well. On Saturday, February 27, 2021, 2:01:20 PM EST, Ray West <raywest@raywest.com> wrote: I guess, I, or anyone, could replace the values with a list of variables. But that sort of defeats my quick and dirty solution for me. The part that would give me the headache, would be calculating the angle and location of the final cube which is used to 'chop off the end' . For the various sizes I've printed this, I manually adjust it as needed. The curved shape acts as a jamming cam, provided there is enough friction between the wood and the plastic. Some commercial versions here https://www.youtube.com/watch?v=jMiwsGaX2f4 (at about 6:50). On 27/02/2021 16:58, Alex Gibson wrote: _filtered {} _filtered {} _filtered {} _filtered {} _filtered {}#yiv8648966637 p.yiv8648966637MsoNormal, #yiv8648966637 li.yiv8648966637MsoNormal, #yiv8648966637 div.yiv8648966637MsoNormal {margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:New;}#yiv8648966637 a:link, #yiv8648966637 span.yiv8648966637MsoHyperlink {color:blue;text-decoration:underline;}#yiv8648966637 a:visited, #yiv8648966637 span.yiv8648966637MsoHyperlinkFollowed {color:purple;text-decoration:underline;}#yiv8648966637 span.yiv8648966637EmailStyle17 {color:#1F497D;}#yiv8648966637 .yiv8648966637MsoChpDefault {font-size:10.0pt;}#yiv8648966637 div.yiv8648966637WordSection1 {}#yiv8648966637 ol {margin-bottom:0cm;}#yiv8648966637 ul {margin-bottom:0cm;} That’s a really interesting design – but I mostly want to agree and +1 your sentiment.   It’s healthy to want to improve and change things – but there are things OpenSCAD can do and enable that would be far harder than other software, and I am very grateful to the developers for their hard work to make and keep it working!   Cheers,   Alex Gibson   admg consulting   edumaker limited   ·         Project management ·         Operations & Process improvement ·         3D Printing   From: Discuss [mailto:discuss-bounces@lists.openscad.org] On Behalf Of fred via Discuss Sent: 27 February 2021 16:18 To: OpenSCAD general discussion Cc: fred Subject: Re: [OpenSCAD] Openscad is often almost perfect   That's an interesting construct. I've not seen a radial fingerboard before. How do you feel about converting it to a parametric version?   On Saturday, February 27, 2021, 10:46:07 AM EST, Ray West <raywest@raywest.com> wrote:     Sometimes, i look at what is possible using openscad, in just a few lines I can produce something that using some other cad software, would be tedious, to say the least. And then it can be 3D printed, giving a 'needed' functional item that would be tricky to make in some other way. This is a feather board, if you are familiar with a table saw or router, you will know what it is. It is clamped by an 8mm coach bolt, but it is trivial to resize it to whatever size is required. It prints OK in Petg (pla may be too brittle), with 4 walls or so, maybe 10% infill. It will work with far fewer fingers, of course, but it will let you keep all your fingers! module arm(){ difference(){ union(){ difference(){ cylinder(15,50,50);     translate([5,0,0])cylinder(15,40,40);         translate([-80,0,0])cube(100); } translate([-43,0,0]) cylinder (15,12,12); //round end } translate([-43,0,0]) cube([9,9,115],true);// 9mm squarehole } } //arm(); module finger(){     rotate([0,0,-130]){ translate([-1,0,0])cube([2,30 ,15]);  //2mm thick fingers } } //finger(); module fingers(){ for (i=[-90:4:70]){ rotate([0,0,i])translate([0,-48,0])finger(); } } $fn=100; difference(){ union(){ arm(); fingers(); } translate([35,-21,0])rotate([0,0,30])cube(100); // chop off end difference(){                    //'flatten' ends     cylinder (15,200,200);     cylinder(15,70,70); } } _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org   | | Virus-free. www.avg.com |   _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
JB
Jordan Brown
Sun, Feb 28, 2021 12:53 AM

On 2/27/2021 10:38 AM, adrianv wrote:

Making this model well requires either a lot more horizontal slices
(which I find ugly) or resampling the square to have more than four
points so that you aren't trying to approximate the curved sides with
long triangles.  

I'm not understanding what you're meaning by resampling the square.  I
tried changing the square to be a polygon with 11 points on each side,
and the result was exactly identical to the original square.  (Which
surprises me a little, based on how I think linear_extrude works.)

I agree that this is more attractive, but I'm not immediately seeing how
you did it - or at least how you did it with linear_extrude.

On 2/27/2021 10:38 AM, adrianv wrote: > Making this model well requires either a lot more horizontal slices > (which I find ugly) or resampling the square to have more than four > points so that you aren't trying to approximate the curved sides with > long triangles.   I'm not understanding what you're meaning by resampling the square.  I tried changing the square to be a polygon with 11 points on each side, and the result was exactly identical to the original square.  (Which surprises me a little, based on how I think linear_extrude works.) I agree that this is more attractive, but I'm not immediately seeing how you did it - or at least how you did it with linear_extrude. >
NH
nop head
Sun, Feb 28, 2021 12:57 AM

I add the extra vertices to the square with minute offsets because exactly
co-linear segments get removed.

module squarish(s, n) {
polygon([
for(i = [0 : n]) [i * s.x / n, s.y + (i % 2) * eps],
for(i = [0 : n]) [s.x - i * s.x / n, (i % 2) * eps],
]);
}

On Sun, 28 Feb 2021 at 00:53, Jordan Brown openscad@jordan.maileater.net
wrote:

On 2/27/2021 10:38 AM, adrianv wrote:

Making this model well requires either a lot more horizontal slices (which
I find ugly) or resampling the square to have more than four points so that
you aren't trying to approximate the curved sides with long triangles.

I'm not understanding what you're meaning by resampling the square.  I
tried changing the square to be a polygon with 11 points on each side, and
the result was exactly identical to the original square.  (Which surprises
me a little, based on how I think linear_extrude works.)

I agree that this is more attractive, but I'm not immediately seeing how
you did it - or at least how you did it with linear_extrude.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

I add the extra vertices to the square with minute offsets because exactly co-linear segments get removed. module squarish(s, n) { polygon([ for(i = [0 : n]) [i * s.x / n, s.y + (i % 2) * eps], for(i = [0 : n]) [s.x - i * s.x / n, (i % 2) * eps], ]); } On Sun, 28 Feb 2021 at 00:53, Jordan Brown <openscad@jordan.maileater.net> wrote: > On 2/27/2021 10:38 AM, adrianv wrote: > > Making this model well requires either a lot more horizontal slices (which > I find ugly) or resampling the square to have more than four points so that > you aren't trying to approximate the curved sides with long triangles. > > > I'm not understanding what you're meaning by resampling the square. I > tried changing the square to be a polygon with 11 points on each side, and > the result was exactly identical to the original square. (Which surprises > me a little, based on how I think linear_extrude works.) > > I agree that this is more attractive, but I'm not immediately seeing how > you did it - or at least how you did it with linear_extrude. > > > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
A
adrianv
Sun, Feb 28, 2021 1:00 AM

I think you understand what I mean.  The problem is you cannot create a
square in OpenSCAD that has vertices along its sides because collinear
points are removed. Try making a square where you perturb the resampled
vertices a little bit off the square so it doesn't reduce back to an actual
square.  Or say a slight bulge on each of the four sides?  I would guess
something like that would work.  (I haven't tried it.)

The point I am getting at is that linear_extrude with twist is fundamentally
broken because it doesn't resample the edges this way, or allow you to do
it.  To get a model I think is good I had to use other methods.  I created
my model in BOSL2 using skin(), which will accept any point list and doesn't
"simplify" away the collinear points.

JordanBrown wrote

On 2/27/2021 10:38 AM, adrianv wrote:

Making this model well requires either a lot more horizontal slices
(which I find ugly) or resampling the square to have more than four
points so that you aren't trying to approximate the curved sides with
long triangles.  

I'm not understanding what you're meaning by resampling the square.  I
tried changing the square to be a polygon with 11 points on each side,
and the result was exactly identical to the original square.  (Which
surprises me a little, based on how I think linear_extrude works.)

I agree that this is more attractive, but I'm not immediately seeing how
you did it - or at least how you did it with linear_extrude.


OpenSCAD mailing list

Discuss@.openscad

I think you understand what I mean. The problem is you cannot create a square in OpenSCAD that has vertices along its sides because collinear points are removed. Try making a square where you perturb the resampled vertices a little bit off the square so it doesn't reduce back to an actual square. Or say a slight bulge on each of the four sides? I would guess something like that would work. (I haven't tried it.) The point I am getting at is that linear_extrude with twist is fundamentally broken because it doesn't resample the edges this way, or allow you to do it. To get a model I think is good I had to use other methods. I created my model in BOSL2 using skin(), which will accept any point list and doesn't "simplify" away the collinear points. JordanBrown wrote > On 2/27/2021 10:38 AM, adrianv wrote: >> Making this model well requires either a lot more horizontal slices >> (which I find ugly) or resampling the square to have more than four >> points so that you aren't trying to approximate the curved sides with >> long triangles.   > > I'm not understanding what you're meaning by resampling the square.  I > tried changing the square to be a polygon with 11 points on each side, > and the result was exactly identical to the original square.  (Which > surprises me a little, based on how I think linear_extrude works.) > > I agree that this is more attractive, but I'm not immediately seeing how > you did it - or at least how you did it with linear_extrude. > >> > > > _______________________________________________ > OpenSCAD mailing list > Discuss@.openscad > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org -- Sent from: http://forum.openscad.org/