discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

How to deform a timing belt to follow a certain path?

J
jpmendes
Wed, Mar 16, 2016 11:08 PM

Hello

I made an OpenSCAD assemblage of the well known Thingiverse
"Mostly_Printed_CNC" by Allted with some small modifications and add-ons by
me. The objective is to facilitate the 3D view of the machine and make an
animation of it.

http://forum.openscad.org/file/n16504/Capture10.jpg

I'm trying to deform the timing belt in order to follow the path from the
motors pulleys to the bearings but I haven't been successful with this task.
I tried the sweep() function but I can't figure how to generate correctly
the profile of the belt as polygon. There is a problem with the orientation
as can be seen on the picture.

http://forum.openscad.org/file/n16504/Capture11.jpg

The code I'm playing with:

---=========================

use <sweep.scad>
use<timing_belts.scad>

//function f(t) = [40t,  0, 10-(10sqrt(cos(360t)))];
function f(t) = [3+30
t,  0, 10-10cos(360t)];

/*
function Profile_MXL()= [
[-0.660421,-0.5],[-0.660421,0],
[-0.621898,0.006033],[-0.587714,0.023037],
[-0.560056,0.049424],[-0.541182,0.083609],
[-0.417357,0.424392],[-0.398413,0.458752],
[-0.370649,0.48514],[-0.336324,0.502074],
[-0.297744,0.508035],[0.297744,0.508035],
[0.336268,0.502074],[0.370452,0.48514],
[0.39811,0.458752],[0.416983,0.424392],
[0.540808,0.083609],[0.559752,0.049424],
[0.587516,0.023037],[0.621841,0.006033],
[0.660421,0],[0.660421,-0.5]];
*/

function Profile_MXL()= [
[-0.5,-0.660421],[0,-0.660421,],
[0.006033,-0.621898],[0.023037,-0.587714],
[0.049424,-0.560056],[0.083609,-0.541182],
[0.424392,-0.417357],[0.458752,-0.398413],
[0.48514,-0.370649],[0.502074,-0.336324],
[0.508035,-0.297744],[0.508035,0.297744],
[0.502074,0.336268],[0.48514,0.370452],
[0.458752,0.39811],[0.424392, 0.416983],
[0.083609,0.540808],[0.049424,0.559752],
[0.023037,0.587516],[0.006033,0.621841],
[0,0.660421],[-0.5,0.660421]];

module MXL(width = 6) render(convexity=4)
{
//linear_extrude(height=width)
polygon([
/*
[-0.660421,-0.5],[-0.660421,0],
[-0.621898,0.006033],[-0.587714,0.023037],
[-0.560056,0.049424],[-0.541182,0.083609],
[-0.417357,0.424392],[-0.398413,0.458752],
[-0.370649,0.48514],[-0.336324,0.502074],
[-0.297744,0.508035],[0.297744,0.508035],
[0.336268,0.502074],[0.370452,0.48514],
[0.39811,0.458752],[0.416983,0.424392],
[0.540808,0.083609],[0.559752,0.049424],
[0.587516,0.023037],[0.621841,0.006033],
[0.660421,0],[0.660421,-0.5] ]);
*/
[-0.5,-0.660421],[0,-0.660421,],
[0.006033,-0.621898],[0.023037,-0.587714],
[0.049424,-0.560056],[0.083609,-0.541182],
[0.424392,-0.417357],[0.458752,-0.398413],
[0.48514,-0.370649],[0.502074,-0.336324],
[0.508035,-0.297744],[0.508035,0.297744],
[0.502074,0.336268],[0.48514,0.370452],
[0.458752,0.39811],[0.424392, 0.416983],
[0.083609,0.540808],[0.049424,0.559752],
[0.023037,0.587516],[0.006033,0.621841],
[0,0.660421],[-0.5,0.660421] ]);
}

color("Green") rotate([-90,0,90]) scale([1,5,1]) MXL();

step = 0.005;
path = [for (t=[0:step:1-step]) f(t)];
path_transforms = construct_transform_path(path) ;

module DefBelt() color("GoldenRod"){
scale([1,4.9,1]) sweep(Profile_MXL(), path_transforms);
}
DefBelt();

translate([30,-3,0]) rotate([-90,0,0]) belt_length("MXL", 6, 10);

---==================

Any ideas on how to accomplish this are welcome,
Thanks in advance.

jpmendes

--
View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Hello I made an OpenSCAD assemblage of the well known Thingiverse "Mostly_Printed_CNC" by Allted with some small modifications and add-ons by me. The objective is to facilitate the 3D view of the machine and make an animation of it. <http://forum.openscad.org/file/n16504/Capture10.jpg> I'm trying to deform the timing belt in order to follow the path from the motors pulleys to the bearings but I haven't been successful with this task. I tried the sweep() function but I can't figure how to generate correctly the profile of the belt as polygon. There is a problem with the orientation as can be seen on the picture. <http://forum.openscad.org/file/n16504/Capture11.jpg> The code I'm playing with: ========================================================== use <sweep.scad> use<timing_belts.scad> //function f(t) = [40*t, 0, 10-(10*sqrt(cos(360*t)))]; function f(t) = [3+30*t, 0, 10-10*cos(360*t)]; /* function Profile_MXL()= [ [-0.660421,-0.5],[-0.660421,0], [-0.621898,0.006033],[-0.587714,0.023037], [-0.560056,0.049424],[-0.541182,0.083609], [-0.417357,0.424392],[-0.398413,0.458752], [-0.370649,0.48514],[-0.336324,0.502074], [-0.297744,0.508035],[0.297744,0.508035], [0.336268,0.502074],[0.370452,0.48514], [0.39811,0.458752],[0.416983,0.424392], [0.540808,0.083609],[0.559752,0.049424], [0.587516,0.023037],[0.621841,0.006033], [0.660421,0],[0.660421,-0.5]]; */ function Profile_MXL()= [ [-0.5,-0.660421],[0,-0.660421,], [0.006033,-0.621898],[0.023037,-0.587714], [0.049424,-0.560056],[0.083609,-0.541182], [0.424392,-0.417357],[0.458752,-0.398413], [0.48514,-0.370649],[0.502074,-0.336324], [0.508035,-0.297744],[0.508035,0.297744], [0.502074,0.336268],[0.48514,0.370452], [0.458752,0.39811],[0.424392, 0.416983], [0.083609,0.540808],[0.049424,0.559752], [0.023037,0.587516],[0.006033,0.621841], [0,0.660421],[-0.5,0.660421]]; module MXL(width = 6) render(convexity=4) { //linear_extrude(height=width) polygon([ /* [-0.660421,-0.5],[-0.660421,0], [-0.621898,0.006033],[-0.587714,0.023037], [-0.560056,0.049424],[-0.541182,0.083609], [-0.417357,0.424392],[-0.398413,0.458752], [-0.370649,0.48514],[-0.336324,0.502074], [-0.297744,0.508035],[0.297744,0.508035], [0.336268,0.502074],[0.370452,0.48514], [0.39811,0.458752],[0.416983,0.424392], [0.540808,0.083609],[0.559752,0.049424], [0.587516,0.023037],[0.621841,0.006033], [0.660421,0],[0.660421,-0.5] ]); */ [-0.5,-0.660421],[0,-0.660421,], [0.006033,-0.621898],[0.023037,-0.587714], [0.049424,-0.560056],[0.083609,-0.541182], [0.424392,-0.417357],[0.458752,-0.398413], [0.48514,-0.370649],[0.502074,-0.336324], [0.508035,-0.297744],[0.508035,0.297744], [0.502074,0.336268],[0.48514,0.370452], [0.458752,0.39811],[0.424392, 0.416983], [0.083609,0.540808],[0.049424,0.559752], [0.023037,0.587516],[0.006033,0.621841], [0,0.660421],[-0.5,0.660421] ]); } color("Green") rotate([-90,0,90]) scale([1,5,1]) MXL(); step = 0.005; path = [for (t=[0:step:1-step]) f(t)]; path_transforms = construct_transform_path(path) ; module DefBelt() color("GoldenRod"){ scale([1,4.9,1]) sweep(Profile_MXL(), path_transforms); } DefBelt(); translate([30,-3,0]) rotate([-90,0,0]) belt_length("MXL", 6, 10); =================================================== Any ideas on how to accomplish this are welcome, Thanks in advance. jpmendes -- View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504.html Sent from the OpenSCAD mailing list archive at Nabble.com.
P
Parkinbot
Wed, Mar 16, 2016 11:48 PM

Have a look into the file sweep/toothed-belt.scad  and adopt the data and
transform path to your needs.

Rudolf

