Merge remote-tracking branch 'origin/examples-cleanup'

This commit is contained in:
Marius Kintel 2015-03-05 16:10:44 -05:00
commit 4bda97761f
611 changed files with 51877 additions and 6731 deletions

1
.gitignore vendored
View file

@ -2,6 +2,7 @@
*~
*.tar*
*.new
out.*
Makefile
objects
.gdbinit

View file

@ -0,0 +1,36 @@
font = "Bank Gothic";
module G() offset(0.3) text("G", size=10, halign="center", valign="center", font = font);
module E() offset(0.3) text("E", size=10, halign="center", valign="center", font = font);
module B() offset(0.5) text("B", size=10, halign="center", valign="center", font = font);
$fn=64;
module GEB() {
intersection() {
linear_extrude(height = 20, convexity = 3, center=true) B();
rotate([90, 0, 0])
linear_extrude(height = 20, convexity = 3, center=true) E();
rotate([90, 0, 90])
linear_extrude(height = 20, convexity = 3, center=true) G();
}
}
color("Ivory") GEB();
color("MediumOrchid") translate([0,0,-20]) render()
linear_extrude(1) difference() {
square(40, center=true);
projection() GEB();
}
#color("DarkMagenta") rotate([90,0,0]) translate([0,0,-20]) render() linear_extrude(1) difference() {
translate([0,0.5]) square([40,39], center=true);
projection() rotate([-90,0,0]) GEB();
}
color("MediumSlateBlue") rotate([90,0,90]) translate([0,0,-20]) render() linear_extrude(1) difference() {
translate([-0.5,0.5]) square([39,39], center=true);
projection() rotate([0,-90,-90]) GEB();
}

View file

