Merge branch 'master' into boost_filesystem
Conflicts: tests/CMakeLists.txtfelipesanches-svg
|
@ -21,6 +21,7 @@ o Added import and export of the OFF file format
|
|||
o Now uses standard shortcuts for save, reload and quit on Linux and Windows. F2/F3 will still work but is deprecated.
|
||||
|
||||
Bugfixes:
|
||||
o Complex CSG models sometimes took extremely long time to normalize before OpenCSG preview
|
||||
o square() crashed if any of the dimensions were zero
|
||||
o Flush Caches didn't flush cached USE'd modules
|
||||
o STL export should be a bit more robust
|
||||
|
@ -29,6 +30,8 @@ o On some platforms it was possible to insertion rich text in the editor, causin
|
|||
o Less crashes due to CGAL assertions
|
||||
o OpenCSG should now work on systems with OpenGL 1.x, given that the right extensions are available
|
||||
o include now searches librarydir
|
||||
o The $fs parameter yielded only half the number of segments it should have
|
||||
o surface(center=true) is now correctly centered in the XY plane
|
||||
|
||||
Deprecations:
|
||||
o dxf_linear_extrude() and dxf_rotate_extrude() are now deprecated.
|
||||
|
|
|
@ -98,6 +98,7 @@ o Error reporting/debugging
|
|||
o Provide some interaction for debug walk-through?
|
||||
- Provide visual highlighting of geometry corresponding to code
|
||||
-> could aid debugging a lot
|
||||
- Optionally output console log to a file
|
||||
o Computation
|
||||
- Run CGAL rendering in a background thread
|
||||
- Enable viewing/editing while rendering
|
||||
|
@ -165,6 +166,9 @@ o Mesh optimization on STL export
|
|||
- Remove super small triangles (all sides are short)
|
||||
- Replace super thin triangles (one h is short)
|
||||
o Misc
|
||||
- center as default: Very often, center=true is used everywhere.
|
||||
Make a global variable ($center?) control this to beautify code
|
||||
and the avoid typical errors when forgetting to specify center
|
||||
- Go through default values of parameters (e.g. cube() has x,y,z=1 while linear_extrude() has height=100)
|
||||
- Add support for symbolic names to child() statement
|
||||
- Add 'lines' object type for non-solid 2d drawings
|
||||
|
@ -189,6 +193,7 @@ IDEAS FOR LANGUAGE CHANGES
|
|||
--------------------------
|
||||
o More strict checking of module parameters to make e.g. this fail:
|
||||
module test(a,b) { a=1; b=2; echo(a,b,c); } test(c=3);
|
||||
(also for built-in modules)
|
||||
|
||||
CODE
|
||||
----
|
||||
|
@ -222,8 +227,10 @@ o Use a logging framework to get debugging/info output more under control?
|
|||
|
||||
DOCUMENTATION
|
||||
-------------
|
||||
o Auto-generate API documentation instead of, in addition to or combined with, the wikibooks docs.
|
||||
o Write checklists for typical extension work (add new module, add new function)
|
||||
-> make sure new test files are added
|
||||
o Clarify include/use better in the wikibook docs (e.g. that use'd modules have to be self-contained)
|
||||
|
||||
TESTING
|
||||
-------
|
||||
|
|
|
@ -96,3 +96,9 @@ log as well as your sysinfo.txt file, as well as running 'ldd' against
|
|||
your binaries, to make sure that the proper versions of libraries are
|
||||
getting compiled and linked with the test binaries.
|
||||
|
||||
7. Other issues
|
||||
|
||||
The OpenSCAD User Manual has a section on buildling. Check there for updates:
|
||||
|
||||
http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
|
||||
|
||||
|
|
10
openscad.pro
|
@ -8,6 +8,10 @@
|
|||
# OPENCSGDIR
|
||||
# OPENSCAD_LIBRARIES
|
||||
#
|
||||
# Please see the 'Buildling' sections of the OpenSCAD user manual
|
||||
# for updated tips & workarounds.
|
||||
#
|
||||
# http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
|
||||
|
||||
isEmpty(QT_VERSION) {
|
||||
error("Please use qmake for Qt 4 (probably qmake-qt4)")
|
||||
|
@ -82,6 +86,11 @@ linux*:exists(/usr/lib64/libGLU*)|linux*:exists(/usr/lib/libGLU*) {
|
|||
LIBS += -lGLU
|
||||
}
|
||||
|
||||
# See Dec 2011 OpenSCAD mailing list, re: CGAL/GCC bugs.
|
||||
*g++* {
|
||||
QMAKE_CXXFLAGS *= -fno-strict-aliasing
|
||||
}
|
||||
|
||||
CONFIG(mingw-cross-env) {
|
||||
include(mingw-cross-env.pri)
|
||||
}
|
||||
|
@ -223,6 +232,7 @@ SOURCES += src/openscad.cc \
|
|||
src/CSGTermEvaluator.cc \
|
||||
src/Tree.cc \
|
||||
src/mathc99.cc \
|
||||
src/linalg.cc \
|
||||
src/PolySetCache.cc \
|
||||
src/PolySetEvaluator.cc
|
||||
|
||||
|
|
|
@ -48,11 +48,11 @@ void CSGTermEvaluator::applyToChildren(const AbstractNode &node, CSGTermEvaluato
|
|||
t1 = t2;
|
||||
} else if (t2 && t1) {
|
||||
if (op == CSGT_UNION) {
|
||||
t1.reset(new CSGTerm(CSGTerm::TYPE_UNION, t1, t2));
|
||||
t1 = CSGTerm::createCSGTerm(CSGTerm::TYPE_UNION, t1, t2);
|
||||
} else if (op == CSGT_DIFFERENCE) {
|
||||
t1.reset(new CSGTerm(CSGTerm::TYPE_DIFFERENCE, t1, t2));
|
||||
t1 = CSGTerm::createCSGTerm(CSGTerm::TYPE_DIFFERENCE, t1, t2);
|
||||
} else if (op == CSGT_INTERSECTION) {
|
||||
t1.reset(new CSGTerm(CSGTerm::TYPE_INTERSECTION, t1, t2));
|
||||
t1 = CSGTerm::createCSGTerm(CSGTerm::TYPE_INTERSECTION, t1, t2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -396,7 +396,7 @@ PolySet *PolySetCGALEvaluator::evaluatePolySet(const RenderNode &node)
|
|||
CGAL_Nef_polyhedron N = this->cgalevaluator.evaluateCGALMesh(node);
|
||||
PolySet *ps = NULL;
|
||||
if (!N.empty()) {
|
||||
if (!N.p3->is_simple()) {
|
||||
if (N.dim == 3 && !N.p3->is_simple()) {
|
||||
PRINTF("WARNING: Body of render() isn't valid 2-manifold!");
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -187,7 +187,7 @@ void register_builtin(Context &ctx)
|
|||
ctx.functions_p = &Builtins::instance()->functions();
|
||||
ctx.modules_p = &Builtins::instance()->modules();
|
||||
ctx.set_variable("$fn", Value(0.0));
|
||||
ctx.set_variable("$fs", Value(1.0));
|
||||
ctx.set_variable("$fs", Value(2.0));
|
||||
ctx.set_variable("$fa", Value(12.0));
|
||||
ctx.set_variable("$t", Value(0.0));
|
||||
|
||||
|
|
208
src/csgterm.cc
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include "csgterm.h"
|
||||
#include "polyset.h"
|
||||
#include "linalg.h"
|
||||
#include <sstream>
|
||||
|
||||
/*!
|
||||
|
@ -47,101 +48,187 @@
|
|||
*/
|
||||
|
||||
|
||||
CSGTerm::CSGTerm(const shared_ptr<PolySet> &polyset, const Transform3d &matrix, const double color[4], const std::string &label)
|
||||
: type(TYPE_PRIMITIVE), polyset(polyset), label(label)
|
||||
shared_ptr<CSGTerm> CSGTerm::createCSGTerm(type_e type, shared_ptr<CSGTerm> left, shared_ptr<CSGTerm> right)
|
||||
{
|
||||
if (type != TYPE_PRIMITIVE) {
|
||||
// In case we're creating a CSG terms from a pruned tree, left/right can be NULL
|
||||
if (!right) {
|
||||
if (type == TYPE_UNION || type == TYPE_DIFFERENCE) return left;
|
||||
else return right;
|
||||
}
|
||||
if (!left) {
|
||||
if (type == TYPE_UNION) return right;
|
||||
else return left;
|
||||
}
|
||||
}
|
||||
|
||||
// Pruning the tree. For details, see:
|
||||
// http://www.cc.gatech.edu/~turk/my_papers/pxpl_csg.pdf
|
||||
const BoundingBox &leftbox = left->getBoundingBox();
|
||||
const BoundingBox &rightbox = right->getBoundingBox();
|
||||
if (type == TYPE_INTERSECTION) {
|
||||
BoundingBox newbox(leftbox.min().cwise().max(rightbox.min()),
|
||||
leftbox.max().cwise().min(rightbox.max()));
|
||||
if (newbox.isNull()) {
|
||||
return shared_ptr<CSGTerm>(); // Prune entire product
|
||||
}
|
||||
}
|
||||
else if (type == TYPE_DIFFERENCE) {
|
||||
BoundingBox newbox(leftbox.min().cwise().max(rightbox.min()),
|
||||
leftbox.max().cwise().min(rightbox.max()));
|
||||
if (newbox.isNull()) {
|
||||
return left; // Prune the negative component
|
||||
}
|
||||
}
|
||||
|
||||
return shared_ptr<CSGTerm>(new CSGTerm(type, left, right));
|
||||
}
|
||||
|
||||
shared_ptr<CSGTerm> CSGTerm::createCSGTerm(type_e type, CSGTerm *left, CSGTerm *right)
|
||||
{
|
||||
return createCSGTerm(type, shared_ptr<CSGTerm>(left), shared_ptr<CSGTerm>(right));
|
||||
}
|
||||
|
||||
CSGTerm::CSGTerm(const shared_ptr<PolySet> &polyset, const Transform3d &matrix, const double color[4], const std::string &label)
|
||||
: type(TYPE_PRIMITIVE), polyset(polyset), label(label), m(matrix)
|
||||
{
|
||||
this->m = matrix;
|
||||
for (int i = 0; i < 4; i++) this->color[i] = color[i];
|
||||
initBoundingBox();
|
||||
}
|
||||
|
||||
CSGTerm::CSGTerm(type_e type, shared_ptr<CSGTerm> left, shared_ptr<CSGTerm> right)
|
||||
: type(type), left(left), right(right)
|
||||
: type(type), left(left), right(right), m(Transform3d::Identity())
|
||||
{
|
||||
initBoundingBox();
|
||||
}
|
||||
|
||||
CSGTerm::CSGTerm(type_e type, CSGTerm *left, CSGTerm *right)
|
||||
: type(type), left(left), right(right)
|
||||
: type(type), left(left), right(right), m(Transform3d::Identity())
|
||||
{
|
||||
initBoundingBox();
|
||||
}
|
||||
|
||||
CSGTerm::~CSGTerm()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
shared_ptr<CSGTerm> CSGTerm::normalize(shared_ptr<CSGTerm> &term)
|
||||
void CSGTerm::initBoundingBox()
|
||||
{
|
||||
// This function implements the CSG normalization
|
||||
// Reference: Florian Kirsch, Juergen Doeller,
|
||||
// OpenCSG: A Library for Image-Based CSG Rendering,
|
||||
// University of Potsdam, Hasso-Plattner-Institute, Germany
|
||||
// http://www.opencsg.org/data/csg_freenix2005_paper.pdf
|
||||
|
||||
if (term->type == TYPE_PRIMITIVE) return term;
|
||||
|
||||
shared_ptr<CSGTerm> x = normalize(term->left);
|
||||
shared_ptr<CSGTerm> y = normalize(term->right);
|
||||
|
||||
shared_ptr<CSGTerm> t1(term);
|
||||
if (x != term->left || y != term->right) t1.reset(new CSGTerm(term->type, x, y));
|
||||
|
||||
shared_ptr<CSGTerm> t2;
|
||||
while (1) {
|
||||
t2 = normalize_tail(t1);
|
||||
if (t1 == t2) break;
|
||||
t1 = t2;
|
||||
if (this->type == TYPE_PRIMITIVE) {
|
||||
this->bbox = this->m * this->polyset->getBoundingBox();
|
||||
}
|
||||
else {
|
||||
const BoundingBox &leftbox = this->left->getBoundingBox();
|
||||
const BoundingBox &rightbox = this->right->getBoundingBox();
|
||||
switch (this->type) {
|
||||
case TYPE_UNION:
|
||||
this->bbox = this->m * BoundingBox(leftbox.min().cwise().min(rightbox.min()),
|
||||
leftbox.max().cwise().max(rightbox.max()));
|
||||
break;
|
||||
case TYPE_INTERSECTION:
|
||||
this->bbox = this->m * BoundingBox(leftbox.min().cwise().max(rightbox.min()),
|
||||
leftbox.max().cwise().min(rightbox.max()));
|
||||
break;
|
||||
case TYPE_DIFFERENCE:
|
||||
this->bbox = this->m * leftbox;
|
||||
break;
|
||||
case TYPE_PRIMITIVE:
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
|
||||
return t1;
|
||||
}
|
||||
|
||||
shared_ptr<CSGTerm> CSGTerm::normalize_tail(shared_ptr<CSGTerm> &term)
|
||||
shared_ptr<CSGTerm> CSGTerm::normalize(shared_ptr<CSGTerm> term)
|
||||
{
|
||||
// This function implements the CSG normalization
|
||||
// Reference:
|
||||
// Goldfeather, J., Molnar, S., Turk, G., and Fuchs, H. Near
|
||||
// Realtime CSG Rendering Using Tree Normalization and Geometric
|
||||
// Pruning. IEEE Computer Graphics and Applications, 9(3):20-28,
|
||||
// 1989.
|
||||
// http://www.cc.gatech.edu/~turk/my_papers/pxpl_csg.pdf
|
||||
|
||||
if (term->type == TYPE_PRIMITIVE) {
|
||||
return term;
|
||||
}
|
||||
|
||||
do {
|
||||
while (term && normalize_tail(term)) { }
|
||||
if (!term || term->type == TYPE_PRIMITIVE) return term;
|
||||
term->left = normalize(term->left);
|
||||
} while (term->type != TYPE_UNION &&
|
||||
(term->right->type != TYPE_PRIMITIVE || term->left->type == TYPE_UNION));
|
||||
term->right = normalize(term->right);
|
||||
|
||||
// FIXME: Do we need to take into account any transformation of item here?
|
||||
if (!term->right) {
|
||||
if (term->type == TYPE_UNION || term->type == TYPE_DIFFERENCE) return term->left;
|
||||
else return term->right;
|
||||
}
|
||||
if (!term->left) {
|
||||
if (term->type == TYPE_UNION) return term->right;
|
||||
else return term->left;
|
||||
}
|
||||
|
||||
return term;
|
||||
}
|
||||
|
||||
bool CSGTerm::normalize_tail(shared_ptr<CSGTerm> &term)
|
||||
{
|
||||
if (term->type == TYPE_UNION || term->type == TYPE_PRIMITIVE) return false;
|
||||
|
||||
// Part A: The 'x . (y . z)' expressions
|
||||
|
||||
shared_ptr<CSGTerm> x = term->left;
|
||||
shared_ptr<CSGTerm> y = term->right->left;
|
||||
shared_ptr<CSGTerm> z = term->right->right;
|
||||
|
||||
CSGTerm *result = NULL;
|
||||
shared_ptr<CSGTerm> result = term;
|
||||
|
||||
// 1. x - (y + z) -> (x - y) - z
|
||||
if (term->type == TYPE_DIFFERENCE && term->right->type == TYPE_UNION) {
|
||||
result = new CSGTerm(TYPE_DIFFERENCE,
|
||||
shared_ptr<CSGTerm>(new CSGTerm(TYPE_DIFFERENCE, x, y)),
|
||||
term = createCSGTerm(TYPE_DIFFERENCE,
|
||||
createCSGTerm(TYPE_DIFFERENCE, x, y),
|
||||
z);
|
||||
return true;
|
||||
}
|
||||
// 2. x * (y + z) -> (x * y) + (x * z)
|
||||
else if (term->type == TYPE_INTERSECTION && term->right->type == TYPE_UNION) {
|
||||
result = new CSGTerm(TYPE_UNION,
|
||||
new CSGTerm(TYPE_INTERSECTION, x, y),
|
||||
new CSGTerm(TYPE_INTERSECTION, x, z));
|
||||
term = createCSGTerm(TYPE_UNION,
|
||||
createCSGTerm(TYPE_INTERSECTION, x, y),
|
||||
createCSGTerm(TYPE_INTERSECTION, x, z));
|
||||
return true;
|
||||
}
|
||||
// 3. x - (y * z) -> (x - y) + (x - z)
|
||||
else if (term->type == TYPE_DIFFERENCE && term->right->type == TYPE_INTERSECTION) {
|
||||
result = new CSGTerm(TYPE_UNION,
|
||||
new CSGTerm(TYPE_DIFFERENCE, x, y),
|
||||
new CSGTerm(TYPE_DIFFERENCE, x, z));
|
||||
term = createCSGTerm(TYPE_UNION,
|
||||
createCSGTerm(TYPE_DIFFERENCE, x, y),
|
||||
createCSGTerm(TYPE_DIFFERENCE, x, z));
|
||||
return true;
|
||||
}
|
||||
// 4. x * (y * z) -> (x * y) * z
|
||||
else if (term->type == TYPE_INTERSECTION && term->right->type == TYPE_INTERSECTION) {
|
||||
result = new CSGTerm(TYPE_INTERSECTION,
|
||||
shared_ptr<CSGTerm>(new CSGTerm(TYPE_INTERSECTION, x, y)),
|
||||
term = createCSGTerm(TYPE_INTERSECTION,
|
||||
createCSGTerm(TYPE_INTERSECTION, x, y),
|
||||
z);
|
||||
return true;
|
||||
}
|
||||
// 5. x - (y - z) -> (x - y) + (x * z)
|
||||
else if (term->type == TYPE_DIFFERENCE && term->right->type == TYPE_DIFFERENCE) {
|
||||
result = new CSGTerm(TYPE_UNION,
|
||||
new CSGTerm(TYPE_DIFFERENCE, x, y),
|
||||
new CSGTerm(TYPE_INTERSECTION, x, z));
|
||||
term = createCSGTerm(TYPE_UNION,
|
||||
createCSGTerm(TYPE_DIFFERENCE, x, y),
|
||||
createCSGTerm(TYPE_INTERSECTION, x, z));
|
||||
return true;
|
||||
}
|
||||
// 6. x * (y - z) -> (x * y) - z
|
||||
else if (term->type == TYPE_INTERSECTION && term->right->type == TYPE_DIFFERENCE) {
|
||||
result = new CSGTerm(TYPE_DIFFERENCE,
|
||||
shared_ptr<CSGTerm>(new CSGTerm(TYPE_INTERSECTION, x, y)),
|
||||
term = createCSGTerm(TYPE_DIFFERENCE,
|
||||
createCSGTerm(TYPE_INTERSECTION, x, y),
|
||||
z);
|
||||
return true;
|
||||
}
|
||||
if (result) return shared_ptr<CSGTerm>(result);
|
||||
|
||||
// Part B: The '(x . y) . z' expressions
|
||||
|
||||
|
@ -151,26 +238,27 @@ shared_ptr<CSGTerm> CSGTerm::normalize_tail(shared_ptr<CSGTerm> &term)
|
|||
|
||||
// 7. (x - y) * z -> (x * z) - y
|
||||
if (term->left->type == TYPE_DIFFERENCE && term->type == TYPE_INTERSECTION) {
|
||||
result = new CSGTerm(TYPE_DIFFERENCE,
|
||||
shared_ptr<CSGTerm>(new CSGTerm(TYPE_INTERSECTION, x, z)),
|
||||
term = createCSGTerm(TYPE_DIFFERENCE,
|
||||
createCSGTerm(TYPE_INTERSECTION, x, z),
|
||||
y);
|
||||
return true;
|
||||
}
|
||||
// 8. (x + y) - z -> (x - z) + (y - z)
|
||||
else if (term->left->type == TYPE_UNION && term->type == TYPE_DIFFERENCE) {
|
||||
result = new CSGTerm(TYPE_UNION,
|
||||
new CSGTerm(TYPE_DIFFERENCE, x, z),
|
||||
new CSGTerm(TYPE_DIFFERENCE, y, z));
|
||||
term = createCSGTerm(TYPE_UNION,
|
||||
createCSGTerm(TYPE_DIFFERENCE, x, z),
|
||||
createCSGTerm(TYPE_DIFFERENCE, y, z));
|
||||
return true;
|
||||
}
|
||||
// 9. (x + y) * z -> (x * z) + (y * z)
|
||||
else if (term->left->type == TYPE_UNION && term->type == TYPE_INTERSECTION) {
|
||||
result = new CSGTerm(TYPE_UNION,
|
||||
new CSGTerm(TYPE_INTERSECTION, x, z),
|
||||
new CSGTerm(TYPE_INTERSECTION, y, z));
|
||||
term = createCSGTerm(TYPE_UNION,
|
||||
createCSGTerm(TYPE_INTERSECTION, x, z),
|
||||
createCSGTerm(TYPE_INTERSECTION, y, z));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (result) return shared_ptr<CSGTerm>(result);
|
||||
|
||||
return term;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string CSGTerm::dump()
|
||||
|
@ -239,11 +327,7 @@ BoundingBox CSGChain::getBoundingBox() const
|
|||
if (types[i] != CSGTerm::TYPE_DIFFERENCE) {
|
||||
BoundingBox psbox = polysets[i]->getBoundingBox();
|
||||
if (!psbox.isNull()) {
|
||||
Eigen::Transform3d t;
|
||||
// Column-major vs. Row-major
|
||||
t = matrices[i];
|
||||
bbox.extend(t * psbox.min());
|
||||
bbox.extend(t * psbox.max());
|
||||
bbox.extend(matrices[i] * psbox);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,23 +18,35 @@ public:
|
|||
TYPE_DIFFERENCE
|
||||
};
|
||||
|
||||
static shared_ptr<CSGTerm> createCSGTerm(type_e type, shared_ptr<CSGTerm> left, shared_ptr<CSGTerm> right);
|
||||
static shared_ptr<CSGTerm> createCSGTerm(type_e type, CSGTerm *left, CSGTerm *right);
|
||||
|
||||
type_e type;
|
||||
shared_ptr<PolySet> polyset;
|
||||
std::string label;
|
||||
shared_ptr<CSGTerm> left;
|
||||
shared_ptr<CSGTerm> right;
|
||||
BoundingBox bbox;
|
||||
|
||||
CSGTerm(const shared_ptr<PolySet> &polyset, const Transform3d &matrix, const double color[4], const std::string &label);
|
||||
~CSGTerm();
|
||||
|
||||
const BoundingBox &getBoundingBox() const { return this->bbox; }
|
||||
|
||||
static shared_ptr<CSGTerm> normalize(shared_ptr<CSGTerm> term);
|
||||
static bool normalize_tail(shared_ptr<CSGTerm> &term);
|
||||
|
||||
std::string dump();
|
||||
private:
|
||||
CSGTerm(type_e type, shared_ptr<CSGTerm> left, shared_ptr<CSGTerm> right);
|
||||
CSGTerm(type_e type, CSGTerm *left, CSGTerm *right);
|
||||
|
||||
void initBoundingBox();
|
||||
|
||||
Transform3d m;
|
||||
double color[4];
|
||||
|
||||
CSGTerm(const shared_ptr<PolySet> &polyset, const Transform3d &matrix, const double color[4], const std::string &label);
|
||||
CSGTerm(type_e type, shared_ptr<CSGTerm> left, shared_ptr<CSGTerm> right);
|
||||
CSGTerm(type_e type, CSGTerm *left, CSGTerm *right);
|
||||
~CSGTerm();
|
||||
|
||||
static shared_ptr<CSGTerm> normalize(shared_ptr<CSGTerm> &term);
|
||||
static shared_ptr<CSGTerm> normalize_tail(shared_ptr<CSGTerm> &term);
|
||||
|
||||
std::string dump();
|
||||
friend class CSGChain;
|
||||
};
|
||||
|
||||
class CSGChain
|
||||
|
|
|
@ -84,17 +84,27 @@ void export_stl(CGAL_Nef_polyhedron *root_N, std::ostream &output, QProgressDial
|
|||
stream << x3 << " " << y3 << " " << z3;
|
||||
std::string vs3 = stream.str();
|
||||
if (vs1 != vs2 && vs1 != vs3 && vs2 != vs3) {
|
||||
|
||||
double nx = (y1-y2)*(z1-z3) - (z1-z2)*(y1-y3);
|
||||
double ny = (z1-z2)*(x1-x3) - (x1-x2)*(z1-z3);
|
||||
double nz = (x1-x2)*(y1-y3) - (y1-y2)*(x1-x3);
|
||||
// The above condition ensures that vs1-vs2, vs1-vs3, and their cross
|
||||
// product are non-zero. Floating point arithmetic may however truncate
|
||||
// small values to 0. This can be avoided by first scaling the components
|
||||
// of vs1-vs2 and vs1-vs3. This has no effect on the resulting unit
|
||||
// normal vector.
|
||||
double dn[6] = { x1-x2, y1-y2, z1-z2, x1-x3, y1-y3, z1-z3 };
|
||||
double maxdn = 0;
|
||||
int i;
|
||||
for (i = 0; i < 6; ++i) {
|
||||
double dx = dn[i];
|
||||
if (dx < 0) dx = -dx;
|
||||
if (dx > maxdn) maxdn = dx;
|
||||
}
|
||||
for (i = 0; i < 6; ++i) dn[i] /= maxdn;
|
||||
double nx = dn[1]*dn[5] - dn[2]*dn[4];
|
||||
double ny = dn[2]*dn[3] - dn[0]*dn[5];
|
||||
double nz = dn[0]*dn[4] - dn[1]*dn[3];
|
||||
double nlength = sqrt(nx*nx + ny*ny + nz*nz);
|
||||
// Avoid generating normals for polygons with zero area
|
||||
double eps = 0.000001;
|
||||
if (nlength < eps) nlength = 1.0;
|
||||
output << " facet normal "
|
||||
<< nx / nlength << " "
|
||||
<< ny / nlength << " "
|
||||
output << " facet normal "
|
||||
<< nx / nlength << " "
|
||||
<< ny / nlength << " "
|
||||
<< nz / nlength << "\n";
|
||||
output << " outer loop\n";
|
||||
output << " vertex " << vs1 << "\n";
|
||||
|
@ -164,7 +174,7 @@ void export_dxf(CGAL_Nef_polyhedron *root_N, std::ostream &output, QProgressDial
|
|||
<< y2 << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
output << " 0\n"
|
||||
<< "ENDSEC\n";
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include "Preferences.h"
|
||||
#include "renderer.h"
|
||||
#include "rendersettings.h"
|
||||
#include "linalg.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QWheelEvent>
|
||||
|
@ -388,12 +389,12 @@ void GLView::paintGL()
|
|||
|
||||
gluLookAt(0.0, -viewer_distance, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0);
|
||||
|
||||
glTranslated(object_trans_x, object_trans_y, object_trans_z);
|
||||
|
||||
glRotated(object_rot_x, 1.0, 0.0, 0.0);
|
||||
glRotated(object_rot_y, 0.0, 1.0, 0.0);
|
||||
glRotated(object_rot_z, 0.0, 0.0, 1.0);
|
||||
|
||||
glTranslated(object_trans_x, object_trans_y, object_trans_z);
|
||||
|
||||
// FIXME: Crosshairs and axes are lighted, this doesn't make sense and causes them
|
||||
// to change color based on view orientation.
|
||||
if (showcrosshairs)
|
||||
|
@ -500,6 +501,7 @@ void GLView::paintGL()
|
|||
// FIXME: This was an attempt to keep contrast with background, but is suboptimal
|
||||
// (e.g. nearly invisible against a gray background).
|
||||
int r,g,b;
|
||||
r=g=b=0;
|
||||
// bgcol.getRgb(&r, &g, &b);
|
||||
glColor3d((255.0-r)/255.0, (255.0-g)/255.0, (255.0-b)/255.0);
|
||||
glBegin(GL_LINES);
|
||||
|
@ -557,7 +559,6 @@ void GLView::mousePressEvent(QMouseEvent *event)
|
|||
setFocus();
|
||||
}
|
||||
|
||||
|
||||
void GLView::normalizeAngle(GLdouble& angle)
|
||||
{
|
||||
while(angle < 0)
|
||||
|
@ -594,8 +595,37 @@ void GLView::mouseMoveEvent(QMouseEvent *event)
|
|||
if ((QApplication::keyboardModifiers() & Qt::ShiftModifier) != 0) {
|
||||
viewer_distance += (GLdouble)dy;
|
||||
} else {
|
||||
object_trans_x += dx;
|
||||
object_trans_z -= dy;
|
||||
|
||||
double mx = +(dx) * viewer_distance/1000;
|
||||
double my = -(dy) * viewer_distance/1000;
|
||||
|
||||
Matrix3d aax, aay, aaz, tm3;
|
||||
aax = Eigen::AngleAxisd(-(object_rot_x/180) * M_PI, Vector3d::UnitX());
|
||||
aay = Eigen::AngleAxisd(-(object_rot_y/180) * M_PI, Vector3d::UnitY());
|
||||
aaz = Eigen::AngleAxisd(-(object_rot_z/180) * M_PI, Vector3d::UnitZ());
|
||||
tm3 = Matrix3d::Identity();
|
||||
tm3 = aaz * (aay * (aax * tm3));
|
||||
|
||||
Matrix4d tm;
|
||||
tm = Matrix4d::Identity();
|
||||
for (int i=0;i<3;i++) for (int j=0;j<3;j++) tm(j,i)=tm3(j,i);
|
||||
|
||||
Matrix4d vec;
|
||||
vec <<
|
||||
0, 0, 0, mx,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, my,
|
||||
0, 0, 0, 1
|
||||
;
|
||||
if ((QApplication::keyboardModifiers() & Qt::ShiftModifier) != 0) {
|
||||
vec(0,3) = 0;
|
||||
vec(1,3) = my;
|
||||
vec(2,3) = 0;
|
||||
}
|
||||
tm = tm * vec;
|
||||
object_trans_x += tm(0,3);
|
||||
object_trans_y += tm(1,3);
|
||||
object_trans_z += tm(2,3);
|
||||
}
|
||||
}
|
||||
updateGL();
|
||||
|
|
|
@ -10,6 +10,9 @@ using Eigen::Vector3d;
|
|||
typedef Eigen::AlignedBox<double, 3> BoundingBox;
|
||||
using Eigen::Matrix3f;
|
||||
using Eigen::Matrix3d;
|
||||
using Eigen::Matrix4d;
|
||||
using Eigen::Transform3d;
|
||||
|
||||
BoundingBox operator*(const Transform3d &m, const BoundingBox &box);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -245,7 +245,7 @@ int get_fragments_from_r(double r, double fn, double fs, double fa)
|
|||
if (r < GRID_FINE) return 0;
|
||||
if (fn > 0.0)
|
||||
return (int)fn;
|
||||
return (int)ceil(fmax(fmin(360.0 / fa, r*M_PI / fs), 5));
|
||||
return (int)ceil(fmax(fmin(360.0 / fa, r*2*M_PI / fs), 5));
|
||||
}
|
||||
|
||||
struct point2d {
|
||||
|
|
|
@ -142,8 +142,8 @@ PolySet *SurfaceNode::evaluate_polyset(class PolySetEvaluator *) const
|
|||
|
||||
p->convexity = convexity;
|
||||
|
||||
double ox = center ? -columns/2.0 : 0;
|
||||
double oy = center ? -lines/2.0 : 0;
|
||||
double ox = center ? -(columns-1)/2.0 : 0;
|
||||
double oy = center ? -(lines-1)/2.0 : 0;
|
||||
|
||||
for (int i = 1; i < lines; i++)
|
||||
for (int j = 1; j < columns; j++)
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
//
|
||||
// Bug description: The intersection results in an empty object.
|
||||
// Cause: The rotated bounding box is wrongly calculated, yielding a
|
||||
// box which don't overlap with the bounding box of the second object.
|
||||
//
|
||||
intersection() {
|
||||
rotate(45) cube(10);
|
||||
translate([3,2,0]) cube(10);
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
render() {
|
||||
difference() {
|
||||
square(100, center=true);
|
||||
circle(r=30);
|
||||
}
|
||||
}
|
|
@ -13,6 +13,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
|
|||
# Build debug build as default
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE RelWithDebInfo)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
|
||||
endif()
|
||||
|
||||
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||
|
@ -86,7 +87,8 @@ if (WIN32)
|
|||
set(BOOST_THREAD_USE_LIB TRUE)
|
||||
endif()
|
||||
|
||||
set(Boost_ADDITIONAL_VERSIONS "1.47.0" "1.46.0")
|
||||
# Update this if FindBoost.cmake gets out of sync with the current boost release
|
||||
# set(Boost_ADDITIONAL_VERSIONS "1.47.0" "1.46.0")
|
||||
find_package( Boost 1.35.0 COMPONENTS thread program_options filesystem system regex )
|
||||
if(Boost_FOUND)
|
||||
message(STATUS "Boost includes found: " ${Boost_INCLUDE_DIRS})
|
||||
|
@ -102,7 +104,7 @@ endif()
|
|||
|
||||
# Mac OS X
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
FIND_LIBRARY(COCOA_LIBRARY Cocoa)
|
||||
FIND_LIBRARY(COCOA_LIBRARY Cocoa REQUIRED)
|
||||
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
|
||||
# Qt4
|
||||
|
@ -112,7 +114,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
|||
set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
|
||||
endif()
|
||||
|
||||
find_package(OpenGL)
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL REQUIRED)
|
||||
include(${QT_USE_FILE})
|
||||
|
||||
|
@ -187,14 +189,14 @@ if(WIN32_STATIC_BUILD)
|
|||
endif()
|
||||
|
||||
# Flex/Bison
|
||||
find_package(BISON)
|
||||
find_package(BISON REQUIRED)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
# FreeBSD has an old flex in /usr/bin and a new flex in /usr/local/bin
|
||||
set(FLEX_EXECUTABLE /usr/local/bin/flex)
|
||||
endif()
|
||||
|
||||
find_package(FLEX)
|
||||
find_package(FLEX REQUIRED)
|
||||
# The COMPILE_FLAGS and forced C++ compiler is just to be compatible with qmake
|
||||
if (WIN32)
|
||||
set(FLEX_UNISTD_FLAG "-DYY_NO_UNISTD_H")
|
||||
|
@ -242,6 +244,7 @@ add_definitions(-DOPENSCAD_TESTING)
|
|||
set(CORE_SOURCES
|
||||
tests-common.cc
|
||||
../src/mathc99.cc
|
||||
../src/linalg.cc
|
||||
../src/handle_dep.cc
|
||||
../src/value.cc
|
||||
../src/expr.cc
|
||||
|
@ -529,7 +532,8 @@ list(APPEND DUMPTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/escape-test
|
|||
|
||||
list(APPEND CGALPNGTEST_FILES ${FEATURES_FILES} ${SCAD_DXF_FILES} ${EXAMPLE_FILES})
|
||||
list(APPEND OPENCSGTEST_FILES ${CGALPNGTEST_FILES})
|
||||
list(APPEND THROWNTOGETHERTEST_FILES ${CGALPNGTEST_FILES})
|
||||
list(APPEND OPENCSGTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/bugs/bbox-transform-bug.scad)
|
||||
list(APPEND THROWNTOGETHERTEST_FILES ${OPENCSGTEST_FILES})
|
||||
|
||||
# Disable tests which are known to cause floating point comparison issues
|
||||
# Once we're capable of comparing these across platforms, we can put these back in
|
||||
|
|
|
@ -289,9 +289,10 @@ int csgtestcore(int argc, char *argv[], test_type_e test_type)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
QFileInfo fileInfo(filename);
|
||||
if (!sysinfo_dump)
|
||||
if (!sysinfo_dump) {
|
||||
QFileInfo fileInfo(filename);
|
||||
QDir::setCurrent(fileInfo.absolutePath());
|
||||
}
|
||||
|
||||
AbstractNode::resetIndexCounter();
|
||||
AbstractNode *absolute_root_node = root_module->evaluate(&root_ctx, &root_inst);
|
||||
|
@ -322,10 +323,7 @@ int csgtestcore(int argc, char *argv[], test_type_e test_type)
|
|||
}
|
||||
|
||||
assert(csgInfo.root_norm_term);
|
||||
if (csgInfo.root_norm_term.use_count() <= 1) {
|
||||
fprintf(stderr, "XXX\n");
|
||||
}
|
||||
|
||||
|
||||
csgInfo.root_chain = new CSGChain();
|
||||
csgInfo.root_chain->import(csgInfo.root_norm_term);
|
||||
fprintf(stderr, "Normalized CSG tree has %d elements\n", int(csgInfo.root_chain->polysets.size()));
|
||||
|
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 7.0 KiB |
|
@ -10,21 +10,21 @@
|
|||
union();
|
||||
difference();
|
||||
intersection();
|
||||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
group();
|
||||
cube(size = [1, 1, 1], center = false);
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 1);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 1);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
polyhedron(points = undef, triangles = undef, convexity = 1);
|
||||
square(size = [1, 1], center = false);
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 1);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 1);
|
||||
polygon(points = undef, paths = undef, convexity = 1);
|
||||
projection(cut = false, convexity = 0);
|
||||
render(convexity = 1);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
difference() {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
%cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
%cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
difference() {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
group() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 16, $fa = 12, $fs = 1, r = 1);
|
||||
sphere($fn = 16, $fa = 12, $fs = 2, r = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2.5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 16, $fa = 12, $fs = 1, h = 2, r1 = 1, r2 = 1, center = true);
|
||||
cylinder($fn = 16, $fa = 12, $fs = 2, h = 2, r1 = 1, r2 = 1, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cube(size = [2, 2, 2], center = true);
|
||||
|
@ -22,7 +22,7 @@
|
|||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 16, $fa = 12, $fs = 1, r = 1);
|
||||
sphere($fn = 16, $fa = 12, $fs = 2, r = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2.5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]);
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]);
|
||||
|
@ -31,7 +31,7 @@
|
|||
}
|
||||
multmatrix([[1, 0, 0, 2.5], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
cylinder($fn = 16, $fa = 12, $fs = 1, h = 2, r1 = 1, r2 = 1, center = true);
|
||||
cylinder($fn = 16, $fa = 12, $fs = 2, h = 2, r1 = 1, r2 = 1, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
circle($fn = 0, $fa = 12, $fs = 1, r = 1);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 1);
|
||||
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
circle($fn = 0, $fa = 12, $fs = 1, r = 1);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 1);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 1);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 0);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 0);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 4, $fa = 12, $fs = 1, r = 1);
|
||||
circle($fn = 4, $fa = 12, $fs = 2, r = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, -3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 1, r = 1);
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, -3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 12, $fa = 12, $fs = 1, r = 1);
|
||||
circle($fn = 12, $fa = 12, $fs = 2, r = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 20, $fs = 0.3, r = 1);
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 0, r2 = 0, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 0, r2 = 0, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 0, r2 = 0, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 0, r2 = 0, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 11], [0, 1, 0, -11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 5, r1 = 5, r2 = 1, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 5, r1 = 5, r2 = 1, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 11], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 5, r1 = 5, r2 = 0, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 5, r1 = 5, r2 = 0, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 11], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 8, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 8, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 22], [0, 1, 0, -11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 5, r1 = 0, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 5, r1 = 0, r2 = 5, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 22], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 5, r1 = 5, r2 = 0, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 5, r1 = 5, r2 = 0, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 22], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 15, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 15, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
difference();
|
||||
difference() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 20, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 20, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 10.5, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 10.5, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 11, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 11, r1 = 4, r2 = 4, center = true);
|
||||
multmatrix([[2.22045e-16, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 11, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 11, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
|||
difference() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 7.01], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@
|
|||
difference() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 6.99], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
difference() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
import(file = "B-\" C-\t D-\n E-'", layer = "A:\\ B:\" C:\t D:\n E:' F:\\\\", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "B-\" C-\t D-\n E-'", layer = "A:\\ B:\" C:\t D:\n E:' F:\\\\", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 5], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 50, r1 = 20, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 50, r1 = 20, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
group() {
|
||||
difference() {
|
||||
cube(size = [30, 30, 30], center = true);
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 20);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 20);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
%linear_extrude(height = 22, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 1) {
|
||||
import(file = "example009.dxf", layer = "body", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
%linear_extrude(height = 22, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "example009.dxf", layer = "body", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
%group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 12], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 2, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 1) {
|
||||
import(file = "example009.dxf", layer = "plate", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 2, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "example009.dxf", layer = "plate", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, -12], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 2, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 1) {
|
||||
import(file = "example009.dxf", layer = "plate", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 2, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "example009.dxf", layer = "plate", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
intersection() {
|
||||
linear_extrude(height = 20, center = true, convexity = 10, twist = -57.5288, slices = 4, $fn = 0, $fa = 12, $fs = 1) {
|
||||
import(file = "example009.dxf", layer = "fan_top", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 20, center = true, convexity = 10, twist = -57.5288, slices = 4, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "example009.dxf", layer = "fan_top", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
rotate_extrude(file = "example009.dxf", layer = "fan_side", origin = [0, -40], scale = 1, convexity = 10, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(file = "example009.dxf", layer = "fan_side", origin = [0, -40], scale = 1, convexity = 10, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
intersection() {
|
||||
linear_extrude(height = 100, center = true, convexity = 3, $fn = 0, $fa = 12, $fs = 1) {
|
||||
import(file = "example013.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 100, center = true, convexity = 3, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "example013.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[2.22045e-16, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 100, center = true, convexity = 3, $fn = 0, $fa = 12, $fs = 1) {
|
||||
import(file = "example013.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 100, center = true, convexity = 3, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "example013.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 2.22045e-16, -1, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 100, center = true, convexity = 3, $fn = 0, $fa = 12, $fs = 1) {
|
||||
import(file = "example013.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 100, center = true, convexity = 3, $fn = 0, $fa = 12, $fs = 2) {
|
||||
import(file = "example013.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,10 +20,10 @@
|
|||
}
|
||||
multmatrix([[0.707107, 0.707107, 0, 0], [-0.707107, 0.707107, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[0.7, 0, 0, 0], [0, 1.3, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
import(file = "example009.dxf", layer = "body", origin = [0, 0], scale = 2, convexity = 6, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "example009.dxf", layer = "body", origin = [0, 0], scale = 2, convexity = 6, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,10 +3,10 @@
|
|||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 74], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 6, center = false, convexity = 4, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 6, center = false, convexity = 4, $fn = 0, $fa = 12, $fs = 2) {
|
||||
group() {
|
||||
difference() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 47);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 47);
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 36], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
|
@ -24,15 +24,15 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 25);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 25);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
linear_extrude(height = 6, center = false, convexity = 4, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 6, center = false, convexity = 4, $fn = 0, $fa = 12, $fs = 2) {
|
||||
group() {
|
||||
difference() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 102);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 102);
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 88.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
|
@ -50,7 +50,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 75);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 75);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -59,27 +59,27 @@
|
|||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 102], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[2.22045e-16, 2.22045e-16, -1, 0], [-1, 0, -2.22045e-16, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 6, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 6, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 2) {
|
||||
group() {
|
||||
union() {
|
||||
difference() {
|
||||
polygon(points = [[0, 6], [6, 6], [6, 0], [21, 0], [21, 6], [27, 6], [27, 0], [77, 0], [83, 12], [77, 18], [77, 74], [71, 74], [71, 80], [61, 80], [61, 74], [55, 74], [55, 80], [49, 74], [49, 18], [43, 12], [6, 12]], paths = undef, convexity = 1);
|
||||
multmatrix([[1, 0, 0, 43], [0, 1, 0, 18], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 83], [0, 1, 0, 18], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 77], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [9, 12], center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 86], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
multmatrix([[1, 0, 0, -12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [12, 12], center = false);
|
||||
}
|
||||
|
@ -87,7 +87,7 @@
|
|||
}
|
||||
multmatrix([[1, 0, 0, 55], [0, 1, 0, 74], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
multmatrix([[1, 0, 0, -12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [12, 12], center = false);
|
||||
}
|
||||
|
@ -102,27 +102,27 @@
|
|||
multmatrix([[-0.5, -0.866025, 0, 0], [0.866025, -0.5, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 102], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[2.22045e-16, 2.22045e-16, -1, 0], [-1, 0, -2.22045e-16, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 6, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 6, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 2) {
|
||||
group() {
|
||||
union() {
|
||||
difference() {
|
||||
polygon(points = [[0, 6], [6, 6], [6, 0], [21, 0], [21, 6], [27, 6], [27, 0], [77, 0], [83, 12], [77, 18], [77, 74], [71, 74], [71, 80], [61, 80], [61, 74], [55, 74], [55, 80], [49, 74], [49, 18], [43, 12], [6, 12]], paths = undef, convexity = 1);
|
||||
multmatrix([[1, 0, 0, 43], [0, 1, 0, 18], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 83], [0, 1, 0, 18], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 77], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [9, 12], center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 86], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
multmatrix([[1, 0, 0, -12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [12, 12], center = false);
|
||||
}
|
||||
|
@ -130,7 +130,7 @@
|
|||
}
|
||||
multmatrix([[1, 0, 0, 55], [0, 1, 0, 74], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
multmatrix([[1, 0, 0, -12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [12, 12], center = false);
|
||||
}
|
||||
|
@ -145,27 +145,27 @@
|
|||
multmatrix([[-0.5, 0.866025, 0, 0], [-0.866025, -0.5, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 102], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[2.22045e-16, 2.22045e-16, -1, 0], [-1, 0, -2.22045e-16, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 6, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 6, center = true, convexity = 10, $fn = 0, $fa = 12, $fs = 2) {
|
||||
group() {
|
||||
union() {
|
||||
difference() {
|
||||
polygon(points = [[0, 6], [6, 6], [6, 0], [21, 0], [21, 6], [27, 6], [27, 0], [77, 0], [83, 12], [77, 18], [77, 74], [71, 74], [71, 80], [61, 80], [61, 74], [55, 74], [55, 80], [49, 74], [49, 18], [43, 12], [6, 12]], paths = undef, convexity = 1);
|
||||
multmatrix([[1, 0, 0, 43], [0, 1, 0, 18], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 83], [0, 1, 0, 18], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 77], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [9, 12], center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 86], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
multmatrix([[1, 0, 0, -12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [12, 12], center = false);
|
||||
}
|
||||
|
@ -173,7 +173,7 @@
|
|||
}
|
||||
multmatrix([[1, 0, 0, 55], [0, 1, 0, 74], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 6);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 6);
|
||||
multmatrix([[1, 0, 0, -12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [12, 12], center = false);
|
||||
}
|
||||
|
@ -189,13 +189,13 @@
|
|||
}
|
||||
%multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 12], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
rotate_extrude(convexity = 2, $fn = 0, $fa = 12, $fs = 1) {
|
||||
rotate_extrude(convexity = 2, $fn = 0, $fa = 12, $fs = 2) {
|
||||
square(size = [25, 68], center = false);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 68], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
square(size = [25, 25], center = false);
|
||||
multmatrix([[1, 0, 0, 0], [0, 0.7, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 25);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 25);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -204,7 +204,7 @@
|
|||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -12.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
square(size = [12.5, 25], center = false);
|
||||
}
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 12.5);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 12.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
cube(size = [60, 60, 60], center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
union() {
|
||||
|
@ -23,7 +23,7 @@
|
|||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 150], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 30);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 30);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
|||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -150], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
union() {
|
||||
|
@ -49,7 +49,7 @@
|
|||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 30);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 30);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 150], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cube(size = [60, 60, 60], center = true);
|
||||
|
@ -75,13 +75,13 @@
|
|||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, -50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 30);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 30);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cube(size = [60, 60, 60], center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 150], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -90,13 +90,13 @@
|
|||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -150], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 30);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 30);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cube(size = [60, 60, 60], center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 50], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 50, r1 = 30, r2 = 30, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 150], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
union() {
|
||||
|
|
|
@ -1,126 +1,126 @@
|
|||
group() {
|
||||
multmatrix([[1, 0, 0, -100], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 45, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 45, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -95], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 46.5, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 46.5, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -90], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 48, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 48, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -85], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 49.5, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 49.5, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -80], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 51, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 51, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -75], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 52.5, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 52.5, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -70], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 54, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 54, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -65], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 55.5, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 55.5, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -60], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 57, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 57, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -55], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 58.5, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 58.5, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -50], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 60, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 60, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -45], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 59, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 59, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -40], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 58, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 58, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -35], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 57, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 57, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -30], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 56, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 56, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -25], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 55, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 55, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -20], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 54, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 54, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -15], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 55.05, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 55.05, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -10], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 56.1, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 56.1, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 57.15, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 57.15, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 58.2, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 58.2, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 59.25, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 59.25, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 60.3, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 60.3, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 15], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 61.35, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 61.35, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 62.4, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 62.4, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 25], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 63.45, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 63.45, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 64.5, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 64.5, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 35], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 65.55, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 65.55, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 40], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 66.6, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 66.6, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 45], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 67.65, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 67.65, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 50], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 68.7, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 68.7, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 55], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 69.75, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 69.75, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 60], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 70.8, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 70.8, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 65], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 71.85, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 71.85, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 70], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 72.9, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 72.9, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 75], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 73.95, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 73.95, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 80], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 75, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 75, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 85], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 70.0714, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 70.0714, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 90], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 65.1429, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 65.1429, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 95], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 60.2143, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 60.2143, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 100], [0, 1, 0, 0], [0, 0, 1, -30], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 55.2857, r1 = 6, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 55.2857, r1 = 6, r2 = 2, center = false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
cube(size = [20, 20, 40], center = true);
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, -10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, -10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 40, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,94 +30,94 @@
|
|||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, -10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, -10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[2.22045e-16, -2.22045e-16, 1, 0], [1, 0, -2.22045e-16, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, -10], [0, 1, 0, -15], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[2.22045e-16, -2.22045e-16, 1, 0], [1, 0, -2.22045e-16, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, -10], [0, 1, 0, 15], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[2.22045e-16, -2.22045e-16, 1, 0], [1, 0, -2.22045e-16, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, -15], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[2.22045e-16, -2.22045e-16, 1, 0], [1, 0, -2.22045e-16, 0], [0, 1, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 15], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 10, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[2.22045e-16, 1, 2.22045e-16, 0], [0, 2.22045e-16, -1, 0], [-1, 2.22045e-16, 0, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, -15], [0, 1, 0, -5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[2.22045e-16, 1, 2.22045e-16, 0], [0, 2.22045e-16, -1, 0], [-1, 2.22045e-16, 0, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, -15], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[2.22045e-16, 1, 2.22045e-16, 0], [0, 2.22045e-16, -1, 0], [-1, 2.22045e-16, 0, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 15], [0, 1, 0, -5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[2.22045e-16, 1, 2.22045e-16, 0], [0, 2.22045e-16, -1, 0], [-1, 2.22045e-16, 0, 0], [0, 0, 0, 1]]) {
|
||||
multmatrix([[1, 0, 0, 15], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 20, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, -10], [0, 0, 1, -15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, -10], [0, 0, 1, 15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, 10], [0, 0, 1, -15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -5], [0, 1, 0, 10], [0, 0, 1, 15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, -10], [0, 0, 1, -15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, -10], [0, 0, 1, 15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 10], [0, 0, 1, -15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 10], [0, 0, 1, 15], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,111 +1,111 @@
|
|||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 5], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 5], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 0], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 0], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 5], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 5], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 10], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 10], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 5], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 5], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 10], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 10], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 0], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 0], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 5], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 5], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 10], [0, 0, 1, 20], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 30], [0, 1, 0, 10], [0, 0, 1, 30], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,60 +5,60 @@
|
|||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -20], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -10], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 4, r2 = 4, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 4, r2 = 4, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -20], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -10], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 4, r2 = 4, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 4, r2 = 4, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -20], [0, 1, 0, 30], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 2, r1 = 0.5, r2 = 0.5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 2, r1 = 0.5, r2 = 0.5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 30], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 3, r2 = 3, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 2, r1 = 1.5, r2 = 1.5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 3, r2 = 3, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 2, r1 = 1.5, r2 = 1.5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 30], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 2, r1 = 2.5, r2 = 2.5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 2, r1 = 2.5, r2 = 2.5, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -82,19 +82,19 @@
|
|||
group();
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -20], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -10], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 4, r2 = 4, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 4, r2 = 4, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 40], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
}
|
||||
group();
|
||||
|
@ -102,13 +102,13 @@
|
|||
group();
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 1, r2 = 1, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -10], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
difference() {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
%cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
%cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 13], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
%cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
%cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
difference() {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 15], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
difference() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,9 +13,9 @@
|
|||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 15], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,18 +38,18 @@
|
|||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
hull();
|
||||
hull();
|
||||
hull() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 10, r2 = 10, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 10, r2 = 10, center = false);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 10], [0, 0, 0, 1]]) {
|
||||
cube(size = [5, 5, 5], center = true);
|
||||
}
|
||||
|
@ -9,11 +9,11 @@
|
|||
multmatrix([[1, 0, 0, 25], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 10], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 3, r2 = 3, center = false);
|
||||
}
|
||||
difference() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 4, r1 = 10, r2 = 10, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 5, r1 = 5, r2 = 5, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 4, r1 = 10, r2 = 10, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 5, r1 = 5, r2 = 5, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,24 +1,24 @@
|
|||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
multmatrix([[1, 0, 0, -210], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
import(file = "../../dxf/polygons.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/polygons.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -210], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
import(file = "../../dxf/polygons.dxf", layer = "", origin = [0, 110], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/polygons.dxf", layer = "", origin = [0, 110], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -210], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
import(file = "../../dxf/polygons.dxf", layer = "", origin = [110, 110], scale = 0.5, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/polygons.dxf", layer = "", origin = [110, 110], scale = 0.5, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
multmatrix([[1, 0, 0, -200], [0, 1, 0, 200], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "0", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "0", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 200], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "0", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "0", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 200], [0, 1, 0, 200], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "noname", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "noname", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 200], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "Layer with a pretty long name including \\ \"special\" /'\\\\ characters", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "../../dxf/multiple-layers.dxf", layer = "Layer with a pretty long name including \\ \"special\" /'\\\\ characters", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
import(file = "import.stl", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
import(file = "import.stl", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -4,29 +4,29 @@
|
|||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 0.7, r2 = 0.2, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 0.7, r2 = 0.2, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, -2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
cylinder($fn = 10, $fa = 12, $fs = 1, h = 1, r1 = 0.5, r2 = 0.5, center = true);
|
||||
cylinder($fn = 10, $fa = 12, $fs = 2, h = 1, r1 = 0.5, r2 = 0.5, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, -2], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
sphere($fn = 8, $fa = 12, $fs = 1, r = 0.5);
|
||||
sphere($fn = 8, $fa = 12, $fs = 2, r = 0.5);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, -2], [0, 1, 0, -2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
difference() {
|
||||
cube(size = [1, 1, 1], center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 2, r1 = 0.4, r2 = 0.4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 2, r1 = 0.4, r2 = 0.4, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 16, $fa = 12, $fs = 1, r = 0.7);
|
||||
sphere($fn = 16, $fa = 12, $fs = 2, r = 0.7);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
intersection();
|
||||
intersection();
|
||||
intersection() {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 3], [0, 0, 0, 1]]) {
|
||||
cube(size = [4, 4, 6], center = true);
|
||||
}
|
||||
|
@ -9,15 +9,15 @@
|
|||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 12, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 12, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
intersection() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 12, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 12, r1 = 4, r2 = 4, center = true);
|
||||
multmatrix([[2.22045e-16, 0, 1, 0], [0, 1, 0, 0], [-1, 0, 2.22045e-16, 0], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 12, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 12, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
|||
intersection() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 7], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,7 +33,7 @@
|
|||
intersection() {
|
||||
cube(size = [10, 10, 10], center = true);
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 6.99], [0, 0, 0, 1]]) {
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 4, r1 = 4, r2 = 4, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
linear_extrude(height = 100, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,31 +1,31 @@
|
|||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
cube(size = [1, 1, 1], center = false);
|
||||
}
|
||||
linear_extrude(height = 10, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 10, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
square(size = [10, 10], center = false);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 19], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 10, center = true, convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 10, center = true, convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
difference() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 3);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 31.5], [0, 1, 0, 2.5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 10, center = false, convexity = 1, twist = -45, slices = 3, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 10, center = false, convexity = 1, twist = -45, slices = 3, $fn = 0, $fa = 12, $fs = 2) {
|
||||
polygon(points = [[-5, -2.5], [5, -2.5], [0, 2.5]], paths = undef, convexity = 1);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, twist = 45, slices = 2, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, twist = 45, slices = 2, $fn = 0, $fa = 12, $fs = 2) {
|
||||
square(size = [10, 10], center = false);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 19], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, twist = 45, slices = 10, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, twist = 45, slices = 10, $fn = 0, $fa = 12, $fs = 2) {
|
||||
square(size = [10, 10], center = false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
square(size = [10, 10], center = true);
|
||||
square(size = [8, 8], center = true);
|
||||
}
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 2);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
|||
square(size = [10, 10], center = false);
|
||||
square(size = [5, 5], center = false);
|
||||
}
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
|||
group() {
|
||||
minkowski(convexity = 0) {
|
||||
square(size = [10, 10], center = false);
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
cube(size = [10, 10, 5], center = true);
|
||||
cube(size = [8, 8, 10], center = true);
|
||||
}
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 1, r1 = 2, r2 = 2, center = false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
|||
cube(size = [10, 10, 5], center = false);
|
||||
cube(size = [5, 5, 5], center = false);
|
||||
}
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 5, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 5, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
|||
group() {
|
||||
minkowski(convexity = 0) {
|
||||
cube(size = [10, 10, 5], center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 5, r1 = 5, r2 = 5, center = false);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 5, r1 = 5, r2 = 5, center = false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,25 +3,25 @@
|
|||
projection(cut = true, convexity = 0) {
|
||||
square(size = [1, 1], center = false);
|
||||
}
|
||||
linear_extrude(height = 20, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
projection(cut = false, convexity = 0) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 22], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
projection(cut = true, convexity = 0) {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 9], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 44], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
linear_extrude(height = 20, center = false, convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
projection(cut = true, convexity = 0) {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 7], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
render(convexity = 1) {
|
||||
difference() {
|
||||
square(size = [100, 100], center = true);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 30);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
difference() {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 1, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
cylinder($fn = 0, $fa = 12, $fs = 2, h = 30, r1 = 6, r2 = 6, center = true);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
cube(size = [1, 1, 1], center = false);
|
||||
}
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 50], [0, 1, 0, -20], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 8);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,14 +26,14 @@
|
|||
multmatrix([[1, 0, 0, 50], [0, 1, 0, 50], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
difference() {
|
||||
difference() {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 10);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 10);
|
||||
}
|
||||
}
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 1) {
|
||||
rotate_extrude(convexity = 1, $fn = 0, $fa = 12, $fs = 2) {
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 0, $fa = 12, $fs = 1, r = 8);
|
||||
circle($fn = 0, $fa = 12, $fs = 2, r = 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
rotate_extrude(file = "../../dxf/open-polyline.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 1);
|
||||
rotate_extrude(file = "../../dxf/open-polyline.dxf", layer = "", origin = [0, 0], scale = 1, convexity = 1, $fn = 0, $fa = 12, $fs = 2);
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
sphere($fn = 0, $fa = 12, $fs = 1, r = 1);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 1);
|
||||
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
sphere($fn = 0, $fa = 12, $fs = 1, r = 1);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 1);
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 0);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 0);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 0, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 11], [0, 1, 0, -11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 11], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 10, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 10, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 11], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 15, $fa = 12, $fs = 1, r = 5);
|
||||
sphere($fn = 15, $fa = 12, $fs = 2, r = 5);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 22], [0, 1, 0, -11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
sphere($fn = 0, $fa = 20, $fs = 0.3, r = 5);
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
surface(file = "surface-simple.dat", center = true);
|
||||
|
|
@ -1,706 +1,706 @@
|
|||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.803922, 0.360784, 0.360784, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.941176, 0.501961, 0.501961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.980392, 0.501961, 0.447059, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.913725, 0.588235, 0.478431, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.627451, 0.478431, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.862745, 0.0784314, 0.235294, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.698039, 0.133333, 0.133333, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.545098, 0, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.752941, 0.796078, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.713725, 0.756863, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.411765, 0.705882, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.0784314, 0.576471, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.780392, 0.0823529, 0.521569, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.858824, 0.439216, 0.576471, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.627451, 0.478431, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.498039, 0.313725, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.388235, 0.278431, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.270588, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.54902, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.647059, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.843137, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 1, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 1, 0.878431, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.980392, 0.803922, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.980392, 0.980392, 0.823529, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.937255, 0.835294, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.894118, 0.709804, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.854902, 0.72549, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.933333, 0.909804, 0.666667, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.941176, 0.901961, 0.54902, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.741176, 0.717647, 0.419608, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.901961, 0.901961, 0.980392, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.847059, 0.74902, 0.847059, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.866667, 0.627451, 0.866667, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.933333, 0.509804, 0.933333, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.854902, 0.439216, 0.839216, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.729412, 0.333333, 0.827451, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.576471, 0.439216, 0.858824, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.541176, 0.168627, 0.886275, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.580392, 0, 0.827451, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.6, 0.196078, 0.8, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.545098, 0, 0.545098, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.501961, 0, 0.501961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.294118, 0, 0.509804, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.282353, 0.239216, 0.545098, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.415686, 0.352941, 0.803922, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.482353, 0.407843, 0.933333, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.678431, 1, 0.184314, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.498039, 1, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.486275, 0.988235, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 1, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.196078, 0.803922, 0.196078, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.596078, 0.984314, 0.596078, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.564706, 0.933333, 0.564706, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0.980392, 0.603922, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 1, 0.498039, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.235294, 0.701961, 0.443137, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.180392, 0.545098, 0.341176, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.133333, 0.545098, 0.133333, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0.501961, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0.392157, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.603922, 0.803922, 0.196078, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.419608, 0.556863, 0.137255, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.501961, 0.501961, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.333333, 0.419608, 0.184314, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.4, 0.803922, 0.666667, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.560784, 0.737255, 0.560784, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.12549, 0.698039, 0.666667, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0.545098, 0.545098, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0.501961, 0.501961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 1, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 1, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.878431, 1, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.686275, 0.933333, 0.933333, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.498039, 1, 0.831373, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.25098, 0.878431, 0.815686, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.282353, 0.819608, 0.8, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0.807843, 0.819608, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.372549, 0.619608, 0.627451, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.27451, 0.509804, 0.705882, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.690196, 0.768627, 0.870588, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.690196, 0.878431, 0.901961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.678431, 0.847059, 0.901961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.529412, 0.807843, 0.921569, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.529412, 0.807843, 0.980392, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0.74902, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.117647, 0.564706, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.392157, 0.584314, 0.929412, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.254902, 0.411765, 0.882353, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0, 0.803922, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0, 0.545098, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0, 0.501961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.0980392, 0.0980392, 0.439216, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.972549, 0.862745, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.921569, 0.803922, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.894118, 0.768627, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.870588, 0.678431, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 9], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.960784, 0.870588, 0.701961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.870588, 0.721569, 0.529412, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.823529, 0.705882, 0.54902, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.737255, 0.560784, 0.560784, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.956863, 0.643137, 0.376471, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.854902, 0.647059, 0.12549, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.721569, 0.52549, 0.0431373, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.803922, 0.521569, 0.247059, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.823529, 0.411765, 0.117647, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.545098, 0.270588, 0.0745098, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.627451, 0.321569, 0.176471, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 10], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.647059, 0.164706, 0.164706, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.501961, 0, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 1, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.980392, 0.980392, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.941176, 1, 0.941176, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.960784, 1, 0.980392, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.941176, 1, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.941176, 0.972549, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.972549, 0.972549, 1, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.960784, 0.960784, 0.960784, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 11], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.960784, 0.933333, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.960784, 0.960784, 0.862745, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.992157, 0.960784, 0.901961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.980392, 0.941176, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 1, 0.941176, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.980392, 0.921569, 0.843137, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.980392, 0.941176, 0.901961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.941176, 0.960784, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([1, 0.894118, 0.882353, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 9], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.862745, 0.862745, 0.862745, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 10], [0, 1, 0, 12], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.827451, 0.827451, 0.827451, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.752941, 0.752941, 0.752941, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.662745, 0.662745, 0.662745, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.501961, 0.501961, 0.501961, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.411765, 0.411765, 0.411765, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.466667, 0.533333, 0.6, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.439216, 0.501961, 0.564706, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0.184314, 0.309804, 0.309804, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 13], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
color([0, 0, 0, 1]) {
|
||||
sphere($fn = 5, $fa = 12, $fs = 1, r = 0.8);
|
||||
sphere($fn = 5, $fa = 12, $fs = 2, r = 0.8);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
|
@ -93,7 +93,7 @@ def compare_png(resultfilename):
|
|||
compare_method = 'NCC'
|
||||
|
||||
msg = 'ImageMagick image comparison: ' + options.convert_exec + ' '+ ' '.join(args[2:])
|
||||
msg += '\nexpected image: ' + expectedfilename + '\n'
|
||||
msg += '\n expected image: ' + expectedfilename + '\n'
|
||||
print >> sys.stderr, msg
|
||||
if not resultfilename:
|
||||
print >> sys.stderr, "Error: OpenSCAD did not generate an image to test"
|
||||
|
|
|
@ -151,14 +151,14 @@ def parsetest(teststring):
|
|||
"Test time.*?Test (Passed)", # pass/fail
|
||||
"Output:(.*?)<end of output>",
|
||||
'Command:.*?-s" "(.*?)"', # type
|
||||
"actual .*?:(.*?)\n",
|
||||
"expected .*?:(.*?)\n",
|
||||
"^ actual .*?:(.*?)\n",
|
||||
"^ expected .*?:(.*?)\n",
|
||||
'Command:.*?(testdata.*?)"' # scadfile
|
||||
]
|
||||
hits = map( lambda pattern: ezsearch(pattern,teststring), patterns )
|
||||
test = Test(hits[0],hits[1],hits[2]=='Passed',hits[3],hits[4],hits[5],hits[6],hits[7],teststring)
|
||||
test.actualfile_data = tryread(test.actualfile)
|
||||
test.expectedfile_data = tryread(test.expectedfile)
|
||||
if len(test.actualfile) > 0: test.actualfile_data = tryread(test.actualfile)
|
||||
if len(test.expectedfile) > 0: test.expectedfile_data = tryread(test.expectedfile)
|
||||
return test
|
||||
|
||||
def parselog(data):
|
||||
|
@ -249,8 +249,8 @@ TESTLOG
|
|||
passed_tests = filter(lambda x: x.passed, tests)
|
||||
failed_tests = filter(lambda x: not x.passed, tests)
|
||||
|
||||
tests_to_report = tests
|
||||
if failed_only: tests_to_report = failed_tests
|
||||
tests_to_report = failed_tests
|
||||
if include_passed: tests_to_report = tests
|
||||
|
||||
try: percent = str(int(100.0*len(passed_tests) / len(tests)))
|
||||
except ZeroDivisionError: percent = 'n/a'
|
||||
|
@ -274,10 +274,12 @@ TESTLOG
|
|||
wikiname_a = wikify_filename(tmp,wiki_rootpath,sysid)
|
||||
tmp = t.expectedfile.replace(os.path.dirname(builddir),'')
|
||||
wikiname_e = wikify_filename(tmp,wiki_rootpath,sysid)
|
||||
imgs[wikiname_e] = t.expectedfile_data
|
||||
if hasattr(t, 'expectedfile_data'):
|
||||
imgs[wikiname_e] = t.expectedfile_data
|
||||
if t.actualfile:
|
||||
actualfile_wiki = '[[File:'+wikiname_a+'|250px]]'
|
||||
imgs[wikiname_a] = t.actualfile_data
|
||||
if hasattr(t, 'actualfile_data'):
|
||||
imgs[wikiname_a] = t.actualfile_data
|
||||
else:
|
||||
actualfile_wiki = 'No image generated.'
|
||||
newchunk = re.sub('FTESTNAME',t.fullname,repeat1)
|
||||
|
@ -317,8 +319,8 @@ def tohtml(wiki_rootpath, startdate, tests, enddate, sysinfo, sysid, makefiles):
|
|||
try: percent = str(int(100.0*len(passed_tests) / len(tests)))
|
||||
except ZeroDivisionError: percent = 'n/a'
|
||||
|
||||
tests_to_report = tests
|
||||
if failed_only: tests_to_report = failed_tests
|
||||
tests_to_report = failed_tests
|
||||
if include_passed: tests_to_report = tests
|
||||
|
||||
s=''
|
||||
|
||||
|
@ -497,7 +499,7 @@ maxretry = 10
|
|||
|
||||
if bool(os.getenv("TEST_GENERATE")): sys.exit(0)
|
||||
|
||||
failed_only = False
|
||||
if '--failed-only' in sys.argv: failed_only = True
|
||||
include_passed = False
|
||||
if '--include-passed' in sys.argv: include_passed = True
|
||||
|
||||
main()
|
||||
|
|