Merge remote-tracking branch 'origin/master' into c++11

master
Marius Kintel 2015-02-10 16:42:48 -05:00
commit 6576ee7d05
311 changed files with 14920 additions and 3009 deletions

52
.gitignore vendored
View File

@ -1,29 +1,49 @@
/*.scad
*.dmg
*~
*.tar*
*.new
Makefile
objects
.gdbinit
/*.stl
/*.dxf
/lexer_lex.cpp
/parser_yacc.cpp
.qmake.stash
parser_yacc.h
/tmp
/OpenSCAD.app
*/#*#
/locale/*/*/*.mo
/locale/POTFILES
/nbproject
/openscad.pro.user
/openscad
/tests/openscad_nogui
**/#*#
testdata/scad/features/import_dxf-tests.scad
testdata/scad/features/import_stl-tests.scad
testdata/scad/misc/include-tests.scad
testdata/scad/misc/use-tests.scad
/mingw32
/mingw64
**/project.xcworkspace
**/xcuserdata
/*.scad
/*.stl
/*.dxf
/*.off
/*.amf
/*.png
/*.csg
/*.nef3
/*.blend
/*.obj
/*.rcad
/*.xml
/*.dat
/*.gcode
/*.py
/*.svg
/*.h
/*.dump
/*.pl
/lexer_lex.cpp
/parser_yacc.cpp
/OpenSCAD.app
/openscad.pro.user
/openscad
/locale/*/*/*.mo
/locale/POTFILES
/tmp
/nbproject
/mingw32
/mingw64
src/*.org
src/*.old
src/*.debug

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@ -88,24 +88,23 @@ libraries from aptitude. If you're using Mac, or an older Linux/BSD, there
are build scripts that download and compile the libraries from source.
Follow the instructions for the platform you're compiling on below.
* [Qt4 (4.4 - 5.3)](http://www.qt.nokia.com/)
* [QScintilla2 (2.7)](http://www.riverbankcomputing.co.uk/software/qscintilla/)
* [CGAL (3.6 - 4.4)](http://www.cgal.org/)
* [Qt4 (4.4 - 5.4)](http://www.qt.nokia.com/)
* [QScintilla2 (2.7 - 2.8)](http://www.riverbankcomputing.co.uk/software/qscintilla/)
* [CGAL (3.6 - 4.5)](http://www.cgal.org/)
* [GMP (5.x)](http://www.gmplib.org/)
* [MPFR (3.x)](http://www.mpfr.org/)
* [cmake (2.8, required by CGAL and the test framework)](http://www.cmake.org/)
* [boost (1.35 - 1.55)](http://www.boost.org/)
* [cmake (2.8 - 3.0, required by CGAL and the test framework)](http://www.cmake.org/)
* [boost (1.35 - 1.57)](http://www.boost.org/)
* [OpenCSG (1.3.2 ->)](http://www.opencsg.org/)
* [GLEW (1.5.4 ->)](http://glew.sourceforge.net/)
* [Eigen (3.x)](http://eigen.tuxfamily.org/)
* [glib2 (2.x)](https://developer.gnome.org/glib/)
* [fontconfig (2.10)](http://fontconfig.org/)
* [freetype2 (2.4)](http://freetype.org/)
* [harfbuzz (0.9.19)](http://harfbuzz.org/)
* [GCC C++ Compiler (4.2 ->)](http://gcc.gnu.org/)
* [Bison (2.4)](http://www.gnu.org/software/bison/)
* [Flex (2.5.35)](http://flex.sourceforge.net/)
* [pkg-config (0.26)](http://www.freedesktop.org/wiki/Software/pkg-config/)
* [fontconfig (2.10 -> )](http://fontconfig.org/)
* [freetype2 (2.4 -> )](http://freetype.org/)
* [harfbuzz (0.9.19 -> )](http://harfbuzz.org/)
* [Bison (2.4 -> )](http://www.gnu.org/software/bison/)
* [Flex (2.5.35 -> )](http://flex.sourceforge.net/)
* [pkg-config (0.26 -> )](http://www.freedesktop.org/wiki/Software/pkg-config/)
### Getting the source code
@ -123,29 +122,41 @@ To pull the MCAD library (http://reprap.org/wiki/MCAD), do the following:
### Building for Mac OS X
Prerequisites:
* XCode, including XCode command-line tools (install from XCode Preferences).
Prerequisites that can be installed through MacPorts/homebrew:
* [CMake](http://cmake.org/)
* [automake](http://www.gnu.org/software/automake/)
* [pkg-config](http://www.freedesktop.org/wiki/Software/pkg-config/)
* [libtool](https://www.gnu.org/software/libtool/)
* XCode, including XCode command-line tools.
Then after you've cloned this git repository, run the script that sets up the
environment variables.
Install Dependencies:
source setenv_mac-qt5.sh
Run the script that sets up the environment variables:
```source setenv_mac-qt5.sh```
Then run the script to compile all the prerequisite libraries above:
Then run the script to compile all the dependencies:
```./scripts/macosx-build-dependencies.sh```
./scripts/macosx-build-dependencies.sh
You can also install the prerequisites using
[MacPorts](http://www.macports.org). Unfortunately,
[brew](http://mxcl.github.com/homebrew/) doesn't yet support CGAL and
OpenCSG.
After building dependencies, follow the instructions in the *Compilation* section.
For the adventurous, it might be possible to build OpenSCAD using _MacPorts_ or _Homebrew_. The main challenge is that both these systems have partially broken libraries, but that tends to change from time to time.
1. **MacPorts** (assumes [MacPorts](http://macports.org) is already installed)
NB! MacPorts currently doesn't support Qt5 very well, so using Qt4
is the only working option at the moment. However, MacPorts' Qt4
has a broken ```moc``` command, causing OpenSCAD compilation to
break. This may be fixed in MacPorts by the time you read this.
```sudo port install opencsg qscintilla boost cgal pkgconfig eigen3 harfbuzz fontconfig```
1. **Homebrew** (assumes [Homebrew](http://brew.sh)) is already installed)
NB! Homebrew's ```qscintilla2``` component doesn't support Qt5, so using Qt4 is currently necessary.
However, Homebrew's Qt4 has a broken ```moc``` command, causing OpenSCAD compilation to
break. This may be fixed in Homebrew by the time you read this.
NB! Homebrew's ```harfbuzz``` package requires X11, so you may have to install an X11 server.
NB! Homebrew doesnt have an OpenCSG package
```brew install cgal qscintilla2 eigen harfbuzz```
After that, follow the Compilation instructions below.
### Building for Linux/BSD
@ -220,9 +231,9 @@ For a 64-bit Windows cross-build, replace 32 with 64 in the above instructions.
### Compilation
First, run 'qmake openscad.pro' from Qt4 to generate a Makefile. On some systems
you need to run 'qmake4', 'qmake-qt4' or something alike to run the qt4 version
of the tool.
First, run 'qmake openscad.pro' from Qt4 to generate a Makefile.
On some systems, depending on which version(s) of Qt you have installed, you may need to specify which version you want to use, e.g. by running 'qmake4', 'qmake-qt4' or something alike.
Then run make. Finally you might run 'make install' as root or simply copy the
'openscad' binary (OpenSCAD.app on Mac OS X) to the bin directory of your choice.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@ -7,9 +7,9 @@
<item>
<title>OpenSCAD @VERSION@</title>
<pubDate>@VERSIONDATE@</pubDate>
<sparkle:releaseNotesLink>https://raw.github.com/openscad/openscad/master/RELEASE_NOTES</sparkle:releaseNotesLink>
<sparkle:releaseNotesLink>https://raw.github.com/openscad/openscad/master/releases/2014.QX.md</sparkle:releaseNotesLink>
<sparkle:minimumSystemVersion>10.7.0</sparkle:minimumSystemVersion>
<enclosure url="http://files.openscad.org/OpenSCAD-@VERSION@.dmg"
<enclosure url="http://files.openscad.org/snapshots/OpenSCAD-@VERSION@.dmg"
sparkle:version="@VERSIONDATE@"
sparkle:shortVersionString="@VERSION@"
sparkle:dsaSignature="@DSASIGNATURE@"

BIN
axes.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

BIN
back.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 955 B

8
cgal/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
/*.stl
/*.scad
/*.polygon
polyhole-tessellator
polyhole-tessellator-libtess2
minkowski
decompose
export_nef

View File

@ -0,0 +1,4 @@
-76.547562539078825239,38.705110299157155396,5.353092412611622386
-76.547562541749158527,38.705110304107662955,5.3530924135499766692
-76.5475616455078125,38.705108642578125,0
-76.5475616455078125,38.705108642578125,0.020000000000000000416

View File

@ -0,0 +1,4 @@
0,0,0
0,1,0
1,1,1
0,1,0

View File

@ -0,0 +1,4 @@
0,1,0
0,0,0
0,1,0
1,1,0

View File

@ -0,0 +1,4 @@
0 0 0
1 0 0
1 1 0
1 1 0

View File

@ -0,0 +1,4 @@
0 0 0
1 0 0
0 1 0
1 1 0

View File

@ -0,0 +1,8 @@
11.8244953852727654464160877978,-33.4423534623057960857295256574,28
11.8244953852727654464160877978,-34,28
11.8244953852727654464160877978,-36.5576465376941897034157591406,28
7.99999999999999911182158029987,-35.6847304231704427479598962236,23.516743531220182461538570351
8,-35,23.516743531220182461538570351
5.99999999999999911182158029987,-35,21.1722478437400596362749638502
6,-35,21.1722478437400596362749638502
5.8577590289166048265201425238,-34.8042220990505484223831444979,21.0055061720960587479112291476

View File

@ -0,0 +1,4 @@
9.5,7.5,-0.5
9.5,2,-0.5
9.5,2,-0.4999999701976776123
9.5,7.5,-0.4999999701976776123

View File

@ -0,0 +1,5 @@
50.9504,53.0377,9.35305
50.2251,53.0492,9.4122
50.9537,53.0376,9.35278
55.2851,53.5142,9.35278
50.9537,53.0376,9.35278

View File

@ -0,0 +1,5 @@
50.95040130615234375,53.037654876708984375,9.35305023193359375
50.225086212158203125,53.049152374267578125,9.4121952056884765625
50.953746795654296875,53.037601470947265625,9.3527774810791015625
55.285125732421875,53.514209747314453125,9.3527774810791015625
50.953746795654296875,53.037601470947265625,9.3527774810791015625

180
cgal/export_nef.cpp Normal file
View File

@ -0,0 +1,180 @@
#include <boost/foreach.hpp>
#include <boost/regex.hpp>
#include <sstream>
#include <iostream>
#include <fstream>
#include <locale.h>
#include "cgalutils.h"
#include "export.h"
#include "polyset.h"
#include "CGAL_Nef_polyhedron.h"
#include "boosty.h"
#include <CGAL/IO/Nef_polyhedron_iostream_3.h>
using namespace CGALUtils;
#define STL_FACET_NUMBYTES 4*3*4+2
// as there is no 'float32_t' standard, we assume the systems 'float'
// is a 'binary32' aka 'single' standard IEEE 32-bit floating point type
union stl_facet {
uint8_t data8[ STL_FACET_NUMBYTES ];
uint32_t data32[4*3];
struct facet_data {
float i, j, k;
float x1, y1, z1;
float x2, y2, z2;
float x3, y3, z3;
uint16_t attribute_byte_count;
} data;
};
void uint32_byte_swap( uint32_t &x )
{
#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 3
x = __builtin_bswap32( x );
#elif defined(__clang__)
x = __builtin_bswap32( x );
#elif defined(_MSC_VER)
x = _byteswap_ulong( x );
#else
uint32_t b1 = ( 0x000000FF & x ) << 24;
uint32_t b2 = ( 0x0000FF00 & x ) << 8;
uint32_t b3 = ( 0x00FF0000 & x ) >> 8;
uint32_t b4 = ( 0xFF000000 & x ) >> 24;
x = b1 | b2 | b3 | b4;
#endif
}
void read_stl_facet( std::ifstream &f, stl_facet &facet )
{
f.read( (char*)facet.data8, STL_FACET_NUMBYTES );
#ifdef BOOST_BIG_ENDIAN
for ( int i = 0; i < 12; i++ ) {
uint32_byte_swap( facet.data32[ i ] );
}
// we ignore attribute byte count
#endif
}
PolySet *import_stl(const std::string &filename)
{
PolySet *p = new PolySet(3);
// Open file and position at the end
std::ifstream f(filename.c_str(), std::ios::in | std::ios::binary | std::ios::ate);
if (!f.good()) {
PRINTB("WARNING: Can't open import file '%s'.", filename);
return NULL;
}
boost::regex ex_sfe("solid|facet|endloop");
boost::regex ex_outer("outer loop");
boost::regex ex_vertex("vertex");
boost::regex ex_vertices("\\s*vertex\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)");
bool binary = false;
std::streampos file_size = f.tellg();
f.seekg(80);
if (f.good() && !f.eof()) {
uint32_t facenum = 0;
f.read((char *)&facenum, sizeof(uint32_t));
#ifdef BOOST_BIG_ENDIAN
uint32_byte_swap( facenum );
#endif
if (file_size == static_cast<std::streamoff>(80 + 4 + 50*facenum)) {
binary = true;
}
}
f.seekg(0);
char data[5];
f.read(data, 5);
if (!binary && !f.eof() && f.good() && !memcmp(data, "solid", 5)) {
int i = 0;
double vdata[3][3];
std::string line;
std::getline(f, line);
while (!f.eof()) {
std::getline(f, line);
boost::trim(line);
if (boost::regex_search(line, ex_sfe)) {
continue;
}
if (boost::regex_search(line, ex_outer)) {
i = 0;
continue;
}
boost::smatch results;
if (boost::regex_search(line, results, ex_vertices)) {
try {
for (int v=0;v<3;v++) {
vdata[i][v] = boost::lexical_cast<double>(results[v+1]);
}
}
catch (const boost::bad_lexical_cast &blc) {
PRINTB("WARNING: Can't parse vertex line '%s'.", line);
i = 10;
continue;
}
if (++i == 3) {
p->append_poly();
p->append_vertex(vdata[0][0], vdata[0][1], vdata[0][2]);
p->append_vertex(vdata[1][0], vdata[1][1], vdata[1][2]);
p->append_vertex(vdata[2][0], vdata[2][1], vdata[2][2]);
}
}
}
}
else if (binary && !f.eof() && f.good())
{
f.ignore(80-5+4);
while (1) {
stl_facet facet;
read_stl_facet( f, facet );
if (f.eof()) break;
p->append_poly();
p->append_vertex(facet.data.x1, facet.data.y1, facet.data.z1);
p->append_vertex(facet.data.x2, facet.data.y2, facet.data.z2);
p->append_vertex(facet.data.x3, facet.data.y3, facet.data.z3);
}
}
return p;
}
int main(int argc, char *argv[])
{
OpenSCAD::debug = "export_nef";
CGAL_Nef_polyhedron *N = NULL;
PolySet *ps = NULL;
if (argc == 2) {
std::string filename(argv[1]);
std::string suffix = boosty::extension_str(filename);
boost::algorithm::to_lower(suffix);
if (suffix == ".stl") {
if (!(ps = import_stl(filename))) {
std::cerr << "Error importing STL " << argv[1] << std::endl;
exit(1);
}
std::cerr << "Imported " << ps->numPolygons() << " polygons" << std::endl;
}
else if (suffix == ".nef3") {
N = new CGAL_Nef_polyhedron(new CGAL_Nef_polyhedron3);
std::ifstream stream(filename.c_str());
stream >> *N->p3;
std::cerr << "Imported Nef polyhedron" << std::endl;
}
}
else {
std::cerr << "Usage: " << argv[0] << " <file.stl>" << std::endl;
exit(1);
}
if (ps && !N) N = createNefPolyhedronFromGeometry(*ps);
export_stl(N, std::cout);
std::cerr << "Done." << std::endl;
}

109
cgal/export_nef.pro Normal file
View File

@ -0,0 +1,109 @@
CONFIG += debug
CONFIG -= qt
debug: DEFINES += DEBUG
TEMPLATE = app
INCLUDEPATH += ../src
DEPENDPATH += ../src
# Handle custom library location.
# Used when manually installing 3rd party libraries
isEmpty(OPENSCAD_LIBDIR) OPENSCAD_LIBDIR = $$(OPENSCAD_LIBRARIES)
macx:isEmpty(OPENSCAD_LIBDIR) {
exists(/opt/local):exists(/usr/local/Cellar) {
error("It seems you might have libraries in both /opt/local and /usr/local. Please specify which one to use with qmake OPENSCAD_LIBDIR=<prefix>")
} else {
exists(/opt/local) {
#Default to MacPorts on Mac OS X
message("Automatically searching for libraries in /opt/local. To override, use qmake OPENSCAD_LIBDIR=<prefix>")
OPENSCAD_LIBDIR = /opt/local
} else:exists(/usr/local/Cellar) {
message("Automatically searching for libraries in /usr/local. To override, use qmake OPENSCAD_LIBDIR=<prefix>")
OPENSCAD_LIBDIR = /usr/local
}
}
}
!isEmpty(OPENSCAD_LIBDIR) {
QMAKE_INCDIR = $$OPENSCAD_LIBDIR/include
QMAKE_LIBDIR = $$OPENSCAD_LIBDIR/lib
}
TARGET = export_nef
mac {
CONFIG -= app_bundle
}
macx {
# Mac needs special care to link against the correct C++ library
# We attempt to auto-detect it by inspecting Boost
dirs = $${BOOSTDIR} $${QMAKE_LIBDIR}
for(dir, dirs) {
system(grep -q __112basic_string $${dir}/libboost_thread* >& /dev/null) {
message("Detected libc++-linked boost in $${dir}")
CONFIG += libc++
}
}
libc++ {
QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_LFLAGS += -stdlib=libc++
QMAKE_OBJECTIVE_CFLAGS += -stdlib=libc++
# libc++ on requires Mac OS X 10.7+
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
}
}
# See Dec 2011 OpenSCAD mailing list, re: CGAL/GCC bugs.
*g++* {
QMAKE_CXXFLAGS *= -fno-strict-aliasing
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-local-typedefs # ignored before 4.8
}
*clang* {
# http://llvm.org/bugs/show_bug.cgi?id=9182
QMAKE_CXXFLAGS_WARN_ON += -Wno-overloaded-virtual
# disable enormous amount of warnings about CGAL / boost / etc
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-parameter
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-variable
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-function
QMAKE_CXXFLAGS_WARN_ON += -Wno-c++11-extensions
# might want to actually turn this on once in a while
QMAKE_CXXFLAGS_WARN_ON += -Wno-sign-compare
}
# Application configuration
CONFIG += cgal
CONFIG += boost
CONFIG += eigen
CONFIG += gettext
mac: {
LIBS += -framework OpenGL
}
include(../common.pri)
HEADERS += ../src/cgal.h \
../src/cgalutils.h \
../src/linalg.h \
../src/polyset.h \
../src/polyset-utils.h \
../src/printutils.h
SOURCES += export_nef.cpp \
../src/polygon2d.cc \
../src/polygon2d-CGAL.cc \
../src/CGAL_Nef_polyhedron.cc \
../src/CGAL_Nef_polyhedron_DxfData.cc \
../src/cgalutils.cc \
../src/cgalutils-tess.cc \
../src/cgalutils-polyhedron.cc \
../src/polyset.cc \
../src/svg.cc \
../src/node.cc \
../src/export.cc \
../src/polyset-utils.cc \
../src/progress.cc \
../src/printutils.cc \
../src/grid.cc

View File

@ -0,0 +1,159 @@
#include <boost/foreach.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <sstream>
#include <fstream>
#include <iostream>
#include <locale.h>
#include "GeometryUtils.h"
#include "Reindexer.h"
#include "linalg.h"
#include "grid.h"
#include "printutils.h"
static void export_stl(const IndexedTriangleMesh &trimesh, std::ostream &output)
{
setlocale(LC_NUMERIC, "C"); // Ensure radix is . (not ,) in output
output << "solid OpenSCAD_Model\n";
const Vector3f *verts = &trimesh.vertices.front();
BOOST_FOREACH(const IndexedTriangle &t, trimesh.triangles) {
assert(t[0] < trimesh.vertices.size());
assert(t[1] < trimesh.vertices.size());
assert(t[2] < trimesh.vertices.size());
Vector3f p[3];
p[0] = verts[t[0]];
p[1] = verts[t[1]];
p[2] = verts[t[2]];
std::stringstream stream;
stream << p[0][0] << " " << p[0][1] << " " << p[0][2];
std::string vs1 = stream.str();
stream.str("");
stream << p[1][0] << " " << p[1][1] << " " << p[1][2];
std::string vs2 = stream.str();
stream.str("");
stream << p[2][0] << " " << p[2][1] << " " << p[2][2];
std::string vs3 = stream.str();
// if (vs1 != vs2 && vs1 != vs3 && vs2 != vs3) {
// The above condition ensures that there are 3 distinct vertices, but
// they may be collinear. If they are, the unit normal is meaningless
// so the default value of "1 0 0" can be used. If the vertices are not
// collinear then the unit normal must be calculated from the
// components.
Vector3f normal = (p[1] - p[0]).cross(p[2] - p[0]);
normal.normalize();
output << " facet normal " << normal[0] << " " << normal[1] << " " << normal[2] << "\n";
output << " outer loop\n";
for (int i=0;i<3;i++) {
output << " vertex " << p[i][0] << " " << p[i][1] << " " << p[i][2] << "\n";
}
output << " endloop\n";
output << " endfacet\n";
// }
}
output << "endsolid OpenSCAD_Model\n";
setlocale(LC_NUMERIC, ""); // Set default locale
}
/*!
file format:
1. polygon coordinates (x,y,z) are comma separated (+/- spaces) and
each coordinate is on a separate line
2. each polygon is separated by one or more blank lines
*/
bool import_polygon(IndexedPolygons &polyhole, const std::string &filename)
{
Reindexer<Vector3f> uniqueVertices;
std::ifstream ifs(filename.c_str());
if (!ifs) return false;
std::string line;
IndexedFace polygon;
while (std::getline(ifs, line)) {
std::stringstream ss(line);
double X = 0.0, Y = 0.0, Z = 0.0;
if (!(ss >> X)) {
//ie blank lines => flag start of next polygon
if (polygon.size() > 0) polyhole.faces.push_back(polygon);
polygon.clear();
continue;
}
char c = ss.peek();
while (c == ' ') {ss.read(&c, 1); c = ss.peek();} //gobble spaces before comma
if (c == ',') {ss.read(&c, 1); c = ss.peek();} //gobble comma
while (c == ' ') {ss.read(&c, 1); c = ss.peek();} //gobble spaces after comma
if (!(ss >> Y)) {
std::cerr << "Y error\n";
return false;
}
c = ss.peek();
while (c == ' ') {ss.read(&c, 1); c = ss.peek();} //gobble spaces before comma
if (c == ',') {ss.read(&c, 1); c = ss.peek();} //gobble comma
while (c == ' ') {ss.read(&c, 1); c = ss.peek();} //gobble spaces after comma
if (!(ss >> Z)) {
std::cerr << "Z error\n";
return false;
}
polygon.push_back(uniqueVertices.lookup(Vector3f(X, Y, Z)));
}
if (polygon.size() > 0) polyhole.faces.push_back(polygon);
ifs.close();
uniqueVertices.copy(std::back_inserter(polyhole.vertices));
return true;
}
int main(int argc, char *argv[])
{
OpenSCAD::debug = "GeometryUtils";
IndexedPolygons polyhole;
Vector3f *normal = NULL;
if (argc >= 2) {
if (!import_polygon(polyhole, argv[1])) {
std::cerr << "Error importing polygon" << std::endl;
exit(1);
}
std::cerr << "Imported " << polyhole.faces.size() << " polygons" << std::endl;
if (argc == 3) {
std::vector<std::string> strs;
std::vector<double> normalvec;
std::string arg(argv[2]);
boost::split(strs, arg, boost::is_any_of(","));
assert(strs.size() == 3);
BOOST_FOREACH(const std::string &s, strs) normalvec.push_back(boost::lexical_cast<double>(s));
normal = new Vector3f(normalvec[0], normalvec[1], normalvec[2]);
}
}
else {
//construct two non-intersecting nested polygons
Reindexer<Vector3f> uniqueVertices;
IndexedFace polygon1;
polygon1.push_back(uniqueVertices.lookup(Vector3f(0,0,0)));
polygon1.push_back(uniqueVertices.lookup(Vector3f(2,0,0)));
polygon1.push_back(uniqueVertices.lookup(Vector3f(2,2,0)));
polygon1.push_back(uniqueVertices.lookup(Vector3f(0,2,0)));
IndexedFace polygon2;
polygon2.push_back(uniqueVertices.lookup(Vector3f(0.5,0.5,0)));
polygon2.push_back(uniqueVertices.lookup(Vector3f(1.5,0.5,0)));
polygon2.push_back(uniqueVertices.lookup(Vector3f(1.5,1.5,0)));
polygon2.push_back(uniqueVertices.lookup(Vector3f(0.5,1.5,0)));
polyhole.faces.push_back(polygon1);
polyhole.faces.push_back(polygon2);
uniqueVertices.copy(std::back_inserter(polyhole.vertices));
}
std::vector<IndexedTriangle> triangles;
bool ok = GeometryUtils::tessellatePolygonWithHoles(polyhole, triangles, normal);
std::cerr << "Tessellated into " << triangles.size() << " triangles" << std::endl;
IndexedTriangleMesh trimesh;
trimesh.vertices = polyhole.vertices;
trimesh.triangles = triangles;
export_stl(trimesh, std::cout);
}

View File

@ -0,0 +1,106 @@
debug: DEFINES += DEBUG
TEMPLATE = app
INCLUDEPATH += ../src ../src/libtess2/Include
DEPENDPATH += ../src
# Handle custom library location.
# Used when manually installing 3rd party libraries
isEmpty(OPENSCAD_LIBDIR) OPENSCAD_LIBDIR = $$(OPENSCAD_LIBRARIES)
macx:isEmpty(OPENSCAD_LIBDIR) {
exists(/opt/local):exists(/usr/local/Cellar) {
error("It seems you might have libraries in both /opt/local and /usr/local. Please specify which one to use with qmake OPENSCAD_LIBDIR=<prefix>")
} else {
exists(/opt/local) {
#Default to MacPorts on Mac OS X
message("Automatically searching for libraries in /opt/local. To override, use qmake OPENSCAD_LIBDIR=<prefix>")
OPENSCAD_LIBDIR = /opt/local
} else:exists(/usr/local/Cellar) {
message("Automatically searching for libraries in /usr/local. To override, use qmake OPENSCAD_LIBDIR=<prefix>")
OPENSCAD_LIBDIR = /usr/local
}
}
}
!isEmpty(OPENSCAD_LIBDIR) {
QMAKE_INCDIR = $$OPENSCAD_LIBDIR/include
QMAKE_LIBDIR = $$OPENSCAD_LIBDIR/lib
}
TARGET = polyhole-tessellator-libtess2
mac {
CONFIG -= app_bundle
}
macx {
# Mac needs special care to link against the correct C++ library
# We attempt to auto-detect it by inspecting Boost
dirs = $${BOOSTDIR} $${QMAKE_LIBDIR}
for(dir, dirs) {
system(grep -q __112basic_string $${dir}/libboost_thread* >& /dev/null) {
message("Detected libc++-linked boost in $${dir}")
CONFIG += libc++
}
}
libc++ {
QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_LFLAGS += -stdlib=libc++
QMAKE_OBJECTIVE_CFLAGS += -stdlib=libc++
# libc++ on requires Mac OS X 10.7+
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
}
}
# See Dec 2011 OpenSCAD mailing list, re: CGAL/GCC bugs.
*g++* {
QMAKE_CXXFLAGS *= -fno-strict-aliasing
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-local-typedefs # ignored before 4.8
}
*clang* {
# http://llvm.org/bugs/show_bug.cgi?id=9182
QMAKE_CXXFLAGS_WARN_ON += -Wno-overloaded-virtual
# disable enormous amount of warnings about CGAL / boost / etc
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-parameter
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-variable
QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-function
QMAKE_CXXFLAGS_WARN_ON += -Wno-c++11-extensions
# might want to actually turn this on once in a while
QMAKE_CXXFLAGS_WARN_ON += -Wno-format-security
}
# Application configuration
CONFIG += cgal
CONFIG += boost
CONFIG += eigen
CONFIG += gettext
include(../common.pri)
HEADERS += ../src/GeometryUtils.cc \
../src/linalg.h \
../src/printutils.h \
../src/grid.h \
../src/libtess2/Include/tesselator.h \
../src/libtess2/Source/bucketalloc.h \
../src/libtess2/Source/dict.h \
../src/libtess2/Source/geom.h \
../src/libtess2/Source/mesh.h \
../src/libtess2/Source/priorityq.h \
../src/libtess2/Source/sweep.h \
../src/libtess2/Source/tess.h
SOURCES += polyhole-tessellator-libtess2.cpp \
../src/GeometryUtils.cc \
../src/printutils.cc \
../src/grid.cc \
../src/libtess2/Source/bucketalloc.c \
../src/libtess2/Source/dict.c \
../src/libtess2/Source/geom.c \
../src/libtess2/Source/mesh.c \
../src/libtess2/Source/priorityq.c \
../src/libtess2/Source/sweep.c \
../src/libtess2/Source/tess.c

View File

@ -1,4 +1,4 @@
.TH OPENSCAD 1 "2014.03"
.TH OPENSCAD 1 "2015.02"
.\" Please adjust this date whenever revising the manpage.
.SH NAME
openscad \- script file based graphical CAD environment
@ -19,7 +19,7 @@ the OpenSCAD user manual at http://en.wikibooks.org/wiki/OpenSCAD_User_Manual.
.TP
\fB-o\fP \fIoutputfile\fP
Export the given file to \fIoutputfile\fP in STL, OFF, DXF, or PNG
Export the given file to \fIoutputfile\fP in STL, OFF, AMF, DXF, SVG, or PNG
format, depending on file extension of \fIoutputfile\fP. If this
option is given, the GUI will not be started.
@ -49,10 +49,10 @@ strings, care has to be taken that the shell does not consume quotation marks.
More than one \fB-D\fP option can be given.
.TP
.B \-\-render
If exporting an image, use a full CGAL render. (Default is an OpenCSG compile)
If exporting an image, render the model fully. (Default is preview)
.TP
.B \-\-preview[=throwntogether]
If exporting an image, use an OpenCSG previce (optionally in throwntogether mode for quicker rendering).
If exporting an image, use an OpenCSG preview (optionally in throwntogether mode for quicker rendering).
.TP
.B \-\-csglimit=limit
If exporting an image as an OpenCSG preview, stop rendering after encountering \fIlimit\fP elements to avoid runaway resource usage.
@ -69,6 +69,12 @@ The first three are for the Eye position, while the next three are for
the Center (or target) that the camera will look at. The 'up' vector is
not currently supported.
.TP
.B \-\-viewall
If exporting an image, adjust camera distance to fit the whole design in the frame
.TP
.B \-\-autocenter
If exporting an image, center the design in the frame
.TP
.B \-\-imgsize=width,height
If exporting an image, specify the pixel width and height
.TP
@ -76,6 +82,9 @@ If exporting an image, specify the pixel width and height
If exporting an image, specify whether to use orthographic or perspective
projection
.TP
.B \-\-colorscheme=[Cornfield|Sunset|Metallic|Starnight|BeforeDawn|Nature|DeepOcean]
If exporting an image, use the specified color scheme for the rendering.
.TP
.B \-v, \-\-version
Show version of program.
.TP

