
zero_zero
Well-Known Member
Full Member
- Messages
- 6,464
- Reaction score
- 1,397
Recently got my attention drawn to an open source CAD app: OpenSCAD, it's quite different from the usual CAD suites by being strictly script based, apart from the obvious drawbacks it boosts strengths only seen in the high $$$ apps...making it easy to design complex parametric parts with only a few lines of code...best of all, it's free 
So after playing with it a bit I decided to attempt designing a Ti base with known parameters...and here's the result, it is relatively easy to get things done once you get the concept of it, the documentation is good and there are lots of tutorials on the net as well:

Attaching the code here:
Copy/paste it into OpenSCAD, hit F5... and enjoy... To save it into an STL , click on the STL button as shown:

The code is somewhat documented, but if you got any questions about it, don't hesitate to ask
...

So after playing with it a bit I decided to attempt designing a Ti base with known parameters...and here's the result, it is relatively easy to get things done once you get the concept of it, the documentation is good and there are lots of tutorials on the net as well:

Attaching the code here:
Code:
/* Ti insert >>> BioH 4.5mm internal hex
by zero_zero
Exocad [default] / 3shape coordinate system compatible */
zero=[0,0,0]; // center reference vector
$fn=64; // triangulation detail level, global
base_height=4.5; // all values in mm's
base_diameter_1=3.6; // bottom
base_diameter_2=3.2; // top
cone_height=0.483; // these values must not change for the 4.5mm platform
cone_diameter_1=4;
cone_diameter_2=5;
hex_height=1.45;
hex_diameter=2.4;
_fillet_=0.1; // hexagon edge fillet radius
screw_channel_height=5;
screw_channel_diameter=1.8;
screw_seat_height=0.417; // compatible with Medentika 2nd GEN screws
bore_height=5;
bore_diameter=2.546;
// anti rotation feature
arf_present=true; // change it to "false" to disable arf
arf_height=0.9;
arf_diameter=base_diameter_1-bore_diameter; // double the wall thickness
color([0.627,0.796,0.850]) // r,g,b values: [0..1]; for presentation only
//#######################################################################
//rotate([-90,0,0]){ // 3shape coordinate system, uncomment this line
rotate([0,0,-30]){ // Z rotate to match scanabutment coords
difference(){
union(){
cylinder(base_height,d1=base_diameter_1,d2=base_diameter_2,zero);
translate([0,0,-cone_height])
cylinder(cone_height,d1=cone_diameter_1,d2=cone_diameter_2,zero);
translate([0,0,-(cone_height+hex_height)])
3d_hexagon(hex_height,hex_diameter,_fillet_);
if (arf_present==true) {
rotate([0,0,30])
translate([base_diameter_2/2,0,0])
cylinder(arf_height,d=arf_diameter,zero);}}
union(){
translate([0,0,1+screw_seat_height-screw_channel_height])
cylinder(screw_channel_height,d=screw_channel_diameter,zero);
translate([0,0,screw_seat_height])
cylinder(bore_height,d=bore_diameter,zero);}
}}
//} // 3shape coordinate system, uncomment this line
//######################################################################
// generates an extruded heaxagon, diameter is measured between two opposing flat planes
module 3d_hexagon(height, diameter, fillet){
t=diameter*1.155;
hull(){
for (i=[0:60:300]){
rotate([0,0,i])
translate([t/2-fillet,0,0])
cylinder(h=height, r=fillet);
}}}

The code is somewhat documented, but if you got any questions about it, don't hesitate to ask

Last edited: