Hey xiq,
Very cool! I too played with OpenSCAD and also created (imperial) perforated angle.
But I like your approach better as you start with a perforated flat, it's a lot cleaner this way.
This may not be the best way to model, but it could well be a great way to encode and perhaps even animate assembly sequences for Contraptor and other projects. All that is needed is a small number of primitives and perhaps a more intuitive way to position and orient them in 3D space.
I'm currently reorganizing Contraptor source tree, and OpenSCAD files could go there as well. One of the questions is picking the most appropriate revision control tool. Older releases of Contraptor are hosted on Sourceforge. I'm sort of split between Sourceforge, hosting own SVN on svn.contraptor.org and Github. Any suggestions?
module _angle(len) {
difference() {
union() {
cube ([len,1,1/8]);
translate([0,1/8,0]) rotate (a=[90,0,0]) cube ([len,1,1/8]);
}
for ( i = [1:len] ) {
translate([i-1/2,1/2,-1/16]) cylinder(h=1/4,r=1/8,$fn=6);
translate([0,1/8,0]) rotate (a=[90,0,0]) translate([i-1/2,1/2,-1/16]) cylinder(h=1/4,r=1/8,$fn=6);
}
}
}
_angle(9);
translate([0,0,1]) rotate(a=[90,90,0]) _angle (4);
translate([6,sin($t*360)-1,1]) rotate(a=[180,90,0]) _angle (2);
Here is also generic T-slot module:
module Tslot(len) {
linear_extrude(height=len) union() {
difference() {
square(1,center=true);
square(0.8,center=true);
square([1.1,0.25],center=true);
square([0.25,1.1],center=true);
}
rotate([0,0,45]) square([1.15,0.2],center=true);
rotate([0,0,-45]) square([1.15,0.2],center=true);
}
}
Tslot(12);