--
View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16506.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Have a look into the file sweep/toothed-belt.scad and adopt the data and transform path to your needs. Rudolf -- View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16506.html Sent from the OpenSCAD mailing list archive at Nabble.com.
J
jpmendes
Fri, Mar 18, 2016 6:14 PM

Thanks for your advise Parkingbot.
I've digged on the on the example you told me to and I achieved the
following:
http://forum.openscad.org/file/n16564/Capture12.jpg

Unfortunately I hat do use a tricky trick I do not understand, that has the
side effect of generating lots of warnings and one error as in the pictures
below. Whithout the last line in the path definition the result is the one
of the last picture.

http://forum.openscad.org/file/n16564/Capture14.jpg
http://forum.openscad.org/file/n16564/Capture13.jpg
http://forum.openscad.org/file/n16564/Capture15.jpg

How can I avoid the closed path in a clean way?
In the following code line I changed "loop=true" to "loop=false" with no
success.

path = quantize_trajectories(path_definition, steps=teeth4, loop=false,
start_position=$t
4);

Can someone help?
Thanks in advance
jpmendes

--
View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16564.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Thanks for your advise Parkingbot. I've digged on the on the example you told me to and I achieved the following: <http://forum.openscad.org/file/n16564/Capture12.jpg> Unfortunately I hat do use a tricky trick I do not understand, that has the side effect of generating lots of warnings and one error as in the pictures below. Whithout the last line in the path definition the result is the one of the last picture. <http://forum.openscad.org/file/n16564/Capture14.jpg> <http://forum.openscad.org/file/n16564/Capture13.jpg> <http://forum.openscad.org/file/n16564/Capture15.jpg> How can I avoid the closed path in a clean way? In the following code line I changed "loop=true" to "loop=false" with no success. path = quantize_trajectories(path_definition, steps=teeth*4, loop=false, start_position=$t*4); Can someone help? Thanks in advance jpmendes -- View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16564.html Sent from the OpenSCAD mailing list archive at Nabble.com.
DR
Drew Rogge
Fri, Mar 18, 2016 7:03 PM

Hi jp,

Did you re-write the MPCNC parts in OpenSCAD or just include allted's STL files?

Drew

On 3/16/16 4:08 PM, jpmendes wrote:

Hello

I made an OpenSCAD assemblage of the well known Thingiverse
"Mostly_Printed_CNC" by Allted with some small modifications and add-ons by
me. The objective is to facilitate the 3D view of the machine and make an
animation of it.

http://forum.openscad.org/file/n16504/Capture10.jpg

I'm trying to deform the timing belt in order to follow the path from the
motors pulleys to the bearings but I haven't been successful with this task.
I tried the sweep() function but I can't figure how to generate correctly
the profile of the belt as polygon. There is a problem with the orientation
as can be seen on the picture.

http://forum.openscad.org/file/n16504/Capture11.jpg

The code I'm playing with:

---=========================

use <sweep.scad>
use<timing_belts.scad>

//function f(t) = [40t,  0, 10-(10sqrt(cos(360t)))];
function f(t) = [3+30
t,  0, 10-10cos(360t)];

/*
function Profile_MXL()= [
[-0.660421,-0.5],[-0.660421,0],
[-0.621898,0.006033],[-0.587714,0.023037],
[-0.560056,0.049424],[-0.541182,0.083609],
[-0.417357,0.424392],[-0.398413,0.458752],
[-0.370649,0.48514],[-0.336324,0.502074],
[-0.297744,0.508035],[0.297744,0.508035],
[0.336268,0.502074],[0.370452,0.48514],
[0.39811,0.458752],[0.416983,0.424392],
[0.540808,0.083609],[0.559752,0.049424],
[0.587516,0.023037],[0.621841,0.006033],
[0.660421,0],[0.660421,-0.5]];
*/

function Profile_MXL()= [
[-0.5,-0.660421],[0,-0.660421,],
[0.006033,-0.621898],[0.023037,-0.587714],
[0.049424,-0.560056],[0.083609,-0.541182],
[0.424392,-0.417357],[0.458752,-0.398413],
[0.48514,-0.370649],[0.502074,-0.336324],
[0.508035,-0.297744],[0.508035,0.297744],
[0.502074,0.336268],[0.48514,0.370452],
[0.458752,0.39811],[0.424392, 0.416983],
[0.083609,0.540808],[0.049424,0.559752],
[0.023037,0.587516],[0.006033,0.621841],
[0,0.660421],[-0.5,0.660421]];