View File

@ -70,6 +70,8 @@ o Notify package managers
- OpenSUSE: Pavol Rusnak <prusnak@opensuse.org>
- MacPorts: Frank Schima <macports2000@gmail.com>
- Arch Linux: Kyle Keen <keenerd@gmail.com>
o Update dev version to release version in documentation
- https://en.wikibooks.org/wiki/OpenSCAD_User_Manual
Build and Upload Release Binaries
---------------------------------

BIN
down.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -11,3 +11,15 @@ intersection()
linear_extrude(height = 100, center = true, convexity= 3)
import(file = "advance_intersection.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

@ -31,3 +31,15 @@ module demo_cut()
translate([ -30, 0, 0 ]) demo_proj();
translate([ +30, 0, 0 ]) demo_cut();
// 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

@ -75,3 +75,15 @@ 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,6 +1,4 @@
// Menger Sponge
// By Nathan Hellweg, Emmett Lalish and Marius Kintel May 13, 2013
// CC-BY-SA license
// Size of edge of sponge
D=100;
@ -32,3 +30,14 @@ difference() {
rotate([45, atan(1/sqrt(2)), 0]) menger();
translate([0,0,-D]) cube(2*D, center=true);
}
// Written by Nathan Hellweg, Emmett Lalish and Marius Kintel May 13, 2013
//
// 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

@ -8,3 +8,14 @@ intersection_for(i = [
])
rotate(i) cube([100, 20, 20], center = true);
// 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

@ -43,3 +43,14 @@ module example006()
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

@ -1,6 +1,4 @@
// Example for offset() usage
// (c) 2014 Torsten Paul
// CC-BY-SA 4.0
// offset.scad - Example for offset() usage in OpenSCAD
$fn = 40;
@ -31,3 +29,16 @@ translate([0, 0, foot_height]) {
%cylinder(r = 14, h = 100);
%translate([0, 0, 100]) sphere(r = 30);
// Written in 2014 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

@ -20,3 +20,15 @@ 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>
//
// 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

@ -22,3 +22,15 @@ for (i = [1:4])
}
}
}
// 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,28 @@
echo(version=version());
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)
text(letter,
size=size*22/30,
font="Tahoma",
halign="center",
valign="center");
}
}
LetterBlock("M");
// 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,3 +1,5 @@
// difference_cube.scad - Example for difference() usage in OpenSCAD
echo(version=version());
module difference_cube()
@ -10,3 +12,16 @@ module difference_cube()
difference_cube();
// 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,3 +1,5 @@
// difference_sphere.scad - Example for difference() usage in OpenSCAD
echo(version=version());
module difference_sphere()
@ -25,3 +27,16 @@ module difference_sphere()
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,3 +1,5 @@
// intersection.scad - Example for intersection() usage in OpenSCAD
echo(version=version());
module example_intersection()
@ -22,3 +24,16 @@ module example_intersection()
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

