I'll start. One of my most favorite is Torleif Ceder' union round.

[twitter.com]

It allows you to merge two parts together with a a radiused fillet. It's just amazing.

What have you found?]]>

Can you guess what it is before trying it?

leds = 8; //even number of leds across border = 1; base_top = 66; base_height = 5; base_bottom = base_top + base_height +base_height; top_pipe = (base_top - (leds+1)*border) / leds; base_pipe= (base_bottom - (leds+1)*border) / leds; Faces = [ [0,1,2,3], // bottom [4,5,1,0], // front [7,6,5,4], // top [5,6,2,1], // right [6,7,3,2], // back [7,4,0,3]]; // left offset = [ for ( i = [0 : leds/2-1]) (i*(1/(leds/2)))*base_height ]; module gen(base,top,n,m) { PipeXX = [ [ 0 , 0 , 0 ], //0 [ base , 0 , 0 ], //1 [ base , base , 0 ], //2 [ 0 , base , 0 ], //3 [ base_height-offset[n] , base_height-offset[m] , base_height ], //4 [ top+base_height-offset[n] , base_height-offset[m] , base_height ], //5 [ top+base_height-offset[n] , top+base_height-offset[m] , base_height ], //6 [ base_height-offset[n] , top+base_height-offset[m] , base_height ]]; //7 translate([(base+border)*n,(base+border)*m,0]) polyhedron( PipeXX, Faces ); } module first_q () { for ( i = [0 : leds/2-1] ) for ( j = [0 : leds/2-1] ) gen(base_pipe,top_pipe,j,i); } difference() { gen(base_bottom,base_top,offset[0],offset[0]); translate([border,border,0]) first_q(); translate([base_bottom-border,border,0]) mirror([1,0,0]) first_q(); translate([base_bottom-border,base_bottom-border,0]) mirror([1,0,0]) mirror([0,1,0]) first_q(); translate([border,base_bottom-border,0]) mirror([0,1,0]) first_q(); }]]>

Everything works as it should, but there's something that's recently popped up, and it's very annoying!

The font in the menu bar, and in the console, has gone italic (see images). The same goes for the menus themselves, and all of the sub-panels (like edit - preferences). The font in the editor is correct, as defined by in the editor options.

I'm guessing that there's a config file or option somewhere, but I can't find it (and I've looked everywhere).

Can anyone help, or offer guidance?]]>

I need to make a disc 35mm across, 3mm thick, with a rounded edge.

To that end, I was able to create the points to make a polygon rectangle 17.5 X, 3mm Y and that extrudes fine into a disc 35mm across with square edges.

The problem comes in when I try to create a circle at the end, 1.5mm radius, centered at X17.5, Y1.5. I’ve tried a few ways, but nothing works.

Could anyone offer some guidance on this? I’m tearing my hair out at this point.]]>

What an I doing wrong?

height = 10; //height

radius = 35;

angles = [40, 360];

fn = 9;

tol = 0.2;

a = 180 / fn;

r = radius / cos(a);

module round(){

difference(){

cylinder(h=height,r=radius+1);

translate([0,0,-tol]) cylinder (h=height+2*tol,r=radius-1,$fn=100);

} }

module sector(radius, angles, fn = 9) {

r = radius / cos(180 / fn);

step = -360 / fn;

points = concat([[0, 0]],

[for(a = [angles[0] : step : angles[1] - 360])

[r * cos(a), r * sin(a)]

],

[[r * cos(angles[1]), r * sin(angles[1])]]

);

circle(radius, $fn = fn);

}

module cutout(){

difference(){

scale([1,1,height])sector(radius, angles, fn);

translate([0,0,-height/2]) round();

} }

module combine(){

difference(){

cube([80,80,height],center=true);

translate ([-2,radius-3,-2])cube([4,10,8]);//cable slot

} }

difference(){

combine();

rotate([0,0,30]) cutout();

}]]>

import("D:/Core XY/D-Bot_latest/files/1-Hotend_Clamp_E3Dv6.stl",convexity=10);

translate([0,0,-0.5]) cube([50,20,43]);

translate([0,20,4]) cube([50,30,43]);

}

translate([13,23.5,0]) cube([15,12,4]); //fillin

}

