





 
 




 
 


Hello,
I've searched the povray site and googled, but either I am too stupid to
formulate my question correctly or I'm blind or overlooking something.
I am working on a larger hobby project and therefore I need screws, nuts, bolts,
etc. Therefore I created a function which generates a screw thread. Also I
constructed a hexagon nut. For the hole in nut I tried to subtract the screw
thread from the nut like this:
difference {
object {nut_body}
union {
isosurface {
function{ f_helix1( x,y,z,
1, // number of helixes, (1 = single helix, 2 = double helix etc.)
(2*pi)/incline, // period, turns on the length of 2*pi
incline*2, // minor radius,
nominal, // major radius,
1, // shape parameter,
2.0, // cross section type,
// (0.0 to 1.0 = square ... rounded to circle
// over 2.0 to 3.0 = rounded to diamond and concave diamond
0 ) // cross section rotation angle
}
contained_by {box { length/2 , length/2 }}
threshold 0
max_gradient 3.168
accuracy 0.0001
all_intersections
}
cylinder {<0,length/2,0>,<0,length/2,0>,inner}
}
}
As a result I get a nut with a squared hole in the middle instead of a hole
drilled into the nut_body by the isosurface.
The povray documentation states that isosurface can be combined with solid
objects, however this does not work in this example. So what am I missing? Or
do I have to remodel the nut_body with a function as well and subtract both
functions?
Thanks for any advice
Reiner
Post a reply to this message


 
 




 
 


"Reiner Jung" <nomail@nomail> wrote:
> isosurface {
> function{ f_helix1( x,y,z,
> 1, // number of helixes, (1 = single helix, 2 = double helix etc.)
> (2*pi)/incline, // period, turns on the length of 2*pi
> incline*2, // minor radius,
> nominal, // major radius,
> 1, // shape parameter,
> 2.0, // cross section type,
> // (0.0 to 1.0 = square ... rounded to circle
> // over 2.0 to 3.0 = rounded to diamond and concave diamond
> 0 ) // cross section rotation angle
> }
> contained_by {box { length/2 , length/2 }}
> ...
Check the settings for the contained_by box; as it is now, it only works if the
nut's total radius (including thread) is smaller than length/2.
Note that POVRay automatically expands scalar values to vectors where needed,
so your contained_by box actually is:
contained_by {box { <length/2,length/2,length/2>,
<length/2,length/2,length/2> }}
You probably want something like:
contained_by {box { <nominalincline*2, length/2, nominalincline*2>,
<nominal+incline*2, length/2, nominal+incline*2> }}
Post a reply to this message


 
 




 
 


Wasn't it Reiner Jung who wrote:
>
>Hello,
>
>I've searched the povray site and googled, but either I am too stupid to
>formulate my question correctly or I'm blind or overlooking something.
>
>I am working on a larger hobby project and therefore I need screws,
>nuts, bolts,
>etc. Therefore I created a function which generates a screw thread. Also I
>constructed a hexagon nut. For the hole in nut I tried to subtract the screw
>thread from the nut like this:
>
>difference {
> object {nut_body}
> union {
> isosurface {
> function{ f_helix1( x,y,z,
> 1, // number of helixes, (1 = single helix, 2 = double helix etc.)
> (2*pi)/incline, // period, turns on the length of 2*pi
> incline*2, // minor radius,
> nominal, // major radius,
> 1, // shape parameter,
> 2.0, // cross section type,
> // (0.0 to 1.0 = square ... rounded to circle
> // over 2.0 to 3.0 = rounded to diamond and concave diamond
> 0 ) // cross section rotation angle
> }
> contained_by {box { length/2 , length/2 }}
> threshold 0
> max_gradient 3.168
> accuracy 0.0001
> all_intersections
> }
> cylinder {<0,length/2,0>,<0,length/2,0>,inner}
> }
>}
>
>As a result I get a nut with a squared hole in the middle instead of a hole
>drilled into the nut_body by the isosurface.
>
>The povray documentation states that isosurface can be combined with solid
>objects, however this does not work in this example. So what am I missing? Or
>do I have to remodel the nut_body with a function as well and subtract both
>functions?
That works fine for me. I had to guess suitable values for length,
incline, nominal, inner and nut_body. Perhaps you're using unsuitable
values for some of those. Here are the values that I used:
#declare length = 2.5;
#declare incline = 0.5;
#declare nominal = 0.1;
#declare inner = 0.5;
#declare nut_body = box {<1.5,1,1.5><1.5,1,1.5>}
#include "functions.inc"

Mike Williams
Gentleman of Leisure
Post a reply to this message


 
 




 
 


Wasn't it Reiner Jung who wrote:
>
>Hello,
>
>I've searched the povray site and googled, but either I am too stupid to
>formulate my question correctly or I'm blind or overlooking something.
By the way, this is totally the wrong newsgroup for this sort of
question. This group is about programming the code that goes into
povengine.exe, not for problems with scenes.

Mike Williams
Gentleman of Leisure
Post a reply to this message


 
 




 
 


Reiner Jung wrote:
> I am working on a larger hobby project and therefore I need screws, nuts, bolts,
> etc. Therefore I created a function which generates a screw thread. Also I
> constructed a hexagon nut. For the hole in nut I tried to subtract the screw
> thread from the nut like this:
This is the wrong group for this question. This group is for discussion of
the POVRay source code, not general questions of using POVRay. Questions
about using POVRay should be asked/made in either povray.general or
povray.newusers.
Thorsten, POVTeam
Post a reply to this message


 
 




 