@ -1,6 +1,4 @@
// Example for text() usage
// (c) 2014 Torsten Paul
// CC-BY-SA 4.0
// logo_and_text.scad - Example for text() usage in OpenSCAD
echo(version=version());
@ -46,3 +44,15 @@ translate([110, 0, 80]) {
translate([160, 0, -40]) black() t("Solid 3D CAD Modeller");
}
// Written in 2014 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,3 +1,5 @@
// surface.scad - Example for surface() usage in OpenSCAD
//
// surface.dat generated using octave:
// d = (sin(1:0.2:10)' * cos(1:0.2:10)) * 10;
// save("surface.dat", "d");
@ -13,3 +15,17 @@ intersection()
surface(file = "surface.dat",
center = true, convexity = 5);
}
// 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,6 +1,4 @@
// Example for text() usage
// (c) 2014 Torsten Paul
// CC-BY-SA 4.0
// text_on_cube.scad - Example for text() usage in OpenSCAD
echo(version=version());
@ -38,3 +36,16 @@ difference() {
translate([0, 0, o]) letter("\u263A");
translate([0, 0, -o - letter_height]) letter("\u263C");
}
// Written in 2014 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,3 +1,5 @@
// translate.scad - Example for translate() usage in OpenSCAD
echo(version=version());
module example_translate()
@ -19,3 +21,17 @@ module example_translate()
}
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,3 +1,5 @@
// union.scad - Example for union() usage in OpenSCAD
echo(version=version());
module example_union()
@ -19,3 +21,16 @@ module example_union()
example_union();
// 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/>.