module MXL(width = 6) render(convexity=4)
{
//linear_extrude(height=width)
polygon([
/*
[-0.660421,-0.5],[-0.660421,0],
[-0.621898,0.006033],[-0.587714,0.023037],
[-0.560056,0.049424],[-0.541182,0.083609],
[-0.417357,0.424392],[-0.398413,0.458752],
[-0.370649,0.48514],[-0.336324,0.502074],
[-0.297744,0.508035],[0.297744,0.508035],
[0.336268,0.502074],[0.370452,0.48514],
[0.39811,0.458752],[0.416983,0.424392],
[0.540808,0.083609],[0.559752,0.049424],
[0.587516,0.023037],[0.621841,0.006033],
[0.660421,0],[0.660421,-0.5] ]);
*/
[-0.5,-0.660421],[0,-0.660421,],
[0.006033,-0.621898],[0.023037,-0.587714],
[0.049424,-0.560056],[0.083609,-0.541182],
[0.424392,-0.417357],[0.458752,-0.398413],
[0.48514,-0.370649],[0.502074,-0.336324],
[0.508035,-0.297744],[0.508035,0.297744],
[0.502074,0.336268],[0.48514,0.370452],
[0.458752,0.39811],[0.424392, 0.416983],
[0.083609,0.540808],[0.049424,0.559752],
[0.023037,0.587516],[0.006033,0.621841],
[0,0.660421],[-0.5,0.660421] ]);
}

color("Green") rotate([-90,0,90]) scale([1,5,1]) MXL();

step = 0.005;
path = [for (t=[0:step:1-step]) f(t)];
path_transforms = construct_transform_path(path) ;

module DefBelt() color("GoldenRod"){
scale([1,4.9,1]) sweep(Profile_MXL(), path_transforms);
}
DefBelt();

translate([30,-3,0]) rotate([-90,0,0]) belt_length("MXL", 6, 10);

---==================

Any ideas on how to accomplish this are welcome,
Thanks in advance.

jpmendes

--
View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504.html
Sent from the OpenSCAD mailing list archive at Nabble.com.


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

--
Drew Rogge
drew@dasrogges.com

Phone: 8934OOO629OO4829631OOOOOOO