@ -0,0 +1,89 @@
// animation.scad - Demo of animation usage
// The animation funtionality is based simply on a variable $t
// that is changed automatically by OpenSCAD while repeatedly
// showing the model.
// To activate animation, select "View->Animation" from the
// menu and enter values into the appearing FPS and Steps input
// fields (e.g. 5 FPS and 200 Steps for this animation).
// This is not intended to directly produce real-time animations
// but the image sequence can be exported to generate videos of
// the animation.
// Length of the 2 arm segments, change to see the effects on
// the arm movements.
arm1_length = 70;
arm2_length = 50;
r = 2;
$fn = 30;
plate();
pos = position($t);
arm(pos[0], pos[1], arm1_length, arm2_length);
// Function describing the X/Y position that should be traced
// by the arm over time.
// The $t variable will be used as parameter for this function
// so the range for t is [0..1].
function position(t) = t < 0.5
? [ 200 * t - 50, 30 * sin(5 * 360 * t) + 60 ]
: [ 50 * cos(360 * (t - 0.5)), 100 * -sin(360 * (t- 0.5)) + 60 ];
// Inverse kinematics functions for a scara style arm
// See http://forums.reprap.org/read.php?185,283327
function sq(x, y) = x * x + y * y;
function angB(x, y, l1, l2) = 180 - acos((l2 * l2 + l1 * l1 - sq(x, y)) / (2 * l1 * l2));
function ang2(x, y, l1, l2) = 90 - acos((l2 * l2 - l1 * l1 + sq(x, y)) / (2 * l2 * sqrt(sq(x, y)))) - atan2(x, y);
function ang1(x, y, l1, l2) = ang2(x, y, l1, l2) + angB(x, y, l1, l2);
// Draw an arm segment with the given color and length.
module segment(col, l) {
color(col) {
hull() {
sphere(r);
translate([l, 0, 0]) sphere(r);
}
}
}
// Draw the whole 2 segmented arm trying to reach position x/y.
// Parameters l1 and l2 are the length of the two arm segments.
module arm(x, y, l1, l2) {
a1 = ang1(x, y, l1, l2);
a2 = ang2(x, y, l1, l2);
sphere(r = 2 * r);
cylinder(r = 2, h = 6 * r, center = true);
rotate([0, 0, a1]) segment("red", l1);
translate(l1 * [cos(a1), sin(a1), 0]) {
sphere(r = 2 * r);
rotate([0, 0, a2]) segment("green", l2);
}
translate([x, y, -r/2])
cylinder(r1 = 0, r2 = r, h = 4 * r, center = true);
}
module curve() polygon([for (a = [ 0 : 0.004 : 1]) position(a)]);
// Draws the plate and the traced function using small black cubes.
module plate() {
%translate([0, 0, -3*r]) {
translate([0,25,0]) cube([150, 150, 0.1], center = true);
color("Black") linear_extrude(0.1) difference() {
curve();
offset(-1) curve();
}
}
}
echo(version=version());
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,54 @@
// children.scad - Usage of children()
// The use of children() allows to write generic modules that
// modify child modules regardless of how the child geometry
// is created.
color("red")
make_ring_of(radius = 15, count = 6)
cube(8, center = true);
color("green")
make_ring_of(radius = 30, count = 12)
difference() {
sphere(5);
cylinder(r = 2, h = 12, center = true);
}
color("cyan")
make_ring_of(radius = 50, count = 4)
something();
module make_ring_of(radius, count)
{
for (a = [0 : count - 1]) {
angle = a * 360 / count;
translate(radius * [sin(angle), -cos(angle), 0])
rotate([0, 0, angle])
children();
}
}
module something()
{
cube(10, center = true);
cylinder(r = 2, h = 12, $fn = 40);
translate([0, 0, 12])
rotate([90, 0, 0])
linear_extrude(height = 2, center = true)
text("SCAD", 8, halign = "center");
translate([0, 0, 12])
cube([22, 1.6, 0.4], center = true);
}
echo(version=version());
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,62 @@
// children_indexed.scad - Usage of indexed children()
// children() with a parameter allows access to a specific child
// object with children(0) being the first one. In addition the
// $children variable is automatically set to the number of child
// objects.
color("red")
translate([-100, -20, 0])
align_in_grid_and_add_text();
color("yellow")
translate([-50, -20, 0])
align_in_grid_and_add_text() {
cube(5, center = true);
}
color("cyan")
translate([0, -20, 0])
align_in_grid_and_add_text() {
cube(5, center = true);
sphere(4);
}
color("green")
translate([50, -20, 0])
align_in_grid_and_add_text() {
cube(5, center = true);
sphere(4);
cylinder(r = 4, h = 5);
}
module align_in_grid_and_add_text()
{
if ($children == 0) {
linear_extrude(height = 1, center = true)
text("Nothing...", 6, halign = "center");
} else {
t = $children == 1 ? "one object" : str($children, " objects ");
linear_extrude(height = 1, center = true)
text(t, 6, halign = "center");
for (y = [0 : $children - 1])
for (x = [0 : $children - 1])
translate([15 * (x - ($children - 1) / 2), 20 * y + 40, 0])
scale(1 + x / $children)
children(y);
}
}
echo(version=version());
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,89 +0,0 @@
echo(version=version());
module screw(type = 2, r1 = 15, r2 = 20, n = 7, h = 100, t = 8)
{
linear_extrude(height = h, twist = 360*t/n, convexity = t)
difference() {
circle(r2);
for (i = [0:n-1]) {
if (type == 1) rotate(i*360/n) polygon([
[ 2*r2, 0 ],
[ r2, 0 ],
[ r1*cos(180/n), r1*sin(180/n) ],
[ r2*cos(360/n), r2*sin(360/n) ],
[ 2*r2*cos(360/n), 2*r2*sin(360/n) ],
]);
if (type == 2) rotate(i*360/n) polygon([
[ 2*r2, 0 ],
[ r2, 0 ],
[ r1*cos(90/n), r1*sin(90/n) ],
[ r1*cos(180/n), r1*sin(180/n) ],
[ r2*cos(270/n), r2*sin(270/n) ],
[ 2*r2*cos(270/n), 2*r2*sin(270/n) ],
]);
}
}
}
module nut(type = 2, r1 = 16, r2 = 21, r3 = 30, s = 6, n = 7, h = 100/5, t = 8/5)
{
difference() {
cylinder($fn = s, r = r3, h = h);
translate([ 0, 0, -h/2 ]) screw(type, r1, r2, n, h*2, t*2);
}
}
module spring(r1 = 100, r2 = 10, h = 100, hr = 12)
{
stepsize = 1/16;
module segment(i1, i2) {
alpha1 = i1 * 360*r2/hr;
alpha2 = i2 * 360*r2/hr;
len1 = sin(acos(i1*2-1))*r2;
len2 = sin(acos(i2*2-1))*r2;
if (len1 < 0.01)
polygon([
[ cos(alpha1)*r1, sin(alpha1)*r1 ],
[ cos(alpha2)*(r1-len2), sin(alpha2)*(r1-len2) ],
[ cos(alpha2)*(r1+len2), sin(alpha2)*(r1+len2) ]
]);
if (len2 < 0.01)
polygon([
[ cos(alpha1)*(r1+len1), sin(alpha1)*(r1+len1) ],
[ cos(alpha1)*(r1-len1), sin(alpha1)*(r1-len1) ],
[ cos(alpha2)*r1, sin(alpha2)*r1 ],
]);
if (len1 >= 0.01 && len2 >= 0.01)
polygon([
[ cos(alpha1)*(r1+len1), sin(alpha1)*(r1+len1) ],
[ cos(alpha1)*(r1-len1), sin(alpha1)*(r1-len1) ],
[ cos(alpha2)*(r1-len2), sin(alpha2)*(r1-len2) ],
[ cos(alpha2)*(r1+len2), sin(alpha2)*(r1+len2) ]
]);
}
linear_extrude(height = 100, twist = 180*h/hr,
$fn = (hr/r2)/stepsize, convexity = 5) {
for (i = [ stepsize : stepsize : 1+stepsize/2 ])
segment(i-stepsize, min(i, 1));
}
}
translate([ -30, 0, 0 ])
screw();
translate([ 30, 0, 0 ])
nut();
spring();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,56 +0,0 @@
echo(version=version());
module example006()
{
module edgeprofile()
{
render(convexity = 2) difference() {
cube([20, 20, 150], center = true);
translate([-10, -10, 0])
cylinder(h = 80, r = 10, center = true);
translate([-10, -10, +40])
sphere(r = 10);
translate([-10, -10, -40])
sphere(r = 10);
}
}
difference()
{
cube(100, center = true);
for (rot = [ [0, 0, 0], [1, 0, 0], [0, 1, 0] ]) {
rotate(90, rot)
for (p = [[+1, +1, 0], [-1, +1, 90], [-1, -1, 180], [+1, -1, 270]]) {
translate([ p[0]*50, p[1]*50, 0 ])
rotate(p[2], [0, 0, 1])
edgeprofile();
}
}
for (i = [
[ 0, 0, [ [0, 0] ] ],
[ 90, 0, [ [-20, -20], [+20, +20] ] ],
[ 180, 0, [ [-20, -25], [-20, 0], [-20, +25], [+20, -25], [+20, 0], [+20, +25] ] ],
[ 270, 0, [ [0, 0], [-25, -25], [+25, -25], [-25, +25], [+25, +25] ] ],
[ 0, 90, [ [-25, -25], [0, 0], [+25, +25] ] ],
[ 0, -90, [ [-25, -25], [+25, -25], [-25, +25], [+25, +25] ] ]
]) {
rotate(i[0], [0, 0, 1]) rotate(i[1], [1, 0, 0]) translate([0, -50, 0])
for (j = i[2])
translate([j[0], 0, j[1]]) sphere(10);
}
}
}
example006();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,51 @@
// Recursive calls of modules can generate complex geometry, especially
// fractal style objects.
// The example uses a recursive module to generate a random tree as
// described in http://natureofcode.com/book/chapter-8-fractals/
levels = 10; // number of levels for the recursion
len = 100; // length of the first segment
thickness = 5; // thickness of the first segment
// the identity matrix
identity = [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ];
// random generator, to generate always the same output for the example,
// this uses a seed for rands() and stores the array of random values in
// the random variable. To generate different output, remove the seed or
// replace the function rnd() to just call rands(s, e, 1)[0].
rcnt = 1000;
random = rands(0, 1, rcnt, 18);
function rnd(s, e, r) = random[r % rcnt] * (e - s) + s;
// generate 4x4 translation matrix
function mt(x, y) = [ [ 1, 0, 0, x ], [ 0, 1, 0, y ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ];
// generate 4x4 rotation matrix around Z axis
function mr(a) = [ [ cos(a), -sin(a), 0, 0 ], [ sin(a), cos(a), 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ];
module tree(length, thickness, count, m = identity, r = 1) {
color([0, 1 - (0.8 / levels * count), 0])
multmatrix(m)
square([thickness, length]);
if (count > 0) {
tree(rnd(0.6, 0.8, r) * length, 0.8 * thickness, count - 1, m * mt(0, length) * mr(rnd(20, 35, r + 1)), 8 * r);
tree(rnd(0.6, 0.8, r + 1) * length, 0.8 * thickness, count - 1, m * mt(0, length) * mr(-rnd(20, 35, r + 3)), 8 * r + 4);
}
}
tree(len, thickness, levels);
echo(version=version());
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -7,10 +7,10 @@ foot_height = 20;
echo(version=version());
module outline(wall = 1) {
difference() {
offset(wall / 2) children();
offset(-wall / 2) children();
}
difference() {
offset(wall / 2) children();
offset(-wall / 2) children();
}
}
// offsetting with a positive value allows to create rounded corners easily
@ -21,9 +21,9 @@ linear_extrude(height = foot_height, scale = 0.5) {
}
translate([0, 0, foot_height]) {
linear_extrude(height = 20) {
outline(wall = 2) circle(15);
}
linear_extrude(height = 20) {
outline(wall = 2) circle(15);
}
}
%cylinder(r = 14, h = 100);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,26 @@
echo(version=version());
// surface() can import images, the pixel values are converted
// to grayscale and converted to values between 0 and 100.
// The example takes 3 cuts from the height map and displays
// those as 3 stacked layers.
for (a = [1, 2, 3])
color([a/6 + 0.5, 0, 0])
linear_extrude(height = 2 * a, convexity = 10)
projection(cut = true)
translate([0, 0, -30 * a])
surface("surface_image.png", center = true);
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,94 @@
// CSG-modules.scad - Basic usage of modules, if, color, $fs/$fa
// Change this to false to remove the helper geometry
debug = true;
// Global resolution
$fs = 0.1; // Don't generate smaller facets than 0.1 mm
$fa = 5; // Don't generate larger angles than 5 degrees
// Main geometry
difference() {
intersection() {
body();
intersector();
}
holes();
}
// Helpers
if (debug) helpers();
// Core geometric primitives.
// These can be modified to create variations of the final object
module body() {
color("Blue") sphere(10);
}
module intersector() {
color("Red") cube(15, center=true);
}
module holeObject() {
color("Lime") cylinder(h=20, r=5, center=true);
}
// Various modules for visualizing intermediate components
module intersected() {
intersection() {
body();
intersector();
}
}
module holeA() rotate([0,90,0]) holeObject();
module holeB() rotate([90,0,0]) holeObject();
module holeC() holeObject();
module holes() {
union() {
holeA();
holeB();
holeC();
}
}
module helpers() {
// Inner module since it's only needed inside helpers
module line() color("Black") cylinder(r=1, h=10, center=true);
scale(0.5) {
translate([-30,0,-40]) {
intersected();
translate([-15,0,-35]) body();
translate([15,0,-35]) intersector();
translate([-7.5,0,-17.5]) rotate([0,30,0]) line();
translate([7.5,0,-17.5]) rotate([0,-30,0]) line();
}
translate([30,0,-40]) {
holes();
translate([-10,0,-35]) holeA();
translate([10,0,-35]) holeB();
translate([30,0,-35]) holeC();
translate([5,0,-17.5]) rotate([0,-20,0]) line();
translate([-5,0,-17.5]) rotate([0,30,0]) line();
translate([15,0,-17.5]) rotate([0,-45,0]) line();
}
translate([-20,0,-22.5]) rotate([0,45,0]) line();
translate([20,0,-22.5]) rotate([0,-45,0]) line();
}
}
echo(version=version());
// Written by Marius Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

32
examples/Basics/CSG.scad Normal file
View file

@ -0,0 +1,32 @@
// CSG.scad - Basic example of CSG usage
translate([-24,0,0]) {
union() {
cube(15, center=true);
sphere(10);
}
}
intersection() {
cube(15, center=true);
sphere(10);
}
translate([24,0,0]) {
difference() {
cube(15, center=true);
sphere(10);
}
}
echo(version=version());
// Written by Marius Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,21 +1,27 @@
echo(version=version());
// LetterBlock.scad - Basic usage of text() and linear_extrude()
// Module instantiation
LetterBlock("M");
// Module definition.
// size=30 defines an optional parameter with a default value.
module LetterBlock(letter, size=30) {
difference() {
translate([0,0,size/4])
cube([size,size,size/2], center=true);
translate([0,0,size/6])
linear_extrude(height=size, convexity=3)
translate([0,0,size/4]) cube([size,size,size/2], center=true);
translate([0,0,size/6]) {
// convexity is needed for correct preview
// since characters can be highly concave
linear_extrude(height=size, convexity=4)
text(letter,
size=size*22/30,
font="Tahoma",
halign="center",
valign="center");
}
}
}
LetterBlock("M");
echo(version=version());
// Written by Marius Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all

View file

@ -1,42 +0,0 @@
// difference_sphere.scad - Example for difference() usage in OpenSCAD
echo(version=version());
module difference_sphere()
{
function r_from_dia(d) = d / 2;
module rotcy(rot, r, h) {
rotate(90, rot)
cylinder(r = r, h = h, center = true);
}
difference() {
sphere(r = r_from_dia(size));
rotcy([0, 0, 0], cy_r, cy_h);
rotcy([1, 0, 0], cy_r, cy_h);
rotcy([0, 1, 0], cy_r, cy_h);
}
size = 50;
hole = 25;
cy_r = r_from_dia(hole);
cy_h = r_from_dia(size * 2.5);
}
difference_sphere();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,39 +0,0 @@
// intersection.scad - Example for intersection() usage in OpenSCAD
echo(version=version());
module example_intersection()
{
intersection() {
difference() {
union() {
cube([30, 30, 30], center = true);
translate([0, 0, -25])
cube([15, 15, 50], center = true);
}
union() {
cube([50, 10, 10], center = true);
cube([10, 50, 10], center = true);
cube([10, 10, 50], center = true);
}
}
translate([0, 0, 5])
cylinder(h = 50, r1 = 20, r2 = 5, center = true);
}
}
example_intersection();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,36 @@
echo(version=version());
// simple 2D -> 3D extrusion of a rectangle
color("red")
translate([0, -30, 0])
linear_extrude(height = 20)
square([20, 10], center = true);
// using the scale parameter a frustum can be constructed
color("green")
translate([-30, 0, 0])
linear_extrude(height = 20, scale = 0.2)
square([20, 10], center = true);
// with twist the extruded shape will rotate around the Z axis
color("cyan")
translate([30, 0, 0])
linear_extrude(height = 20, twist = 90)
square([20, 10], center = true);
// combining both relatively complex shapes can be created
color("gray")
translate([0, 30, 0])
linear_extrude(height = 40, twist = -360, scale = 0, center = true, slices = 200)
square([20, 10], center = true);
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

35
examples/Basics/logo.scad Normal file
View file

@ -0,0 +1,35 @@
// logo.scad - Basic example of module, top-level variable and $fn usage
Logo(50);
// The $fn parameter will influence all objects inside this module
// It can, optionally, be overridden when instantiating the module
module Logo(size=50, $fn=100) {
// Temporary variables
hole = size/2;
cylinderHeight = size * 1.25;
// One positive object (sphere) and three negative objects (cylinders)
difference() {
sphere(d=size);
cylinder(d=hole, h=cylinderHeight, center=true);
// The '#' operator highlights the object
#rotate([90, 0, 0]) cylinder(d=hole, h=cylinderHeight, center=true);
rotate([0, 90, 0]) cylinder(d=hole, h=cylinderHeight, center=true);
}
}
echo(version=version());
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,51 +1,35 @@
// logo_and_text.scad - Example for text() usage in OpenSCAD
// logo_and_text.scad - Example for use<> and text()
echo(version=version());
use <logo.scad> // Imports the Logo() module from logo.scad into this namespace
// Set the initial viewport parameters
$vpr = [90, 0, 0];
$vpt = [250, 0, 80];
$vpd = 500;
r = 60;
hole = 30;
logosize = 120;
module t(t, s = 18, style = "") {
rotate([90, 0, 0])
linear_extrude(height = 1)
text(t, size = s, font = str("Liberation Serif", style), $fn = 16);
}
module cut() {
cylinder(r = hole, h = 2.5 * r, center = true, $fn = 60);
}
module logo() {
difference() {
sphere(r = r, $fn = 120);
cut();
rotate([0, 90, 0]) cut();
#rotate([90, 0, 0]) cut();
}
}
module green() {
color([81/255, 142/255, 4/255]) children();
}
module black() {
color([0, 0, 0]) children();
}
translate([110, 0, 80]) {
translate([0, 0, 30]) rotate([25, 25, -40]) logo();
translate([100, 0, 40]) green() t("Open", 42, ":style=Bold");
translate([242, 0, 40]) black() t("SCAD", 42, ":style=Bold");
translate([100, 0, -10]) black() t("The Programmers");
translate([160, 0, -40]) black() t("Solid 3D CAD Modeller");
translate([0, 0, 30]) rotate([25, 25, -40]) Logo(logosize);
translate([100, 0, 40]) green() t("Open", 42, ":style=Bold");
translate([247, 0, 40]) black() t("SCAD", 42, ":style=Bold");
translate([100, 0, 0]) black() t("The Programmers");
translate([160, 0, -30]) black() t("Solid 3D CAD Modeller");
}
// Helper to create 3D text with correct font and orientation
module t(t, s = 18, style = "") {
rotate([90, 0, 0])
linear_extrude(height = 1)
text(t, size = s, font = str("Liberation Sans", style), $fn = 16);
}
// Color helpers
module green() color([81/255, 142/255, 4/255]) children();
module black() color([0, 0, 0]) children();
echo(version=version());
// Written in 2014 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all

View file

@ -0,0 +1,64 @@
echo(version=version());
%import("projection.stl");
// projection() without the cut = true parameter will project
// the outline of the object onto the X/Y plane. The result is
// a 2D shape.
color("red")
translate([0, 0, -20])
linear_extrude(height = 2, center = true)
difference() {
square(30, center = true);
projection()
import("projection.stl");
}
color("green")
rotate([0, 90, 0])
translate([0, 0, -20])
linear_extrude(height = 2, center = true)
difference() {
square(30, center = true);
projection()
rotate([0, 90, 0])
import("projection.stl");
}
color("cyan")
rotate([-90, 0, 0])
translate([0, 0, 20])
linear_extrude(height = 2, center = true)
difference() {
square(30, center = true);
projection()
rotate([90, 0, 0])
import("projection.stl");
}
// Including the cut = true uses the outline of the cut at
// the X/Y plane.at Z = 0. This can make internal features
// of the model visible.
color("yellow", 0.5)
translate([0, 0, 20])
linear_extrude(height = 2, center = true)
difference() {
square(30, center = true);
projection(cut = true)
import("projection.stl");
}
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

29122
examples/Basics/projection.stl Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,35 @@
echo(version=version());
// rotate_extrude() always rotates the 2D shape 360 degrees
// around the Z axis. Note that the 2D shape must be either
// completely on the positive or negative side of the X axis.
color("red")
rotate_extrude()
translate([10, 0])
square(5);
// rotate_extrude() uses the global $fn/$fa/$fs settings, but
// it's possible to give a different value as parameter.
color("cyan")
translate([40, 0, 0])
rotate_extrude($fn = 80)
text(" J");
// Using a shape that touches the X axis is allowed and produces
// 3D objects that don't have a hole in the center.
color("green")
translate([0, 30, 0])
rotate_extrude($fn = 80)
polygon( points=[[0,0],[8,4],[4,8],[4,12],[12,16],[0,20]] );
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -11,30 +11,30 @@ letter_height = 5;
o = cube_size / 2 - letter_height / 2;
module letter(l) {
// Use linear_extrude() to make the letters 3D objects as they
// are only 2D shapes when only using text()
linear_extrude(height = letter_height) {
text(l, size = letter_size, font = font, halign = "center", valign = "center", $fn = 16);
}
// Use linear_extrude() to make the letters 3D objects as they
// are only 2D shapes when only using text()
linear_extrude(height = letter_height) {
text(l, size = letter_size, font = font, halign = "center", valign = "center", $fn = 16);
}
}
difference() {
union() {
color("gray") cube(cube_size, center = true);
translate([0, -o, 0]) rotate([90, 0, 0]) letter("C");
translate([o, 0, 0]) rotate([90, 0, 90]) letter("U");
translate([0, o, 0]) rotate([90, 0, 180]) letter("B");
translate([-o, 0, 0]) rotate([90, 0, -90]) letter("E");
}
union() {
color("gray") cube(cube_size, center = true);
translate([0, -o, 0]) rotate([90, 0, 0]) letter("C");
translate([o, 0, 0]) rotate([90, 0, 90]) letter("U");
translate([0, o, 0]) rotate([90, 0, 180]) letter("B");
translate([-o, 0, 0]) rotate([90, 0, -90]) letter("E");
}
// Put some symbols on top and bottom using symbols from the
// Unicode symbols table.
// (see https://en.wikipedia.org/wiki/Miscellaneous_Symbols)
//
// Note that depending on the font used, not all the symbols
// are actually available.
translate([0, 0, o]) letter("\u263A");
translate([0, 0, -o - letter_height]) letter("\u263C");
// Put some symbols on top and bottom using symbols from the
// Unicode symbols table.
// (see https://en.wikipedia.org/wiki/Miscellaneous_Symbols)
//
// Note that depending on the font used, not all the symbols
// are actually available.
translate([0, 0, o]) letter("\u263A");
translate([0, 0, -o - letter_height]) letter("\u263C");
}

View file

@ -1,37 +0,0 @@
// translate.scad - Example for translate() usage in OpenSCAD
echo(version=version());
module example_translate()
{
translate([0, 0, -120]) {
difference() {
cylinder(h = 50, r = 100);
translate([0, 0, 10]) cylinder(h = 50, r = 80);
translate([100, 0, 35]) cube(50, center = true);
}
for (i = [0:5]) {
echo(360*i/6, sin(360*i/6)*80, cos(360*i/6)*80);
translate([sin(360*i/6)*80, cos(360*i/6)*80, 0 ])
cylinder(h = 200, r=10);
}
translate([0, 0, 200])
cylinder(h = 80, r1 = 120, r2 = 0);
}
}
example_translate();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,77 +0,0 @@
echo(version=version());
module cutout()
{
intersection()
{
rotate(90, [1, 0, 0])
translate([0, 0, -50])
linear_extrude(height = 100, convexity = 1)
import(file = "cut_view.dxf", layer = "cutout1");
rotate(90, [0, 0, 1])
rotate(90, [1, 0, 0])
translate([0, 0, -50])
linear_extrude(height = 100, convexity = 2)
import(file = "cut_view.dxf", layer = "cutout2");
}
}
module clip()
{
difference() {
// NB! We have to use the deprecated module here since the "dorn"
// layer contains an open polyline, which is not yet supported
// by the import() module.
rotate_extrude(convexity = 3)
import(file = "cut_view.dxf", layer="dorn");
for (r = [0, 90])
rotate(r, [0, 0, 1])
cutout();
}
}
module cutview()
{
difference()
{
difference()
{
translate([0, 0, -10])
clip();
rotate(20, [0, 0, 1])
rotate(-20, [0, 1, 0])
translate([18, 0, 0])
cube(30, center = true);
}
# render(convexity = 5) intersection()
{
translate([0, 0, -10])
clip();
rotate(20, [0, 0, 1])
rotate(-20, [0, 1, 0])
translate([18, 0, 0])
cube(30, center = true);
}
}
}
translate([0, 0, -10])
clip();
// cutview();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,42 +0,0 @@
echo(version=version());
bodywidth = dxf_dim(file = "fan_view.dxf", name = "bodywidth");
fanwidth = dxf_dim(file = "fan_view.dxf", name = "fanwidth");
platewidth = dxf_dim(file = "fan_view.dxf", name = "platewidth");
fan_side_center = dxf_cross(file = "fan_view.dxf", layer = "fan_side_center");
fanrot = dxf_dim(file = "fan_view.dxf", name = "fanrot");
% linear_extrude(height = bodywidth, center = true, convexity = 10)
import(file = "fan_view.dxf", layer = "body");
% for (z = [+(bodywidth/2 + platewidth/2),
-(bodywidth/2 + platewidth/2)])
{
translate([0, 0, z])
linear_extrude(height = platewidth, center = true, convexity = 10)
import(file = "fan_view.dxf", layer = "plate");
}
intersection()
{
linear_extrude(height = fanwidth, center = true, convexity = 10, twist = -fanrot)
import(file = "fan_view.dxf", layer = "fan_top");
// NB! We have to use the deprecated module here since the "fan_side"
// layer contains an open polyline, which is not yet supported
// by the import() module.
rotate_extrude(convexity = 10)
import(file = "fan_view.dxf", layer = "fan_side", origin = fan_side_center);
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,45 +0,0 @@
echo(version=version());
difference()
{
intersection()
{
translate([ -25, -25, -25])
linear_extrude(height = 50, convexity = 3)
import(file = "text.dxf", layer = "G");
rotate(90, [1, 0, 0])
translate([ -25, -125, -25])
linear_extrude(height = 50, convexity = 3)
import(file = "text.dxf", layer = "E");
rotate(90, [0, 1, 0])
translate([ -125, -125, -25])
linear_extrude(height = 50, convexity = 3)
import(file = "text.dxf", layer = "B");
}
intersection()
{
translate([ -125, -25, -26])
linear_extrude(height = 52, convexity = 1)
import(file = "text.dxf", layer = "X");
rotate(90, [0, 1, 0])
translate([ -125, -25, -26])
linear_extrude(height = 52, convexity = 1)
import(file = "text.dxf", layer = "X");
}
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,35 @@
echo(version=version());
// Functions can be defined to simplify code using lots of
// calculations.
// Simple example with a single function argument (which should
// be a number) and returning a number calculated based on that.
function f(x) = 0.5 * x + 1;
color("red")
for (a = [ -100 : 5 : 100 ])
translate([a, f(a), 0]) cube(2, center = true);
// Functions can call other functions and return complex values
// too. In this case a 3 element vector is returned which can
// be used as point in 3D space or as vector (in the mathematical
// meaning) for translations and other transformations.
function g(x) = [ 5 * x + 20, f(x) * f(x) - 50, 0 ];
color("green")
for (a = [ -200 : 10 : 200 ])
translate(g(a / 8)) sphere(1);
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,47 @@
// list_comprehensions.scad - Examples of list comprehension usage
// Basic list comprehension:
// Returns a 2D vertex per iteration of the for loop
// Note: subsequent assignments inside the for loop is allowed
module ngon(num, r) {
polygon([for (i=[0:num-1], a=i*360/num) [ r*cos(a), r*sin(a) ]]);
}
ngon(3, 10);
translate([20,0]) ngon(6, 8);
translate([36,0]) ngon(10, 6);
// More complex list comprehension:
// Similar to ngon(), but uses an inner function to calculate
// the vertices. the let() keyword allows assignment of temporary variables.
module rounded_ngon(num, r, rounding = 0) {
function v(a) = let (d = 360/num, v = floor((a+d/2)/d)*d) (r-rounding) * [cos(v), sin(v)];
polygon([for (a=[0:360-1]) v(a) + rounding*[cos(a),sin(a)]]);
}
translate([0,22]) rounded_ngon(3, 10, 5);
translate([20,22]) rounded_ngon(6, 8, 4);
translate([36,22]) rounded_ngon(10, 6, 3);
// Gear/star generator
// Uses a list comprehension taking a list of radii to generate a star shape
module star(num, radii) {
function r(a) = (floor(a / 10) % 2) ? 10 : 8;
polygon([for (i=[0:num-1], a=i*360/num, r=radii[i%len(radii)]) [ r*cos(a), r*sin(a) ]]);
}
translate([0,44]) star(20, [6,10]);
translate([20,44]) star(40, [6,8,8,6]);
translate([36,44]) star(30, [3,4,5,6,5,4]);
echo(version=version());
// Written by Marius Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,50 @@
// polygon_areas.scad: Another recursion example
// Draw all geometry
translate([0,20]) color("Red") text("Areas:", size=8, halign="center");
translate([-44,0]) shapeWithArea(3, 10);
translate([-22,0]) shapeWithArea(4, 10);
translate([0,0]) shapeWithArea(6, 10);
translate([22,0]) shapeWithArea(10, 10);
translate([44,0]) shapeWithArea(360, 10);
// One shape with corresponding text
module shapeWithArea(num, r) {
polygon(ngon(num, r));
translate([0,-20])
color("Cyan")
text(str(round(area(ngon(num, r)))), halign="center", size=8);
}
// Simple list comprehension for creating N-gon vertices
function ngon(num, r) =
[for (i=[0:num-1], a=i*360/num) [ r*cos(a), r*sin(a) ]];
// Area of a triangle with the 3rd vertex in the origin
function triarea(v0, v1) = cross(v0, v1) / 2;
// Area of a polygon using the Shoelace formula
function area(vertices) =
let (areas = [let (num=len(vertices))
for (i=[0:num-1])
triarea(vertices[i], vertices[(i+1)%num])
])
sum(areas);
// Recursive helper function: Sums all values in a list.
// In this case, sum all partial areas into the final area.
function sum(values,s=0) =
s == len(values) - 1 ? values[s] : values[s] + sum(values,s+1);
echo(version=version());
// Written in 2015 by Marius Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,25 @@
// recursionscad: Basic recursion example
// Recursive functions are very powerful for calculating values.
// A good number of algorithms make use of recursive definitions,
// e.g the caluclation of the factorial of a number.
// The ternary operator " ? : " is the easiest way to define the
// termination condition.
// Note how the following simple implementation will never terminate
// when called with a negative value. This will produce an error after
// some time when OpenSCAD detects the endless recursive call.
function factorial(n) = n == 0 ? 1 : factorial(n - 1) * n;
color("cyan") text(str("6! = ", factorial(6)), halign = "center");
echo(version=version());
// Written in 2015 by Torsten Paul <Torsten.Paul@gmx.de>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,27 +1,29 @@
// union.scad - Example for union() usage in OpenSCAD
module example001()
{
function r_from_dia(d) = d / 2;
module rotcy(rot, r, h) {
rotate(90, rot)
cylinder(r = r, h = h, center = true);
}
difference() {
sphere(r = r_from_dia(size));
rotcy([0, 0, 0], cy_r, cy_h);
rotcy([1, 0, 0], cy_r, cy_h);
rotcy([0, 1, 0], cy_r, cy_h);
}
size = 50;
hole = 25;
cy_r = r_from_dia(hole);
cy_h = r_from_dia(size * 2.5);
}
echo(version=version());
module example_union()
{
difference() {
union() {
cube([30, 30, 30], center = true);
cube([40, 15, 15], center = true);
cube([15, 40, 15], center = true);
cube([15, 15, 40], center = true);
}
union() {
cube([50, 10, 10], center = true);
cube([10, 50, 10], center = true);
cube([10, 10, 50], center = true);
}
}
}
example_union();
example001();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>

View file

@ -0,0 +1,36 @@
module example002()
{
intersection() {
difference() {
union() {
cube([30, 30, 30], center = true);
translate([0, 0, -25])
cube([15, 15, 50], center = true);
}
union() {
cube([50, 10, 10], center = true);
cube([10, 50, 10], center = true);
cube([10, 10, 50], center = true);
}
}
translate([0, 0, 5])
cylinder(h = 50, r1 = 20, r2 = 5, center = true);
}
}
echo(version=version());
example002();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,16 +1,24 @@
module example003()
{
difference() {
union() {
cube([30, 30, 30], center = true);
cube([40, 15, 15], center = true);
cube([15, 40, 15], center = true);
cube([15, 15, 40], center = true);
}
union() {
cube([50, 10, 10], center = true);
cube([10, 50, 10], center = true);
cube([10, 10, 50], center = true);
}
}
}
echo(version=version());
intersection()
{
linear_extrude(height = 100, center = true, convexity= 3)
import(file = "advance_intersection.dxf");
rotate([0, 90, 0])
linear_extrude(height = 100, center = true, convexity= 3)
import(file = "advance_intersection.dxf");
rotate([90, 0, 0])
linear_extrude(height = 100, center = true, convexity= 3)
import(file = "advance_intersection.dxf");
}
example003();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>

View file

@ -1,14 +1,15 @@
// M.stl is generated from Basics/LetterBlock.scad
module example004()
{
difference() {
cube(30, center = true);
sphere(20);
}
}
echo(version=version());
difference()
{
sphere(20);
translate([ 0, 0.5, +20 ]) rotate([180, 0, 180])
import("M.stl", convexity = 5);
}
example004();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>

View file

@ -0,0 +1,34 @@
module example005()
{
translate([0, 0, -120]) {
difference() {
cylinder(h = 50, r = 100);
translate([0, 0, 10]) cylinder(h = 50, r = 80);
translate([100, 0, 35]) cube(50, center = true);
}
for (i = [0:5]) {
echo(360*i/6, sin(360*i/6)*80, cos(360*i/6)*80);
translate([sin(360*i/6)*80, cos(360*i/6)*80, 0 ])
cylinder(h = 200, r=10);
}
translate([0, 0, 200])
cylinder(h = 80, r1 = 120, r2 = 0);
}
}
echo(version=version());
example005();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,59 @@
module example006()
{
module edgeprofile()
{
render(convexity = 2) difference() {
cube([20, 20, 150], center = true);
translate([-10, -10, 0])
cylinder(h = 80, r = 10, center = true);
translate([-10, -10, +40])
sphere(r = 10);
translate([-10, -10, -40])
sphere(r = 10);
}
}
difference() {
cube(100, center = true);
for (rot = [ [0, 0, 0], [1, 0, 0], [0, 1, 0] ]) {
rotate(90, rot)
for (p = [[+1, +1, 0], [-1, +1, 90], [-1, -1, 180], [+1, -1, 270]]) {
translate([ p[0]*50, p[1]*50, 0 ])
rotate(p[2], [0, 0, 1])
edgeprofile();
}
}
for (i = [
[ 0, 0, [ [0, 0] ] ],
[ 90, 0, [ [-20, -20], [+20, +20] ] ],
[ 180, 0, [ [-20, -25], [-20, 0], [-20, +25], [+20, -25], [+20, 0], [+20, +25] ] ],
[ 270, 0, [ [0, 0], [-25, -25], [+25, -25], [-25, +25], [+25, +25] ] ],
[ 0, 90, [ [-25, -25], [0, 0], [+25, +25] ] ],
[ 0, -90, [ [-25, -25], [+25, -25], [-25, +25], [+25, +25] ] ]
]) {
rotate(i[0], [0, 0, 1])
rotate(i[1], [1, 0, 0])
translate([0, -50, 0])
for (j = i[2]) {
translate([j[0], 0, j[1]]) sphere(10);
}
}
}
}
echo(version=version());
example006();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,72 @@
module cutout()
{
intersection() {
rotate(90, [1, 0, 0])
translate([0, 0, -50])
linear_extrude(height = 100, convexity = 1)
import(file = "example007.dxf", layer = "cutout1");
rotate(90, [0, 0, 1])
rotate(90, [1, 0, 0])
translate([0, 0, -50])
linear_extrude(height = 100, convexity = 2)
import(file = "example007.dxf", layer = "cutout2");
}
}
module clip()
{
difference() {
// NB! We have to use the deprecated module here since the "dorn"
// layer contains an open polyline, which is not yet supported
// by the import() module.
rotate_extrude(file = "example007.dxf",
layer="dorn", convexity = 3);
for (r = [0, 90])
rotate(r, [0, 0, 1])
cutout();
}
}
module cutview()
{
difference() {
difference() {
translate([0, 0, -10]) clip();
rotate(20, [0, 0, 1])
rotate(-20, [0, 1, 0])
translate([18, 0, 0])
cube(30, center = true);
}
# render(convexity = 5) intersection() {
translate([0, 0, -10])
clip();
rotate(20, [0, 0, 1])
rotate(-20, [0, 1, 0])
translate([18, 0, 0])
cube(30, center = true);
}
}
}
echo(version=version());
translate([0, 0, -10]) clip();
// cutview();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,42 @@
echo(version=version());
difference() {
intersection() {
translate([ -25, -25, -25])
linear_extrude(height = 50, convexity = 3)
import(file = "example008.dxf", layer = "G");
rotate(90, [1, 0, 0])
translate([ -25, -125, -25])
linear_extrude(height = 50, convexity = 3)
import(file = "example008.dxf", layer = "E");
rotate(90, [0, 1, 0])
translate([ -125, -125, -25])
linear_extrude(height = 50, convexity = 3)
import(file = "example008.dxf", layer = "B");
}
intersection() {
translate([ -125, -25, -26])
linear_extrude(height = 52, convexity = 1)
import(file = "example008.dxf", layer = "X");
rotate(90, [0, 1, 0])
translate([ -125, -25, -26])
linear_extrude(height = 52, convexity = 1)
import(file = "example008.dxf", layer = "X");
}
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -0,0 +1,40 @@
echo(version=version());
bodywidth = dxf_dim(file = "example009.dxf", name = "bodywidth");
fanwidth = dxf_dim(file = "example009.dxf", name = "fanwidth");
platewidth = dxf_dim(file = "example009.dxf", name = "platewidth");
fan_side_center = dxf_cross(file = "example009.dxf", layer = "fan_side_center");
fanrot = dxf_dim(file = "example009.dxf", name = "fanrot");
% linear_extrude(height = bodywidth, center = true, convexity = 10)
import(file = "example009.dxf", layer = "body");
% for (z = [+(bodywidth/2 + platewidth/2),
-(bodywidth/2 + platewidth/2)]) {
translate([0, 0, z])
linear_extrude(height = platewidth, center = true, convexity = 10)
import(file = "example009.dxf", layer = "plate");
}
intersection() {
linear_extrude(height = fanwidth, center = true, convexity = 10, twist = -fanrot)
import(file = "example009.dxf", layer = "fan_top");
// NB! We have to use the deprecated module here since the "fan_side"
// layer contains an open polyline, which is not yet supported
// by the import() module.
rotate_extrude(file = "example009.dxf", layer = "fan_side",
origin = fan_side_center, convexity = 10);
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,23 +1,17 @@
// surface.scad - Example for surface() usage in OpenSCAD
//
// surface.dat generated using octave:
// example010.dat generated using octave:
// d = (sin(1:0.2:10)' * cos(1:0.2:10)) * 10;
// save("surface.dat", "d");
// save("example010.dat", "d");
echo(version=version());
intersection()
{
surface(file = "surface.dat",
center = true, convexity = 5);
rotate(45, [0, 0, 1])
surface(file = "surface.dat",
center = true, convexity = 5);
intersection() {
surface(file = "example010.dat", center = true, convexity = 5);
rotate(45, [0, 0, 1])
surface(file = "example010.dat", center = true, convexity = 5);
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//

View file

@ -1,20 +1,20 @@
echo(version=version());
polyhedron(
points = [
[10, 0, 0],
[0, 10, 0],
[-10, 0, 0],
[0, -10, 0],
[0, 0, 10]
],
faces = [
[0, 1, 2, 3],
[4, 1, 0],
[4, 2, 1],
[4, 3, 2],
[4, 0, 3]
]
points = [
[10, 0, 0],
[0, 10, 0],
[-10, 0, 0],
[0, -10, 0],
[0, 0, 10]
],
triangles = [
[0, 1, 2, 3],
[4, 1, 0],
[4, 2, 1],
[4, 3, 2],
[4, 0, 3]
]
);
// Written by Clifford Wolf <clifford@clifford.at> and Marius

View file

@ -1,19 +1,15 @@
// difference_cube.scad - Example for difference() usage in OpenSCAD
// example012.stl is generated from Basics/LetterBlock.scad
echo(version=version());
module difference_cube()
{
difference() {
cube(30, center = true);
sphere(20);
}
difference() {
sphere(20);
translate([ -2.92, 0.5, +20 ])
rotate([180, 0, 180])
import("example012.stl", convexity = 5);
}
difference_cube();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//

View file

@ -1,450 +1,450 @@
solid ascii
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 6.347434e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex 6.347434e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -8.527233e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -8.527233e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -8.527233e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 -0.000000e+000
outer loop
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -8.527233e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -9.124922e-001 -4.090940e-001 -0.000000e+000
outer loop
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
endloop
endfacet
facet normal -9.124922e-001 -4.090940e-001 0.000000e+000
outer loop
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
endloop
endfacet
facet normal 9.174094e-001 -3.979447e-001 0.000000e+000
outer loop
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex 2.280978e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 9.174094e-001 -3.979447e-001 0.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex 2.280978e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 0.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 -0.000000e+000
outer loop
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -9.134987e-001 4.068417e-001 0.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 1.500000e+001
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
endloop
endfacet
facet normal -9.134987e-001 4.068417e-001 0.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal -4.979881e-016 1.000000e+000 0.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
endloop
endfacet
facet normal -4.979881e-016 1.000000e+000 0.000000e+000
outer loop
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal 9.149041e-001 4.036714e-001 0.000000e+000
outer loop
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
vertex -9.793542e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal 9.149041e-001 4.036714e-001 0.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 1.500000e+001
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 0.000000e+000
endloop
endfacet
facet normal 1.184238e-016 -1.000000e+000 0.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
endloop
endfacet
facet normal 1.184238e-016 -1.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
facet normal -1.000000e+000 -1.184238e-016 -0.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
endloop
endfacet
facet normal -1.000000e+000 -1.184238e-016 0.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 1.530720e+001 0.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -9.793542e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 -1.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 -1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
solid ascii
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 6.347434e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex 6.347434e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex -8.527233e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -8.527233e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -8.527233e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 -0.000000e+000
outer loop
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 5.000000e+000
vertex -8.527233e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -9.124922e-001 -4.090940e-001 -0.000000e+000
outer loop
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
endloop
endfacet
facet normal -9.124922e-001 -4.090940e-001 0.000000e+000
outer loop
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 5.000000e+000
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
endloop
endfacet
facet normal 9.174094e-001 -3.979447e-001 0.000000e+000
outer loop
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex 2.280978e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 9.174094e-001 -3.979447e-001 0.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex -3.033951e+000 -9.213713e-001 5.000000e+000
vertex 2.280978e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 0.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 -0.000000e+000
outer loop
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 5.000000e+000
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 5.000000e+000
vertex 3.422440e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -9.134987e-001 4.068417e-001 0.000000e+000
outer loop
vertex 3.422440e+000 8.281660e+000 1.500000e+001
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
endloop
endfacet
facet normal -9.134987e-001 4.068417e-001 0.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex 3.422440e+000 8.281660e+000 5.000000e+000
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal -4.979881e-016 1.000000e+000 0.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
endloop
endfacet
facet normal -4.979881e-016 1.000000e+000 0.000000e+000
outer loop
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -2.320538e+000 -4.613285e+000 5.000000e+000
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
endloop
endfacet
facet normal 9.149041e-001 4.036714e-001 0.000000e+000
outer loop
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
vertex -9.793542e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal 9.149041e-001 4.036714e-001 0.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 5.000000e+000
vertex -9.793542e+000 8.281660e+000 5.000000e+000
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex -9.793542e+000 8.281660e+000 1.500000e+001
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -1.000000e+000 -0.000000e+000 -0.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -9.793542e+000 8.281660e+000 5.000000e+000
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 5.000000e+000
vertex -1.252235e+001 1.133150e+001 5.000000e+000
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 1.000000e+000 -0.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 0.000000e+000
endloop
endfacet
facet normal 1.184238e-016 -1.000000e+000 0.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
endloop
endfacet
facet normal 1.184238e-016 -1.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
facet normal -1.000000e+000 -1.184238e-016 -0.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
endloop
endfacet
facet normal -1.000000e+000 -1.184238e-016 0.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 1.000000e+000 0.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 1.530720e+001 0.000000e+000
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
vertex -1.843220e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -1.252235e+001 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -2.320538e+000 -4.613285e+000 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -9.793542e+000 -1.067730e+001 1.500000e+001
vertex -4.104071e+000 -4.613285e+000 1.500000e+001
vertex -9.793542e+000 8.281660e+000 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex -3.033951e+000 -9.213713e-001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal -0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 1.500000e+001
vertex -1.252235e+001 1.133150e+001 1.500000e+001
vertex -8.527233e+000 1.133150e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 2.280978e+000 1.133150e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 6.347434e+000 1.133150e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
vertex 3.422440e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 1.000000e+000
outer loop
vertex 1.156780e+001 -1.469280e+001 1.500000e+001
vertex 1.156780e+001 1.530720e+001 1.500000e+001
vertex 6.347434e+000 -1.067730e+001 1.500000e+001
endloop
endfacet
facet normal 0.000000e+000 -0.000000e+000 -1.000000e+000
outer loop
vertex -1.843220e+001 1.530720e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 -1.000000e+000
outer loop
vertex -1.843220e+001 -1.469280e+001 0.000000e+000
vertex 1.156780e+001 1.530720e+001 0.000000e+000
vertex 1.156780e+001 -1.469280e+001 0.000000e+000
endloop
endfacet
endsolid

View file

@ -0,0 +1,24 @@
echo(version=version());
intersection() {
linear_extrude(height = 100, center = true, convexity= 3)
import(file = "example013.dxf");
rotate([0, 90, 0])
linear_extrude(height = 100, center = true, convexity= 3)
import(file = "example013.dxf");
rotate([90, 0, 0])
linear_extrude(height = 100, center = true, convexity= 3)
import(file = "example013.dxf");
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,12 +1,12 @@
echo(version=version());
intersection_for(i = [
[0, 0, 0],
[10, 20, 300],
[200, 40, 57],
[20, 88, 57]
])
rotate(i) cube([100, 20, 20], center = true);
[0, 0, 0],
[10, 20, 300],
[200, 40, 57],
[20, 88, 57]
])
rotate(i) cube([100, 20, 20], center = true);
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>

View file

@ -1,29 +1,26 @@
echo(version=version());
module shape()
{
difference()
{
translate([ -35, -35 ]) intersection()
{
union() {
difference() {
square(100, true);
square(50, true);
}
translate([ 50, 50 ])
square(15, true);
}
rotate(45) translate([ 0, -15 ]) square([ 100, 30 ]);
}
rotate(-45) scale([ 0.7, 1.3 ]) circle(5);
}
import(file = "flat_body.dxf", layer = "body",
convexity = 6, scale=2);
difference() {
translate([ -35, -35 ]) intersection() {
union() {
difference() {
square(100, true);
square(50, true);
}
translate([ 50, 50 ]) square(15, true);
}
rotate(45) translate([ 0, -15 ]) square([ 100, 30 ]);
}
rotate(-45) scale([ 0.7, 1.3 ]) circle(5);
}
import(file = "example009.dxf", layer = "body", convexity = 6, scale=2);
}
echo(version=version());
// linear_extrude(convexity = 10, center = true)
shape();

View file

@ -1,34 +1,34 @@
// chopped_blocks.stl is derived from Basics/LetterBlock.scad
// The exported STL was converted to binary using MeshLab
echo(version=version());
module blk1() {
cube([ 65, 28, 28 ], center = true);
cube([ 65, 28, 28 ], center = true);
}
module blk2() {
difference() {
translate([ 0, 0, 7.5 ])
cube([ 60, 28, 14 ], center = true);
cube([ 8, 32, 32 ], center = true);
}
difference() {
translate([ 0, 0, 7.5 ]) cube([ 60, 28, 14 ], center = true);
cube([ 8, 32, 32 ], center = true);
}
}
module chop() {
translate([ -18, 0, 0 ])
import(file = "chopped_blocks.stl", convexity = 12);
translate([ -18, 0, 0 ])
import(file = "example016.stl", convexity = 12);
}
echo(version=version());
difference() {
blk1();
for (alpha = [0, 90, 180, 270]) {
rotate(alpha, [ 1, 0, 0]) render(convexity = 12)
difference() {
blk2();
chop();
}
}
blk1();
for (alpha = [0, 90, 180, 270]) {
rotate(alpha, [ 1, 0, 0])
render(convexity = 12)
difference() {
blk2();
chop();
}
}
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius

View file

@ -0,0 +1,174 @@
// To render the DXF file from the command line:
// openscad -o example017.dxf -D'mode="parts"' example017.scad
// mode = "parts";
// mode = "exploded";
mode = "assembled";
thickness = 6;
locklen1 = 15;
locklen2 = 10;
boltlen = 15;
midhole = 10;
inner1_to_inner2 = 50;
total_height = 80;
module shape_tripod()
{
x1 = 0;
x2 = x1 + thickness;
x3 = x2 + locklen1;
x4 = x3 + thickness;
x5 = x4 + inner1_to_inner2;
x6 = x5 - thickness;
x7 = x6 - locklen2;
x8 = x7 - thickness;
x9 = x8 - thickness;
x10 = x9 - thickness;
y1 = 0;
y2 = y1 + thickness;
y3 = y2 + thickness;
y4 = y3 + thickness;
y5 = y3 + total_height - 3*thickness;
y6 = y5 + thickness;
union() {
difference() {
polygon([
[ x1, y2 ], [ x2, y2 ],
[ x2, y1 ], [ x3, y1 ], [ x3, y2 ],
[ x4, y2 ], [ x4, y1 ], [ x5, y1 ],
[ x5 + thickness, y3 ], [ x5, y4 ],
[ x5, y5 ],
[ x6, y5 ], [ x6, y6 ], [ x7, y6 ], [ x7, y5 ], [ x8, y5 ],
[ x8, y6 ], [ x9, y5 ],
[ x9, y4 ], [ x10, y3 ],
[ x2, y3 ]
]);
translate([ x10, y4 ]) circle(thickness);
translate([ x5 + thickness, y4 ]) circle(thickness);
}
translate([ x5, y1 ]) square([ boltlen - thickness, thickness*2 ]);
translate([ x5 + boltlen - thickness, y2 ]) circle(thickness);
translate([ x2, y2 ]) intersection() {
circle(thickness);
translate([ -thickness*2, 0 ]) square(thickness*2);
}
translate([ x8, y5 ]) intersection() {
circle(thickness);
translate([ -thickness*2, 0 ]) square(thickness*2);
}
}
}
module shape_inner_disc()
{
difference() {
circle(midhole + boltlen + 2*thickness + locklen2);
for (alpha = [ 0, 120, 240 ]) {
rotate(alpha) translate([ 0, midhole + boltlen + thickness + locklen2/2 ]) square([ thickness, locklen2 ], true);
}
circle(midhole + boltlen);
}
}
module shape_outer_disc()
{
difference() {
circle(midhole + boltlen + inner1_to_inner2 + 2*thickness + locklen1);
for (alpha = [ 0, 120, 240 ]) {
rotate(alpha) translate([ 0, midhole + boltlen + inner1_to_inner2 + thickness + locklen1/2 ]) square([ thickness, locklen1 ], true);
}
circle(midhole + boltlen + inner1_to_inner2);
}
}
module parts()
{
tripod_x_off = locklen1 - locklen2 + inner1_to_inner2;
tripod_y_off = max(midhole + boltlen + inner1_to_inner2 + 4*thickness + locklen1, total_height);
shape_inner_disc();
shape_outer_disc();
for (s = [ [1,1], [-1,1], [1,-1] ]) {
scale(s) translate([ tripod_x_off, -tripod_y_off ]) shape_tripod();
}
}
module exploded()
{
translate([ 0, 0, total_height + 2*thickness ]) linear_extrude(height = thickness, convexity = 4) shape_inner_disc();
linear_extrude(height = thickness, convexity = 4) shape_outer_disc();
color([ 0.7, 0.7, 1 ]) for (alpha = [ 0, 120, 240 ]) {
rotate(alpha)
translate([ 0, thickness*2 + locklen1 + inner1_to_inner2 + boltlen + midhole, 1.5*thickness ])
rotate([ 90, 0, -90 ])
linear_extrude(height = thickness, convexity = 10, center = true) shape_tripod();
}
}
module bottle()
{
r = boltlen + midhole;
h = total_height - thickness*2;
rotate_extrude(convexity = 2) {
square([ r, h ]);
translate([ 0, h ]) {
intersection() {
square([ r, r ]);
scale([ 1, 0.7 ]) circle(r);
}
}
translate([ 0, h+r ]) {
intersection() {
translate([ 0, -r/2 ]) square([ r/2, r ]);
circle(r/2);
}
}
}
}
module assembled()
{
translate([ 0, 0, total_height - thickness ]) linear_extrude(height = thickness, convexity = 4) shape_inner_disc();
linear_extrude(height = thickness, convexity = 4) shape_outer_disc();
color([ 0.7, 0.7, 1 ]) for (alpha = [ 0, 120, 240 ]) {
rotate(alpha)
translate([ 0, thickness*2 + locklen1 + inner1_to_inner2 + boltlen + midhole, 0 ])
rotate([ 90, 0, -90 ])
linear_extrude(height = thickness, convexity = 10, center = true) shape_tripod();
}
% translate([ 0, 0, thickness*2]) bottle();
}
echo(version=version());
if (mode == "parts") parts();
if (mode == "exploded") exploded();
if (mode == "assembled") assembled();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,26 +1,26 @@
echo(version=version());
module step(len, mod)
{
for (i = [0:$children-1])
translate([ len*(i - ($children-1)/2), 0, 0 ]) children((i+mod) % $children);
for (i = [0:$children-1]) {
translate([ len*(i - ($children-1)/2), 0, 0 ]) children((i+mod) % $children);
}
}
for (i = [1:4])
{
translate([0, -250+i*100, 0]) step(100, i)
{
sphere(30);
cube(60, true);
cylinder(r = 30, h = 50, center = true);
union() {
cube(45, true);
rotate([45, 0, 0]) cube(50, true);
rotate([0, 45, 0]) cube(50, true);
rotate([0, 0, 45]) cube(50, true);
}
}
echo(version=version());
for (i = [1:4]) {
translate([0, -250+i*100, 0]) step(100, i) {
sphere(30);
cube(60, true);
cylinder(r = 30, h = 50, center = true);
union() {
cube(45, true);
rotate([45, 0, 0]) cube(50, true);
rotate([0, 45, 0]) cube(50, true);
rotate([0, 0, 45]) cube(50, true);
}
}
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius

View file

@ -1,16 +1,15 @@
echo(version=version());
function get_cylinder_h(p) = lookup(p, [
[ -200, 5 ],
[ -50, 20 ],
[ -20, 18 ],
[ +80, 25 ],
[ +150, 2 ]
]);
[ -200, 5 ],
[ -50, 20 ],
[ -20, 18 ],
[ +80, 25 ],
[ +150, 2 ]
]);
echo(version=version());
for (i = [-100:5:+100]) {
// echo(i, get_cylinder_h(i));
translate([ i, 0, -30 ]) cylinder(r1 = 6, r2 = 2, h = get_cylinder_h(i)*3);
translate([ i, 0, -30 ]) cylinder(r1 = 6, r2 = 2, h = get_cylinder_h(i)*3);
}
// Written by Clifford Wolf <clifford@clifford.at> and Marius

View file

@ -0,0 +1,90 @@
module screw(type = 2, r1 = 15, r2 = 20, n = 7, h = 100, t = 8)
{
linear_extrude(height = h, twist = 360*t/n, convexity = t)
difference() {
circle(r2);
for (i = [0:n-1]) {
if (type == 1) rotate(i*360/n) polygon([
[ 2*r2, 0 ],
[ r2, 0 ],
[ r1*cos(180/n), r1*sin(180/n) ],
[ r2*cos(360/n), r2*sin(360/n) ],
[ 2*r2*cos(360/n), 2*r2*sin(360/n) ],
]);
if (type == 2) rotate(i*360/n) polygon([
[ 2*r2, 0 ],
[ r2, 0 ],
[ r1*cos(90/n), r1*sin(90/n) ],
[ r1*cos(180/n), r1*sin(180/n) ],
[ r2*cos(270/n), r2*sin(270/n) ],
[ 2*r2*cos(270/n), 2*r2*sin(270/n) ],
]);
}
}
}
module nut(type = 2, r1 = 16, r2 = 21, r3 = 30, s = 6, n = 7, h = 100/5, t = 8/5)
{
difference() {
cylinder($fn = s, r = r3, h = h);
translate([ 0, 0, -h/2 ]) screw(type, r1, r2, n, h*2, t*2);
}
}
module spring(r1 = 100, r2 = 10, h = 100, hr = 12)
{
stepsize = 1/16;
module segment(i1, i2) {
alpha1 = i1 * 360*r2/hr;
alpha2 = i2 * 360*r2/hr;
len1 = sin(acos(i1*2-1))*r2;
len2 = sin(acos(i2*2-1))*r2;
if (len1 < 0.01) {
polygon([
[ cos(alpha1)*r1, sin(alpha1)*r1 ],
[ cos(alpha2)*(r1-len2), sin(alpha2)*(r1-len2) ],
[ cos(alpha2)*(r1+len2), sin(alpha2)*(r1+len2) ]
]);
}
if (len2 < 0.01) {
polygon([
[ cos(alpha1)*(r1+len1), sin(alpha1)*(r1+len1) ],
[ cos(alpha1)*(r1-len1), sin(alpha1)*(r1-len1) ],
[ cos(alpha2)*r1, sin(alpha2)*r1 ],
]);
}
if (len1 >= 0.01 && len2 >= 0.01) {
polygon([
[ cos(alpha1)*(r1+len1), sin(alpha1)*(r1+len1) ],
[ cos(alpha1)*(r1-len1), sin(alpha1)*(r1-len1) ],
[ cos(alpha2)*(r1-len2), sin(alpha2)*(r1-len2) ],
[ cos(alpha2)*(r1+len2), sin(alpha2)*(r1+len2) ]
]);
}
}
linear_extrude(height = 100, twist = 180*h/hr,
$fn = (hr/r2)/stepsize, convexity = 5) {
for (i = [ stepsize : stepsize : 1+stepsize/2 ])
segment(i-stepsize, min(i, 1));
}
}
echo(version=version());
translate([ -30, 0, 0 ]) screw();
translate([ 30, 0, 0 ]) nut();
spring();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,34 +1,34 @@
echo(version=version());
module thing()
{
$fa = 30;
difference() {
sphere(r = 25);
cylinder(h = 62.5, r1 = 12.5, r2 = 6.25, center = true);
rotate(90, [ 1, 0, 0 ]) cylinder(h = 62.5,
r1 = 12.5, r2 = 6.25, center = true);
rotate(90, [ 0, 1, 0 ]) cylinder(h = 62.5,
r1 = 12.5, r2 = 6.25, center = true);
}
$fa = 30;
difference() {
sphere(r = 25);
cylinder(h = 62.5, r1 = 12.5, r2 = 6.25, center = true);
rotate(90, [ 1, 0, 0 ]) cylinder(h = 62.5,
r1 = 12.5, r2 = 6.25, center = true);
rotate(90, [ 0, 1, 0 ]) cylinder(h = 62.5,
r1 = 12.5, r2 = 6.25, center = true);
}
}
module demo_proj()
{
linear_extrude(center = true, height = 0.5) projection(cut = false) thing();
% thing();
linear_extrude(center = true, height = 0.5) projection(cut = false) thing();
% thing();
}
module demo_cut()
{
for (i=[-20:5:+20]) {
rotate(-30, [ 1, 1, 0 ]) translate([ 0, 0, -i ])
linear_extrude(center = true, height = 0.5) projection(cut = true)
translate([ 0, 0, i ]) rotate(+30, [ 1, 1, 0 ]) thing();
}
% thing();
for (i=[-20:5:+20]) {
rotate(-30, [ 1, 1, 0 ]) translate([ 0, 0, -i ])
linear_extrude(center = true, height = 0.5) projection(cut = true)
translate([ 0, 0, i ]) rotate(+30, [ 1, 1, 0 ]) thing();
}
% thing();
}
echo(version=version());
translate([ -30, 0, 0 ]) demo_proj();
translate([ +30, 0, 0 ]) demo_cut();

View file

@ -0,0 +1,48 @@
// size is a vector [w, h, d]
module roundedBox(size, radius, sidesonly)
{
rot = [ [0,0,0], [90,0,90], [90,90,0] ];
if (sidesonly) {
cube(size - [2*radius,0,0], true);
cube(size - [0,2*radius,0], true);
for (x = [radius-size[0]/2, -radius+size[0]/2],
y = [radius-size[1]/2, -radius+size[1]/2]) {
translate([x,y,0]) cylinder(r=radius, h=size[2], center=true);
}
}
else {
cube([size[0], size[1]-radius*2, size[2]-radius*2], center=true);
cube([size[0]-radius*2, size[1], size[2]-radius*2], center=true);
cube([size[0]-radius*2, size[1]-radius*2, size[2]], center=true);
for (axis = [0:2]) {
for (x = [radius-size[axis]/2, -radius+size[axis]/2],
y = [radius-size[(axis+1)%3]/2, -radius+size[(axis+1)%3]/2]) {
rotate(rot[axis])
translate([x,y,0])
cylinder(h=size[(axis+2)%3]-2*radius, r=radius, center=true);
}
}
for (x = [radius-size[0]/2, -radius+size[0]/2],
y = [radius-size[1]/2, -radius+size[1]/2],
z = [radius-size[2]/2, -radius+size[2]/2]) {
translate([x,y,z]) sphere(radius);
}
}
}
echo(version=version());
translate([-15,0,0])roundedBox([20,30,40], 5, true);
translate([15,0,0]) roundedBox([20,30,40], 5, false);
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -21,8 +21,7 @@ module clock_hour_words(word_offset=20.0,word_height=2.0) {
clock_hour_words(word_offset=16.0,word_height=5.0);
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
// Written by Andrew Plumb
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the

View file

@ -1,450 +0,0 @@
solid OpenSCAD_Model
facet normal -1 0 0
outer loop
vertex -15 15 0
vertex -15 -15 0
vertex -15 -15 15
endloop
endfacet
facet normal -1 -0 -0
outer loop
vertex -15 15 15
vertex -15 15 0
vertex -15 -15 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 6.88264 -10.8438 15
vertex -6.49335 -10.8438 15
vertex 15 -15 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -9.24535 11.3642 15
vertex -15 15 15
vertex -9.24535 -10.8438 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5.72964 11.3642 15
vertex -5.22034 11.3642 15
vertex 0.351639 -0.977737 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -15 15 15
vertex -15 -15 15
vertex -9.24535 -10.8438 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5.22034 11.3642 15
vertex -15 15 15
vertex -9.24535 11.3642 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 15 15 15
vertex -15 15 15
vertex -5.22034 11.3642 15
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex 9.82664 11.3642 15
vertex 15 15 15
vertex 5.72964 11.3642 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 15 15 15
vertex -5.22034 11.3642 15
vertex 5.72964 11.3642 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 9.82664 -10.8438 15
vertex 15 15 15
vertex 9.82664 11.3642 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 15 -15 15
vertex 9.82664 -10.8438 15
vertex 6.88264 -10.8438 15
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex 15 -15 15
vertex 15 15 15
vertex 9.82664 -10.8438 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -15 -15 15
vertex 15 -15 15
vertex -6.49335 -10.8438 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -6.49335 -10.8438 15
vertex 1.07065 -4.69974 15
vertex -0.726349 -4.69974 15
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex 6.88264 -10.8438 15
vertex 6.88264 8.29724 15
vertex 1.07065 -4.69974 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -15 -15 15
vertex -6.49335 -10.8438 15
vertex -9.24535 -10.8438 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 6.88264 -10.8438 15
vertex 1.07065 -4.69974 15
vertex -6.49335 -10.8438 15
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -6.49335 8.29724 15
vertex -6.49335 -10.8438 15
vertex -0.726349 -4.69974 15
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 15 -15 15
vertex 15 -15 0
vertex 15 15 0
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 15 15 15
vertex 15 -15 15
vertex 15 15 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 15 15 0
vertex -15 15 0
vertex -15 15 15
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 15 15 15
vertex 15 15 0
vertex -15 15 15
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 15 -15 0
vertex -15 -15 0
vertex -15 15 0
endloop
endfacet
facet normal -0 -0 -1
outer loop
vertex 15 15 0
vertex 15 -15 0
vertex -15 15 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -15 -15 15
vertex -15 -15 0
vertex 15 -15 0
endloop
endfacet
facet normal -0 -1 -0
outer loop
vertex 15 -15 15
vertex -15 -15 15
vertex 15 -15 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -6.49335 8.29724 5
vertex -9.24535 -10.8438 5
vertex -6.49335 -10.8438 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -6.49335 8.29724 5
vertex -9.24535 11.3642 5
vertex -9.24535 -10.8438 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.07065 -4.69974 5
vertex 0.351639 -0.977737 5
vertex -0.726349 -4.69974 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.351639 -0.977737 5
vertex -6.49335 8.29724 5
vertex -0.726349 -4.69974 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5.22034 11.3642 5
vertex -9.24535 11.3642 5
vertex -6.49335 8.29724 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 9.82664 -10.8438 5
vertex 6.88264 8.29724 5
vertex 6.88264 -10.8438 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 9.82664 11.3642 5
vertex 6.88264 8.29724 5
vertex 9.82664 -10.8438 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 9.82664 11.3642 5
vertex 5.72964 11.3642 5
vertex 6.88264 8.29724 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 6.88264 8.29724 5
vertex 0.351639 -0.977737 5
vertex 1.07065 -4.69974 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5.72964 11.3642 5
vertex 0.351639 -0.977737 5
vertex 6.88264 8.29724 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.351639 -0.977737 5
vertex -5.22034 11.3642 5
vertex -6.49335 8.29724 5
endloop
endfacet
facet normal 0.914058 0.405584 0
outer loop
vertex -0.726349 -4.69974 5
vertex -6.49335 8.29724 5
vertex -6.49335 8.29724 15
endloop
endfacet
facet normal 0.914058 0.405584 0
outer loop
vertex -0.726349 -4.69974 15
vertex -0.726349 -4.69974 5
vertex -6.49335 8.29724 15
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 1.07065 -4.69974 5
vertex -0.726349 -4.69974 5
vertex -0.726349 -4.69974 15
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 1.07065 -4.69974 15
vertex 1.07065 -4.69974 5
vertex -0.726349 -4.69974 15
endloop
endfacet
facet normal -0.912882 0.408223 0
outer loop
vertex 6.88264 8.29724 5
vertex 1.07065 -4.69974 5
vertex 1.07065 -4.69974 15
endloop
endfacet
facet normal -0.912882 0.408223 0
outer loop
vertex 6.88264 8.29724 15
vertex 6.88264 8.29724 5
vertex 1.07065 -4.69974 15
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 6.88264 -10.8438 15
vertex 6.88264 -10.8438 5
vertex 6.88264 8.29724 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 6.88264 8.29724 15
vertex 6.88264 -10.8438 15
vertex 6.88264 8.29724 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 9.82664 -10.8438 5
vertex 6.88264 -10.8438 5
vertex 6.88264 -10.8438 15
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 9.82664 -10.8438 15
vertex 9.82664 -10.8438 5
vertex 6.88264 -10.8438 15
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 9.82664 11.3642 5
vertex 9.82664 -10.8438 5
vertex 9.82664 -10.8438 15
endloop
endfacet
facet normal -1 -0 -0
outer loop
vertex 9.82664 11.3642 15
vertex 9.82664 11.3642 5
vertex 9.82664 -10.8438 15
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 5.72964 11.3642 15
vertex 5.72964 11.3642 5
vertex 9.82664 11.3642 5
endloop
endfacet
facet normal -0 -1 -0
outer loop
vertex 9.82664 11.3642 15
vertex 5.72964 11.3642 15
vertex 9.82664 11.3642 5
endloop
endfacet
facet normal 0.916746 -0.399471 0
outer loop
vertex 0.351639 -0.977737 15
vertex 0.351639 -0.977737 5
vertex 5.72964 11.3642 5
endloop
endfacet
facet normal 0.916746 -0.399471 0
outer loop
vertex 5.72964 11.3642 15
vertex 0.351639 -0.977737 15
vertex 5.72964 11.3642 5
endloop
endfacet
facet normal -0.911421 -0.411475 -0
outer loop
vertex -5.22034 11.3642 15
vertex -5.22034 11.3642 5
vertex 0.351639 -0.977737 5
endloop
endfacet
facet normal -0.911421 -0.411475 -0
outer loop
vertex 0.351639 -0.977737 15
vertex -5.22034 11.3642 15
vertex 0.351639 -0.977737 5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -9.24535 11.3642 15
vertex -9.24535 11.3642 5
vertex -5.22034 11.3642 5
endloop
endfacet
facet normal -0 -1 -0
outer loop
vertex -5.22034 11.3642 15
vertex -9.24535 11.3642 15
vertex -5.22034 11.3642 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -9.24535 -10.8438 15
vertex -9.24535 -10.8438 5
vertex -9.24535 11.3642 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -9.24535 11.3642 15
vertex -9.24535 -10.8438 15
vertex -9.24535 11.3642 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -6.49335 -10.8438 5
vertex -9.24535 -10.8438 5
vertex -9.24535 -10.8438 15
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -6.49335 -10.8438 15
vertex -6.49335 -10.8438 5
vertex -9.24535 -10.8438 15
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -6.49335 8.29724 5
vertex -6.49335 -10.8438 5
vertex -6.49335 -10.8438 15
endloop
endfacet
facet normal -1 -0 -0
outer loop
vertex -6.49335 8.29724 15
vertex -6.49335 8.29724 5
vertex -6.49335 -10.8438 15
endloop
endfacet
endsolid OpenSCAD_Model

File diff suppressed because it is too large Load diff

View file

@ -1,49 +0,0 @@
echo(version=version());
// size is a vector [w, h, d]
module roundedBox(size, radius, sidesonly)
{
rot = [ [0,0,0], [90,0,90], [90,90,0] ];
if (sidesonly) {
cube(size - [2*radius,0,0], true);
cube(size - [0,2*radius,0], true);
for (x = [radius-size[0]/2, -radius+size[0]/2],
y = [radius-size[1]/2, -radius+size[1]/2]) {
translate([x,y,0]) cylinder(r=radius, h=size[2], center=true);
}
}
else {
cube([size[0], size[1]-radius*2, size[2]-radius*2], center=true);
cube([size[0]-radius*2, size[1], size[2]-radius*2], center=true);
cube([size[0]-radius*2, size[1]-radius*2, size[2]], center=true);
for (axis = [0:2]) {
for (x = [radius-size[axis]/2, -radius+size[axis]/2],
y = [radius-size[(axis+1)%3]/2, -radius+size[(axis+1)%3]/2]) {
rotate(rot[axis])
translate([x,y,0])
cylinder(h=size[(axis+2)%3]-2*radius, r=radius, center=true);
}
}
for (x = [radius-size[0]/2, -radius+size[0]/2],
y = [radius-size[1]/2, -radius+size[1]/2],
z = [radius-size[2]/2, -radius+size[2]/2]) {
translate([x,y,z]) sphere(radius);
}
}
}
translate([-15,0,0])roundedBox([20,30,40], 5, true);
translate([15,0,0]) roundedBox([20,30,40], 5, false);
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

View file

@ -1,169 +0,0 @@
// To render the DXF file from the command line:
// openscad -o tripod.dxf -D'mode="parts"' example017.scad
// mode = "parts";
// mode = "exploded";
mode = "assembled";
thickness = 6;
locklen1 = 15;
locklen2 = 10;
boltlen = 15;
midhole = 10;
inner1_to_inner2 = 50;
total_height = 80;
echo(version=version());
module shape_tripod()
{
x1 = 0;
x2 = x1 + thickness;
x3 = x2 + locklen1;
x4 = x3 + thickness;
x5 = x4 + inner1_to_inner2;
x6 = x5 - thickness;
x7 = x6 - locklen2;
x8 = x7 - thickness;
x9 = x8 - thickness;
x10 = x9 - thickness;
y1 = 0;
y2 = y1 + thickness;
y3 = y2 + thickness;
y4 = y3 + thickness;
y5 = y3 + total_height - 3*thickness;
y6 = y5 + thickness;
union()
{
difference() {
polygon([
[ x1, y2 ], [ x2, y2 ],
[ x2, y1 ], [ x3, y1 ], [ x3, y2 ],
[ x4, y2 ], [ x4, y1 ], [ x5, y1 ],
[ x5 + thickness, y3 ], [ x5, y4 ],
[ x5, y5 ],
[ x6, y5 ], [ x6, y6 ], [ x7, y6 ], [ x7, y5 ], [ x8, y5 ],
[ x8, y6 ], [ x9, y5 ],
[ x9, y4 ], [ x10, y3 ],
[ x2, y3 ]
]);
translate([ x10, y4 ]) circle(thickness);
translate([ x5 + thickness, y4 ]) circle(thickness);
}
translate([ x5, y1 ])
square([ boltlen - thickness, thickness*2 ]);
translate([ x5 + boltlen - thickness, y2 ]) circle(thickness);
translate([ x2, y2 ]) intersection() {
circle(thickness);
translate([ -thickness*2, 0 ]) square(thickness*2);
}
translate([ x8, y5 ]) intersection() {
circle(thickness);
translate([ -thickness*2, 0 ]) square(thickness*2);
}
}
}
module shape_inner_disc()
{
difference() {
circle(midhole + boltlen + 2*thickness + locklen2);
for (alpha = [ 0, 120, 240 ])
rotate(alpha) translate([ 0, midhole + boltlen + thickness + locklen2/2 ]) square([ thickness, locklen2 ], true);
circle(midhole + boltlen);
}
}
module shape_outer_disc()
{
difference() {
circle(midhole + boltlen + inner1_to_inner2 + 2*thickness + locklen1);
for (alpha = [ 0, 120, 240 ])
rotate(alpha) translate([ 0, midhole + boltlen + inner1_to_inner2 + thickness + locklen1/2 ]) square([ thickness, locklen1 ], true);
circle(midhole + boltlen + inner1_to_inner2);
}
}
module parts()
{
tripod_x_off = locklen1 - locklen2 + inner1_to_inner2;
tripod_y_off = max(midhole + boltlen + inner1_to_inner2 + 4*thickness + locklen1, total_height);
shape_inner_disc();
shape_outer_disc();
for (s = [ [1,1], [-1,1], [1,-1] ])
scale(s) translate([ tripod_x_off, -tripod_y_off ]) shape_tripod();
}
module exploded()
{
translate([ 0, 0, total_height + 2*thickness ]) linear_extrude(height = thickness, convexity = 4) shape_inner_disc();
linear_extrude(height = thickness, convexity = 4) shape_outer_disc();
color([ 0.7, 0.7, 1 ]) for (alpha = [ 0, 120, 240 ])
rotate(alpha) translate([ 0, thickness*2 + locklen1 + inner1_to_inner2 + boltlen + midhole, 1.5*thickness ])
rotate([ 90, 0, -90 ]) linear_extrude(height = thickness, convexity = 10, center = true) shape_tripod();
}
module bottle()
{
r = boltlen + midhole;
h = total_height - thickness*2;
rotate_extrude(convexity = 2)
{
square([ r, h ]);
translate([ 0, h ])
intersection() {
square([ r, r ]);
scale([ 1, 0.7 ]) circle(r);
}
translate([ 0, h+r ])
intersection() {
translate([ 0, -r/2 ]) square([ r/2, r ]);
circle(r/2);
}
}
}
module assembled()
{
translate([ 0, 0, total_height - thickness ]) linear_extrude(height = thickness, convexity = 4) shape_inner_disc();
linear_extrude(height = thickness, convexity = 4) shape_outer_disc();
color([ 0.7, 0.7, 1 ]) for (alpha = [ 0, 120, 240 ])
rotate(alpha) translate([ 0, thickness*2 + locklen1 + inner1_to_inner2 + boltlen + midhole, 0 ])
rotate([ 90, 0, -90 ]) linear_extrude(height = thickness, convexity = 10, center = true) shape_tripod();
% translate([ 0, 0, thickness*2]) bottle();
}
if (mode == "parts")
parts();
if (mode == "exploded")
exploded();
if (mode == "assembled")
assembled();
// Written by Clifford Wolf <clifford@clifford.at> and Marius
// Kintel <marius@kintel.net>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to the
// public domain worldwide. This software is distributed without any
// warranty.
//
// You should have received a copy of the CC0 Public Domain
// Dedication along with this software.
// If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

58
examples/examples.json Normal file
View file

@ -0,0 +1,58 @@
{
"Basics": [
"CSG.scad",
"CSG-modules.scad",
"logo.scad",
"LetterBlock.scad",
"logo_and_text.scad",
"linear_extrude.scad",
"rotate_extrude.scad",
"text_on_cube.scad",
"projection.scad"
],
"Functions": [
"functions.scad",
"list_comprehensions.scad",
"recursion.scad",
"polygon_areas.scad"
],
"Shapes": [
],
"Extrusion": [
],
"Advanced": [
"offset.scad",
"surface_image.scad",
"children.scad",
"children_indexed.scad",
"GEB.scad",
"animation.scad",
"module_recursion.scad"
],
"Old": [
"example001.scad",
"example002.scad",
"example003.scad",
"example004.scad",
"example005.scad",
"example006.scad",
"example007.scad",
"example008.scad",
"example009.scad",
"example010.scad",
"example011.scad",
"example012.scad",
"example013.scad",
"example014.scad",
"example015.scad",
"example016.scad",
"example017.scad",
"example018.scad",
"example019.scad",
"example020.scad",
"example021.scad",
"example022.scad",
"example023.scad",
"example024.scad"
]
}

@ -1 +1 @@
Subproject commit 5ff8ce964c71f59db463a8adf81bb22a2a48dee3
Subproject commit 85794e4b4f2294a1b445a4d928866bedd5cc64ec

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenSCAD 2013.02.24\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-01 18:03+0100\n"
"POT-Creation-Date: 2015-03-05 14:54-0500\n"
"PO-Revision-Date: 2015-02-01 20:54+0100\n"
"Last-Translator: Miro Hrončok <miro@hroncok.cz>\n"
"Language-Team: Czech <miro@hroncok.cz>\n"
@ -79,46 +79,6 @@ msgstr ""
"family:'Courier New,courier';\"> text(t = &quot;OpenSCAD&quot;, font = "
"&quot;Liberation Sans:style=Italic&quot;);</span></pre></body></html>"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Vítá vás OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Nový"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Otevřít"
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Nápověda"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Nedávné"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Otevřít nedávný soubor"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Příklady"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "Otevřít příklad"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Příště nezobrazovat"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Verze"
#: objects/ui_LibraryInfoDialog.h:75
msgid "Lib & Build Info"
msgstr "Info o knihovnách a sestavení"
@ -729,11 +689,11 @@ msgstr "Předvolby"
msgid "3D View"
msgstr "3D zobrazení"
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:86
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:109
msgid "Advanced"
msgstr "Pokročilé"
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2418
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2422
msgid "Editor"
msgstr "Editor"
@ -999,6 +959,46 @@ msgstr "Povolit lokalizaci rozhraní OpenSCADu (vyžaduje restart aplikace)"
msgid "%v / %m"
msgstr "%v / %m"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Vítá vás OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Nový"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Otevřít"
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Nápověda"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Nedávné"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Otevřít nedávný soubor"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Příklady"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "Otevřít příklad"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Příště nezobrazovat"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Verze"
#: src/Camera.cc:126
#, c-format
msgid ""
@ -1008,113 +1008,6 @@ msgstr ""
"Pohled: posun = [ %.2f %.2f %.2f ], rotace = [ %.2f %.2f %.2f ], vzdálenost "
"= %.2f"
#: src/mainwin.cc:778 src/mainwin.cc:1354
msgid "Untitled.scad"
msgstr "Bezejmenný.scad"
#: src/mainwin.cc:971
msgid "Compile error."
msgstr "Chyba kompilace."
#: src/mainwin.cc:974
msgid "Error while compiling '%1'."
msgstr "Chyba při kompilaci '%1'."
#: src/mainwin.cc:978
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] "Kompilace vyvolala %1 varování."
msgstr[1] "Kompilace vyvolala %1 varování."
msgstr[2] "Kompilace vyvolala %1 varování."
#: src/mainwin.cc:988
msgid " For details see <a href=\"#console\">console window</a>."
msgstr "Pro podrobnosti nahlédněte do <a href=\"#console\">konzole</a>."
#: src/mainwin.cc:1353
msgid "Save File"
msgstr "Uložit soubor"
#: src/mainwin.cc:1355
msgid "OpenSCAD Designs (*.scad)"
msgstr "OpenSCAD designy(*.scad)"
#: src/mainwin.cc:1365
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 již existuje.\n"
"Chcete jej nahradit?"
#: src/mainwin.cc:1684
msgid "Application"
msgstr "Aplikace"
#: src/mainwin.cc:1685
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Dokument byl pozměněn.\n"
"Opravdu jej chcete znovu načíst?"
#: src/mainwin.cc:2038 src/mainwin.cc:2094
msgid "Export %1 File"
msgstr "Exportovat %s soubor(ů)"
#: src/mainwin.cc:2039 src/mainwin.cc:2098
msgid "%1 Files (*%2)"
msgstr "%1 Soubor(ů) (*%2)"
#: src/mainwin.cc:2040
msgid "Untitled"
msgstr "Bezejmenný"
#: src/mainwin.cc:2096
msgid "Untitled%1"
msgstr "Bezejmenný%1"
#: src/mainwin.cc:2147
msgid "Export CSG File"
msgstr "Exportovat CSG soubor"
#: src/mainwin.cc:2148
msgid "Untitled.csg"
msgstr "Bezejmenný.csg"
#: src/mainwin.cc:2149
msgid "CSG Files (*.csg)"
msgstr "CSG soubory (*.csg)"
#: src/mainwin.cc:2175
msgid "Export Image"
msgstr "Exportovat obrázek"
#: src/mainwin.cc:2175
msgid "PNG Files (*.png)"
msgstr "PNG Soubory (*.png)"
#: src/mainwin.cc:2423
msgid "Console"
msgstr "Konzole"
#: src/mainwin.cc:2560
msgid "The document has been modified."
msgstr "Dokument byl pozměněn."
#: src/mainwin.cc:2561
msgid "Do you want to save your changes?"
msgstr "Chcete uložit změny?"
#: src/openscad.cc:604
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig potřebuje aktualizovat cache.\n"
"To může trvat až několik minut."
#: src/QGLView.cc:129
msgid ""
"Warning: You may experience OpenCSG rendering errors.\n"
@ -1152,22 +1045,137 @@ msgstr ""
"%s (%s)\n"
"OpenGL verze %s\n"
#: src/settings.cc:132
msgid "After indentation"
msgstr "za odsazením"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Basics"
msgstr "Základy"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Functions"
msgstr ""
#: src/UIUtils.cc:109
msgid "Shapes"
msgstr "Tvary"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Extrusion"
msgstr "Vytažení"
#: src/UIUtils.cc:109
msgid "Old"
msgstr ""
#: src/mainwin.cc:779 src/mainwin.cc:1356
msgid "Untitled.scad"
msgstr "Bezejmenný.scad"
#: src/mainwin.cc:973
msgid "Compile error."
msgstr "Chyba kompilace."
#: src/mainwin.cc:976
msgid "Error while compiling '%1'."
msgstr "Chyba při kompilaci '%1'."
#: src/mainwin.cc:980
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] "Kompilace vyvolala %1 varování."
msgstr[1] "Kompilace vyvolala %1 varování."
msgstr[2] "Kompilace vyvolala %1 varování."
#: src/mainwin.cc:990
msgid " For details see <a href=\"#console\">console window</a>."
msgstr "Pro podrobnosti nahlédněte do <a href=\"#console\">konzole</a>."
#: src/mainwin.cc:1355
msgid "Save File"
msgstr "Uložit soubor"
#: src/mainwin.cc:1357
msgid "OpenSCAD Designs (*.scad)"
msgstr "OpenSCAD designy(*.scad)"
#: src/mainwin.cc:1367
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 již existuje.\n"
"Chcete jej nahradit?"
#: src/mainwin.cc:1686
msgid "Application"
msgstr "Aplikace"
#: src/mainwin.cc:1687
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Dokument byl pozměněn.\n"
"Opravdu jej chcete znovu načíst?"
#: src/mainwin.cc:2040 src/mainwin.cc:2096
msgid "Export %1 File"
msgstr "Exportovat %s soubor(ů)"
#: src/mainwin.cc:2041 src/mainwin.cc:2100
msgid "%1 Files (*%2)"
msgstr "%1 Soubor(ů) (*%2)"
#: src/mainwin.cc:2042
msgid "Untitled"
msgstr "Bezejmenný"
#: src/mainwin.cc:2098
msgid "Untitled%1"
msgstr "Bezejmenný%1"
#: src/mainwin.cc:2149
msgid "Export CSG File"
msgstr "Exportovat CSG soubor"
#: src/mainwin.cc:2150
msgid "Untitled.csg"
msgstr "Bezejmenný.csg"
#: src/mainwin.cc:2151
msgid "CSG Files (*.csg)"
msgstr "CSG soubory (*.csg)"
#: src/mainwin.cc:2177
msgid "Export Image"
msgstr "Exportovat obrázek"
#: src/mainwin.cc:2177
msgid "PNG Files (*.png)"
msgstr "PNG Soubory (*.png)"
#: src/mainwin.cc:2427
msgid "Console"
msgstr "Konzole"
#: src/mainwin.cc:2564
msgid "The document has been modified."
msgstr "Dokument byl pozměněn."
#: src/mainwin.cc:2565
msgid "Do you want to save your changes?"
msgstr "Chcete uložit změny?"
#: src/mainwin.cc:2697
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig potřebuje aktualizovat cache.\n"
"To může trvat až několik minut."
#: src/settings.cc:132
msgid "After indentation"
msgstr "za odsazením"
#~ msgid "Top"
#~ msgstr "Shora"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenSCAD 2014.01.05\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-01 18:03+0100\n"
"POT-Creation-Date: 2015-03-05 14:54-0500\n"
"PO-Revision-Date: 2015-02-01 19:39+0100\n"
"Last-Translator: Torsten Paul <Torsten.Paul@gmx.de>\n"
"Language-Team: German\n"
@ -89,46 +89,6 @@ msgstr ""
"family:'Courier New,courier';\"> text(t = &quot;OpenSCAD&quot;, font = "
"&quot;Liberation Sans:style=Italic&quot;);</span></pre></body></html>"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Willkommen zu OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Neu"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Öffnen"
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Hilfe"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Zuletzt benutze Dateien"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Datei öffnen"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Beispiele"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "Beispiel öffnen"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Dialog nicht wieder anzeigen"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Version"
#: objects/ui_LibraryInfoDialog.h:75
msgid "Lib & Build Info"
msgstr "Versionsinformationen"
@ -749,11 +709,11 @@ msgstr "Einstellungen"
msgid "3D View"
msgstr "3D Ansicht"
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:86
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:109
msgid "Advanced"
msgstr "Erweitert"
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2418
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2422
msgid "Editor"
msgstr "Editor"
@ -1019,6 +979,46 @@ msgstr "Lokalisierung der GUI einschalten (benötigt Neustart von OpenSCAD)"
msgid "%v / %m"
msgstr "%v / %m"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Willkommen zu OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Neu"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Öffnen"
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Hilfe"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Zuletzt benutze Dateien"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Datei öffnen"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Beispiele"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "Beispiel öffnen"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Dialog nicht wieder anzeigen"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Version"
#: src/Camera.cc:126
#, c-format
msgid ""
@ -1028,112 +1028,6 @@ msgstr ""
"Ansicht: Verschiebung = [ %.2f %.2f %.2f ], Rotation = [ %.2f %.2f %.2f ], "
"Abstand = %.2f"
#: src/mainwin.cc:778 src/mainwin.cc:1354
msgid "Untitled.scad"
msgstr "Unbenannt.scad"
#: src/mainwin.cc:971
msgid "Compile error."
msgstr "Fehler"
#: src/mainwin.cc:974
msgid "Error while compiling '%1'."
msgstr "Fehler beim Kompilieren von '%1'."
#: src/mainwin.cc:978
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] "%1 Warnung beim kompilieren."
msgstr[1] "%1 Warnungen beim kompilieren."
#: src/mainwin.cc:988
msgid " For details see <a href=\"#console\">console window</a>."
msgstr " Für Details das <a href=\"#console\">Konsole Fenster</a> öffnen."
#: src/mainwin.cc:1353
msgid "Save File"
msgstr "Datei speichern"
#: src/mainwin.cc:1355
msgid "OpenSCAD Designs (*.scad)"
msgstr "OpenSCAD Designs (*.scad)"
#: src/mainwin.cc:1365
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 existiert bereits.\n"
"Mochten Sie die Datei ersetzen?"
#: src/mainwin.cc:1684
msgid "Application"
msgstr "Application"
#: src/mainwin.cc:1685
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Das Dokument ist verändert.\n"
"Möchten Sie die Datei wirklich neu laden?"
#: src/mainwin.cc:2038 src/mainwin.cc:2094
msgid "Export %1 File"
msgstr "%1 Datei exportieren"
#: src/mainwin.cc:2039 src/mainwin.cc:2098
msgid "%1 Files (*%2)"
msgstr "%1 Dateien (*%2)"
#: src/mainwin.cc:2040
msgid "Untitled"
msgstr "Unbenannt"
#: src/mainwin.cc:2096
msgid "Untitled%1"
msgstr "Unbenannt%1"
#: src/mainwin.cc:2147
msgid "Export CSG File"
msgstr "Export CSG File"
#: src/mainwin.cc:2148
msgid "Untitled.csg"
msgstr "Unbenannt.csg"
#: src/mainwin.cc:2149
msgid "CSG Files (*.csg)"
msgstr "CSG Dateien (*.csg)"
#: src/mainwin.cc:2175
msgid "Export Image"
msgstr "Image exportieren"
#: src/mainwin.cc:2175
msgid "PNG Files (*.png)"
msgstr "PNG Dateien (*.png)"
#: src/mainwin.cc:2423
msgid "Console"
msgstr "Konsole"
#: src/mainwin.cc:2560
msgid "The document has been modified."
msgstr "Das Dokument ist verändert."
#: src/mainwin.cc:2561
msgid "Do you want to save your changes?"
msgstr "Möchten Sie die Änderungen speichern?"
#: src/openscad.cc:604
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig muss den Font-Cache aktualisieren.\n"
"Dies kann einige Minuten dauern."
#: src/QGLView.cc:129
msgid ""
"Warning: You may experience OpenCSG rendering errors.\n"
@ -1173,22 +1067,136 @@ msgstr ""
"%s (%s)\n"
"OpenGL version %s\n"
#: src/settings.cc:132
msgid "After indentation"
msgstr "nach Einrückung"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Basics"
msgstr "Grundlagen"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Functions"
msgstr ""
#: src/UIUtils.cc:109
msgid "Shapes"
msgstr "Formen"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Extrusion"
msgstr "Extrusion"
#: src/UIUtils.cc:109
msgid "Old"
msgstr ""
#: src/mainwin.cc:779 src/mainwin.cc:1356
msgid "Untitled.scad"
msgstr "Unbenannt.scad"
#: src/mainwin.cc:973
msgid "Compile error."
msgstr "Fehler"
#: src/mainwin.cc:976
msgid "Error while compiling '%1'."
msgstr "Fehler beim Kompilieren von '%1'."
#: src/mainwin.cc:980
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] "%1 Warnung beim kompilieren."
msgstr[1] "%1 Warnungen beim kompilieren."
#: src/mainwin.cc:990
msgid " For details see <a href=\"#console\">console window</a>."
msgstr " Für Details das <a href=\"#console\">Konsole Fenster</a> öffnen."
#: src/mainwin.cc:1355
msgid "Save File"
msgstr "Datei speichern"
#: src/mainwin.cc:1357
msgid "OpenSCAD Designs (*.scad)"
msgstr "OpenSCAD Designs (*.scad)"
#: src/mainwin.cc:1367
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 existiert bereits.\n"
"Mochten Sie die Datei ersetzen?"
#: src/mainwin.cc:1686
msgid "Application"
msgstr "Application"
#: src/mainwin.cc:1687
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Das Dokument ist verändert.\n"
"Möchten Sie die Datei wirklich neu laden?"
#: src/mainwin.cc:2040 src/mainwin.cc:2096
msgid "Export %1 File"
msgstr "%1 Datei exportieren"
#: src/mainwin.cc:2041 src/mainwin.cc:2100
msgid "%1 Files (*%2)"
msgstr "%1 Dateien (*%2)"
#: src/mainwin.cc:2042
msgid "Untitled"
msgstr "Unbenannt"
#: src/mainwin.cc:2098
msgid "Untitled%1"
msgstr "Unbenannt%1"
#: src/mainwin.cc:2149
msgid "Export CSG File"
msgstr "Export CSG File"
#: src/mainwin.cc:2150
msgid "Untitled.csg"
msgstr "Unbenannt.csg"
#: src/mainwin.cc:2151
msgid "CSG Files (*.csg)"
msgstr "CSG Dateien (*.csg)"
#: src/mainwin.cc:2177
msgid "Export Image"
msgstr "Image exportieren"
#: src/mainwin.cc:2177
msgid "PNG Files (*.png)"
msgstr "PNG Dateien (*.png)"
#: src/mainwin.cc:2427
msgid "Console"
msgstr "Konsole"
#: src/mainwin.cc:2564
msgid "The document has been modified."
msgstr "Das Dokument ist verändert."
#: src/mainwin.cc:2565
msgid "Do you want to save your changes?"
msgstr "Möchten Sie die Änderungen speichern?"
#: src/mainwin.cc:2697
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig muss den Font-Cache aktualisieren.\n"
"Dies kann einige Minuten dauern."
#: src/settings.cc:132
msgid "After indentation"
msgstr "nach Einrückung"
#~ msgid "Top"
#~ msgstr "Oben"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenSCAD 2015.01.21\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-01 18:03+0100\n"
"POT-Creation-Date: 2015-03-05 14:54-0500\n"
"PO-Revision-Date: 2015-01-21 22:36-0300\n"
"Last-Translator: Ernesto Bazzano <bazza@riseup.net>\n"
"Language-Team: Español\n"
@ -90,47 +90,6 @@ msgstr ""
"family:'Courier New,courier';\"> text(t = &quot;OpenSCAD&quot;, font = "
"&quot;Liberation Sans:style=Italic&quot;);</span></pre></body></html>"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Bienvenido a OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Nuevo"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Abrir"
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Ayuda"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Recientes"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Abrir recientes"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Ejemplos"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "Abrir ejemplos"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "No mostrar de nuevo"
#: objects/ui_launchingscreen.h:313
#, fuzzy
msgid "Version"
msgstr "Extrusión"
#: objects/ui_LibraryInfoDialog.h:75
msgid "Lib & Build Info"
msgstr "Informacion de las librerias y compilación"
@ -792,11 +751,11 @@ msgstr "Preferencias"
msgid "3D View"
msgstr "Vista 3D"
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:86
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:109
msgid "Advanced"
msgstr "Advertencia"
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2418
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2422
msgid "Editor"
msgstr "Editar"
@ -1076,6 +1035,47 @@ msgstr ""
msgid "%v / %m"
msgstr "%v / %m"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Bienvenido a OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Nuevo"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Abrir"
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Ayuda"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Recientes"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Abrir recientes"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Ejemplos"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "Abrir ejemplos"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "No mostrar de nuevo"
#: objects/ui_launchingscreen.h:313
#, fuzzy
msgid "Version"
msgstr "Extrusión"
#: src/Camera.cc:126
#, c-format
msgid ""
@ -1085,110 +1085,6 @@ msgstr ""
"Marco: posición = [ %.2f %.2f %.2f ], rotación = [ %.2f %.2f %.2f ], "
"distancia = %.2f"
#: src/mainwin.cc:778 src/mainwin.cc:1354
msgid "Untitled.scad"
msgstr "Sintitulo.scad"
#: src/mainwin.cc:971
msgid "Compile error."
msgstr ""
#: src/mainwin.cc:974
msgid "Error while compiling '%1'."
msgstr ""
#: src/mainwin.cc:978
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] ""
msgstr[1] ""
#: src/mainwin.cc:988
msgid " For details see <a href=\"#console\">console window</a>."
msgstr ""
#: src/mainwin.cc:1353
msgid "Save File"
msgstr "Salver archivo"
#: src/mainwin.cc:1355
msgid "OpenSCAD Designs (*.scad)"
msgstr "Diseño OpenSCAD (*.scad)"
#: src/mainwin.cc:1365
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 existe.\n"
"Deseas reemplazarlo?"
#: src/mainwin.cc:1684
msgid "Application"
msgstr "Aplicación"
#: src/mainwin.cc:1685
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"El documento ha sido modificado.\n"
"¿Realmente desea volver a cargar el archivo ?"
#: src/mainwin.cc:2038 src/mainwin.cc:2094
msgid "Export %1 File"
msgstr "Exportar %1 Archivo"
#: src/mainwin.cc:2039 src/mainwin.cc:2098
msgid "%1 Files (*%2)"
msgstr "%1 Archivo (*%2)"
#: src/mainwin.cc:2040
msgid "Untitled"
msgstr "Sin titulo"
#: src/mainwin.cc:2096
msgid "Untitled%1"
msgstr "Sintitulo%1"
#: src/mainwin.cc:2147
msgid "Export CSG File"
msgstr "Exportar archivo CSG"
#: src/mainwin.cc:2148
msgid "Untitled.csg"
msgstr "Sintitulo.csg"
#: src/mainwin.cc:2149
msgid "CSG Files (*.csg)"
msgstr "Archivo CSG (*.csg)"
#: src/mainwin.cc:2175
msgid "Export Image"
msgstr "Exportar una imagen"
#: src/mainwin.cc:2175
msgid "PNG Files (*.png)"
msgstr "Archivo PNG (*.png)"
#: src/mainwin.cc:2423
msgid "Console"
msgstr "Consola"
#: src/mainwin.cc:2560
msgid "The document has been modified."
msgstr "El documento ha sido modificado."
#: src/mainwin.cc:2561
msgid "Do you want to save your changes?"
msgstr "¿Quieres guardar los cambios ?"
#: src/openscad.cc:604
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
#: src/QGLView.cc:129
msgid ""
"Warning: You may experience OpenCSG rendering errors.\n"
@ -1228,22 +1124,134 @@ msgstr ""
"%s (%s)\n"
"Versión OpenGL %s\n"
#: src/settings.cc:132
msgid "After indentation"
msgstr ""
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Basics"
msgstr "Básico"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Functions"
msgstr ""
#: src/UIUtils.cc:109
msgid "Shapes"
msgstr "Formas"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Extrusion"
msgstr "Extrusión"
#: src/UIUtils.cc:109
msgid "Old"
msgstr ""
#: src/mainwin.cc:779 src/mainwin.cc:1356
msgid "Untitled.scad"
msgstr "Sintitulo.scad"
#: src/mainwin.cc:973
msgid "Compile error."
msgstr ""
#: src/mainwin.cc:976
msgid "Error while compiling '%1'."
msgstr ""
#: src/mainwin.cc:980
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] ""
msgstr[1] ""
#: src/mainwin.cc:990
msgid " For details see <a href=\"#console\">console window</a>."
msgstr ""
#: src/mainwin.cc:1355
msgid "Save File"
msgstr "Salver archivo"
#: src/mainwin.cc:1357
msgid "OpenSCAD Designs (*.scad)"
msgstr "Diseño OpenSCAD (*.scad)"
#: src/mainwin.cc:1367
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 existe.\n"
"Deseas reemplazarlo?"
#: src/mainwin.cc:1686
msgid "Application"
msgstr "Aplicación"
#: src/mainwin.cc:1687
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"El documento ha sido modificado.\n"
"¿Realmente desea volver a cargar el archivo ?"
#: src/mainwin.cc:2040 src/mainwin.cc:2096
msgid "Export %1 File"
msgstr "Exportar %1 Archivo"
#: src/mainwin.cc:2041 src/mainwin.cc:2100
msgid "%1 Files (*%2)"
msgstr "%1 Archivo (*%2)"
#: src/mainwin.cc:2042
msgid "Untitled"
msgstr "Sin titulo"
#: src/mainwin.cc:2098
msgid "Untitled%1"
msgstr "Sintitulo%1"
#: src/mainwin.cc:2149
msgid "Export CSG File"
msgstr "Exportar archivo CSG"
#: src/mainwin.cc:2150
msgid "Untitled.csg"
msgstr "Sintitulo.csg"
#: src/mainwin.cc:2151
msgid "CSG Files (*.csg)"
msgstr "Archivo CSG (*.csg)"
#: src/mainwin.cc:2177
msgid "Export Image"
msgstr "Exportar una imagen"
#: src/mainwin.cc:2177
msgid "PNG Files (*.png)"
msgstr "Archivo PNG (*.png)"
#: src/mainwin.cc:2427
msgid "Console"
msgstr "Consola"
#: src/mainwin.cc:2564
msgid "The document has been modified."
msgstr "El documento ha sido modificado."
#: src/mainwin.cc:2565
msgid "Do you want to save your changes?"
msgstr "¿Quieres guardar los cambios ?"
#: src/mainwin.cc:2697
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
#: src/settings.cc:132
msgid "After indentation"
msgstr ""
#~ msgid "Top"
#~ msgstr "Arriba"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenSCAD 2013.02.07\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-01 18:03+0100\n"
"POT-Creation-Date: 2015-03-05 14:54-0500\n"
"PO-Revision-Date: 2015-01-27 18:47-0500\n"
"Last-Translator: Keven Villeneuve <keven.villeneuve@gmail.com>\n"
"Language-Team: French\n"
@ -89,46 +89,6 @@ msgstr ""
"family:'Courier New,courier';\"> text(t = &quot;OpenSCAD&quot;, font = "
"&quot;Liberation Sans:style=Italic&quot;);</span></pre></body></html>"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Bienvenue dans OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Nouveau"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Ouvrir..."
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Aide"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Récents"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Ouvrir un fichier récent"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Exemples"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "&Ouvrir un example"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Ne plus afficher"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Version"
#: objects/ui_LibraryInfoDialog.h:75
msgid "Lib & Build Info"
msgstr "Bibliothèques et Infos de la version"
@ -792,11 +752,11 @@ msgstr "Préférences"
msgid "3D View"
msgstr "&Vue 3D"
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:86
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:109
msgid "Advanced"
msgstr "Avancé"
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2418
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2422
msgid "Editor"
msgstr "Éditeur"
@ -1065,6 +1025,46 @@ msgstr ""
msgid "%v / %m"
msgstr "%v / %m"
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr "Bienvenue dans OpenSCAD"
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr "Nouveau"
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr "Ouvrir..."
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr "Aide"
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr "Récents"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Ouvrir un fichier récent"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Exemples"
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr "&Ouvrir un example"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Ne plus afficher"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Version"
#: src/Camera.cc:126
#, c-format
msgid ""
@ -1074,112 +1074,6 @@ msgstr ""
"Fenêtre de rendu: translation = [ %.2f %.2f %.2f ], rotation = [ %.2f %.2f "
"%.2f ], distance = %.2f"
#: src/mainwin.cc:778 src/mainwin.cc:1354
msgid "Untitled.scad"
msgstr "Untitled.scad"
#: src/mainwin.cc:971
msgid "Compile error."
msgstr "Erreur de Compilation."
#: src/mainwin.cc:974
msgid "Error while compiling '%1'."
msgstr "Erreur lors de la compilation de '%1'."
#: src/mainwin.cc:978
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] "La compilation a généré %1 avertissement"
msgstr[1] "La compilation a généré %1 avertissements"
#: src/mainwin.cc:988
msgid " For details see <a href=\"#console\">console window</a>."
msgstr " Pour détails voir <a href=\"#console\">Fenêtre de la Console</a>."
#: src/mainwin.cc:1353
msgid "Save File"
msgstr "Enregistrer le Fichier"
#: src/mainwin.cc:1355
msgid "OpenSCAD Designs (*.scad)"
msgstr "OpenSCAD Designs (*.scad)"
#: src/mainwin.cc:1365
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 existe déjà.\n"
"Voulez-vous le remplacer?"
#: src/mainwin.cc:1684
msgid "Application"
msgstr "Application"
#: src/mainwin.cc:1685
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Ce document a été modifié.\n"
"Voulez-vous vraiment recharger le fichier?"
#: src/mainwin.cc:2038 src/mainwin.cc:2094
msgid "Export %1 File"
msgstr "Exporter %1 Fichier"
#: src/mainwin.cc:2039 src/mainwin.cc:2098
msgid "%1 Files (*%2)"
msgstr "%1 Fichiers (*%2)"
#: src/mainwin.cc:2040
msgid "Untitled"
msgstr "Sans Titre"
#: src/mainwin.cc:2096
msgid "Untitled%1"
msgstr "Sans Titre%1"
#: src/mainwin.cc:2147
msgid "Export CSG File"
msgstr "Exporter un fichier CSG"
#: src/mainwin.cc:2148
msgid "Untitled.csg"
msgstr "SansTitre.csg"
#: src/mainwin.cc:2149
msgid "CSG Files (*.csg)"
msgstr "Fichiers CSG (*.csg)"
#: src/mainwin.cc:2175
msgid "Export Image"
msgstr "Exporter une Image"
#: src/mainwin.cc:2175
msgid "PNG Files (*.png)"
msgstr "Fichiers PNG (*.png)"
#: src/mainwin.cc:2423
msgid "Console"
msgstr "Console"
#: src/mainwin.cc:2560
msgid "The document has been modified."
msgstr "Ce document a été modifié"
#: src/mainwin.cc:2561
msgid "Do you want to save your changes?"
msgstr "Voulez-vous enregistrer vos changements?"
#: src/openscad.cc:604
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig a besoin de mettre à jour son cache de polices.\n"
"Celà peut prendre quelques minutes."
#: src/QGLView.cc:129
msgid ""
"Warning: You may experience OpenCSG rendering errors.\n"
@ -1219,22 +1113,136 @@ msgstr ""
"%s (%s)\n"
"Version OpenGL %s\n"
#: src/settings.cc:132
msgid "After indentation"
msgstr "Après indentation"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Basics"
msgstr "Bases"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Functions"
msgstr ""
#: src/UIUtils.cc:109
msgid "Shapes"
msgstr "Formes"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Extrusion"
msgstr "Extrusion"
#: src/UIUtils.cc:109
msgid "Old"
msgstr ""
#: src/mainwin.cc:779 src/mainwin.cc:1356
msgid "Untitled.scad"
msgstr "Untitled.scad"
#: src/mainwin.cc:973
msgid "Compile error."
msgstr "Erreur de Compilation."
#: src/mainwin.cc:976
msgid "Error while compiling '%1'."
msgstr "Erreur lors de la compilation de '%1'."
#: src/mainwin.cc:980
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] "La compilation a généré %1 avertissement"
msgstr[1] "La compilation a généré %1 avertissements"
#: src/mainwin.cc:990
msgid " For details see <a href=\"#console\">console window</a>."
msgstr " Pour détails voir <a href=\"#console\">Fenêtre de la Console</a>."
#: src/mainwin.cc:1355
msgid "Save File"
msgstr "Enregistrer le Fichier"
#: src/mainwin.cc:1357
msgid "OpenSCAD Designs (*.scad)"
msgstr "OpenSCAD Designs (*.scad)"
#: src/mainwin.cc:1367
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 existe déjà.\n"
"Voulez-vous le remplacer?"
#: src/mainwin.cc:1686
msgid "Application"
msgstr "Application"
#: src/mainwin.cc:1687
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Ce document a été modifié.\n"
"Voulez-vous vraiment recharger le fichier?"
#: src/mainwin.cc:2040 src/mainwin.cc:2096
msgid "Export %1 File"
msgstr "Exporter %1 Fichier"
#: src/mainwin.cc:2041 src/mainwin.cc:2100
msgid "%1 Files (*%2)"
msgstr "%1 Fichiers (*%2)"
#: src/mainwin.cc:2042
msgid "Untitled"
msgstr "Sans Titre"
#: src/mainwin.cc:2098
msgid "Untitled%1"
msgstr "Sans Titre%1"
#: src/mainwin.cc:2149
msgid "Export CSG File"
msgstr "Exporter un fichier CSG"
#: src/mainwin.cc:2150
msgid "Untitled.csg"
msgstr "SansTitre.csg"
#: src/mainwin.cc:2151
msgid "CSG Files (*.csg)"
msgstr "Fichiers CSG (*.csg)"
#: src/mainwin.cc:2177
msgid "Export Image"
msgstr "Exporter une Image"
#: src/mainwin.cc:2177
msgid "PNG Files (*.png)"
msgstr "Fichiers PNG (*.png)"
#: src/mainwin.cc:2427
msgid "Console"
msgstr "Console"
#: src/mainwin.cc:2564
msgid "The document has been modified."
msgstr "Ce document a été modifié"
#: src/mainwin.cc:2565
msgid "Do you want to save your changes?"
msgstr "Voulez-vous enregistrer vos changements?"
#: src/mainwin.cc:2697
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig a besoin de mettre à jour son cache de polices.\n"
"Celà peut prendre quelques minutes."
#: src/settings.cc:132
msgid "After indentation"
msgstr "Après indentation"
#~ msgid "Top"
#~ msgstr "Dessus"

View file

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OpenSCAD 2015.02.01\n"
"Project-Id-Version: OpenSCAD 2015.03.05\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-01 19:40+0100\n"
"POT-Creation-Date: 2015-03-05 16:09-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -69,46 +69,6 @@ msgid ""
"&quot;Liberation Sans:style=Italic&quot;);</span></pre></body></html>"
msgstr ""
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr ""
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr ""
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr ""
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr ""
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr ""
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr ""
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr ""
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr ""
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr ""
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr ""
#: objects/ui_LibraryInfoDialog.h:75
msgid "Lib & Build Info"
msgstr ""
@ -719,11 +679,11 @@ msgstr ""
msgid "3D View"
msgstr ""
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:86
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:109
msgid "Advanced"
msgstr ""
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2418
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2422
msgid "Editor"
msgstr ""
@ -989,6 +949,46 @@ msgstr ""
msgid "%v / %m"
msgstr ""
#: objects/ui_launchingscreen.h:294
msgid "Welcome to OpenSCAD"
msgstr ""
#: objects/ui_launchingscreen.h:295
msgid "New"
msgstr ""
#: objects/ui_launchingscreen.h:296
msgid "Open"
msgstr ""
#: objects/ui_launchingscreen.h:297
msgid "Help"
msgstr ""
#: objects/ui_launchingscreen.h:298
msgid "Recents"
msgstr ""
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr ""
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr ""
#: objects/ui_launchingscreen.h:303
msgid "Open Example"
msgstr ""
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr ""
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr ""
#: src/Camera.cc:126
#, c-format
msgid ""
@ -996,106 +996,6 @@ msgid ""
"distance = %.2f"
msgstr ""
#: src/mainwin.cc:778 src/mainwin.cc:1354
msgid "Untitled.scad"
msgstr ""
#: src/mainwin.cc:971
msgid "Compile error."
msgstr ""
#: src/mainwin.cc:974
msgid "Error while compiling '%1'."
msgstr ""
#: src/mainwin.cc:978
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] ""
msgstr[1] ""
#: src/mainwin.cc:988
msgid " For details see <a href=\"#console\">console window</a>."
msgstr ""
#: src/mainwin.cc:1353
msgid "Save File"
msgstr ""
#: src/mainwin.cc:1355
msgid "OpenSCAD Designs (*.scad)"
msgstr ""
#: src/mainwin.cc:1365
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
#: src/mainwin.cc:1684
msgid "Application"
msgstr ""
#: src/mainwin.cc:1685
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
#: src/mainwin.cc:2038 src/mainwin.cc:2094
msgid "Export %1 File"
msgstr ""
#: src/mainwin.cc:2039 src/mainwin.cc:2098
msgid "%1 Files (*%2)"
msgstr ""
#: src/mainwin.cc:2040
msgid "Untitled"
msgstr ""
#: src/mainwin.cc:2096
msgid "Untitled%1"
msgstr ""
#: src/mainwin.cc:2147
msgid "Export CSG File"
msgstr ""
#: src/mainwin.cc:2148
msgid "Untitled.csg"
msgstr ""
#: src/mainwin.cc:2149
msgid "CSG Files (*.csg)"
msgstr ""
#: src/mainwin.cc:2175
msgid "Export Image"
msgstr ""
#: src/mainwin.cc:2175
msgid "PNG Files (*.png)"
msgstr ""
#: src/mainwin.cc:2423
msgid "Console"
msgstr ""
#: src/mainwin.cc:2560
msgid "The document has been modified."
msgstr ""
#: src/mainwin.cc:2561
msgid "Do you want to save your changes?"
msgstr ""
#: src/openscad.cc:604
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
#: src/QGLView.cc:129
msgid ""
"Warning: You may experience OpenCSG rendering errors.\n"
@ -1124,18 +1024,126 @@ msgid ""
"OpenGL version %s\n"
msgstr ""
#: src/settings.cc:132
msgid "After indentation"
msgstr ""
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Basics"
msgstr ""
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Functions"
msgstr ""
#: src/UIUtils.cc:109
msgid "Shapes"
msgstr ""
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Extrusion"
msgstr ""
#: src/UIUtils.cc:109
msgid "Old"
msgstr ""
#: src/mainwin.cc:779 src/mainwin.cc:1356
msgid "Untitled.scad"
msgstr ""
#: src/mainwin.cc:973
msgid "Compile error."
msgstr ""
#: src/mainwin.cc:976
msgid "Error while compiling '%1'."
msgstr ""
#: src/mainwin.cc:980
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] ""
msgstr[1] ""
#: src/mainwin.cc:990
msgid " For details see <a href=\"#console\">console window</a>."
msgstr ""
#: src/mainwin.cc:1355
msgid "Save File"
msgstr ""
#: src/mainwin.cc:1357
msgid "OpenSCAD Designs (*.scad)"
msgstr ""
#: src/mainwin.cc:1367
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
#: src/mainwin.cc:1686
msgid "Application"
msgstr ""
#: src/mainwin.cc:1687
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
#: src/mainwin.cc:2040 src/mainwin.cc:2096
msgid "Export %1 File"
msgstr ""
#: src/mainwin.cc:2041 src/mainwin.cc:2100
msgid "%1 Files (*%2)"
msgstr ""
#: src/mainwin.cc:2042
msgid "Untitled"
msgstr ""
#: src/mainwin.cc:2098
msgid "Untitled%1"
msgstr ""
#: src/mainwin.cc:2149
msgid "Export CSG File"
msgstr ""
#: src/mainwin.cc:2150
msgid "Untitled.csg"
msgstr ""
#: src/mainwin.cc:2151
msgid "CSG Files (*.csg)"
msgstr ""
#: src/mainwin.cc:2177
msgid "Export Image"
msgstr ""
#: src/mainwin.cc:2177
msgid "PNG Files (*.png)"
msgstr ""
#: src/mainwin.cc:2427
msgid "Console"
msgstr ""
#: src/mainwin.cc:2564
msgid "The document has been modified."
msgstr ""
#: src/mainwin.cc:2565
msgid "Do you want to save your changes?"
msgstr ""
#: src/mainwin.cc:2697
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
#: src/settings.cc:132
msgid "After indentation"
msgstr ""

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OpenSCAD 2014.01.05\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-01 18:03+0100\n"
"POT-Creation-Date: 2015-03-05 16:09-0500\n"
"PO-Revision-Date: 2013-02-24 17:50+0100\n"
"Last-Translator: <soniczerops@gmail.com>\n"
"Language-Team: Russian\n"
@ -70,52 +70,6 @@ msgid ""
"&quot;Liberation Sans:style=Italic&quot;);</span></pre></body></html>"
msgstr ""
#: objects/ui_launchingscreen.h:294
#, fuzzy
msgid "Welcome to OpenSCAD"
msgstr "Добро пожаловать в OpenSCAD"
#: objects/ui_launchingscreen.h:295
#, fuzzy
msgid "New"
msgstr "&Создать"
#: objects/ui_launchingscreen.h:296
#, fuzzy
msgid "Open"
msgstr "&Открыть..."
#: objects/ui_launchingscreen.h:297
#, fuzzy
msgid "Help"
msgstr "&Справка"
#: objects/ui_launchingscreen.h:298
#, fuzzy
msgid "Recents"
msgstr "Открыть файл"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Открыть недавние"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Примеры"
#: objects/ui_launchingscreen.h:303
#, fuzzy
msgid "Open Example"
msgstr "Открыть пример"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Не показывать снова"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Версия"
#: objects/ui_LibraryInfoDialog.h:75
msgid "Lib & Build Info"
msgstr "Информация о сборке"
@ -777,11 +731,11 @@ msgstr "Свойства"
msgid "3D View"
msgstr "3D Вид"
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:86
#: objects/ui_Preferences.h:1063 src/UIUtils.cc:109
msgid "Advanced"
msgstr "Дополнительные"
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2418
#: objects/ui_Preferences.h:1064 src/mainwin.cc:2422
msgid "Editor"
msgstr "Редактор"
@ -1061,127 +1015,60 @@ msgstr "Включить локализацию интерфейса (необх
msgid "%v / %m"
msgstr "%v / %m"
#: objects/ui_launchingscreen.h:294
#, fuzzy
msgid "Welcome to OpenSCAD"
msgstr "Добро пожаловать в OpenSCAD"
#: objects/ui_launchingscreen.h:295
#, fuzzy
msgid "New"
msgstr "&Создать"
#: objects/ui_launchingscreen.h:296
#, fuzzy
msgid "Open"
msgstr "&Открыть..."
#: objects/ui_launchingscreen.h:297
#, fuzzy
msgid "Help"
msgstr "&Справка"
#: objects/ui_launchingscreen.h:298
#, fuzzy
msgid "Recents"
msgstr "Открыть файл"
#: objects/ui_launchingscreen.h:299
msgid "Open Recent"
msgstr "Открыть недавние"
#: objects/ui_launchingscreen.h:300 objects/ui_launchingscreen.h:302
msgid "Examples"
msgstr "Примеры"
#: objects/ui_launchingscreen.h:303
#, fuzzy
msgid "Open Example"
msgstr "Открыть пример"
#: objects/ui_launchingscreen.h:312
msgid "Don't show again"
msgstr "Не показывать снова"
#: objects/ui_launchingscreen.h:313
msgid "Version"
msgstr "Версия"
#: src/Camera.cc:126
#, c-format
msgid ""
"Viewport: translate = [ %.2f %.2f %.2f ], rotate = [ %.2f %.2f %.2f ], "
"distance = %.2f"
msgstr ""
"Обзор: translate = [ %.2f %.2f %.2f ], rotate = [ %.2f %.2f %.2f ], "
"distance = %.2f"
#: src/mainwin.cc:778 src/mainwin.cc:1354
msgid "Untitled.scad"
msgstr "Безымянный.scad"
#: src/mainwin.cc:971
#, fuzzy
msgid "Compile error."
msgstr "&Компилировать"
#: src/mainwin.cc:974
msgid "Error while compiling '%1'."
msgstr "Ошибка во время компиляции '%1'."
#: src/mainwin.cc:978
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/mainwin.cc:988
msgid " For details see <a href=\"#console\">console window</a>."
msgstr "Для подробностей смотреть <a href=\"#console\">окно консоли</a>."
#: src/mainwin.cc:1353
msgid "Save File"
msgstr "Сохранить файл"
#: src/mainwin.cc:1355
msgid "OpenSCAD Designs (*.scad)"
msgstr "Модели OpenSCAD (*.scad)"
#: src/mainwin.cc:1365
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 уже существует.\n"
"Перезаписать?"
#: src/mainwin.cc:1684
msgid "Application"
msgstr "Приложение"
#: src/mainwin.cc:1685
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Документ был изменен.\n"
"Хотите перезагрузить документ?"
#: src/mainwin.cc:2038 src/mainwin.cc:2094
#, fuzzy
msgid "Export %1 File"
msgstr "Экспортировать в DXF..."
#: src/mainwin.cc:2039 src/mainwin.cc:2098
msgid "%1 Files (*%2)"
msgstr "%1 Файлов (*%2)"
#: src/mainwin.cc:2040
#, fuzzy
msgid "Untitled"
msgstr "Безымянный.scad"
#: src/mainwin.cc:2096
#, fuzzy
msgid "Untitled%1"
msgstr "Безымянный.scad"
#: src/mainwin.cc:2147
msgid "Export CSG File"
msgstr "Экспортировать файл CSG"
#: src/mainwin.cc:2148
msgid "Untitled.csg"
msgstr "Безимянный.csg"
#: src/mainwin.cc:2149
msgid "CSG Files (*.csg)"
msgstr "Файлы CSG (*.csg)"
#: src/mainwin.cc:2175
msgid "Export Image"
msgstr "Экспортировать изображение"
#: src/mainwin.cc:2175
msgid "PNG Files (*.png)"
msgstr "Файлы PNG (*.png)"
#: src/mainwin.cc:2423
msgid "Console"
msgstr "Консоль"
#: src/mainwin.cc:2560
#, fuzzy
msgid "The document has been modified."
msgstr "Документ был изменен."
#: src/mainwin.cc:2561
#, fuzzy
msgid "Do you want to save your changes?"
msgstr "Сохранить изменения?"
#: src/openscad.cc:604
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig требуется обновить кеш шрифтов.\n"
"Это может занять пару минут."
"Обзор: translate = [ %.2f %.2f %.2f ], rotate = [ %.2f %.2f %.2f ], distance "
"= %.2f"
#: src/QGLView.cc:129
msgid ""
@ -1222,22 +1109,143 @@ msgstr ""
"%s (%s)\n"
"Версия OpenGL %s\n"
#: src/settings.cc:132
msgid "After indentation"
msgstr "После отступа"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Basics"
msgstr "Примитивы"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Functions"
msgstr ""
#: src/UIUtils.cc:109
msgid "Shapes"
msgstr "Формы"
#: src/UIUtils.cc:86
#: src/UIUtils.cc:109
msgid "Extrusion"
msgstr "Выдавливание"
#: src/UIUtils.cc:109
msgid "Old"
msgstr ""
#: src/mainwin.cc:779 src/mainwin.cc:1356
msgid "Untitled.scad"
msgstr "Безымянный.scad"
#: src/mainwin.cc:973
#, fuzzy
msgid "Compile error."
msgstr "&Компилировать"
#: src/mainwin.cc:976
msgid "Error while compiling '%1'."
msgstr "Ошибка во время компиляции '%1'."
#: src/mainwin.cc:980
msgid "Compilation generated %1 warning."
msgid_plural "Compilation generated %1 warnings."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: src/mainwin.cc:990
msgid " For details see <a href=\"#console\">console window</a>."
msgstr "Для подробностей смотреть <a href=\"#console\">окно консоли</a>."
#: src/mainwin.cc:1355
msgid "Save File"
msgstr "Сохранить файл"
#: src/mainwin.cc:1357
msgid "OpenSCAD Designs (*.scad)"
msgstr "Модели OpenSCAD (*.scad)"
#: src/mainwin.cc:1367
msgid ""
"%1 already exists.\n"
"Do you want to replace it?"
msgstr ""
"%1 уже существует.\n"
"Перезаписать?"
#: src/mainwin.cc:1686
msgid "Application"
msgstr "Приложение"
#: src/mainwin.cc:1687
msgid ""
"The document has been modified.\n"
"Do you really want to reload the file?"
msgstr ""
"Документ был изменен.\n"
"Хотите перезагрузить документ?"
#: src/mainwin.cc:2040 src/mainwin.cc:2096
#, fuzzy
msgid "Export %1 File"
msgstr "Экспортировать в DXF..."
#: src/mainwin.cc:2041 src/mainwin.cc:2100
msgid "%1 Files (*%2)"
msgstr "%1 Файлов (*%2)"
#: src/mainwin.cc:2042
#, fuzzy
msgid "Untitled"
msgstr "Безымянный.scad"
#: src/mainwin.cc:2098
#, fuzzy
msgid "Untitled%1"
msgstr "Безымянный.scad"
#: src/mainwin.cc:2149
msgid "Export CSG File"
msgstr "Экспортировать файл CSG"
#: src/mainwin.cc:2150
msgid "Untitled.csg"
msgstr "Безимянный.csg"
#: src/mainwin.cc:2151
msgid "CSG Files (*.csg)"
msgstr "Файлы CSG (*.csg)"
#: src/mainwin.cc:2177
msgid "Export Image"
msgstr "Экспортировать изображение"
#: src/mainwin.cc:2177
msgid "PNG Files (*.png)"
msgstr "Файлы PNG (*.png)"
#: src/mainwin.cc:2427
msgid "Console"
msgstr "Консоль"
#: src/mainwin.cc:2564
#, fuzzy
msgid "The document has been modified."
msgstr "Документ был изменен."
#: src/mainwin.cc:2565
#, fuzzy
msgid "Do you want to save your changes?"
msgstr "Сохранить изменения?"
#: src/mainwin.cc:2697
msgid ""
"Fontconfig needs to update its font cache.\n"
"This can take up to a couple of minutes."
msgstr ""
"Fontconfig требуется обновить кеш шрифтов.\n"
"Это может занять пару минут."
#: src/settings.cc:132
msgid "After indentation"
msgstr "После отступа"
#~ msgid "Top"
#~ msgstr "Сверху"