Using F5 this displays properly but F6 render just ends up with the fillin and no Hotend clamp/

This is the error

ERROR: CGAL error in CGAL_Nef_polyhedron3(): CGAL ERROR: assertion violation! Expr: e_below != SHalfedge_handle() File: /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_FM_decorator.h Line: 426

Am I doing something wrong?]]>

I have been working on a library that implements basic support for layers, keepouts, etc. It's not ready for public release yet but it works pretty well for my own purposes.

Question #1) Is anyone aware of other libraries that implement keepouts, layering, and built-in support for multi-material STL layering?

Question #2) Is anyone interested in messing with my library to give constructive feedback, before I publicly release it?]]>

[github.com]

Sort of a fork of OpenSCAD, sort of a re-write.

Curious if folks tried it and gave up on it, and if so why --- if folks are using it, I'd like to discuss it a bit.]]>

So that will be a beam shaped object. (subtract a cube from a cube will do the math)

However, the remaining box must be slightly curved to follow the shape of the drone landing gear, to which the boxes will be fixed.

Any help in bending a beam , of the resulting box ?

Thomas]]>

bodyWidth = 25; bodyHeight = 15; slotWidth = 6; slotHeight = 10; $fn = 50; module slot() { rotate( [-90, -90, 0] ) union() { cylinder(d = slotWidth, h = bodyWidth + 2); translate( [0, -slotWidth/2, 0] ) cube( [bodyHeight - slotHeight, slotWidth, bodyWidth + 2] ); translate( [bodyHeight - slotHeight, 0, 0] ) cylinder(d = slotWidth, h = bodyWidth + 2); } } difference() { cube(bodyWidth); translate( [bodyWidth/2, -1, bodyWidth/2] ) #slot(); }

This results in a cube with an oval hole through it (see attachment)

What I would like to do is to put a nice rounded edge around the hole at both ends. The trouble is, I don't know where to start! I would appreciate it if someone could give me some suggested techniques, helpful hints, etc. I'm not expecting anyone to actually do the work - just give me a clue about how to do it!

Note - this is something I've often wanted to do, but shied away from due to a lack of knowledge.

TIA,

David]]>

$fn=128; difference () { for(i=[0:2]) cylinder(r=89,h=10); for(i=[0:2]) translate([0,0,-1]) cylinder(r=19,h=12); translate([37,0,-1]) cylinder(r=9, h=12); translate([-37,0,-1]) cylinder(r=9, h=12); translate([-19,33,-1]) cylinder(r=9, h=12); translate([19,33,-1]) cylinder(r=9, h=12); translate([-19,-33,-1]) cylinder(r=9, h=12); translate([19,-33,-1]) cylinder(r=9, h=12); }]]>

Thomas

$fa=1;

$fn=200;

module schacht () { // make a cylinderlock shape

hc=50;

difference () {

union () {

hull () {

translate (v=[-47, 0, 0])

cylinder (h=hc, r1=7, r2=7);

translate (v=[-29, 0, 0])

cylinder (h=hc, r1=7, r2=7);

}

hull () {

translate (v=[-26, -6, 0])

cylinder (h=hc, r1=5, r2=5);

translate (v=[-26, 6, 0])

cylinder (h=hc, r1=5, r2=5);

} // e hull

} // e union

// subtract the hole

hole ();

} // e diff

} // e schacht

module hole () {

translate (v=[-38, 25, 30])

rotate (a=[90, 0, 0])

cylinder (h=50, r1=13, r2=13);

}

translate (v=[0, 0, -8]) // round it up and smoothen the edges

minkowski () {

schacht ();

sphere (1);

} // e mink

module fels () { // make a wider cylinderlock shape

rc=5;

dc=8;

dc2=6;

union () {

hull () {

translate (v=[-47, 0, 0])

cylinder (h=rc, r1=dc, r2=dc);

translate (v=[-29, 0, 0])

cylinder (h=rc, r1=dc, r2=dc);

}

hull () {

translate (v=[-26, -6, 0])

cylinder (h=rc, r1=dc2, r2=dc2);

translate (v=[-26, 6, 0])

cylinder (h=rc, r1=dc2, r2=dc2);

} // e hull

} // e union

} // e rim

translate (v=[0, 0, -10])