121
examples/COPYING-CC0.txt Normal file
View File

@ -0,0 +1,121 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.

View File

@ -64,3 +64,14 @@ translate([0, 0, -10])
// 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

@ -29,3 +29,14 @@ intersection()
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

@ -31,3 +31,15 @@ difference()
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/>.

450
examples/Shapes/M.stl Normal file
View File

@ -0,0 +1,450 @@
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

View File

@ -1,10 +1,5 @@
// chopped_blocks.stl is derived from Mblock.stl
// (c) 2009 Will Langford licensed under
// the Creative Commons - GNU GPL license.
// http://www.thingiverse.com/thing:753
//
// Jonas Pfeil converted the file to binary
// STL and duplicated its content.
// chopped_blocks.stl is derived from Basics/LetterBlock.scad
// The exported STL was converted to binary using MeshLab
echo(version=version());
@ -21,7 +16,7 @@ module blk2() {
}
module chop() {
translate([ -14, 0, 0 ])
translate([ -18, 0, 0 ])
import(file = "chopped_blocks.stl", convexity = 12);
}
@ -36,3 +31,14 @@ difference() {
}
}
// 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/>.

Binary file not shown.

View File

@ -13,3 +13,14 @@ for (i = [-100:5:+100]) {
translate([ i, 0, -30 ]) cylinder(r1 = 6, r2 = 2, h = get_cylinder_h(i)*3);
}
// 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

