YV
yur_vol@yahoo.com
Wed, Mar 4, 2026 11:25 AM
reverse engineering of sax bell I got two curves and import it to openscad.
Now I need a way to build central path and diameter curve.
Or I need to seeep circle between these pathes?
include <BOSL2/std.scad>
include <BOSL2/turtle3d.scad>
include<BOSL2/skin.scad>
// Auto-generated from DXF at 2026-03-04 12:09:49
path1 = [ [142.351,-41.9274],[133.517,-35.0189],[124.223,-28.7434],[114.513,-23.1316],[104.436,-18.2108],[98.1016,-15.5478],[85.5016,-10.9843],[72.6577,-7.16119],[59.6132,-4.09135],[55.8375,-3.35075],[37.1908,-0.252121],[18.4319,2.07327],[-0.406982,3.62149],[-19.2938,4.38988],[-32.3781,4.46426],[-163.992,3.32967]];
path2= [[-163.425,-66.3214],[-108.964,-65.7541],[-91.1776,-65.8562],[-70.3575,-66.7065],[-49.5844,-68.344],[-28.8882,-70.7665],[-8.29855,-73.9704],[12.1551,-77.9511],[22.6352,-80.5282],[33.8784,-84.0532],[44.8669,-88.3059],[55.5538,-93.2683],[57.9586,-94.577],[62.7517,-97.8196],[67.0805,-101.66],[70.871,-106.033],[76.6622,-113.67] ] ;
color("blue")stroke(path1);
color("red")stroke(path2);
//path_sweep(circle(10),path1, closed=false);
reverse engineering of sax bell I got two curves and import it to openscad.\
Now I need a way to build central path and diameter curve.\
Or I need to seeep circle between these pathes?
```
include <BOSL2/std.scad>
```
```
include <BOSL2/turtle3d.scad>
```
```
include<BOSL2/skin.scad>
```
```
// Auto-generated from DXF at 2026-03-04 12:09:49
```
```
path1 = [ [142.351,-41.9274],[133.517,-35.0189],[124.223,-28.7434],[114.513,-23.1316],[104.436,-18.2108],[98.1016,-15.5478],[85.5016,-10.9843],[72.6577,-7.16119],[59.6132,-4.09135],[55.8375,-3.35075],[37.1908,-0.252121],[18.4319,2.07327],[-0.406982,3.62149],[-19.2938,4.38988],[-32.3781,4.46426],[-163.992,3.32967]];
```
```
```
```
path2= [[-163.425,-66.3214],[-108.964,-65.7541],[-91.1776,-65.8562],[-70.3575,-66.7065],[-49.5844,-68.344],[-28.8882,-70.7665],[-8.29855,-73.9704],[12.1551,-77.9511],[22.6352,-80.5282],[33.8784,-84.0532],[44.8669,-88.3059],[55.5538,-93.2683],[57.9586,-94.577],[62.7517,-97.8196],[67.0805,-101.66],[70.871,-106.033],[76.6622,-113.67] ] ;
```
```
color("blue")stroke(path1);
```
```
color("red")stroke(path2);
```
```
//path_sweep(circle(10),path1, closed=false);
```
YV
yur_vol@yahoo.com
Wed, Mar 4, 2026 1:33 PM
I try closest points, not as good.
include <BOSL2/std.scad>
include <BOSL2/turtle3d.scad>
include<BOSL2/skin.scad>
// Auto-generated from DXF at 2026-03-04 12:09:49
path1 = [ [142.351,-41.9274],[133.517,-35.0189],[124.223,-28.7434],[114.513,-23.1316],[104.436,-18.2108],[98.1016,-15.5478],[85.5016,-10.9843],[72.6577,-7.16119],[59.6132,-4.09135],[55.8375,-3.35075],[37.1908,-0.252121],[18.4319,2.07327],[-0.406982,3.62149],[-19.2938,4.38988],[-32.3781,4.46426],[-163.992,3.32967]];
path2= [[-163.425,-66.3214],[-108.964,-65.7541],[-91.1776,-65.8562],[-70.3575,-66.7065],[-49.5844,-68.344],[-28.8882,-70.7665],[-8.29855,-73.9704],[12.1551,-77.9511],[22.6352,-80.5282],[33.8784,-84.0532],[44.8669,-88.3059],[55.5538,-93.2683],[57.9586,-94.577],[62.7517,-97.8196],[67.0805,-101.66],[70.871,-106.033],[76.6622,-113.67] ] ;
color("blue")stroke(path1);
color("red")stroke(path2);
//path_sweep(circle(10),path1, closed=false);
path0=resample_path(path1,20,closed=false);
for (pt=path0){
c1 = path_closest_point(path2, pt);
pt2 =c1[1];
path3=[pt,pt2];
color("red") translate(path3) circle(d=3, $fn=12);
stroke([pt,c1[1]]);
//echo(path3);
cpt=[pt[0]-(pt[0]-c1[1][0])/2,pt[1]-(pt[1]-c1[1][1])/2];
//echo("cpt=",cpt);
color("red") translate(cpt) circle(d=3, $fn=12);
}

```
I try closest points, not as good.
include <BOSL2/std.scad>
```
```
include <BOSL2/turtle3d.scad>
```
```
include<BOSL2/skin.scad>
```
```
// Auto-generated from DXF at 2026-03-04 12:09:49
```
```
path1 = [ [142.351,-41.9274],[133.517,-35.0189],[124.223,-28.7434],[114.513,-23.1316],[104.436,-18.2108],[98.1016,-15.5478],[85.5016,-10.9843],[72.6577,-7.16119],[59.6132,-4.09135],[55.8375,-3.35075],[37.1908,-0.252121],[18.4319,2.07327],[-0.406982,3.62149],[-19.2938,4.38988],[-32.3781,4.46426],[-163.992,3.32967]];
```
```
```
```
path2= [[-163.425,-66.3214],[-108.964,-65.7541],[-91.1776,-65.8562],[-70.3575,-66.7065],[-49.5844,-68.344],[-28.8882,-70.7665],[-8.29855,-73.9704],[12.1551,-77.9511],[22.6352,-80.5282],[33.8784,-84.0532],[44.8669,-88.3059],[55.5538,-93.2683],[57.9586,-94.577],[62.7517,-97.8196],[67.0805,-101.66],[70.871,-106.033],[76.6622,-113.67] ] ;
```
```
color("blue")stroke(path1);
```
```
color("red")stroke(path2);
```
```
//path_sweep(circle(10),path1, closed=false);
```
```
path0=resample_path(path1,20,closed=false);
```
```
for (pt=path0){
```
```
c1 = path_closest_point(path2, pt);
```
```
pt2 =c1[1];
```
```
path3=[pt,pt2];
```
```
color("red") translate(path3) circle(d=3, $fn=12);
```
```
stroke([pt,c1[1]]);
```
```
//echo(path3);
```
```
cpt=[pt[0]-(pt[0]-c1[1][0])/2,pt[1]-(pt[1]-c1[1][1])/2];
```
```
//echo("cpt=",cpt);
```
```
color("red") translate(cpt) circle(d=3, $fn=12);
```
```
}
```