color ("red")

minkowski () {

fels ();

sphere (1);

}]]>

On Windows-10. the program crashes on memory exception and terminate

On Mac. a popup says there is no more program memory left, please close all programs...

I have done bigger Minkowski's than this one....

Any thoughts ?

Thomas]]>

like this :

module torus (diam, thickness){

rotate_extrude ()

translate (v=[diam/2, 0, 0])

circle(thickness/2);

}

It is called with the diameter of the shape and the diameter of the body it is composed of.

But always, they are rotated circles and the torus is (by definition ?) a circular donut shape.

Now, to generate my ellips torus, I cut off half of the circular torus,, move the half over the central axis. and then fill the gaps with a set of cylinders with the same diameter.

That works to get the main ellips shape, but the body is still a circle.

so in effect: Can I rotate an ellips ? And can I rotate over 2 points of rotation, such as ellipses are constructed ?

Thomas]]>

When I load a design, it starts to render the draft by default immediately

I do not want this, because my current design takes very long to render (hours) So I want to code first....

Can I configure not to render at start ?

Thnks

Thomas]]>

multmatrix([ [1, 0, 0, 0], [0, 1, 0.4, 0], [0, 0, 1, 0], [0, 0, 0, 1] ]) cube([100, 30, 48]); translate([120,0,0]) multmatrix([ [100, 0, 0, 0], [0, 30, 20, 0], [0, 0, 48, 0], [0, 0, 0, 1] ]) cube([1, 1, 1]);

Why on earth are the both cubes identical? Why i need in one case a Scale Y sheared along Z with 0.4 and in the other case with the small cube scaled up i need 20?!]]>

I am designing 3D KiCAD PCB parts using OpenSCAD and Wings3D

When I import an OpenSCAD STL file in Wings3D, the program always crashes,

after repairing the file using meshconv, the STL file no longer crashes Wings3D.

Meshconv only changed the normal and vertex locations to floating point values...

The STL file format specifies:

Quote

The numerical data in the facet normal and vertex lines are single precision floats, for example, 1.23456E+789.

Currently the STL file contains only integers when testing with a cube(10);

I made the following changes in /src/export_stl.cc:

std::string toString(const Vector3d &v) - return OSS(v[0] << " " << v[1] << " " << v[2]); + return OSS(std::scientific << v[0] << " " << v[1] << " " << v[2]); void append_stl(const PolySet &ps, std:: ostream &output) if (is_finite(normal) && !is_nan(normal)) { - output << normal[0] << " " << normal[1] << " " << normal[2] << "\n"; + output << std::scientific << normal[0] << " " << normal[1] << " " << normal[2] << "\n"; } else { - output << "0 0 0\n"; + output << "0.000000e+00 0.000000e+00 0.000000e+00\n"; }After these changes Wings3D accepts (my very simple) OpenSCAD STL files.

Should the code be changed (this way or another) or is there a reason things are this way?]]>

In a similar vein, an error() function would be useful, to kill a script if some variable or parameter is out-of-bounds.

e.g.

if ($version < "2016") {

error("Requires version 2016.XX");

}]]>

]]>

is there anyway i can somehow create a polygon based on the manArr variable, that would encompass all the cylinders, without cutting through them?

so far the only way i think of is doing somehow a recursive function, but opensCad's restrictions on functions to be one line is driving me insane..]]>

this is my first project in openscad, so go easy ;) ... my question, how can i split the BODY part (the part between holders) ..

the alternative is to print it larger, have it sandwitch between the covers which only they will be bolted.. but i'd rather not, it would be great if i could split the 4 walls separately but even splitting it in the middle, might be ok.]]>

Obviously both functions will get used in any complex design, but do you start by cutting bits out of a lump, or start with a base and stick bits on? Or doesn't it really matter in the long run?]]>

WARNING: Normalized tree is growing past 4000 elements. Aborting normalization. WARNING: Normalized tree is growing past 4000 elements. Aborting normalization. Normalized CSG tree has 101 elementsI guess that I've gone over some OpenSCAD limit, but is there anything I can do about it?]]>

The bezel is 100mm long (x axis), 50mm high (z axis) and 0.8mm thick (y axis). What I would like to do is bend the face of it. So, the x-axis would be curved a bit around the z axis.

