discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

I'm getting recursion detected, and I don't see why.

DV
david vanhorn
Tue, Jul 16, 2024 7:43 PM

Here's the whole thing.
I can preview if I turn off the calls to Bolt and Antenna.
Either one will give me recursion.

// Cap for antennas
//
//**********************************************************************************
$fn = 360;
Inch = 24.5; // Barbarian units work too.

// Antenna base thread is M6
// Need to find M6 Brass spacers (Dims?)
// M6 brass bolt (Dims?)
// Drill center of bolt for piano wire (Dia?)
// This file will create a plastic overcap.

Standoff_Size  = 10;  // All WAGs aat the moment
Standoff_Len    = 25;  //
Bolt_Len        = 6;    //
Bolt_Size      = 10;  //
BoltZ          = (Standoff_Len + 0.5);  // How far up the bolt head is.
Ant_Dia        = 2;    //
Ant_Len        = 200;  //

//**************************************************************************************
// The basic blocks
//**************************************************************************************
module Standoff(){
cylinder(Standoff_Len,d=Standoff_Size,$fn=6);
}
module Bolt(){
cylinder(Bolt_Len,d=Bolt_Size,$fn=6);
}

module Antenna(){
cylinder(h=AntLen, d=AntDia, center=true);
}

//**************************************************************************************
// The cap
//**************************************************************************************

//**************************************************************************************
// The antenna
//**************************************************************************************
module Antenna() {
union(){
Standoff();
translate([0,0,BoltZ]){
rotate([0,0,13]){
Bolt();
}// end of rotate
}// end of translate
translate([0,(0 + BoltZ),5]){
Antenna();
}// end of translate
}// end of union
}// end of module

//**************************************************************************************
Antenna();

--
K1FZY (WA4TPW) SK  9/29/37-4/13/15

Here's the whole thing. I can preview if I turn off the calls to Bolt and Antenna. Either one will give me recursion. // Cap for antennas // //********************************************************************************** $fn = 360; Inch = 24.5; // Barbarian units work too. // Antenna base thread is M6 // Need to find M6 Brass spacers (Dims?) // M6 brass bolt (Dims?) // Drill center of bolt for piano wire (Dia?) // This file will create a plastic overcap. Standoff_Size = 10; // All WAGs aat the moment Standoff_Len = 25; // Bolt_Len = 6; // Bolt_Size = 10; // BoltZ = (Standoff_Len + 0.5); // How far up the bolt head is. Ant_Dia = 2; // Ant_Len = 200; // //************************************************************************************** // The basic blocks //************************************************************************************** module Standoff(){ cylinder(Standoff_Len,d=Standoff_Size,$fn=6); } module Bolt(){ cylinder(Bolt_Len,d=Bolt_Size,$fn=6); } module Antenna(){ cylinder(h=AntLen, d=AntDia, center=true); } //************************************************************************************** // The cap //************************************************************************************** //************************************************************************************** // The antenna //************************************************************************************** module Antenna() { union(){ Standoff(); translate([0,0,BoltZ]){ rotate([0,0,13]){ Bolt(); }// end of rotate }// end of translate translate([0,(0 + BoltZ),5]){ Antenna(); }// end of translate }// end of union }// end of module //************************************************************************************** Antenna(); -- K1FZY (WA4TPW) SK 9/29/37-4/13/15
TP
Torsten Paul
Tue, Jul 16, 2024 7:46 PM

On 16.07.24 21:43, david vanhorn via Discuss wrote:

//**************************************************************************************
// The antenna
//**************************************************************************************
module Antenna() {
    union(){
        Standoff();
        translate([0,0,BoltZ]){
            rotate([0,0,13]){
                Bolt();
            }// end of rotate
        }// end of translate
        translate([0,(0 + BoltZ),5]){
            Antenna();                          <<<------------ here?
        }// end of translate
    }// end of union
}// end of module