1
scripts/examples-html/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/html

View file

@ -0,0 +1,48 @@
EXAMPLES := ../../examples
SRC=$(wildcard $(EXAMPLES)/*/*.scad)
PNG=$(patsubst $(EXAMPLES)/%.scad,html/%.png,$(SRC))
HTML=$(patsubst $(EXAMPLES)/%.scad,html/%.html,$(SRC))
OPENSCAD := ../../OpenSCAD.app/Contents/MacOS/OpenSCAD
#OPENSCAD := openscad
ARGS := --imgsize=1200,900 --camera=0,0,0,55,0,25,180 --viewall --autocenter
all : $(PNG) $(HTML) example-data.js assets
.PHONY: clean
clean :
rm -rf html
.PHONY: assets
assets :
cp -a assets html/
.PHONY: example-data.js
example-data.js :
( \
echo "openscad_examples = ["; \
for a in Basics Functions Shapes Extrusion Advanced; \
do \
echo " {"; \
echo " name : \"$$a\","; \
echo " files : ["; \
for f in "$(EXAMPLES)/$$a/"*.scad ; \
do \
echo " \"`basename -s .scad $$f`\","; \
done; \
echo " ]"; \
echo " },"; \
done; \
echo "];" \
) > html/example-data.js
html/%.png : $(EXAMPLES)/%.scad
mkdir -p `dirname $@`
$(OPENSCAD) $(ARGS) -o $@ $< > out.log 2>&1
html/%.html : $(EXAMPLES)/%.scad template-pre.html template-post.html
#echo $(notdir $(patsubst %.scad,%.png,$<))
mkdir -p `dirname $@`
sed -e 's/@@IMAGE@@/$(notdir $(patsubst %.scad,%.png,$<))/g' template-pre.html > $@
sed -e 's/</\&lt/; s/>/\&gt/;' $< >> $@
cat template-post.html >> $@

View file

@ -0,0 +1,58 @@
.green {
color:#518e04;
}
#wrapper {
position: fixed;
top: 0;
left: 0;
width:100%;
height: 100%;
}
#content {
position: absolute;
top: 65px;
left: 10px;
right: 10px;
bottom: 10px;
border-width: 1px;
border-style: groove;
overflow: auto;
background: #fdf6e3;
}
#logo {
position: absolute;
top: 5px;
left: 5px;
}
#logo h1 {
position: absolute;
top: 2px;
left: 80px;
width: 20em;
margin: 0px;
font-family: "Open Sans", sans-serif;
font-size: 22px;
}
#logo img {
width: 60px;
height: 60px;
}
#image {
position: absolute;
z-index: 50;
top: 80px;
right: 30px;
}
#image img {
width: 200px;
height: 150px;
border-width: 1px;
border-style: groove;
}

View file

@ -0,0 +1,129 @@
// http://www.olivergast.de/2012/04/18/css3-dropdown-menu/
#menu {
width: 800px;
margin: 50px auto;
}
#menu h3 {
font-size: 12px;
color: #fff;
padding: 10px;
margin: 0;
background: #000;
line-height: 20px;
}
#menu ul {
position: absolute;
top: 30px;
margin: 0 auto;
margin-left: 20px;
list-style: none;
}
#menu ul li {
float: left;
margin: 0 0 0 14px;
font-size: 14px;
font-family: 'Arial', sans-serif;
line-height: 30px;
}
#menu ul li a {
color: #000;
text-decoration: none;
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out;
-ms-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
#menu ul li a:hover {
color: #999;
}
#menu ul li div {
float: left;
width: 4px;
height: 4px;
margin: 10px 5px;
padding: 4px;
background: #999;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out;
-ms-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
#menu ul li:hover div {
background: #000;
}
#menu ul ul {
position: absolute;
z-index: 100;
top: -9999px;
background: #fff;
padding: 0;
margin: 0 0 0 -5px;
-webkit-box-shadow: 0 10px 20px #888;
-moz-box-shadow: 0 10px 20px #888;
box-shadow: 0 10px 20px #888;
}
#menu ul ul:before {
position: absolute;
content:"";
width: 10px;
height: 10px;
top: -5px;
left: 11px;
background: #000;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
#menu ul li:hover ul {
top: 30px;
}
#menu ul ul li {
float: none;
font-size: 12px;
padding: 5px 10px;
text-align: left;
margin: 0;
border-bottom: 1px solid #ddd;
line-height: 20px;
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out;
-ms-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}
#menu ul ul a {
color: #333;
text-decoration: none;
}
#menu ul ul li.all {
font-size: 12px;
border-bottom: none;
text-transform: none;
}
#menu ul ul li:hover {
background: #333;
color: #fff;
}

View file

@ -0,0 +1,85 @@
/**
* Solarized Light theme
*
* Adaptation of Solarized Light from ethanschoonover.com/solarized
*
* @author Ethan Schoonover
* @author David Litmark
* @version 1.0.0
*/
pre {
background: #fdf6e3; /* base3 */
word-wrap: break-word;
margin: 0px;
padding: 6px;
color: #657b83; /* base00 */
font-size: 12px;
}
pre, code {
font-family: 'Monaco', courier, monospace;
}
pre .comment {
color: #93a1a1; /* base1 */
}
pre .constant {
color: #657b83; /* base00 */
}
pre .constant.language {
color: #268bd2; /* blue */
}
pre .constant.regexp {
color: #2aa198; /* cyan */
}
pre .storage {
color: #268bd2; /* blue */
}
pre .string, pre .comment.docstring {
color: #2aa198; /* cyan */
}
pre .support.tag.script, pre .support.tag.style {
color: #2aa198; /* cyan */
}
pre .string.regexp {
color: #2aa198; /* cyan */
}
pre .string.regexp.open, pre .string.regexp.close {
color: #2aa198; /* cyan */
}
pre .keyword, pre .selector {
color: #859900; /* green */
}
pre .inherited-class {
font-style: italic;
}
pre .entity {
color: #b58900; /* yellow */
}
pre .support, *[data-language="c"] .function.call {
color: #859900; /* green */
}
pre .support.method {
color: #657b83; /* base00 */
}
pre .support.property {
color: #657b83; /* base00 */
}
pre .variable.global, pre .variable.class, pre .variable.instance {
color: #657b83; /* base00 */
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View file

@ -0,0 +1,65 @@
/**
* Generic language patterns
*
* @author Craig Campbell
* @version 1.0.11
*/
Rainbow.extend([
{
'matches': {
1: [
{
'name': 'keyword.operator',
'pattern': /\=|\+/g
},
{
'name': 'keyword.dot',
'pattern': /\./g
}
],
2: {
'name': 'string',
'matches': {
'name': 'constant.character.escape',
'pattern': /\\('|"){1}/g
}
}
},
'pattern': /(\(|\s|\[|\=|:|\+|\.)(('|")([^\\\1]|\\.)*?(\3))/gm
},
{
'name': 'comment',
'pattern': /\/\*[\s\S]*?\*\/|(\/\/|\#)[\s\S]*?$/gm
},
{
'name': 'constant.numeric',
'pattern': /\b(\d+(\.\d+)?(e(\+|\-)?\d+)?(f|d)?|0x[\da-f]+)\b/gi
},
{
'matches': {
1: 'keyword'
},
'pattern': /\b(and|array|as|b(ool(ean)?|reak)|c(ase|atch|har|lass|on(st|tinue))|d(ef|elete|o(uble)?)|e(cho|lse(if)?|xit|xtends|xcept)|f(inally|loat|or(each)?|unction)|global|if|import|int(eger)?|long|new|object|or|pr(int|ivate|otected)|public|return|self|st(ring|ruct|atic)|switch|th(en|is|row)|try|(un)?signed|var|void|while)(?=\(|\b)/gi
},
{
'name': 'constant.language',
'pattern': /true|false|null/g
},
{
'name': 'keyword.operator',
'pattern': /\+|\!|\-|&(gt|lt|amp);|\||\*|\=/g
},
{
'matches': {
1: 'function.call'
},
'pattern': /(\w+?)(?=\()/g
},
{
'matches': {
1: 'storage.function',
2: 'entity.name.function'
},
'pattern': /(function)\s(.*?)(?=\()/g
}
]);

View file

@ -0,0 +1,93 @@
/**
* Javascript patterns
*
* @author Craig Campbell
* @version 1.0.9
*/
Rainbow.extend('javascript', [
/**
* matches $. or $(
*/
{
'name': 'selector',
'pattern': /(\s|^)\$(?=\.|\()/g
},
{
'name': 'support',
'pattern': /\b(window|document)\b/g
},
{
'matches': {
1: 'support.property'
},
'pattern': /\.(length|node(Name|Value))\b/g
},
{
'matches': {
1: 'support.function'
},
'pattern': /(setTimeout|setInterval)(?=\()/g
},
{
'matches': {
1: 'support.method'
},
'pattern': /\.(getAttribute|push|getElementById|getElementsByClassName|log|setTimeout|setInterval)(?=\()/g
},
/**
* matches any escaped characters inside of a js regex pattern
*
* @see https://github.com/ccampbell/rainbow/issues/22
*
* this was causing single line comments to fail so it now makes sure
* the opening / is not directly followed by a *
*
* @todo check that there is valid regex in match group 1
*/
{
'name': 'string.regexp',
'matches': {
1: 'string.regexp.open',
2: {
'name': 'constant.regexp.escape',
'pattern': /\\(.){1}/g
},
3: 'string.regexp.close',
4: 'string.regexp.modifier'
},
'pattern': /(\/)(?!\*)(.+)(\/)([igm]{0,3})/g
},
/**
* matches runtime function declarations
*/
{
'matches': {
1: 'storage',
3: 'entity.function'
},
'pattern': /(var)?(\s|^)(\S*)(?=\s?=\s?function\()/g
},
/**
* matches constructor call
*/
{
'matches': {
1: 'keyword',
2: 'entity.function'
},
'pattern': /(new)\s+(.*)(?=\()/g
},
/**
* matches any function call in the style functionName: function()
*/
{
'name': 'entity.function',
'pattern': /(\w+)(?=:\s{0,}function)/g
}
]);

View file

@ -0,0 +1,38 @@
function addSubmenu(menu, name, files) {
var ul = document.createElement('ul');
ul.appendChild(document.createElement('h3'));
for (var a = 0; a < files.length; a++) {
var menulink = document.createElement('a');
menulink.href = "../" + name + "/" + files[a] + ".html";
ul.appendChild(menulink);
var li = document.createElement('li');
li.appendChild(document.createTextNode(files[a]));
menulink.appendChild(li);
}
menu.appendChild(ul);
}
function addMenu() {
var menudiv = document.getElementById("menu");
var menu = document.createElement('ul');
menudiv.appendChild(menu);
for (var a = 0; a < openscad_examples.length; a++) {
var entry = document.createElement('li');
var menulink = document.createElement('a');
menulink.href = "#";
entry.appendChild(menulink);
var entrydiv = document.createElement('div');
menulink.appendChild(entrydiv);
menulink.appendChild(document.createTextNode(openscad_examples[a].name));
addSubmenu(entry, openscad_examples[a].name, openscad_examples[a].files);
menu.appendChild(entry);
}
}
function load() {
addMenu();
}

View file

@ -0,0 +1,8 @@
/* Rainbow v1.1.9 rainbowco.de */
window.Rainbow=function(){function q(a){var b,c=a.getAttribute&&a.getAttribute("data-language")||0;if(!c){a=a.attributes;for(b=0;b<a.length;++b)if("data-language"===a[b].nodeName)return a[b].nodeValue}return c}function B(a){var b=q(a)||q(a.parentNode);if(!b){var c=/\blang(?:uage)?-(\w+)/;(a=a.className.match(c)||a.parentNode.className.match(c))&&(b=a[1])}return b}function C(a,b){for(var c in e[d]){c=parseInt(c,10);if(a==c&&b==e[d][c]?0:a<=c&&b>=e[d][c])delete e[d][c],delete j[d][c];if(a>=c&&a<e[d][c]||
b>c&&b<e[d][c])return!0}return!1}function r(a,b){return'<span class="'+a.replace(/\./g," ")+(l?" "+l:"")+'">'+b+"</span>"}function s(a,b,c,h){var f=a.exec(c);if(f){++t;!b.name&&"string"==typeof b.matches[0]&&(b.name=b.matches[0],delete b.matches[0]);var k=f[0],i=f.index,u=f[0].length+i,g=function(){function f(){s(a,b,c,h)}t%100>0?f():setTimeout(f,0)};if(C(i,u))g();else{var m=v(b.matches),l=function(a,c,h){if(a>=c.length)h(k);else{var d=f[c[a]];if(d){var e=b.matches[c[a]],i=e.language,g=e.name&&e.matches?
e.matches:e,j=function(b,d,e){var i;i=0;var g;for(g=1;g<c[a];++g)f[g]&&(i=i+f[g].length);d=e?r(e,d):d;k=k.substr(0,i)+k.substr(i).replace(b,d);l(++a,c,h)};i?n(d,i,function(a){j(d,a)}):typeof e==="string"?j(d,d,e):w(d,g.length?g:[g],function(a){j(d,a,e.matches?e.name:0)})}else l(++a,c,h)}};l(0,m,function(a){b.name&&(a=r(b.name,a));if(!j[d]){j[d]={};e[d]={}}j[d][i]={replace:f[0],"with":a};e[d][i]=u;g()})}}else h()}function v(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(c);return b.sort(function(a,
b){return b-a})}function w(a,b,c){function h(b,k){k<b.length?s(b[k].pattern,b[k],a,function(){h(b,++k)}):D(a,function(a){delete j[d];delete e[d];--d;c(a)})}++d;h(b,0)}function D(a,b){function c(a,b,h,e){if(h<b.length){++x;var g=b[h],l=j[d][g],a=a.substr(0,g)+a.substr(g).replace(l.replace,l["with"]),g=function(){c(a,b,++h,e)};0<x%250?g():setTimeout(g,0)}else e(a)}var h=v(j[d]);c(a,h,0,b)}function n(a,b,c){var d=m[b]||[],f=m[y]||[],b=z[b]?d:d.concat(f);w(a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/&(?![\w\#]+;)/g,
"&amp;"),b,c)}function o(a,b,c){if(b<a.length){var d=a[b],f=B(d);return!(-1<(" "+d.className+" ").indexOf(" rainbow "))&&f?(f=f.toLowerCase(),d.className+=d.className?" rainbow":"rainbow",n(d.innerHTML,f,function(k){d.innerHTML=k;j={};e={};p&&p(d,f);setTimeout(function(){o(a,++b,c)},0)})):o(a,++b,c)}c&&c()}function A(a,b){var a=a&&"function"==typeof a.getElementsByTagName?a:document,c=a.getElementsByTagName("pre"),d=a.getElementsByTagName("code"),f,e=[];for(f=0;f<d.length;++f)e.push(d[f]);for(f=0;f<
c.length;++f)c[f].getElementsByTagName("code").length||e.push(c[f]);o(e,0,b)}var j={},e={},m={},z={},d=0,y=0,t=0,x=0,l,p;return{extend:function(a,b,c){1==arguments.length&&(b=a,a=y);z[a]=c;m[a]=b.concat(m[a]||[])},b:function(a){p=a},a:function(a){l=a},color:function(a,b,c){if("string"==typeof a)return n(a,b,c);if("function"==typeof a)return A(0,a);A(a,b)}}}();document.addEventListener?document.addEventListener("DOMContentLoaded",Rainbow.color,!1):window.attachEvent("onload",Rainbow.color);
Rainbow.onHighlight=Rainbow.b;Rainbow.addClass=Rainbow.a;

View file

@ -0,0 +1,6 @@
</code>
</pre>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="../assets/css/main.css" type="text/css"/>
<link rel="stylesheet" href="../assets/css/menu.css" type="text/css" media="screen" />
<link rel="stylesheet" href="../assets/css/solarized-light.css" type="text/css"/>
<script src="../example-data.js" type="text/javascript"></script>
<script src="../assets/js/menu.js" type="text/javascript"></script>
<script src="../assets/js/rainbow.min.js" type="text/javascript"></script>
<script src="../assets/js/language/generic.js" type="text/javascript"></script>
<script src="../assets/js/language/javascript.js" type="text/javascript"></script>
</head>
<body onload="load()">
<div class="wrapper">
<div id="menu"></div>
<div id="logo">
<a href="http://openscad.org/"><img src="../assets/images/openscad.png"></a>
<h1><span class="green">Open</span>SCAD - Examples</h1>
</div>
<div id="image">
<a href="@@IMAGE@@"><img src="@@IMAGE@@"></a>
</div>
<div id="content">
<pre><code data-language="javascript">

View file

@ -16,7 +16,7 @@ do
done
done
for src in src/*.h src/*.cc
for src in src/*.h src/*.cc src/*.cpp src/*.mm
do
echo $src
done

View file

@ -3,7 +3,7 @@
#include "printutils.h"
Camera::Camera(enum CameraType camtype) :
type(camtype), projection(Camera::PERSPECTIVE), fov(45), viewall(false), height(60)
type(camtype), projection(Camera::PERSPECTIVE), fov(22.5), viewall(false), height(60)
{
PRINTD("Camera()");
if (this->type == Camera::GIMBAL) {
@ -48,10 +48,8 @@ void Camera::gimbalDefaultTranslate()
/*!
Moves camera so that the given bbox is fully visible.
FIXME: The scalefactor is a temporary hack to be compatible with
earlier ways of showing the whole scene.
*/
void Camera::viewAll(const BoundingBox &bbox, float scalefactor)
void Camera::viewAll(const BoundingBox &bbox)
{
if (this->type == Camera::NONE) {
this->type = Camera::VECTOR;
@ -75,15 +73,17 @@ void Camera::viewAll(const BoundingBox &bbox, float scalefactor)
case Camera::ORTHOGONAL:
this->height = this->viewer_distance = bbox.diagonal().norm();
break;
case Camera::PERSPECTIVE: {
double radius = bbox.diagonal().norm()/2;
case Camera::PERSPECTIVE: {
double bboxRadius = bbox.diagonal().norm()/2;
double radius = (bbox.center()-this->center).norm() + bboxRadius;
double distance = radius / sin(this->fov*M_PI/360);
switch (this->type) {
case Camera::GIMBAL:
this->height = this->viewer_distance = radius / tan(this->fov*M_PI/360);
this->height = this->viewer_distance = distance;
break;
case Camera::VECTOR: {
Vector3d cameradir = (this->center - this->eye).normalized();
this->eye = this->center - radius*scalefactor*cameradir;
this->eye = this->center - distance*cameradir;
break;
}
default:

View file

@ -30,10 +30,10 @@ public:
void gimbalDefaultTranslate();
void setProjection(ProjectionType type);
void zoom(int delta);
double zoomValue();
void resetView();
void viewAll(const BoundingBox &bbox, float scalefactor = 1.0f);
std::string statusText();
double zoomValue();
void resetView();
void viewAll(const BoundingBox &bbox);
std::string statusText();
// Vectorcam
Eigen::Vector3d eye;

View file

@ -36,6 +36,10 @@
#include "PlatformUtils.h"
#include "openscad.h"
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/foreach.hpp>
QFileInfo UIUtils::openFile(QWidget *parent)
{
QSettings settings;
@ -79,24 +83,45 @@ QStringList UIUtils::recentFiles()
return files;
}
using namespace boost::property_tree;
static ptree *examples_tree = NULL;
static ptree *examplesTree()
{
if (!examples_tree) {
std::string path = (PlatformUtils::resourcePath("examples") / "examples.json").string();
try {
examples_tree = new ptree;
read_json(path, *examples_tree);
} catch (const std::exception & e) {
PRINTB("Error reading examples.json: %s", e.what());
delete examples_tree;
examples_tree = NULL;
}
}
return examples_tree;
}
QStringList UIUtils::exampleCategories()
{
QStringList categories;
//categories in File menu item - Examples
categories << N_("Basics") << N_("Shapes") << N_("Extrusion") << N_("Advanced");
return categories;
// categories in File menu item - Examples
QStringList categories;
categories << N_("Basics") << N_("Functions") << N_("Shapes") << N_("Extrusion") << N_("Advanced") << N_("Old");
return categories;
}
QFileInfoList UIUtils::exampleFiles(const QString &category)
{
QDir dir(QString::fromStdString(PlatformUtils::resourcePath("examples").string()));
if (!dir.cd(category)) {
return QFileInfoList();
}
QFileInfoList examples = dir.entryInfoList(QStringList("*.scad"), QDir::Files | QDir::Readable, QDir::Name);
return examples;
QFileInfoList examples;
ptree *pt = examplesTree();
if (pt) {
fs::path examplesPath = PlatformUtils::resourcePath("examples") / category.toStdString();
BOOST_FOREACH(const ptree::value_type &v, pt->get_child(category.toStdString())) {
examples << QFileInfo(QString::fromStdString((examplesPath / v.second.data()).string()));
}
}
return examples;
}
void UIUtils::openHomepageURL()

View file

@ -12,11 +12,11 @@
#include "cgalutils.h"
#include "CGAL_Nef_polyhedron.h"
static void setupCamera(Camera &cam, const BoundingBox &bbox, float scalefactor)
static void setupCamera(Camera &cam, const BoundingBox &bbox)
{
PRINTDB("setupCamera() %i",cam.type);
if (cam.type == Camera::NONE) cam.viewall = true;
if (cam.viewall) cam.viewAll(bbox, scalefactor);
if (cam.viewall) cam.viewAll(bbox);
}
void export_png(shared_ptr<const Geometry> root_geom, Camera &cam, std::ostream &output)
@ -32,7 +32,7 @@ void export_png(shared_ptr<const Geometry> root_geom, Camera &cam, std::ostream
CGALRenderer cgalRenderer(root_geom);
BoundingBox bbox = cgalRenderer.getBoundingBox();
setupCamera(cam, bbox, 3);
setupCamera(cam, bbox);
glview->setCamera(cam);
glview->setRenderer(&cgalRenderer);
@ -75,7 +75,7 @@ void export_png_preview_common(Tree &tree, Camera &cam, std::ostream &output, Pr
csgInfo.glview->setRenderer(&thrownTogetherRenderer);
#ifdef ENABLE_OPENCSG
BoundingBox bbox = csgInfo.glview->getRenderer()->getBoundingBox();
setupCamera(cam, bbox, 2.7);
setupCamera(cam, bbox);
csgInfo.glview->setCamera(cam);
OpenCSG::setContext(0);

View file

@ -960,6 +960,10 @@ ValuePtr builtin_cross(const Context *, const EvalContext *evalctx)
Value::VectorType v0 = arg0->toVector();
Value::VectorType v1 = arg1->toVector();
if ((v0.size() == 2) && (v1.size() == 2)) {
return ValuePtr(Value(v0[0].toDouble() * v1[1].toDouble() - v0[1].toDouble() * v1[0].toDouble()));
}
if ((v0.size() != 3) || (v1.size() != 3)) {
PRINT("WARNING: Invalid vector size of parameter for cross()");
return ValuePtr::undefined;

View file

@ -15,3 +15,6 @@ echo(cross([1, 2, 3], [1, 2]));
echo(cross([1, 2, 3], [1, 2, "a"]));
echo(cross([1, 2, 3], [1, 2, [0]]));
echo(cross([1, 2, 3], [1, 2, [1:2]]));
// 2D cross
echo(cross([2, 3], [5, 6]));

View file

@ -1049,8 +1049,19 @@ file(GLOB SCAD_DXF_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/dxf/*.scad)
file(GLOB FUNCTION_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/functions/*.scad)
file(GLOB_RECURSE EXAMPLE_3D_FILES ${CMAKE_SOURCE_DIR}/../examples/*.scad)
list(REMOVE_ITEM EXAMPLE_3D_FILES ${CMAKE_SOURCE_DIR}/../examples/Shapes/flat_body.scad)
list(APPEND EXAMPLE_2D_FILES ${CMAKE_SOURCE_DIR}/../examples/Shapes/flat_body.scad)
list(REMOVE_ITEM EXAMPLE_3D_FILES
${CMAKE_SOURCE_DIR}/../examples/Old/example015.scad
${CMAKE_SOURCE_DIR}/../examples/Advanced/module_recursion.scad
${CMAKE_SOURCE_DIR}/../examples/Functions/list_comprehensions.scad
${CMAKE_SOURCE_DIR}/../examples/Functions/polygon_areas.scad
${CMAKE_SOURCE_DIR}/../examples/Functions/recursion.scad)
list(APPEND EXAMPLE_2D_FILES
${CMAKE_SOURCE_DIR}/../examples/Old/example015.scad
${CMAKE_SOURCE_DIR}/../examples/Advanced/module_recursion.scad
${CMAKE_SOURCE_DIR}/../examples/Functions/list_comprehensions.scad
${CMAKE_SOURCE_DIR}/../examples/Functions/polygon_areas.scad
${CMAKE_SOURCE_DIR}/../examples/Functions/recursion.scad)
list(APPEND EXAMPLE_FILES ${EXAMPLE_3D_FILES} ${EXAMPLE_2D_FILES})
@ -1135,7 +1146,6 @@ set_test_config(Bugs dxfpngtest_text-font-direction-tests
csgpngtest_text-font-direction-tests
throwntogethertest_text-font-direction-tests)
list(APPEND EXPORT3D_CGALCGAL_TEST_FILES ${EXAMPLE_3D_FILES})
list(APPEND EXPORT3D_CGALCGAL_TEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/polyhedron-nonplanar-tests.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/rotate_extrude-tests.scad
${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/union-coincident-test.scad
@ -1342,6 +1352,10 @@ foreach(FILE ${EXAMPLE_FILES})
get_test_fullname(offcgalpngtest ${FILE} TEST_FULLNAME)
set_test_config(Examples ${TEST_FULLNAME})
endforeach()
foreach(FILE ${EXAMPLE_2D_FILES})
get_test_fullname(dxfpngtest ${FILE} TEST_FULLNAME)
set_test_config(Examples ${TEST_FULLNAME})
endforeach()
# Workaround Gallium bugs
if ( ${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
@ -1490,22 +1504,22 @@ add_cmdline_test(openscad-imgstretch2 EXE ${OPENSCAD_BINPATH}
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective gimbal cam
add_cmdline_test(openscad-camdist EXE ${OPENSCAD_BINPATH}
ARGS --imgsize=500,500 --camera=0,0,0,90,0,90,100 -o
ARGS --imgsize=500,500 --camera=0,0,0,90,0,90,200 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective gimbal cam
add_cmdline_test(openscad-camrot EXE ${OPENSCAD_BINPATH}
ARGS --imgsize=500,500 --camera=0,0,0,440,337.5,315,100 -o
ARGS --imgsize=500,500 --camera=0,0,0,440,337.5,315,200 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective gimbal cam
add_cmdline_test(openscad-camtrans EXE ${OPENSCAD_BINPATH}
ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,100 -o
ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,200 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective gimbal cam, viewall
add_cmdline_test(openscad-camtrans-viewall EXE ${OPENSCAD_BINPATH}
ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,3000 --viewall -o
ARGS --imgsize=500,500 --camera=100,-20,-10,90,0,90,6000 --viewall -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Orthographic gimbal cam
@ -1520,7 +1534,7 @@ add_cmdline_test(openscad-camortho-viewall EXE ${OPENSCAD_BINPATH}
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective vector cam
add_cmdline_test(openscad-cameye EXE ${OPENSCAD_BINPATH}
ARGS --imgsize=500,500 --camera=60,40,30,0,0,0 -o
ARGS --imgsize=500,500 --camera=120,80,60,0,0,0 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective vector cam
@ -1530,7 +1544,7 @@ add_cmdline_test(openscad-cameye2 EXE ${OPENSCAD_BINPATH}
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective vector cam
add_cmdline_test(openscad-camcenter EXE ${OPENSCAD_BINPATH}
ARGS --imgsize=500,500 --camera=60,40,30,20,10,30 -o
ARGS --imgsize=500,500 --camera=100,60,30,20,10,30 -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/camera-tests.scad)
# Perspective vector cam viewall
@ -1553,27 +1567,27 @@ add_cmdline_test(openscad-cameyeortho-viewall EXE ${OPENSCAD_BINPATH}
add_cmdline_test(openscad-colorscheme-cornfield EXE ${OPENSCAD_BINPATH}
ARGS --colorscheme=Cornfield -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/difference_cube.scad)
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/logo.scad)
add_cmdline_test(openscad-colorscheme-metallic EXE ${OPENSCAD_BINPATH}
ARGS --colorscheme=Metallic -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/difference_cube.scad)
add_cmdline_test(openscad-colorscheme-metallic-render EXE ${OPENSCAD_BINPATH}
ARGS --colorscheme=Metallic --render -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/difference_cube.scad)
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/logo.scad)
add_cmdline_test(openscad-colorscheme-sunset EXE ${OPENSCAD_BINPATH}
ARGS --colorscheme=Sunset -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/difference_cube.scad)
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/logo.scad)
add_cmdline_test(openscad-colorscheme-starnight EXE ${OPENSCAD_BINPATH}
ARGS --colorscheme=Starnight -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/difference_cube.scad)
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/logo.scad)
add_cmdline_test(openscad-colorscheme-monotone EXE ${OPENSCAD_BINPATH}
ARGS --colorscheme=Monotone -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/difference_cube.scad)
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/logo.scad)
add_cmdline_test(openscad-colorscheme-metallic-render EXE ${OPENSCAD_BINPATH}
ARGS --colorscheme=Metallic --render -o
SUFFIX png
FILES ${CMAKE_SOURCE_DIR}/../examples/Basics/CSG.scad)
#message("Available test configurations: ${TEST_CONFIGS}")
#foreach(CONF ${TEST_CONFIGS})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Some files were not shown because too many files have changed in this diff Show more