I understand how to use a difference to remove the back of a cube with a cylinder. What I

I assume it uses a function that I have not yet been able to discover yet.

Can anyone give any assistance on this?

Thanks

Andy]]>

I keep getting the following error

ERROR: CGAL error in CGALUtils::applyBinaryOperator union: CGAL ERROR: assertion violation! Expr: target(s1).vertex()==target(s2).vertex() File: /opt/mxe/usr/x86_64-w64-mingw32.static/include/CGAL/Nef_3/SNC_FM_decorator.h Line: 218

This works

if (leftfront) {

import("D:/Core XY/appjaws-Core-XY/files/1-Motor_Mount_Left.stl",convexity=10);

translate([0,20.5,0]) rotate([0,0,0]) mirror([0,1,0]) inlinemount();

translate([68.25,20.25,35.15]) cube([13,3.75,12]);

}

The next 3 do not work

if (rightfront){

import("D:/Core XY/appjaws-Core-XY/files/1-Motor_Mount_Right.stl",convexity=10);

translate([20.5,0,0]) rotate([0,0,90])inlinemount();

translate([20.25,68.25,35.15]) cube([3.75,13,12]);

}

if (rightrear){

import("D:/Core XY/appjaws-Core-XY/files/1-Rear_Idler_Right.stl",convexity=10);

difference(){

translate([90.5,190,0]) mirror([0,1,0])rotate([0,0,90]) inlinemount();

translate([60.25,105,-1]) cube([35,13,50]);

translate([60.25,60,44]) cube([35,50,13]);

}

}

if (leftrear){

import("D:/Core XY/appjaws-Core-XY/files/1-Rear_Idler_left.stl",convexity=10);

difference(){

translate([189.9,93.98,3.5]) mirror([1,0,0])rotate([90,0,0]) inlinemount();

translate([105.25,40,-1]) cube([15,60,35]);

}

}

this is the inlinemount code

module inlinemount(){

difference(){

translate([84,20.5,0]) mirror([0,1,0])rotate([0,0,0]) import("D:/Core XY/appjaws-Core-XY/files/1-Motor_Mount_Left.stl",convexity=10);

translate([80,-53.5,-1]) cube([70,50,60]);

translate([126,-10.5,-1]) cube([50,50,60]);

}

translate([80.25,-3.5,-0.0]) cube([4,24,47]);

}

Attached files of the 4 stl files

Any help please.

Thanks

Paul]]>

Saved backup file: /Users/Laura/Documents/OpenSCAD/backups/Mockup-backup-xJL50578.scad

Compiling design (CSG Tree generation)...

Rendering Polygon Mesh using CGAL...

ERROR: CGAL error in CGALUtils::applyBinaryOperator union: CGAL ERROR: assertion violation! Expr: itl != it->second.end() File: /Users/kintel/code/OpenSCAD/openscad-2015.03/../libraries/install/include/CGAL/Nef_3/SNC_external_structure.h Line: 1102

Geometries in cache: 66

Geometry cache size in bytes: 19817184

CGAL Polyhedrons in cache: 11

CGAL cache size in bytes: 81062360

Total rendering time: 0 hours, 0 minutes, 45 seconds

Rendering finished.

Anybody any clue of what is wrong ?

Thomas]]>

off course it is not!

What is the problem?

Is DXF a 2d protocol ? If yes, how do I make a 2d object from my model ?

I tried to import the SCAD file into FreeCad, but the FreeCad tutorial also claims that export to DXF is a 2d issue....

Help is appreciated.

Thomas]]>

pathRadius=nnn;

num=5;

for (i=[1:num]) {

translate ([pathRadius*cos(i*(360/num)), pathRadius*sin(i*(360/num)), 0])

rotate ([??????]) // this is the bit I'm stuck with

}

So the translate with pathRadius thing puts them in a circle but my maths isn't good enough to work out what I need to do to rotate them so that they are 28 degrees off the vertical. Obviously they need to be rotated in both X and Y by some amount which varies according to placement around the circle but I'm not clever enough to know what the formula is.

Any help would be very much appreciated.]]>

How do we ask for improvements?

I use openscad all the time and at my age would not want to have to learn a different way of designing parts.]]>