On 16.07.24 21:43, david vanhorn via Discuss wrote: > //************************************************************************************** > // The antenna > //************************************************************************************** > module Antenna() { >     union(){ >         Standoff(); >         translate([0,0,BoltZ]){ >             rotate([0,0,13]){ >                 Bolt(); >             }// end of rotate >         }// end of translate >         translate([0,(0 + BoltZ),5]){ >             Antenna(); <<<------------ here? >         }// end of translate >     }// end of union > }// end of module
HW
Harvey white
Tue, Jul 16, 2024 7:53 PM

Antenna looks like it's calling Antenna, as noted.  Rename the highest
level module Antenna1 and see if that helps.  Antenna 1 can call
Antenna, which should not call Antenna at all.  Ever... <grin>

Harvey

On 7/16/2024 3:43 PM, david vanhorn via Discuss wrote:

Here's the whole thing.
I can preview if I turn off the calls to Bolt and Antenna.
Either one will give me recursion.

// Cap for antennas
//
//**********************************************************************************
$fn = 360;
Inch = 24.5; // Barbarian units work too.

// Antenna base thread is M6
// Need to find M6 Brass spacers (Dims?)
// M6 brass bolt (Dims?)
// Drill center of bolt for piano wire (Dia?)
// This file will create a plastic overcap.

Standoff_Size   = 10;   // All WAGs aat the moment
Standoff_Len    = 25;   //
Bolt_Len        = 6;    //
Bolt_Size       = 10;   //
BoltZ           = (Standoff_Len + 0.5);   // How far up the bolt head is.
Ant_Dia         = 2;    //
Ant_Len         = 200;  //

//**************************************************************************************
// The basic blocks
//**************************************************************************************
module Standoff(){
    cylinder(Standoff_Len,d=Standoff_Size,$fn=6);
}
module Bolt(){
    cylinder(Bolt_Len,d=Bolt_Size,$fn=6);
}

module Antenna(){
     cylinder(h=AntLen, d=AntDia, center=true);
}

//**************************************************************************************
// The cap
//**************************************************************************************

//**************************************************************************************
// The antenna
//**************************************************************************************
module Antenna() {
    union(){
        Standoff();
        translate([0,0,BoltZ]){
            rotate([0,0,13]){
                Bolt();
            }// end of rotate
        }// end of translate
        translate([0,(0 + BoltZ),5]){
            Antenna();
        }// end of translate
    }// end of union
}// end of module

//**************************************************************************************
Antenna();

--
K1FZY (WA4TPW) SK  9/29/37-4/13/15


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

Antenna looks like it's calling Antenna, as noted.  Rename the highest level module Antenna1 and see if that helps.  Antenna 1 can call Antenna, which should not call Antenna at all.  Ever... <grin> Harvey On 7/16/2024 3:43 PM, david vanhorn via Discuss wrote: > Here's the whole thing. > I can preview if I turn off the calls to Bolt and Antenna. > Either one will give me recursion. > > // Cap for antennas > // > //********************************************************************************** > $fn = 360; > Inch = 24.5; // Barbarian units work too. > > // Antenna base thread is M6 > // Need to find M6 Brass spacers (Dims?) > // M6 brass bolt (Dims?) > // Drill center of bolt for piano wire (Dia?) > // This file will create a plastic overcap. > > Standoff_Size   = 10;   // All WAGs aat the moment > Standoff_Len    = 25;   // > Bolt_Len        = 6;    // > Bolt_Size       = 10;   // > BoltZ           = (Standoff_Len + 0.5);   // How far up the bolt head is. > Ant_Dia         = 2;    // > Ant_Len         = 200;  // > > //************************************************************************************** > // The basic blocks > //************************************************************************************** > module Standoff(){ >     cylinder(Standoff_Len,d=Standoff_Size,$fn=6); > } > module Bolt(){ >     cylinder(Bolt_Len,d=Bolt_Size,$fn=6); > } > > module Antenna(){ >      cylinder(h=AntLen, d=AntDia, center=true); > } > > > //************************************************************************************** > // The cap > //************************************************************************************** > > //************************************************************************************** > // The antenna > //************************************************************************************** > module Antenna() { >     union(){ >         Standoff(); >         translate([0,0,BoltZ]){ >             rotate([0,0,13]){ >                 Bolt(); >             }// end of rotate >         }// end of translate >         translate([0,(0 + BoltZ),5]){ >             Antenna(); >         }// end of translate >     }// end of union > }// end of module > > //************************************************************************************** > Antenna(); > > -- > K1FZY (WA4TPW) SK  9/29/37-4/13/15 > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
JB
Jon Bondy
Tue, Jul 16, 2024 7:56 PM