@ -27,3 +27,14 @@ module shape()
// linear_extrude(convexity = 10, center = true)
shape();
// 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

@ -16,3 +16,15 @@ polyhedron(
[4, 0, 3]
]
);
// 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

@ -36,3 +36,14 @@ module roundedBox(size, radius, sidesonly)
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,6 +1,4 @@
// example012.stl is Mblock.stl, (c) 2009 Will Langford
// licensed under the Creative Commons - GNU GPL license.
// http://www.thingiverse.com/thing:753
// M.stl is generated from Basics/LetterBlock.scad
echo(version=version());
@ -8,6 +6,18 @@ difference()
{
sphere(20);
translate([ -2.92, 0.5, +20 ]) rotate([180, 0, 180])
import("sphere.stl", convexity = 5);
translate([ 0, 0.5, +20 ]) rotate([180, 0, 180])
import("M.stl", convexity = 5);
}
// 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

@ -156,3 +156,14 @@ if (mode == "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/>.

BIN
front.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -19,8 +19,9 @@ macx: {
GETTEXT_LIBPATH = $$OPENSCAD_LIBRARIES_DIR/lib
}
}
GETTEXT_CXXFLAGS=-I$$GETTEXT_INCLUDEPATH
GETTEXT_LIBS=-L$$GETTEXT_LIBPATH -lintl -liconv
!isEmpty(GETTEXT_INCLUDEPATH): GETTEXT_CXXFLAGS = -I$$GETTEXT_INCLUDEPATH
!isEmpty(GETTEXT_LIBPATH): GETTEXT_LIBS = -L$$GETTEXT_LIBPATH
GETTEXT_LIBS += -lintl -liconv
}
QMAKE_CXXFLAGS += $$GETTEXT_CXXFLAGS

BIN
grid.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 43 KiB

BIN
icons/close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -1,3 +1,14 @@
Taken from http://tango.freedesktop.org/Tango_Icon_Library, version 0.8.90 / public domain:
- prefsFeatures.png (converted from preferences-system.svg)
https://openclipart.org/detail/2281/information-icons-set-by-kuba / public domain:
- information-icons-error.png
- information-icons-question.png
- information-icons-info.png
- information-icons-warning.png
https://openclipart.org/detail/171382/cross-icon-by-zawertun-171382 / public domain:
- close.png

BIN
icons/openscad_doc.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
images/AMF-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/AMF.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/CSG-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/CSG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
images/Command-Reset-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

BIN
images/Command-Undo-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/DXF-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/DXF.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/OFF-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/OFF.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

BIN
images/PNG-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/PNG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/STL-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/STL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

BIN
images/SVG-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/SVG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 500 B

After

Width:  |  Height:  |  Size: 503 B

BIN
images/preview-32-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 B

BIN
images/preview-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

BIN
images/render-32-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B

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