Hi jp, Did you re-write the MPCNC parts in OpenSCAD or just include allted's STL files? Drew On 3/16/16 4:08 PM, jpmendes wrote: > Hello > > I made an OpenSCAD assemblage of the well known Thingiverse > "Mostly_Printed_CNC" by Allted with some small modifications and add-ons by > me. The objective is to facilitate the 3D view of the machine and make an > animation of it. > > <http://forum.openscad.org/file/n16504/Capture10.jpg> > > I'm trying to deform the timing belt in order to follow the path from the > motors pulleys to the bearings but I haven't been successful with this task. > I tried the sweep() function but I can't figure how to generate correctly > the profile of the belt as polygon. There is a problem with the orientation > as can be seen on the picture. > > <http://forum.openscad.org/file/n16504/Capture11.jpg> > > The code I'm playing with: > ========================================================== > > use <sweep.scad> > use<timing_belts.scad> > > //function f(t) = [40*t, 0, 10-(10*sqrt(cos(360*t)))]; > function f(t) = [3+30*t, 0, 10-10*cos(360*t)]; > > /* > function Profile_MXL()= [ > [-0.660421,-0.5],[-0.660421,0], > [-0.621898,0.006033],[-0.587714,0.023037], > [-0.560056,0.049424],[-0.541182,0.083609], > [-0.417357,0.424392],[-0.398413,0.458752], > [-0.370649,0.48514],[-0.336324,0.502074], > [-0.297744,0.508035],[0.297744,0.508035], > [0.336268,0.502074],[0.370452,0.48514], > [0.39811,0.458752],[0.416983,0.424392], > [0.540808,0.083609],[0.559752,0.049424], > [0.587516,0.023037],[0.621841,0.006033], > [0.660421,0],[0.660421,-0.5]]; > */ > > function Profile_MXL()= [ > [-0.5,-0.660421],[0,-0.660421,], > [0.006033,-0.621898],[0.023037,-0.587714], > [0.049424,-0.560056],[0.083609,-0.541182], > [0.424392,-0.417357],[0.458752,-0.398413], > [0.48514,-0.370649],[0.502074,-0.336324], > [0.508035,-0.297744],[0.508035,0.297744], > [0.502074,0.336268],[0.48514,0.370452], > [0.458752,0.39811],[0.424392, 0.416983], > [0.083609,0.540808],[0.049424,0.559752], > [0.023037,0.587516],[0.006033,0.621841], > [0,0.660421],[-0.5,0.660421]]; > > module MXL(width = 6) render(convexity=4) > { > //linear_extrude(height=width) > polygon([ > /* > [-0.660421,-0.5],[-0.660421,0], > [-0.621898,0.006033],[-0.587714,0.023037], > [-0.560056,0.049424],[-0.541182,0.083609], > [-0.417357,0.424392],[-0.398413,0.458752], > [-0.370649,0.48514],[-0.336324,0.502074], > [-0.297744,0.508035],[0.297744,0.508035], > [0.336268,0.502074],[0.370452,0.48514], > [0.39811,0.458752],[0.416983,0.424392], > [0.540808,0.083609],[0.559752,0.049424], > [0.587516,0.023037],[0.621841,0.006033], > [0.660421,0],[0.660421,-0.5] ]); > */ > [-0.5,-0.660421],[0,-0.660421,], > [0.006033,-0.621898],[0.023037,-0.587714], > [0.049424,-0.560056],[0.083609,-0.541182], > [0.424392,-0.417357],[0.458752,-0.398413], > [0.48514,-0.370649],[0.502074,-0.336324], > [0.508035,-0.297744],[0.508035,0.297744], > [0.502074,0.336268],[0.48514,0.370452], > [0.458752,0.39811],[0.424392, 0.416983], > [0.083609,0.540808],[0.049424,0.559752], > [0.023037,0.587516],[0.006033,0.621841], > [0,0.660421],[-0.5,0.660421] ]); > } > > color("Green") rotate([-90,0,90]) scale([1,5,1]) MXL(); > > step = 0.005; > path = [for (t=[0:step:1-step]) f(t)]; > path_transforms = construct_transform_path(path) ; > > module DefBelt() color("GoldenRod"){ > scale([1,4.9,1]) sweep(Profile_MXL(), path_transforms); > } > DefBelt(); > > translate([30,-3,0]) rotate([-90,0,0]) belt_length("MXL", 6, 10); > =================================================== > > Any ideas on how to accomplish this are welcome, > Thanks in advance. > > jpmendes > > > > -- > View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504.html > Sent from the OpenSCAD mailing list archive at Nabble.com. > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org -- Drew Rogge drew@dasrogges.com Phone: 8934OOO629OO4829631OOOOOOO
J
jpmendes
Fri, Mar 18, 2016 7:25 PM

Hi Drew

The main plastic parts are imports from the original STLs by Allted. Some
are my originals and a couple of others are remixes from the original.
In OpenSCAD I did the assembly and generate all the "vitamins" and the
spindle.
I'm aiming to make an animation of it.

jpmendes

--
View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16569.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Hi Drew The main plastic parts are imports from the original STLs by Allted. Some are my originals and a couple of others are remixes from the original. In OpenSCAD I did the assembly and generate all the "vitamins" and the spindle. I'm aiming to make an animation of it. jpmendes -- View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16569.html Sent from the OpenSCAD mailing list archive at Nabble.com.
J
jpmendes
Sat, Mar 19, 2016 3:44 PM

Ok. Done
The answer was in front of my eyes and I did'nt saw it, simply as to comment
line:

//looped_belt = concat(belt,[belt[0]]);

Case closed

jpmendes

--
View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16581.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Ok. Done The answer was in front of my eyes and I did'nt saw it, simply as to comment line: //looped_belt = concat(belt,[belt[0]]); Case closed jpmendes -- View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16581.html Sent from the OpenSCAD mailing list archive at Nabble.com.
P
Parkinbot
Sun, Mar 20, 2016 12:26 AM

Well have a look into the code. I guess it closes the path somewhere to avoid
boundary conditions for orientation and slope of start and end points.

But is't a timing belt closed anyway?

Rudolf

--
View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16587.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

Well have a look into the code. I guess it closes the path somewhere to avoid boundary conditions for orientation and slope of start and end points. But is't a timing belt closed anyway? Rudolf -- View this message in context: http://forum.openscad.org/How-to-deform-a-timing-belt-to-follow-a-certain-path-tp16504p16587.html Sent from the OpenSCAD mailing list archive at Nabble.com.