Among other things, you appear to define module Antenna() twice.
Unfortunately, OpenSCAD does not warn about such things.

On 7/16/2024 3:43 PM, david vanhorn via Discuss wrote:

Here's the whole thing.
I can preview if I turn off the calls to Bolt and Antenna.
Either one will give me recursion.

// Cap for antennas
//
//**********************************************************************************
$fn = 360;
Inch = 24.5; // Barbarian units work too.

// Antenna base thread is M6
// Need to find M6 Brass spacers (Dims?)
// M6 brass bolt (Dims?)
// Drill center of bolt for piano wire (Dia?)
// This file will create a plastic overcap.

Standoff_Size   = 10;   // All WAGs aat the moment
Standoff_Len    = 25;   //
Bolt_Len        = 6;    //
Bolt_Size       = 10;   //
BoltZ           = (Standoff_Len + 0.5);   // How far up the bolt head is.
Ant_Dia         = 2;    //
Ant_Len         = 200;  //

//**************************************************************************************
// The basic blocks
//**************************************************************************************
module Standoff(){
    cylinder(Standoff_Len,d=Standoff_Size,$fn=6);
}
module Bolt(){
    cylinder(Bolt_Len,d=Bolt_Size,$fn=6);
}

module Antenna(){
     cylinder(h=AntLen, d=AntDia, center=true);
}

//**************************************************************************************
// The cap
//**************************************************************************************

//**************************************************************************************
// The antenna
//**************************************************************************************
module Antenna() {
    union(){
        Standoff();
        translate([0,0,BoltZ]){
            rotate([0,0,13]){
                Bolt();
            }// end of rotate
        }// end of translate
        translate([0,(0 + BoltZ),5]){
            Antenna();
        }// end of translate
    }// end of union
}// end of module

//**************************************************************************************
Antenna();

--
K1FZY (WA4TPW) SK  9/29/37-4/13/15


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

--
This email has been checked for viruses by AVG antivirus software.
www.avg.com

Among other things, you appear to define module Antenna() twice. Unfortunately, OpenSCAD does not warn about such things. On 7/16/2024 3:43 PM, david vanhorn via Discuss wrote: > Here's the whole thing. > I can preview if I turn off the calls to Bolt and Antenna. > Either one will give me recursion. > > // Cap for antennas > // > //********************************************************************************** > $fn = 360; > Inch = 24.5; // Barbarian units work too. > > // Antenna base thread is M6 > // Need to find M6 Brass spacers (Dims?) > // M6 brass bolt (Dims?) > // Drill center of bolt for piano wire (Dia?) > // This file will create a plastic overcap. > > Standoff_Size   = 10;   // All WAGs aat the moment > Standoff_Len    = 25;   // > Bolt_Len        = 6;    // > Bolt_Size       = 10;   // > BoltZ           = (Standoff_Len + 0.5);   // How far up the bolt head is. > Ant_Dia         = 2;    // > Ant_Len         = 200;  // > > //************************************************************************************** > // The basic blocks > //************************************************************************************** > module Standoff(){ >     cylinder(Standoff_Len,d=Standoff_Size,$fn=6); > } > module Bolt(){ >     cylinder(Bolt_Len,d=Bolt_Size,$fn=6); > } > > module Antenna(){ >      cylinder(h=AntLen, d=AntDia, center=true); > } > > > //************************************************************************************** > // The cap > //************************************************************************************** > > //************************************************************************************** > // The antenna > //************************************************************************************** > module Antenna() { >     union(){ >         Standoff(); >         translate([0,0,BoltZ]){ >             rotate([0,0,13]){ >                 Bolt(); >             }// end of rotate >         }// end of translate >         translate([0,(0 + BoltZ),5]){ >             Antenna(); >         }// end of translate >     }// end of union > }// end of module > > //************************************************************************************** > Antenna(); > > -- > K1FZY (WA4TPW) SK  9/29/37-4/13/15 > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email todiscuss-leave@lists.openscad.org -- This email has been checked for viruses by AVG antivirus software. www.avg.com
DV
david vanhorn
Tue, Jul 16, 2024 7:59 PM

DOH!  :)  Sometimes you just need another pair of eyes.

Thanks!

On Tue, Jul 16, 2024 at 1:47 PM Torsten Paul via Discuss <
discuss@lists.openscad.org> wrote:

On 16.07.24 21:43, david vanhorn via Discuss wrote:

//**************************************************************************************

// The antenna

//**************************************************************************************

module Antenna() {
union(){
Standoff();
translate([0,0,BoltZ]){
rotate([0,0,13]){
Bolt();
}// end of rotate
}// end of translate
translate([0,(0 + BoltZ),5]){
Antenna();                          <<<------------ here?
}// end of translate
}// end of union
}// end of module


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

--
K1FZY (WA4TPW) SK  9/29/37-4/13/15

DOH! :) Sometimes you just need another pair of eyes. Thanks! On Tue, Jul 16, 2024 at 1:47 PM Torsten Paul via Discuss < discuss@lists.openscad.org> wrote: > On 16.07.24 21:43, david vanhorn via Discuss wrote: > > > //************************************************************************************** > > // The antenna > > > //************************************************************************************** > > module Antenna() { > > union(){ > > Standoff(); > > translate([0,0,BoltZ]){ > > rotate([0,0,13]){ > > Bolt(); > > }// end of rotate > > }// end of translate > > translate([0,(0 + BoltZ),5]){ > > Antenna(); <<<------------ here? > > }// end of translate > > }// end of union > > }// end of module > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org > -- K1FZY (WA4TPW) SK 9/29/37-4/13/15
T
trygve@totallytrygve.com
Tue, Jul 16, 2024 8:09 PM

Hi!

Others have already pointed out the recursion issue, but there's another issue you need to look at...

you have 1" as 24.5mm while it's supposed to be 25.4mm.

M6 bolts are 6mm thick on the thickest part, from top of thread to top of thread on the other side, or any unthreaded area before the head.
Spacers usually have 6.1 or 6.2mm Inner Diameter (that's just under 1/4", which is 6.35mm) and typically 10mm outer diameter.

Larger ID allows for slop and that's often not desirable.Washers tends to have larger holes, though.

Trygve

Den 16. juli 2024 kl. 21.43.38 +02.00 skrev david vanhorn via Discuss discuss@lists.openscad.org:

Here's the whole thing.
I can preview if I turn off the calls to Bolt and Antenna.
Either one will give me recursion.

// Cap for antennas
//
//**********************************************************************************
$fn = 360;
Inch = 24.5; // Barbarian units work too.

// Antenna base thread is M6
// Need to find M6 Brass spacers (Dims?)
// M6 brass bolt (Dims?)
// Drill center of bolt for piano wire (Dia?)
// This file will create a plastic overcap.

Hi! Others have already pointed out the recursion issue, but there's another issue you need to look at... you have 1" as 24.5mm while it's supposed to be 25.4mm. M6 bolts are 6mm thick on the thickest part, from top of thread to top of thread on the other side, or any unthreaded area before the head. Spacers usually have 6.1 or 6.2mm Inner Diameter (that's just under 1/4", which is 6.35mm) and typically 10mm outer diameter. Larger ID allows for slop and that's often not desirable.Washers tends to have larger holes, though. Trygve Den 16. juli 2024 kl. 21.43.38 +02.00 skrev david vanhorn via Discuss <discuss@lists.openscad.org>: > Here's the whole thing. > I can preview if I turn off the calls to Bolt and Antenna. > Either one will give me recursion. > > // Cap for antennas > // > //********************************************************************************** > $fn = 360; > Inch = 24.5; // Barbarian units work too. > > // Antenna base thread is M6 > // Need to find M6 Brass spacers (Dims?) > // M6 brass bolt (Dims?) > // Drill center of bolt for piano wire (Dia?) > // This file will create a plastic overcap. > >
DV
david vanhorn
Tue, Jul 16, 2024 8:27 PM

It's not the shaft diameter of the M6 that I need, but rather the outer
"diameter" of a brass M6 Threaded spacer and bolt.
Still got to source those. I need to be able to solder the three parts
together.
In the end, the purpose of all this is to create a printable shell that
goes over the assembly.

Good catch on the barbarian units conversion!  Back in my Vivid (pre
POVray) raytracing days, I built a units conversion for a large project
that handled every unit of length I could find, from microns to light
years.  Included furlongs.

Current state of project:

// Cap for antennas
//
//**********************************************************************************
$fn = 360;
Inch = 25.4; // Barbarian units work too.

// Antenna base thread is M6
// Need to find M6 Brass spacers (Dims?)
// M6 brass bolt (Dims?)
// Drill center of bolt for piano wire (Dia?)
// This file will create a plastic overcap.

Standoff_Size  = 10;  // All WAGs aat the moment
Standoff_Len    = 25;  //
Bolt_Len        = 6;    //
Bolt_Size      = 10;  //
BoltZ          = (Standoff_Len + 0.5);  // How far up the bolt head is.
Ant_Dia        = 2;    //
Ant_Len        = 200;  //

Cap_Dia        = (Standoff_Size + 7);
Cap_Len        = (Standoff_Len + 7);
Top_Dia        = Cap_Dia;

//**************************************************************************************
// The basic blocks
//**************************************************************************************
module Standoff(){
cylinder(Standoff_Len,d=Standoff_Size,$fn=6);
}
module Bolt(){
cylinder(Bolt_Len,d=Bolt_Size,$fn=6);
}

module Antenna(){
cylinder(h=Ant_Len, d=Ant_Dia, center=true);
}

module CapShell (){
cylinder(h=Cap_Len, d=Cap_Dia, center=true);
}// end of module

module CapTop (){
sphere (d=Cap_Dia);
}// end of module

//**************************************************************************************
// The Paraboloid  From https://www.thingiverse.com/thing:84564
//**************************************************************************************

module paraboloid (y=10, f=5, rfa=0, fc=1, detail=44){
// y = height of paraboloid
// f = focus distance
// fc : 1 = center paraboloid in focus point(x=0, y=f); 0 = center
paraboloid on top (x=0, y=0)
// rfa = radius of the focus area : 0 = point focus
// detail = $fn of cone

hi = (y+2f)/sqrt(2); // height and radius of the cone -> alpha = 45° ->
sin(45°)=1/sqrt(2)
x =2
f*sqrt(y/f); // x  = half size of parabola

translate([0,0,-f*fc]) // center on focus

rotate_extrude(convexity = 10,$fn=detail ) // extrude paraboild
translate([rfa,0,0]) // translate for fokus area
difference(){
union(){ // adding square for focal area
projection(cut = true) // reduce from 3D cone to 2D parabola
translate([0,0,f2]) rotate([45,0,0])// rotate cone 45° and translate for
cutting
translate([0,0,-hi/2])cylinder(h= hi, r1=hi, r2=0, center=true,
$fn=detail);  // center cone on tip
translate([-(rfa+x ),0]) square ([rfa+x , y ]); // focal area square
}
translate([-(2
rfa+x ), -1/2]) square ([rfa+x ,y +1] ); // cut of half at
rotation center
}
}

//**************************************************************************************
// The cap
//**************************************************************************************

module Cap(){
union(){
CapShell();
translate([0,0,29.7]){
rotate([180,0,0]){
paraboloid (y=15,f=1.2,rfa= 0,fc=1,detail=120);
}// end of rotate
//CapTop();
}// end of translate
}// end of union
}// End of module

//**************************************************************************************
// The antenna
//**************************************************************************************
module Ant() {
union(){
Standoff();
translate([0,0,BoltZ]){
rotate([0,0,13]){
Bolt();
}// end of rotate
}// end of translate
translate([0,0,(Ant_Len/2)]){
Antenna();
}// end of translate
}// end of union
}// end of module

//**************************************************************************************
// The actual top
//**************************************************************************************
module Full_Top(){
difference(){
Cap();
translate([0,0,-16.1]){
scale([1.05, 1.05, 1.1]){
#Ant();
}// end of scale
}// end of translate
}// end of difference
}
//**************************************************************************************
//
//**************************************************************************************
Full_Top();

On Tue, Jul 16, 2024 at 2:09 PM Gadgetman! via Discuss <
discuss@lists.openscad.org> wrote:

Hi!

Others have already pointed out the recursion issue, but there's another
issue you need to look at...

you have 1" as 24.5mm while it's supposed to be 25.4mm.

M6 bolts are 6mm thick on the thickest part, from top of thread to top of
thread on the other side, or any unthreaded area before the head.
Spacers usually have 6.1 or 6.2mm Inner Diameter (that's just under 1/4",
which is 6.35mm) and typically 10mm outer diameter.
Larger ID allows for slop and that's often not desirable.
Washers tends to have larger holes, though.

Trygve

Den 16. juli 2024 kl. 21.43.38 +02.00 skrev david vanhorn via Discuss <
discuss@lists.openscad.org>:

Here's the whole thing.
I can preview if I turn off the calls to Bolt and Antenna.
Either one will give me recursion.

// Cap for antennas
//

//**********************************************************************************
$fn = 360;
Inch = 24.5; // Barbarian units work too.

// Antenna base thread is M6
// Need to find M6 Brass spacers (Dims?)
// M6 brass bolt (Dims?)
// Drill center of bolt for piano wire (Dia?)
// This file will create a plastic overcap.


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

--
K1FZY (WA4TPW) SK  9/29/37-4/13/15

It's not the shaft diameter of the M6 that I need, but rather the outer "diameter" of a brass M6 Threaded spacer and bolt. Still got to source those. I need to be able to solder the three parts together. In the end, the purpose of all this is to create a printable shell that goes over the assembly. Good catch on the barbarian units conversion! Back in my Vivid (pre POVray) raytracing days, I built a units conversion for a large project that handled every unit of length I could find, from microns to light years. Included furlongs. Current state of project: // Cap for antennas // //********************************************************************************** $fn = 360; Inch = 25.4; // Barbarian units work too. // Antenna base thread is M6 // Need to find M6 Brass spacers (Dims?) // M6 brass bolt (Dims?) // Drill center of bolt for piano wire (Dia?) // This file will create a plastic overcap. Standoff_Size = 10; // All WAGs aat the moment Standoff_Len = 25; // Bolt_Len = 6; // Bolt_Size = 10; // BoltZ = (Standoff_Len + 0.5); // How far up the bolt head is. Ant_Dia = 2; // Ant_Len = 200; // Cap_Dia = (Standoff_Size + 7); Cap_Len = (Standoff_Len + 7); Top_Dia = Cap_Dia; //************************************************************************************** // The basic blocks //************************************************************************************** module Standoff(){ cylinder(Standoff_Len,d=Standoff_Size,$fn=6); } module Bolt(){ cylinder(Bolt_Len,d=Bolt_Size,$fn=6); } module Antenna(){ cylinder(h=Ant_Len, d=Ant_Dia, center=true); } module CapShell (){ cylinder(h=Cap_Len, d=Cap_Dia, center=true); }// end of module module CapTop (){ sphere (d=Cap_Dia); }// end of module //************************************************************************************** // The Paraboloid From https://www.thingiverse.com/thing:84564 //************************************************************************************** module paraboloid (y=10, f=5, rfa=0, fc=1, detail=44){ // y = height of paraboloid // f = focus distance // fc : 1 = center paraboloid in focus point(x=0, y=f); 0 = center paraboloid on top (x=0, y=0) // rfa = radius of the focus area : 0 = point focus // detail = $fn of cone hi = (y+2*f)/sqrt(2); // height and radius of the cone -> alpha = 45° -> sin(45°)=1/sqrt(2) x =2*f*sqrt(y/f); // x = half size of parabola translate([0,0,-f*fc]) // center on focus rotate_extrude(convexity = 10,$fn=detail ) // extrude paraboild translate([rfa,0,0]) // translate for fokus area difference(){ union(){ // adding square for focal area projection(cut = true) // reduce from 3D cone to 2D parabola translate([0,0,f*2]) rotate([45,0,0])// rotate cone 45° and translate for cutting translate([0,0,-hi/2])cylinder(h= hi, r1=hi, r2=0, center=true, $fn=detail); // center cone on tip translate([-(rfa+x ),0]) square ([rfa+x , y ]); // focal area square } translate([-(2*rfa+x ), -1/2]) square ([rfa+x ,y +1] ); // cut of half at rotation center } } //************************************************************************************** // The cap //************************************************************************************** module Cap(){ union(){ CapShell(); translate([0,0,29.7]){ rotate([180,0,0]){ paraboloid (y=15,f=1.2,rfa= 0,fc=1,detail=120); }// end of rotate //CapTop(); }// end of translate }// end of union }// End of module //************************************************************************************** // The antenna //************************************************************************************** module Ant() { union(){ Standoff(); translate([0,0,BoltZ]){ rotate([0,0,13]){ Bolt(); }// end of rotate }// end of translate translate([0,0,(Ant_Len/2)]){ Antenna(); }// end of translate }// end of union }// end of module //************************************************************************************** // The actual top //************************************************************************************** module Full_Top(){ difference(){ Cap(); translate([0,0,-16.1]){ scale([1.05, 1.05, 1.1]){ #Ant(); }// end of scale }// end of translate }// end of difference } //************************************************************************************** // //************************************************************************************** Full_Top(); On Tue, Jul 16, 2024 at 2:09 PM Gadgetman! via Discuss < discuss@lists.openscad.org> wrote: > Hi! > > Others have already pointed out the recursion issue, but there's another > issue you need to look at... > > you have 1" as 24.5mm while it's supposed to be 25.4mm. > > M6 bolts are 6mm thick on the thickest part, from top of thread to top of > thread on the other side, or any unthreaded area before the head. > Spacers usually have 6.1 or 6.2mm Inner Diameter (that's just under 1/4", > which is 6.35mm) and typically 10mm outer diameter. > Larger ID allows for slop and that's often not desirable. > Washers tends to have larger holes, though. > > Trygve > > > > Den 16. juli 2024 kl. 21.43.38 +02.00 skrev david vanhorn via Discuss < > discuss@lists.openscad.org>: > > Here's the whole thing. > I can preview if I turn off the calls to Bolt and Antenna. > Either one will give me recursion. > > // Cap for antennas > // > > //********************************************************************************** > $fn = 360; > Inch = 24.5; // Barbarian units work too. > > // Antenna base thread is M6 > // Need to find M6 Brass spacers (Dims?) > // M6 brass bolt (Dims?) > // Drill center of bolt for piano wire (Dia?) > // This file will create a plastic overcap. > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org > -- K1FZY (WA4TPW) SK 9/29/37-4/13/15