Merge branch 'main' into hotfix/holes_at_corners

This commit is contained in:
Ruud 2023-04-23 17:35:21 +02:00 committed by GitHub
commit c801bd9f10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 358583 additions and 41 deletions

82
.github/workflows/tests.yml vendored Normal file
View file

@ -0,0 +1,82 @@
name: Run Tests
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions:
contents: read
jobs:
test_linting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
pip install mypy pylint
- name: Check mypy
run: |
python -m mypy --strict .
- name: Check pylint
run: |
find . -type f -name "*.py" | xargs python -m pylint --disable=R,C
test_linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install openscad
run: |
sudo apt update && sudo apt install openscad -y
- name: Test unittest
run: |
python -m unittest discover tests/ -p "test_unit*.py" -v
- name: Test integrationtest
run: |
python -m unittest discover tests/ -p "test_int*.py" -v
- name: Get generated testfiles on fail
uses: actions/upload-artifact@v3
if: failure()
with:
name: generated_test_files_lnx
path: |
oscad_generated_test_files*
test_windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install openscad
run: |
curl.exe --output openscad.zip --url https://files.openscad.org/OpenSCAD-2021.01-x86-64.zip
tar -xf openscad.zip
move "openscad-2021.01" "C:\Program Files\Openscad"
- name: Test unittest
run: |
python -m unittest discover tests/ -p "test_unit*.py" -v
- name: Test integrationtest
run: |
python -m unittest discover tests/ -p "test_int*.py" -v
- name: Get generated testfiles on fail
uses: actions/upload-artifact@v3
if: failure()
with:
name: generated_test_files_windows
path: |
oscad_generated_test_files*

9
.gitignore vendored
View file

@ -5,4 +5,11 @@ gridfinity-rebuilt-bins.json
stl/
batch/
site/
*.json
*.json
#Python related
__pycache__/
.mypy_cache/
#exclude generated temporary test folders
oscad_generated_test_files.*/

View file

@ -16,9 +16,9 @@ $fs = 0.25;
/* [General Settings] */
// number of bases along x-axis
gridx = 5;
gridx = 2;
// number of bases along y-axis
gridy = 5;
gridy = 2;
// base unit
length = 42;

View file

@ -2,11 +2,12 @@ include <gridfinity-rebuilt-utility.scad>
// ===== INFORMATION ===== //
/*
IMPORTANT: rendering will be better for analyzing the model if fast-csg is enabled. As of writing, this feature is only available in the development builds and not the official release of OpenSCAD, but it makes rendering only take a couple seconds, even for comically large bins. Enable it in Edit > Preferences > Features > fast-csg
the magnet holes can have an extra cut in them to make it easier to print without supports
tabs will automatically be disabled when gridz is less than 3, as the tabs take up too much space
base functions can be found in "gridfinity-rebuilt-utility.scad"
examples at end of file
IMPORTANT: rendering will be better for analyzing the model if fast-csg is enabled. As of writing, this feature is only
available in the development builds and not the official release of OpenSCAD, but it makes rendering only take a couple
seconds, even for comically large bins. Enable it in Edit > Preferences > Features > fast-csg the magnet holes can have
an extra cut in them to make it easier to print without supports tabs will automatically be disabled when gridz is less
than 3, as the tabs take up too much space base functions can be found in "gridfinity-rebuilt-utility.scad" examples at
end of file
BIN HEIGHT
the original gridfinity bins had the overall height defined by 7mm increments
@ -29,11 +30,11 @@ $fs = 0.25;
/* [General Settings] */
// number of bases along x-axis
gridx = 5;
// number of bases along y-axis
gridy = 5;
// bin height. See bin height information and "gridz_define" below.
gridz = 6;
gridx = 1;
// number of bases along y-axis
gridy = 1;
// bin height. See bin height information and "gridz_define" below.
gridz = 6;
// base unit
length = 42;
@ -45,9 +46,10 @@ divy = 1;
/* [Height] */
// determine what the variable "gridz" applies to based on your use case
gridz_define = 0; // [0:gridz is the height of bins in units of 7mm increments - Zack's method,1:gridz is the internal height in millimeters, 2:gridz is the overall external height of the bin in millimeters]
gridz_define = 0; // [0:gridz is the height of bins in units of 7mm increments - Zack's method,1:gridz is the internal
// height in millimeters, 2:gridz is the overall external height of the bin in millimeters]
// overrides internal block height of bin (for solid containers). Leave zero for default height. Units: mm
height_internal = 0;
height_internal = 0;
// snap gridz height to nearest 7mm increment
enable_zsnap = false;
@ -56,61 +58,65 @@ enable_zsnap = false;
style_tab = 1; //[0:Full,1:Auto,2:Left,3:Center,4:Right,5:None]
// how should the top lip act
style_lip = 0; //[0: Regular lip, 1:remove lip subtractively, 2: remove lip and retain height]
// scoop weight percentage. 0 disables scoop, 1 is regular scoop. Any real number will scale the scoop.
// scoop weight percentage. 0 disables scoop, 1 is regular scoop. Any real number will scale the scoop.
scoop = 1; //[0:0.1:1]
// only cut magnet/screw holes at the corners of the bin to save uneccesary print time
only_corners = false;
/* [Base] */
style_hole = 3; // [0:no holes, 1:magnet holes only, 2: magnet and screw holes - no printable slit, 3: magnet and screw holes - printable slit]
// number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess the right division)
style_hole = 3; // [0:no holes, 1:magnet holes only, 2: magnet and screw holes - no printable slit, 3: magnet and screw
// holes - printable slit]
// number of divisions per 1 unit of base along the X axis. (default 1, only use integers. 0 means automatically guess
// the right division)
div_base_x = 0;
// number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess the right division)
div_base_y = 0;
// number of divisions per 1 unit of base along the Y axis. (default 1, only use integers. 0 means automatically guess
// the right division)
div_base_y = 0;
// ===== IMPLEMENTATION ===== //
color("tomato") {
gridfinityInit(gridx, gridy, height(gridz, gridz_define, style_lip, enable_zsnap), height_internal, length) {
if (divx > 0 && divy > 0)
cutEqual(n_divx = divx, n_divy = divy, style_tab = style_tab, scoop_weight = scoop);
color("tomato")
{
gridfinityInit(gridx, gridy, height(gridz, gridz_define, style_lip, enable_zsnap), height_internal, length)
{
if (divx > 0 && divy > 0)
cutEqual(n_divx = divx, n_divy = divy, style_tab = style_tab, scoop_weight = scoop);
}
gridfinityBase(gridx, gridy, length, div_base_x, div_base_y, style_hole * (style_corners ? p_corn : 1));
}
gridfinityBase(gridx, gridy, length, div_base_x, div_base_y, style_hole, only_corners=only_corners);
}
// ===== EXAMPLES ===== //
// 3x3 even spaced grid
/*
gridfinityInit(3, 3, height(6), 0, 42) {
cutEqual(n_divx = 3, n_divy = 3, style_tab = 0, scoop_weight = 0);
cutEqual(n_divx = 3, n_divy = 3, style_tab = 0, scoop_weight = 0);
}
gridfinityBase(3, 3, 42, 0, 0, 1);
*/
// Compartments can be placed anywhere (this includes non-integer positions like 1/2 or 1/3). The grid is defined as (0,0) being the bottom left corner of the bin, with each unit being 1 base long. Each cut() module is a compartment, with the first four values defining the area that should be made into a compartment (X coord, Y coord, width, and height). These values should all be positive. t is the tab style of the compartment (0:full, 1:auto, 2:left, 3:center, 4:right, 5:none). s is a toggle for the bottom scoop.
// Compartments can be placed anywhere (this includes non-integer positions like 1/2 or 1/3). The grid is defined as
// (0,0) being the bottom left corner of the bin, with each unit being 1 base long. Each cut() module is a compartment,
// with the first four values defining the area that should be made into a compartment (X coord, Y coord, width, and
// height). These values should all be positive. t is the tab style of the compartment (0:full, 1:auto, 2:left,
// 3:center, 4:right, 5:none). s is a toggle for the bottom scoop.
/*
gridfinityInit(3, 3, height(6), 0, 42) {
cut(x=0, y=0, w=1.5, h=0.5, t=5, s=0);
cut(0, 0.5, 1.5, 0.5, 5, 0);
cut(0, 1, 1.5, 0.5, 5, 0);
cut(0,1.5,0.5,1.5,5,0);
cut(0.5,1.5,0.5,1.5,5,0);
cut(1,1.5,0.5,1.5,5,0);
cut(1.5, 0, 1.5, 5/3, 2);
cut(1.5, 5/3, 1.5, 4/3, 4);
}
gridfinityBase(3, 3, 42, 0, 0, 1);
*/
// Compartments can overlap! This allows for weirdly shaped compartments, such as this "2" bin.
// Compartments can overlap! This allows for weirdly shaped compartments, such as this "2" bin.
/*
gridfinityInit(3, 3, height(6), 0, 42) {
cut(0,2,2,1,5,0);
@ -122,19 +128,22 @@ gridfinityInit(3, 3, height(6), 0, 42) {
gridfinityBase(3, 3, 42, 0, 0, 1);
*/
// Areas without a compartment are solid material, where you can put your own cutout shapes. using the cut_move() function, you can select an area, and any child shapes will be moved from the origin to the center of that area, and subtracted from the block. For example, a pattern of three cylinderical holes.
// Areas without a compartment are solid material, where you can put your own cutout shapes. using the cut_move()
// function, you can select an area, and any child shapes will be moved from the origin to the center of that area, and
// subtracted from the block. For example, a pattern of three cylinderical holes.
/*
gridfinityInit(3, 3, height(6), 0, 42) {
cut(x=0, y=0, w=2, h=3);
cut(x=0, y=0, w=3, h=1, t=5);
cut_move(x=2, y=1, w=1, h=2)
pattern_linear(x=1, y=3, sx=42/2)
cut_move(x=2, y=1, w=1, h=2)
pattern_linear(x=1, y=3, sx=42/2)
cylinder(r=5, h=1000, center=true);
}
gridfinityBase(3, 3, 42, 0, 0, 1);
*/
// You can use loops as well as the bin dimensions to make different parametric functions, such as this one, which divides the box into columns, with a small 1x1 top compartment and a long vertical compartment below
// You can use loops as well as the bin dimensions to make different parametric functions, such as this one, which
// divides the box into columns, with a small 1x1 top compartment and a long vertical compartment below
/*
gx = 3;
gy = 3;
@ -152,7 +161,7 @@ gridfinityBase(gx, gy, 42, 0, 0, 1);
gx = 4.5;
gy = 4;
gridfinityInit(gx, gy, height(6), 0, 42) {
for (i = [0:gx-1])
for (i = [0:gx-1])
for (j = [0:i])
cut(j*gx/(i+1),gy-i-1,gx/(i+1),1,0);
}

96
tests/README.md Normal file
View file

@ -0,0 +1,96 @@
# Openscad test framework
The openscad framework will isolate a openscad module by generating a new scad file and copy the to be tested module to that file. The file is rendered with openscad to a stl which is compared with an expected stl.
## How to run tests manualy
### Unit tests
Unittests are designed to be fast(er). These test let you make small changes and check over and over again. Usualy only these test will be used during development and the integration test will be used afterwards as check.
```bash
python -m unittest discover tests/ -p "test_unit*.py"
```
### Integration tests
These tests test the outcome which users of this repo can expect. They usualy take long(er) to run.
```bash
python -m unittest discover tests/ -p "test_int*.py"
```
## Get a expected stl
A passing testcase will clean generated files afterwards. A failing testcase will leave the generated files in a directory. The filenames are generated with the name of the test function. Keep in mind that renaming a test makes it fail automaticaly as the expected file for that test can not be found.
1. Create test
2. Run Test (it fails)
3. Inspect output file in directory starting with `oscad_generated_test_files` followed by testname
4. copy stl to `tests/expected`
5. Run Test (it should pass)
## How to use the test framework
Lets test the following scad module `module_to_be_tested` witch has a dependecy `module_dependency`.
```openscad
module module_to_be_tested(argument_a, argument_b, argumet_c=42) {
module_dependency(argument_a, argument_b);
}
module module_dependency(argument_a, argument_b) {
some_buildin_open_scad_function();
}
```
1. Import some classes from the framework:
```python
from openscadtestframework import ScadTestCase, Module, ModuleTest
```
2. Create a test class with a test case
```python
class openscad_module_test(ScadTestCase):
def test_case(self):
```
3. Create a module object of the to be tested object from a file:
```python
module = Module.from_file("module_to_be_tested", "scadfilewithmodule.scad")
```
4. Create a module test.
```python
module_test = ModuleTest(module)
```
5. If needed, create a dependency module.
- from file
```python
dep_module = Module.from_file("module_dependency", "scadfilewithmodule.scad")
```
- mock module
``` python
dep_module = Module("module_dependency",
["module_behavior_line1();", "module_behaviour_line2();"],
["argument_a","argument_b"])
```
6. Add dependendy to the module test:
```python
module_test.add_dependency(dep_module)
```
7. If needed, add file with constants to the module test:
```python
module_test.add_constants_file("constants.scad")
```
8. Add arguments with which the tested module should be called:
```python
module_test.add_arguments(argument_a=1, argument_b=2, argument_c=3)
```
9. Run the module test. `keep_files` will not remove any generated test files which can be used for debuging:
```python
self.scad_module_test(module_test, "expected_stl.stl",keep_files=True)
```
10. The final test file looks like this:
``` python
from openscadtestframework import ScadTestCase, Module, ModuleTest
class openscad_module_test(ScadTestCase):
def test_case(self):
module = Module.from_file("module_to_be_tested", "scadfilewithmodule.scad")
module_test = ModuleTest(module)
dep_module = Module("module_dependency",
["module_behavior_line1();", "module_behaviour_line2();"],
["argument_a","argument_b"])
module_test.add_dependency(dep_module)
module_test.add_constants_file("constants.scad")
module_test.add_arguments(argument_a=1, argument_b=2, argument_c=3)
self.scad_module_test(module_test, "expected_stl.stl")
```

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,282 @@
solid OpenSCAD_Model
facet normal 0.959492 0.281735 0
outer loop
vertex 3.25 0 2.4
vertex 2.73407 1.75708 -2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.959492 0.281735 0
outer loop
vertex 2.73407 1.75708 -2.4
vertex 3.25 0 2.4
vertex 3.25 0 -2.4
endloop
endfacet
facet normal 0.654862 0.755749 -0
outer loop
vertex 2.73407 1.75708 -2.4
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.654862 0.755749 0
outer loop
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 -2.4
vertex 1.3501 2.9563 -2.4
endloop
endfacet
facet normal 0.142317 0.989821 -0
outer loop
vertex 1.3501 2.9563 -2.4
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0.142317 0.989821 0
outer loop
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 -2.4
vertex -0.462523 3.21692 -2.4
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -0.462523 3.21692 -2.4
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 -2.4
vertex -2.1283 2.45619 -2.4
endloop
endfacet
facet normal -0.841255 0.540638 0
outer loop
vertex -3.11835 0.915631 -2.4
vertex -2.1283 2.45619 2.4
vertex -2.1283 2.45619 -2.4
endloop
endfacet
facet normal -0.841255 0.540638 0
outer loop
vertex -2.1283 2.45619 2.4
vertex -3.11835 0.915631 -2.4
vertex -3.11835 0.915631 2.4
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -3.11835 -0.915631 -2.4
vertex -3.11835 0.915631 2.4
vertex -3.11835 0.915631 -2.4
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -3.11835 0.915631 2.4
vertex -3.11835 -0.915631 -2.4
vertex -3.11835 -0.915631 2.4
endloop
endfacet
facet normal -0.841255 -0.540638 0
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -3.11835 -0.915631 2.4
vertex -3.11835 -0.915631 -2.4
endloop
endfacet
facet normal -0.841255 -0.540638 0
outer loop
vertex -3.11835 -0.915631 2.4
vertex -2.1283 -2.45619 -2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -0.415413 -0.909633 0
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -0.415413 -0.909633 -0
outer loop
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 -3.21692 -2.4
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 -2.9563 -2.4
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal 0.959492 -0.281735 0
outer loop
vertex 2.73407 -1.75708 2.4
vertex 3.25 0 -2.4
vertex 3.25 0 2.4
endloop
endfacet
facet normal 0.959492 -0.281735 0
outer loop
vertex 3.25 0 -2.4
vertex 2.73407 -1.75708 2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 2.73407 -1.75708 -2.4
vertex 2.73407 1.75708 -2.4
vertex 3.25 0 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 1.75708 -2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 1.3501 -2.9563 -2.4
vertex 1.3501 2.9563 -2.4
vertex 2.73407 1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 2.9563 -2.4
vertex 1.3501 -2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.4
vertex -0.462523 3.21692 -2.4
vertex 1.3501 2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 3.21692 -2.4
vertex -0.462523 -3.21692 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -2.1283 2.45619 -2.4
vertex -0.462523 3.21692 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -3.11835 -0.915631 -2.4
vertex -2.1283 2.45619 -2.4
vertex -2.1283 -2.45619 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 2.45619 -2.4
vertex -3.11835 -0.915631 -2.4
vertex -3.11835 0.915631 -2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 2.73407 1.75708 2.4
vertex 2.73407 -1.75708 2.4
vertex 3.25 0 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.3501 2.9563 2.4
vertex 2.73407 -1.75708 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.3501 2.9563 2.4
vertex 1.3501 -2.9563 2.4
vertex 2.73407 -1.75708 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -0.462523 3.21692 2.4
vertex 1.3501 -2.9563 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -0.462523 3.21692 2.4
vertex -0.462523 -3.21692 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -2.1283 2.45619 2.4
vertex -0.462523 -3.21692 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -2.1283 2.45619 2.4
vertex -2.1283 -2.45619 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -3.11835 0.915631 2.4
vertex -2.1283 -2.45619 2.4
vertex -2.1283 2.45619 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -2.1283 -2.45619 2.4
vertex -3.11835 0.915631 2.4
vertex -3.11835 -0.915631 2.4
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,282 @@
solid OpenSCAD_Model
facet normal 0.959492 0.281735 0
outer loop
vertex 3.25 0 2.4
vertex 2.73407 1.75708 -2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.959492 0.281735 0
outer loop
vertex 2.73407 1.75708 -2.4
vertex 3.25 0 2.4
vertex 3.25 0 -2.4
endloop
endfacet
facet normal 0.654862 0.755749 -0
outer loop
vertex 2.73407 1.75708 -2.4
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.654862 0.755749 0
outer loop
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 -2.4
vertex 1.3501 2.9563 -2.4
endloop
endfacet
facet normal 0.142317 0.989821 -0
outer loop
vertex 1.3501 2.9563 -2.4
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0.142317 0.989821 0
outer loop
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 -2.4
vertex -0.462523 3.21692 -2.4
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -0.462523 3.21692 -2.4
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 -2.4
vertex -2.1283 2.45619 -2.4
endloop
endfacet
facet normal -0.841255 0.540638 0
outer loop
vertex -3.11835 0.915631 -2.4
vertex -2.1283 2.45619 2.4
vertex -2.1283 2.45619 -2.4
endloop
endfacet
facet normal -0.841255 0.540638 0
outer loop
vertex -2.1283 2.45619 2.4
vertex -3.11835 0.915631 -2.4
vertex -3.11835 0.915631 2.4
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -3.11835 -0.915631 -2.4
vertex -3.11835 0.915631 2.4
vertex -3.11835 0.915631 -2.4
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -3.11835 0.915631 2.4
vertex -3.11835 -0.915631 -2.4
vertex -3.11835 -0.915631 2.4
endloop
endfacet
facet normal -0.841255 -0.540638 0
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -3.11835 -0.915631 2.4
vertex -3.11835 -0.915631 -2.4
endloop
endfacet
facet normal -0.841255 -0.540638 0
outer loop
vertex -3.11835 -0.915631 2.4
vertex -2.1283 -2.45619 -2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -0.415413 -0.909633 0
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -0.415413 -0.909633 -0
outer loop
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 -3.21692 -2.4
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 -2.9563 -2.4
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal 0.959492 -0.281735 0
outer loop
vertex 2.73407 -1.75708 2.4
vertex 3.25 0 -2.4
vertex 3.25 0 2.4
endloop
endfacet
facet normal 0.959492 -0.281735 0
outer loop
vertex 3.25 0 -2.4
vertex 2.73407 -1.75708 2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 2.73407 -1.75708 -2.4
vertex 2.73407 1.75708 -2.4
vertex 3.25 0 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 1.75708 -2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 1.3501 -2.9563 -2.4
vertex 1.3501 2.9563 -2.4
vertex 2.73407 1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 2.9563 -2.4
vertex 1.3501 -2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.4
vertex -0.462523 3.21692 -2.4
vertex 1.3501 2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 3.21692 -2.4
vertex -0.462523 -3.21692 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -2.1283 2.45619 -2.4
vertex -0.462523 3.21692 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -3.11835 -0.915631 -2.4
vertex -2.1283 2.45619 -2.4
vertex -2.1283 -2.45619 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 2.45619 -2.4
vertex -3.11835 -0.915631 -2.4
vertex -3.11835 0.915631 -2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 2.73407 1.75708 2.4
vertex 2.73407 -1.75708 2.4
vertex 3.25 0 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.3501 2.9563 2.4
vertex 2.73407 -1.75708 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.3501 2.9563 2.4
vertex 1.3501 -2.9563 2.4
vertex 2.73407 -1.75708 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -0.462523 3.21692 2.4
vertex 1.3501 -2.9563 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -0.462523 3.21692 2.4
vertex -0.462523 -3.21692 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -2.1283 2.45619 2.4
vertex -0.462523 -3.21692 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -2.1283 2.45619 2.4
vertex -2.1283 -2.45619 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -3.11835 0.915631 2.4
vertex -2.1283 -2.45619 2.4
vertex -2.1283 2.45619 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -2.1283 -2.45619 2.4
vertex -3.11835 0.915631 2.4
vertex -3.11835 -0.915631 2.4
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,562 @@
solid OpenSCAD_Model
facet normal 0.654862 0.755749 -0
outer loop
vertex 2.73407 1.75708 -2.4
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.654862 0.755749 0
outer loop
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 -2.4
vertex 1.3501 2.9563 -2.4
endloop
endfacet
facet normal 0.959492 0.281735 0
outer loop
vertex 3.25 0 2.4
vertex 2.73407 1.75708 -2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.959492 0.281735 0
outer loop
vertex 2.73407 1.75708 -2.4
vertex 3.25 0 2.4
vertex 3.25 0 -2.4
endloop
endfacet
facet normal 0.142317 0.989821 -0
outer loop
vertex 1.3501 2.9563 -2.4
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0.142317 0.989821 0
outer loop
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 -2.4
vertex -0.462523 3.21692 -2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.5 0 2.4
vertex 3.25 0 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 3.25 0 2.4
vertex 1.5 0 2.4
vertex 2.73407 -1.75708 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 1.42658 2.4
vertex 2.73407 1.75708 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 2.73407 1.75708 2.4
vertex 0.463525 1.42658 2.4
vertex 1.5 0 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -0.462523 3.21692 2.4
vertex 0.463525 1.42658 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -0.462523 3.21692 2.4
vertex -1.21352 0.881678 2.4
vertex 0.463525 1.42658 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -3.11835 0.91563 2.4
vertex -1.21352 0.881678 2.4
vertex -2.1283 2.45619 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -2.1283 2.45619 2.4
vertex -1.21352 0.881678 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 0.463525 -1.42658 2.4
vertex 2.73407 -1.75708 2.4
vertex 1.5 0 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 2.73407 -1.75708 2.4
vertex 0.463525 -1.42658 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 -1.42658 2.4
vertex -0.462523 -3.21692 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -1.21352 -0.881678 2.4
vertex -0.462523 -3.21692 2.4
vertex 0.463525 -1.42658 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -1.21352 -0.881678 2.4
vertex -2.1283 -2.45619 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -1.21352 0.881678 2.4
vertex -3.11835 0.91563 2.4
vertex -1.21352 -0.881678 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -3.11835 -0.91563 2.4
vertex -1.21352 -0.881678 2.4
vertex -3.11835 0.91563 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -1.21352 -0.881678 2.4
vertex -3.11835 -0.91563 2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -3.11835 -0.91563 -2.4
vertex -3.11835 0.91563 2.4
vertex -3.11835 0.91563 -2.4
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -3.11835 0.91563 2.4
vertex -3.11835 -0.91563 -2.4
vertex -3.11835 -0.91563 2.4
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 -2.4
vertex 1.3501 -2.9563 -2.4
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -0.462523 3.21692 -2.4
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 -2.4
vertex -2.1283 2.45619 -2.4
endloop
endfacet
facet normal -0.415413 -0.909633 0
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -0.415413 -0.909633 -0
outer loop
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 -2.4
vertex -0.462523 -3.21692 -2.4
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 -2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal -0.841255 -0.540638 0
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -3.11835 -0.91563 2.4
vertex -3.11835 -0.91563 -2.4
endloop
endfacet
facet normal -0.841255 -0.540638 0
outer loop
vertex -3.11835 -0.91563 2.4
vertex -2.1283 -2.45619 -2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal 0.959492 -0.281735 0
outer loop
vertex 2.73407 -1.75708 2.4
vertex 3.25 0 -2.4
vertex 3.25 0 2.4
endloop
endfacet
facet normal 0.959492 -0.281735 0
outer loop
vertex 3.25 0 -2.4
vertex 2.73407 -1.75708 2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal -0.841255 0.540638 0
outer loop
vertex -3.11835 0.91563 -2.4
vertex -2.1283 2.45619 2.4
vertex -2.1283 2.45619 -2.4
endloop
endfacet
facet normal -0.841255 0.540638 0
outer loop
vertex -2.1283 2.45619 2.4
vertex -3.11835 0.91563 -2.4
vertex -3.11835 0.91563 2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 1.5 0 -2.4
vertex 3.25 0 -2.4
vertex 2.73407 -1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 3.25 0 -2.4
vertex 1.5 0 -2.4
vertex 2.73407 1.75708 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 -1.42658 -2.4
vertex 2.73407 -1.75708 -2.4
vertex 1.3501 -2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 2.73407 -1.75708 -2.4
vertex 0.463525 -1.42658 -2.4
vertex 1.5 0 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.4
vertex 0.463525 -1.42658 -2.4
vertex 1.3501 -2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.4
vertex -1.21352 -0.881678 -2.4
vertex 0.463525 -1.42658 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -3.11835 -0.91563 -2.4
vertex -1.21352 -0.881678 -2.4
vertex -2.1283 -2.45619 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 -2.45619 -2.4
vertex -1.21352 -0.881678 -2.4
vertex -0.462523 -3.21692 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 1.42658 -2.4
vertex 2.73407 1.75708 -2.4
vertex 1.5 0 -2.4
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 2.73407 1.75708 -2.4
vertex 0.463525 1.42658 -2.4
vertex 1.3501 2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 1.42658 -2.4
vertex -0.462523 3.21692 -2.4
vertex 1.3501 2.9563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 0.881678 -2.4
vertex -0.462523 3.21692 -2.4
vertex 0.463525 1.42658 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 0.881678 -2.4
vertex -2.1283 2.45619 -2.4
vertex -0.462523 3.21692 -2.4
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -1.21352 -0.881678 -2.4
vertex -3.11835 -0.91563 -2.4
vertex -1.21352 0.881678 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -3.11835 0.91563 -2.4
vertex -1.21352 0.881678 -2.4
vertex -3.11835 -0.91563 -2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 0.881678 -2.4
vertex -3.11835 0.91563 -2.4
vertex -2.1283 2.45619 -2.4
endloop
endfacet
facet normal -0.309015 -0.951057 0
outer loop
vertex -1.21352 -0.881678 2.4
vertex 0.463525 -1.42658 5
vertex -1.21352 -0.881678 5
endloop
endfacet
facet normal -0.309015 -0.951057 -0
outer loop
vertex 0.463525 -1.42658 5
vertex -1.21352 -0.881678 2.4
vertex 0.463525 -1.42658 2.4
endloop
endfacet
facet normal -0.309015 -0.951057 0
outer loop
vertex -1.21352 -0.881678 -5
vertex 0.463525 -1.42658 -2.4
vertex -1.21352 -0.881678 -2.4
endloop
endfacet
facet normal -0.309015 -0.951057 -0
outer loop
vertex 0.463525 -1.42658 -2.4
vertex -1.21352 -0.881678 -5
vertex 0.463525 -1.42658 -5
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex 0.463525 1.42658 -5
vertex -1.21352 0.881678 -2.4
vertex 0.463525 1.42658 -2.4
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex -1.21352 0.881678 -2.4
vertex 0.463525 1.42658 -5
vertex -1.21352 0.881678 -5
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex 0.463525 1.42658 2.4
vertex -1.21352 0.881678 5
vertex 0.463525 1.42658 5
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex -1.21352 0.881678 5
vertex 0.463525 1.42658 2.4
vertex -1.21352 0.881678 2.4
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 1.5 0 -2.4
vertex 0.463525 1.42658 -5
vertex 0.463525 1.42658 -2.4
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 0.463525 1.42658 -5
vertex 1.5 0 -2.4
vertex 1.5 0 -5
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 1.5 0 5
vertex 0.463525 1.42658 2.4
vertex 0.463525 1.42658 5
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 0.463525 1.42658 2.4
vertex 1.5 0 5
vertex 1.5 0 2.4
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -1.21352 -0.881678 2.4
vertex -1.21352 0.881678 5
vertex -1.21352 0.881678 2.4
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -1.21352 0.881678 5
vertex -1.21352 -0.881678 2.4
vertex -1.21352 -0.881678 5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -1.21352 -0.881678 -5
vertex -1.21352 0.881678 -2.4
vertex -1.21352 0.881678 -5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -1.21352 0.881678 -2.4
vertex -1.21352 -0.881678 -5
vertex -1.21352 -0.881678 -2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 1.42658 5
vertex 0.463525 -1.42658 5
vertex 1.5 0 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -1.21352 0.881678 5
vertex 0.463525 -1.42658 5
vertex 0.463525 1.42658 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 -1.42658 5
vertex -1.21352 0.881678 5
vertex -1.21352 -0.881678 5
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 0.463525 -1.42658 -2.4
vertex 1.5 0 -5
vertex 1.5 0 -2.4
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 1.5 0 -5
vertex 0.463525 -1.42658 -2.4
vertex 0.463525 -1.42658 -5
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 0.463525 -1.42658 5
vertex 1.5 0 2.4
vertex 1.5 0 5
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 1.5 0 2.4
vertex 0.463525 -1.42658 5
vertex 0.463525 -1.42658 2.4
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 -1.42658 -5
vertex 0.463525 1.42658 -5
vertex 1.5 0 -5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 -0.881678 -5
vertex 0.463525 1.42658 -5
vertex 0.463525 -1.42658 -5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 1.42658 -5
vertex -1.21352 -0.881678 -5
vertex -1.21352 0.881678 -5
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,674 @@
solid OpenSCAD_Model
facet normal 0 0 1
outer loop
vertex 1.3501 2.9563 2.4
vertex 2.7802 1.6 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -2.67853 1.6 2.4
vertex 1.3501 2.9563 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -2.67853 1.6 2.4
vertex -0.462523 3.21692 2.4
vertex -2.1283 2.45619 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.3501 2.9563 2.4
vertex -2.67853 1.6 2.4
vertex 2.7802 1.6 2.4
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 2.7802 1.6 2.4
vertex -2.67853 1.6 2.6
vertex 2.7802 1.6 2.6
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -2.67853 1.6 2.6
vertex 2.7802 1.6 2.4
vertex -2.67853 1.6 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 2.7802 -1.6 2.4
vertex 1.3501 -2.9563 2.4
vertex 2.73407 -1.75708 2.4
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -2.67853 -1.6 2.4
vertex 1.3501 -2.9563 2.4
vertex 2.7802 -1.6 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.3501 -2.9563 2.4
vertex -2.67853 -1.6 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -0.462523 -3.21692 2.4
vertex -2.67853 -1.6 2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -2.67853 -1.6 2.4
vertex 2.7802 -1.6 2.6
vertex -2.67853 -1.6 2.6
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 2.7802 -1.6 2.6
vertex -2.67853 -1.6 2.4
vertex 2.7802 -1.6 2.4
endloop
endfacet
facet normal 0.654862 0.755749 -0
outer loop
vertex 2.73407 1.75708 -2.6
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.654862 0.755749 0
outer loop
vertex 1.3501 2.9563 2.4
vertex 2.73407 1.75708 -2.6
vertex 1.3501 2.9563 -2.6
endloop
endfacet
facet normal 0.959493 0.281731 0
outer loop
vertex 2.7802 1.6 2.6
vertex 3.25 0 2.6
vertex 2.7802 1.6 2.4
endloop
endfacet
facet normal 0.959481 0.281773 0
outer loop
vertex 2.7802 1.6 2.4
vertex 2.73407 1.75708 -2.6
vertex 2.73407 1.75708 2.4
endloop
endfacet
facet normal 0.959493 0.281731 -0
outer loop
vertex 3.25 0 -2.6
vertex 2.7802 1.6 2.4
vertex 3.25 0 2.6
endloop
endfacet
facet normal 0.959492 0.281735 -1.29048e-06
outer loop
vertex 2.7802 1.6 2.4
vertex 3.25 0 -2.6
vertex 2.73407 1.75708 -2.6
endloop
endfacet
facet normal 0.142317 0.989821 -0
outer loop
vertex 1.3501 2.9563 -2.6
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 2.4
endloop
endfacet
facet normal 0.142317 0.989821 0
outer loop
vertex -0.462523 3.21692 2.4
vertex 1.3501 2.9563 -2.6
vertex -0.462523 3.21692 -2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.5 0 2.6
vertex 3.25 0 2.6
vertex 2.7802 1.6 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 3.25 0 2.6
vertex 1.5 0 2.6
vertex 2.7802 -1.6 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 2.7802 1.6 2.6
vertex 0.463525 1.42658 2.6
vertex 1.5 0 2.6
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -3.11835 0.91563 2.6
vertex -1.21352 0.881678 2.6
vertex -2.67853 1.6 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 1.42658 2.6
vertex -2.67853 1.6 2.6
vertex -1.21352 0.881678 2.6
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -2.67853 1.6 2.6
vertex 0.463525 1.42658 2.6
vertex 2.7802 1.6 2.6
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 0.463525 -1.42658 2.6
vertex 2.7802 -1.6 2.6
vertex 1.5 0 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 -1.42658 2.6
vertex -2.67853 -1.6 2.6
vertex 2.7802 -1.6 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -1.21352 -0.881678 2.6
vertex -2.67853 -1.6 2.6
vertex 0.463525 -1.42658 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -1.21352 0.881678 2.6
vertex -3.11835 0.91563 2.6
vertex -1.21352 -0.881678 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -3.11835 -0.91563 2.6
vertex -1.21352 -0.881678 2.6
vertex -3.11835 0.91563 2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -1.21352 -0.881678 2.6
vertex -3.11835 -0.91563 2.6
vertex -2.67853 -1.6 2.6
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -3.11835 -0.91563 -2.6
vertex -3.11835 0.91563 2.6
vertex -3.11835 0.91563 -2.6
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -3.11835 0.91563 2.6
vertex -3.11835 -0.91563 -2.6
vertex -3.11835 -0.91563 2.6
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex -0.462523 -3.21692 -2.6
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 2.4
endloop
endfacet
facet normal 0.142317 -0.989821 0
outer loop
vertex 1.3501 -2.9563 2.4
vertex -0.462523 -3.21692 -2.6
vertex 1.3501 -2.9563 -2.6
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -0.462523 3.21692 -2.6
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 2.4
endloop
endfacet
facet normal -0.415413 0.909633 0
outer loop
vertex -2.1283 2.45619 2.4
vertex -0.462523 3.21692 -2.6
vertex -2.1283 2.45619 -2.6
endloop
endfacet
facet normal -0.415413 -0.909633 0
outer loop
vertex -2.1283 -2.45619 -2.6
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -0.415413 -0.909633 -0
outer loop
vertex -0.462523 -3.21692 2.4
vertex -2.1283 -2.45619 -2.6
vertex -0.462523 -3.21692 -2.6
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 1.3501 -2.9563 -2.6
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 2.4
endloop
endfacet
facet normal 0.654862 -0.755749 0
outer loop
vertex 2.73407 -1.75708 2.4
vertex 1.3501 -2.9563 -2.6
vertex 2.73407 -1.75708 -2.6
endloop
endfacet
facet normal -0.841252 -0.540643 0
outer loop
vertex -3.11835 -0.91563 -2.6
vertex -2.67853 -1.6 2.4
vertex -3.11835 -0.91563 2.6
endloop
endfacet
facet normal -0.841255 -0.540638 9.37135e-07
outer loop
vertex -2.1283 -2.45619 -2.6
vertex -2.67853 -1.6 2.4
vertex -3.11835 -0.91563 -2.6
endloop
endfacet
facet normal -0.841258 -0.540634 0
outer loop
vertex -2.67853 -1.6 2.4
vertex -2.1283 -2.45619 -2.6
vertex -2.1283 -2.45619 2.4
endloop
endfacet
facet normal -0.841252 -0.540643 0
outer loop
vertex -3.11835 -0.91563 2.6
vertex -2.67853 -1.6 2.4
vertex -2.67853 -1.6 2.6
endloop
endfacet
facet normal 0.959493 -0.281731 0
outer loop
vertex 2.7802 -1.6 2.4
vertex 3.25 0 2.6
vertex 2.7802 -1.6 2.6
endloop
endfacet
facet normal 0.959493 -0.281731 0
outer loop
vertex 3.25 0 2.6
vertex 2.7802 -1.6 2.4
vertex 3.25 0 -2.6
endloop
endfacet
facet normal 0.959481 -0.281773 0
outer loop
vertex 2.73407 -1.75708 -2.6
vertex 2.7802 -1.6 2.4
vertex 2.73407 -1.75708 2.4
endloop
endfacet
facet normal 0.959492 -0.281735 -1.29048e-06
outer loop
vertex 2.7802 -1.6 2.4
vertex 2.73407 -1.75708 -2.6
vertex 3.25 0 -2.6
endloop
endfacet
facet normal -0.841258 0.540634 0
outer loop
vertex -2.1283 2.45619 -2.6
vertex -2.67853 1.6 2.4
vertex -2.1283 2.45619 2.4
endloop
endfacet
facet normal -0.841255 0.540638 9.37135e-07
outer loop
vertex -3.11835 0.91563 -2.6
vertex -2.67853 1.6 2.4
vertex -2.1283 2.45619 -2.6
endloop
endfacet
facet normal -0.841252 0.540643 0
outer loop
vertex -3.11835 0.91563 2.6
vertex -2.67853 1.6 2.4
vertex -3.11835 0.91563 -2.6
endloop
endfacet
facet normal -0.841252 0.540643 0
outer loop
vertex -2.67853 1.6 2.4
vertex -3.11835 0.91563 2.6
vertex -2.67853 1.6 2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 1.5 0 -2.6
vertex 3.25 0 -2.6
vertex 2.73407 -1.75708 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 3.25 0 -2.6
vertex 1.5 0 -2.6
vertex 2.73407 1.75708 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 -1.42658 -2.6
vertex 2.73407 -1.75708 -2.6
vertex 1.3501 -2.9563 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 2.73407 -1.75708 -2.6
vertex 0.463525 -1.42658 -2.6
vertex 1.5 0 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.6
vertex 0.463525 -1.42658 -2.6
vertex 1.3501 -2.9563 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.462523 -3.21692 -2.6
vertex -1.21352 -0.881678 -2.6
vertex 0.463525 -1.42658 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -3.11835 -0.91563 -2.6
vertex -1.21352 -0.881678 -2.6
vertex -2.1283 -2.45619 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -2.1283 -2.45619 -2.6
vertex -1.21352 -0.881678 -2.6
vertex -0.462523 -3.21692 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 1.42658 -2.6
vertex 2.73407 1.75708 -2.6
vertex 1.5 0 -2.6
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 2.73407 1.75708 -2.6
vertex 0.463525 1.42658 -2.6
vertex 1.3501 2.9563 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 1.42658 -2.6
vertex -0.462523 3.21692 -2.6
vertex 1.3501 2.9563 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 0.881678 -2.6
vertex -0.462523 3.21692 -2.6
vertex 0.463525 1.42658 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 0.881678 -2.6
vertex -2.1283 2.45619 -2.6
vertex -0.462523 3.21692 -2.6
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -1.21352 -0.881678 -2.6
vertex -3.11835 -0.91563 -2.6
vertex -1.21352 0.881678 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -3.11835 0.91563 -2.6
vertex -1.21352 0.881678 -2.6
vertex -3.11835 -0.91563 -2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 0.881678 -2.6
vertex -3.11835 0.91563 -2.6
vertex -2.1283 2.45619 -2.6
endloop
endfacet
facet normal -0.309015 -0.951057 0
outer loop
vertex -1.21352 -0.881678 2.6
vertex 0.463525 -1.42658 5
vertex -1.21352 -0.881678 5
endloop
endfacet
facet normal -0.309015 -0.951057 -0
outer loop
vertex 0.463525 -1.42658 5
vertex -1.21352 -0.881678 2.6
vertex 0.463525 -1.42658 2.6
endloop
endfacet
facet normal -0.309015 -0.951057 0
outer loop
vertex -1.21352 -0.881678 -5
vertex 0.463525 -1.42658 -2.6
vertex -1.21352 -0.881678 -2.6
endloop
endfacet
facet normal -0.309015 -0.951057 -0
outer loop
vertex 0.463525 -1.42658 -2.6
vertex -1.21352 -0.881678 -5
vertex 0.463525 -1.42658 -5
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex 0.463525 1.42658 -5
vertex -1.21352 0.881678 -2.6
vertex 0.463525 1.42658 -2.6
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex -1.21352 0.881678 -2.6
vertex 0.463525 1.42658 -5
vertex -1.21352 0.881678 -5
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex 0.463525 1.42658 2.6
vertex -1.21352 0.881678 5
vertex 0.463525 1.42658 5
endloop
endfacet
facet normal -0.309015 0.951057 0
outer loop
vertex -1.21352 0.881678 5
vertex 0.463525 1.42658 2.6
vertex -1.21352 0.881678 2.6
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 1.5 0 -2.6
vertex 0.463525 1.42658 -5
vertex 0.463525 1.42658 -2.6
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 0.463525 1.42658 -5
vertex 1.5 0 -2.6
vertex 1.5 0 -5
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 1.5 0 5
vertex 0.463525 1.42658 2.6
vertex 0.463525 1.42658 5
endloop
endfacet
facet normal 0.809016 0.587787 0
outer loop
vertex 0.463525 1.42658 2.6
vertex 1.5 0 5
vertex 1.5 0 2.6
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -1.21352 -0.881678 2.6
vertex -1.21352 0.881678 5
vertex -1.21352 0.881678 2.6
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -1.21352 0.881678 5
vertex -1.21352 -0.881678 2.6
vertex -1.21352 -0.881678 5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -1.21352 -0.881678 -5
vertex -1.21352 0.881678 -2.6
vertex -1.21352 0.881678 -5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -1.21352 0.881678 -2.6
vertex -1.21352 -0.881678 -5
vertex -1.21352 -0.881678 -2.6
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 1.42658 5
vertex 0.463525 -1.42658 5
vertex 1.5 0 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -1.21352 0.881678 5
vertex 0.463525 -1.42658 5
vertex 0.463525 1.42658 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.463525 -1.42658 5
vertex -1.21352 0.881678 5
vertex -1.21352 -0.881678 5
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 0.463525 -1.42658 -2.6
vertex 1.5 0 -5
vertex 1.5 0 -2.6
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 1.5 0 -5
vertex 0.463525 -1.42658 -2.6
vertex 0.463525 -1.42658 -5
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 0.463525 -1.42658 5
vertex 1.5 0 2.6
vertex 1.5 0 5
endloop
endfacet
facet normal 0.809016 -0.587787 0
outer loop
vertex 1.5 0 2.6
vertex 0.463525 -1.42658 5
vertex 0.463525 -1.42658 2.6
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 -1.42658 -5
vertex 0.463525 1.42658 -5
vertex 1.5 0 -5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.21352 -0.881678 -5
vertex 0.463525 1.42658 -5
vertex 0.463525 -1.42658 -5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0.463525 1.42658 -5
vertex -1.21352 -0.881678 -5
vertex -1.21352 0.881678 -5
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,86 @@
solid OpenSCAD_Model
facet normal 1 -0 0
outer loop
vertex 1 -2 3
vertex 1 2 0
vertex 1 2 3
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 1 2 0
vertex 1 -2 3
vertex 1 -2 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 0 2 3
vertex 1 -2 3
vertex 1 2 3
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1 -2 3
vertex 0 2 3
vertex 0 -2 3
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0 -2 0
vertex 1 2 0
vertex 1 -2 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 1 2 0
vertex 0 -2 0
vertex 0 2 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 -2 0
vertex 0 2 3
vertex 0 2 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 0 2 3
vertex 0 -2 0
vertex 0 -2 3
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 1 2 0
vertex 0 2 3
vertex 1 2 3
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 0 2 3
vertex 1 2 0
vertex 0 2 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 -2 0
vertex 1 -2 3
vertex 0 -2 3
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 1 -2 3
vertex 0 -2 0
vertex 1 -2 0
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,170 @@
solid OpenSCAD_Model
facet normal 1 -0 0
outer loop
vertex 1 0 3
vertex 1 2 0
vertex 1 2 3
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 1 2 0
vertex 1 0 3
vertex 1 0 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 0 2 3
vertex 1 0 3
vertex 1 2 3
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1 0 3
vertex 0 2 3
vertex 0 0 3
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 1 2 0
vertex 1 0 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 1 2 0
vertex 0 0 0
vertex 0 2 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 0 0
vertex 0 2 3
vertex 0 2 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 0 2 3
vertex 0 0 0
vertex 0 0 3
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 1 2 0
vertex 0 2 3
vertex 1 2 3
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 0 2 3
vertex 1 2 0
vertex 0 2 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 0 0
vertex 1 0 3
vertex 0 0 3
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 1 0 3
vertex 0 0 0
vertex 1 0 0
endloop
endfacet
facet normal -0.894409 -0.447206 -0.00621232
outer loop
vertex -2.68323 -1.34161 -0.0186329
vertex -3.47826 0.260869 -0.913043
vertex -3.27329 -0.136645 -1.80745
endloop
endfacet
facet normal -0.204969 0.397517 0.894409
outer loop
vertex -0.795031 1.60248 -0.894409
vertex -3.47826 0.260869 -0.913043
vertex -2.68323 -1.34161 -0.0186329
endloop
endfacet
facet normal 0.204968 -0.397515 -0.894411
outer loop
vertex -2.47826 -1.73913 -0.913043
vertex -3.27329 -0.136645 -1.80745
vertex -0.590061 1.20497 -1.78882
endloop
endfacet
facet normal -0.89441 -0.447204 -0.0062105
outer loop
vertex -2.68323 -1.34161 -0.0186329
vertex -3.27329 -0.136645 -1.80745
vertex -2.47826 -1.73913 -0.913043
endloop
endfacet
facet normal 0.894409 0.447207 0.0062138
outer loop
vertex -0.590061 1.20497 -1.78882
vertex -0.795031 1.60248 -0.894409
vertex 0 0 0
endloop
endfacet
facet normal 0.204969 -0.397516 -0.89441
outer loop
vertex 0.204968 -0.397515 -0.894409
vertex -2.47826 -1.73913 -0.913043
vertex -0.590061 1.20497 -1.78882
endloop
endfacet
facet normal -0.397517 0.801244 -0.447201
outer loop
vertex -0.590061 1.20497 -1.78882
vertex -3.27329 -0.136645 -1.80745
vertex -0.795031 1.60248 -0.894409
endloop
endfacet
facet normal -0.397515 0.801242 -0.447205
outer loop
vertex -3.27329 -0.136645 -1.80745
vertex -3.47826 0.260869 -0.913043
vertex -0.795031 1.60248 -0.894409
endloop
endfacet
facet normal -0.204968 0.397516 0.89441
outer loop
vertex -0.795031 1.60248 -0.894409
vertex -2.68323 -1.34161 -0.0186329
vertex 0 0 0
endloop
endfacet
facet normal 0.89441 0.447204 0.0062111
outer loop
vertex 0.204968 -0.397515 -0.894409
vertex -0.590061 1.20497 -1.78882
vertex 0 0 0
endloop
endfacet
facet normal 0.397514 -0.801243 0.447205
outer loop
vertex 0 0 0
vertex -2.68323 -1.34161 -0.0186329
vertex 0.204968 -0.397515 -0.894409
endloop
endfacet
facet normal 0.397515 -0.801241 0.447208
outer loop
vertex 0.204968 -0.397515 -0.894409
vertex -2.68323 -1.34161 -0.0186329
vertex -2.47826 -1.73913 -0.913043
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,254 @@
solid OpenSCAD_Model
facet normal 0 0 1
outer loop
vertex -0.5 0.866025 3
vertex -1.73205 -1 3
vertex 0 0 3
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex -1.73205 -1 3
vertex -0.5 0.866025 3
vertex -2.23205 -0.133974 3
endloop
endfacet
facet normal 0.5 -0.866025 0
outer loop
vertex -1.73205 -1 0
vertex 0 0 3
vertex -1.73205 -1 3
endloop
endfacet
facet normal 0.5 -0.866025 0
outer loop
vertex 0 0 3
vertex -1.73205 -1 0
vertex 0 0 0
endloop
endfacet
facet normal -0.866026 -0.5 0
outer loop
vertex -1.73205 -1 0
vertex -2.23205 -0.133974 3
vertex -2.23205 -0.133974 0
endloop
endfacet
facet normal -0.866026 -0.5 0
outer loop
vertex -2.23205 -0.133974 3
vertex -1.73205 -1 0
vertex -1.73205 -1 3
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1.73205 -1 0
vertex -0.5 0.866025 0
vertex 0 0 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 0.866025 0
vertex -1.73205 -1 0
vertex -2.23205 -0.133974 0
endloop
endfacet
facet normal 0.866025 0.5 0
outer loop
vertex 0 0 3
vertex -0.5 0.866025 0
vertex -0.5 0.866025 3
endloop
endfacet
facet normal 0.866025 0.5 0
outer loop
vertex -0.5 0.866025 0
vertex 0 0 3
vertex 0 0 0
endloop
endfacet
facet normal -0.5 0.866026 0
outer loop
vertex -0.5 0.866025 0
vertex -2.23205 -0.133974 3
vertex -0.5 0.866025 3
endloop
endfacet
facet normal -0.5 0.866026 0
outer loop
vertex -2.23205 -0.133974 3
vertex -0.5 0.866025 0
vertex -2.23205 -0.133974 0
endloop
endfacet
facet normal -0.499998 -0.866026 0
outer loop
vertex -0.5 -0.866025 0
vertex 1.23205 -1.86602 3
vertex -0.5 -0.866025 3
endloop
endfacet
facet normal -0.499998 -0.866026 -0
outer loop
vertex 1.23205 -1.86602 3
vertex -0.5 -0.866025 0
vertex 1.23205 -1.86602 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0 0 3
vertex 1.23205 -1.86602 3
vertex 1.73205 -1 3
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1.23205 -1.86602 3
vertex 0 0 3
vertex -0.5 -0.866025 3
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 1.23205 -1.86602 0
vertex 0 0 0
vertex 1.73205 -1 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex 0 0 0
vertex 1.23205 -1.86602 0
vertex -0.5 -0.866025 0
endloop
endfacet
facet normal 0.5 0.866025 -0
outer loop
vertex 1.73205 -1 0
vertex 0 0 3
vertex 1.73205 -1 3
endloop
endfacet
facet normal 0.5 0.866025 0
outer loop
vertex 0 0 3
vertex 1.73205 -1 0
vertex 0 0 0
endloop
endfacet
facet normal -0.866025 0.5 0
outer loop
vertex -0.5 -0.866025 0
vertex 0 0 3
vertex 0 0 0
endloop
endfacet
facet normal -0.866025 0.5 0
outer loop
vertex 0 0 3
vertex -0.5 -0.866025 0
vertex -0.5 -0.866025 3
endloop
endfacet
facet normal 0.866024 -0.500002 0
outer loop
vertex 1.23205 -1.86602 3
vertex 1.73205 -1 0
vertex 1.73205 -1 3
endloop
endfacet
facet normal 0.866024 -0.500002 0
outer loop
vertex 1.73205 -1 0
vertex 1.23205 -1.86602 3
vertex 1.23205 -1.86602 0
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 1 0 3
vertex 1 2 0
vertex 1 2 3
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 1 2 0
vertex 1 0 3
vertex 1 0 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 0 2 3
vertex 1 0 3
vertex 1 2 3
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1 0 3
vertex 0 2 3
vertex 0 0 3
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 1 2 0
vertex 1 0 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 1 2 0
vertex 0 0 0
vertex 0 2 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 0 0
vertex 0 2 3
vertex 0 2 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 0 2 3
vertex 0 0 0
vertex 0 0 3
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 1 2 0
vertex 0 2 3
vertex 1 2 3
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 0 2 3
vertex 1 2 0
vertex 0 2 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 0 0
vertex 1 0 3
vertex 0 0 3
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 1 0 3
vertex 0 0 0
vertex 1 0 0
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,170 @@
solid OpenSCAD_Model
facet normal -0 0 1
outer loop
vertex -1 0 3
vertex 0 -2 3
vertex 0 0 3
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0 -2 3
vertex -1 0 3
vertex -1 -2 3
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0 -2 3
vertex 0 0 0
vertex 0 0 3
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0 0 0
vertex 0 -2 3
vertex 0 -2 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -1 -2 0
vertex 0 -2 3
vertex -1 -2 3
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0 -2 3
vertex -1 -2 0
vertex 0 -2 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -1 -2 0
vertex 0 0 0
vertex 0 -2 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0 0 0
vertex -1 -2 0
vertex -1 0 0
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0 0 0
vertex -1 0 3
vertex 0 0 3
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -1 0 3
vertex 0 0 0
vertex -1 0 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -1 -2 0
vertex -1 0 3
vertex -1 0 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -1 0 3
vertex -1 -2 0
vertex -1 -2 3
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 1 0 3
vertex 1 2 0
vertex 1 2 3
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 1 2 0
vertex 1 0 3
vertex 1 0 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 0 2 3
vertex 1 0 3
vertex 1 2 3
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 1 0 3
vertex 0 2 3
vertex 0 0 3
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 1 2 0
vertex 1 0 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 1 2 0
vertex 0 0 0
vertex 0 2 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 0 0
vertex 0 2 3
vertex 0 2 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 0 2 3
vertex 0 0 0
vertex 0 0 3
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 1 2 0
vertex 0 2 3
vertex 1 2 3
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 0 2 3
vertex 1 2 0
vertex 0 2 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 0 0
vertex 1 0 3
vertex 0 0 3
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 1 0 3
vertex 0 0 0
vertex 1 0 0
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,758 @@
solid OpenSCAD_Model
facet normal 1 -0 0
outer loop
vertex -9.5 -11 1.5
vertex -9.5 -9 -1.5
vertex -9.5 -9 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -9.5 -9 -1.5
vertex -9.5 -11 1.5
vertex -9.5 -11 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -10.5 -9 1.5
vertex -9.5 -11 1.5
vertex -9.5 -9 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -9.5 -11 1.5
vertex -10.5 -9 1.5
vertex -10.5 -11 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -10.5 -11 -1.5
vertex -9.5 -9 -1.5
vertex -9.5 -11 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -9.5 -9 -1.5
vertex -10.5 -11 -1.5
vertex -10.5 -9 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10.5 -11 -1.5
vertex -10.5 -9 1.5
vertex -10.5 -9 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -10.5 -9 1.5
vertex -10.5 -11 -1.5
vertex -10.5 -11 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex -9.5 -9 -1.5
vertex -10.5 -9 1.5
vertex -9.5 -9 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -10.5 -9 1.5
vertex -9.5 -9 -1.5
vertex -10.5 -9 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -10.5 -11 -1.5
vertex -9.5 -11 1.5
vertex -10.5 -11 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex -9.5 -11 1.5
vertex -10.5 -11 -1.5
vertex -9.5 -11 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex -9.5 -1 1.5
vertex -9.5 1 -1.5
vertex -9.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -9.5 1 -1.5
vertex -9.5 -1 1.5
vertex -9.5 -1 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -10.5 1 1.5
vertex -9.5 -1 1.5
vertex -9.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -9.5 -1 1.5
vertex -10.5 1 1.5
vertex -10.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -10.5 -1 -1.5
vertex -9.5 1 -1.5
vertex -9.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -9.5 1 -1.5
vertex -10.5 -1 -1.5
vertex -10.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10.5 -1 -1.5
vertex -10.5 1 1.5
vertex -10.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -10.5 1 1.5
vertex -10.5 -1 -1.5
vertex -10.5 -1 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex -9.5 1 -1.5
vertex -10.5 1 1.5
vertex -9.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -10.5 1 1.5
vertex -9.5 1 -1.5
vertex -10.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -10.5 -1 -1.5
vertex -9.5 -1 1.5
vertex -10.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex -9.5 -1 1.5
vertex -10.5 -1 -1.5
vertex -9.5 -1 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex -9.5 9 1.5
vertex -9.5 11 -1.5
vertex -9.5 11 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -9.5 11 -1.5
vertex -9.5 9 1.5
vertex -9.5 9 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -10.5 11 1.5
vertex -9.5 9 1.5
vertex -9.5 11 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -9.5 9 1.5
vertex -10.5 11 1.5
vertex -10.5 9 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -10.5 9 -1.5
vertex -9.5 11 -1.5
vertex -9.5 9 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -9.5 11 -1.5
vertex -10.5 9 -1.5
vertex -10.5 11 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10.5 9 -1.5
vertex -10.5 11 1.5
vertex -10.5 11 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -10.5 11 1.5
vertex -10.5 9 -1.5
vertex -10.5 9 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex -9.5 11 -1.5
vertex -10.5 11 1.5
vertex -9.5 11 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -10.5 11 1.5
vertex -9.5 11 -1.5
vertex -10.5 11 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -10.5 9 -1.5
vertex -9.5 9 1.5
vertex -10.5 9 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex -9.5 9 1.5
vertex -10.5 9 -1.5
vertex -9.5 9 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0.5 -11 1.5
vertex 0.5 -9 -1.5
vertex 0.5 -9 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 -9 -1.5
vertex 0.5 -11 1.5
vertex 0.5 -11 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -0.5 -9 1.5
vertex 0.5 -11 1.5
vertex 0.5 -9 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 -11 1.5
vertex -0.5 -9 1.5
vertex -0.5 -11 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 -11 -1.5
vertex 0.5 -9 -1.5
vertex 0.5 -11 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 -9 -1.5
vertex -0.5 -11 -1.5
vertex -0.5 -9 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 -11 -1.5
vertex -0.5 -9 1.5
vertex -0.5 -9 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 -9 1.5
vertex -0.5 -11 -1.5
vertex -0.5 -11 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 -9 -1.5
vertex -0.5 -9 1.5
vertex 0.5 -9 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 -9 1.5
vertex 0.5 -9 -1.5
vertex -0.5 -9 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 -11 -1.5
vertex 0.5 -11 1.5
vertex -0.5 -11 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 -11 1.5
vertex -0.5 -11 -1.5
vertex 0.5 -11 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0.5 -1 1.5
vertex 0.5 1 -1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 1 -1.5
vertex 0.5 -1 1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -0.5 1 1.5
vertex 0.5 -1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 -1 1.5
vertex -0.5 1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 1 -1.5
vertex -0.5 -1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 -1 -1.5
vertex -0.5 1 1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 1 1.5
vertex -0.5 -1 -1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 1 -1.5
vertex -0.5 1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 1 1.5
vertex 0.5 1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 -1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 -1 1.5
vertex -0.5 -1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0.5 9 1.5
vertex 0.5 11 -1.5
vertex 0.5 11 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 11 -1.5
vertex 0.5 9 1.5
vertex 0.5 9 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -0.5 11 1.5
vertex 0.5 9 1.5
vertex 0.5 11 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 9 1.5
vertex -0.5 11 1.5
vertex -0.5 9 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 9 -1.5
vertex 0.5 11 -1.5
vertex 0.5 9 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 11 -1.5
vertex -0.5 9 -1.5
vertex -0.5 11 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 9 -1.5
vertex -0.5 11 1.5
vertex -0.5 11 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 11 1.5
vertex -0.5 9 -1.5
vertex -0.5 9 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 11 -1.5
vertex -0.5 11 1.5
vertex 0.5 11 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 11 1.5
vertex 0.5 11 -1.5
vertex -0.5 11 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 9 -1.5
vertex 0.5 9 1.5
vertex -0.5 9 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 9 1.5
vertex -0.5 9 -1.5
vertex 0.5 9 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 10.5 -11 1.5
vertex 10.5 -9 -1.5
vertex 10.5 -9 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10.5 -9 -1.5
vertex 10.5 -11 1.5
vertex 10.5 -11 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 9.5 -9 1.5
vertex 10.5 -11 1.5
vertex 10.5 -9 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10.5 -11 1.5
vertex 9.5 -9 1.5
vertex 9.5 -11 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 9.5 -11 -1.5
vertex 10.5 -9 -1.5
vertex 10.5 -11 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 10.5 -9 -1.5
vertex 9.5 -11 -1.5
vertex 9.5 -9 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 9.5 -11 -1.5
vertex 9.5 -9 1.5
vertex 9.5 -9 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 9.5 -9 1.5
vertex 9.5 -11 -1.5
vertex 9.5 -11 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 10.5 -9 -1.5
vertex 9.5 -9 1.5
vertex 10.5 -9 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 9.5 -9 1.5
vertex 10.5 -9 -1.5
vertex 9.5 -9 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 9.5 -11 -1.5
vertex 10.5 -11 1.5
vertex 9.5 -11 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 10.5 -11 1.5
vertex 9.5 -11 -1.5
vertex 10.5 -11 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 10.5 -1 1.5
vertex 10.5 1 -1.5
vertex 10.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10.5 1 -1.5
vertex 10.5 -1 1.5
vertex 10.5 -1 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 9.5 1 1.5
vertex 10.5 -1 1.5
vertex 10.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10.5 -1 1.5
vertex 9.5 1 1.5
vertex 9.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 9.5 -1 -1.5
vertex 10.5 1 -1.5
vertex 10.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 10.5 1 -1.5
vertex 9.5 -1 -1.5
vertex 9.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 9.5 -1 -1.5
vertex 9.5 1 1.5
vertex 9.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 9.5 1 1.5
vertex 9.5 -1 -1.5
vertex 9.5 -1 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 10.5 1 -1.5
vertex 9.5 1 1.5
vertex 10.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 9.5 1 1.5
vertex 10.5 1 -1.5
vertex 9.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 9.5 -1 -1.5
vertex 10.5 -1 1.5
vertex 9.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 10.5 -1 1.5
vertex 9.5 -1 -1.5
vertex 10.5 -1 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 10.5 9 1.5
vertex 10.5 11 -1.5
vertex 10.5 11 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10.5 11 -1.5
vertex 10.5 9 1.5
vertex 10.5 9 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 9.5 11 1.5
vertex 10.5 9 1.5
vertex 10.5 11 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10.5 9 1.5
vertex 9.5 11 1.5
vertex 9.5 9 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 9.5 9 -1.5
vertex 10.5 11 -1.5
vertex 10.5 9 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 10.5 11 -1.5
vertex 9.5 9 -1.5
vertex 9.5 11 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 9.5 9 -1.5
vertex 9.5 11 1.5
vertex 9.5 11 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 9.5 11 1.5
vertex 9.5 9 -1.5
vertex 9.5 9 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 10.5 11 -1.5
vertex 9.5 11 1.5
vertex 10.5 11 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 9.5 11 1.5
vertex 10.5 11 -1.5
vertex 9.5 11 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 9.5 9 -1.5
vertex 10.5 9 1.5
vertex 9.5 9 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 10.5 9 1.5
vertex 9.5 9 -1.5
vertex 10.5 9 -1.5
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,86 @@
solid OpenSCAD_Model
facet normal -0 0 1
outer loop
vertex -0.5 1 1.5
vertex 0.5 -1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 -1 1.5
vertex -0.5 1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 1 -1.5
vertex -0.5 -1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 -1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 -1 1.5
vertex -0.5 -1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0.5 -1 1.5
vertex 0.5 1 -1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 1 -1.5
vertex 0.5 -1 1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 1 -1.5
vertex -0.5 1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 1 1.5
vertex 0.5 1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 -1 -1.5
vertex -0.5 1 1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 1 1.5
vertex -0.5 -1 -1.5
vertex -0.5 -1 1.5
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,254 @@
solid OpenSCAD_Model
facet normal 1 -0 0
outer loop
vertex -9.5 -1 1.5
vertex -9.5 1 -1.5
vertex -9.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -9.5 1 -1.5
vertex -9.5 -1 1.5
vertex -9.5 -1 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -10.5 1 1.5
vertex -9.5 -1 1.5
vertex -9.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -9.5 -1 1.5
vertex -10.5 1 1.5
vertex -10.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -10.5 -1 -1.5
vertex -9.5 1 -1.5
vertex -9.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -9.5 1 -1.5
vertex -10.5 -1 -1.5
vertex -10.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10.5 -1 -1.5
vertex -10.5 1 1.5
vertex -10.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -10.5 1 1.5
vertex -10.5 -1 -1.5
vertex -10.5 -1 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex -9.5 1 -1.5
vertex -10.5 1 1.5
vertex -9.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -10.5 1 1.5
vertex -9.5 1 -1.5
vertex -10.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -10.5 -1 -1.5
vertex -9.5 -1 1.5
vertex -10.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex -9.5 -1 1.5
vertex -10.5 -1 -1.5
vertex -9.5 -1 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0.5 -1 1.5
vertex 0.5 1 -1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 1 -1.5
vertex 0.5 -1 1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -0.5 1 1.5
vertex 0.5 -1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 -1 1.5
vertex -0.5 1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 1 -1.5
vertex -0.5 -1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 -1 -1.5
vertex -0.5 1 1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 1 1.5
vertex -0.5 -1 -1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 1 -1.5
vertex -0.5 1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 1 1.5
vertex 0.5 1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 -1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 -1 1.5
vertex -0.5 -1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 10.5 -1 1.5
vertex 10.5 1 -1.5
vertex 10.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10.5 1 -1.5
vertex 10.5 -1 1.5
vertex 10.5 -1 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex 9.5 1 1.5
vertex 10.5 -1 1.5
vertex 10.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10.5 -1 1.5
vertex 9.5 1 1.5
vertex 9.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 9.5 -1 -1.5
vertex 10.5 1 -1.5
vertex 10.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 10.5 1 -1.5
vertex 9.5 -1 -1.5
vertex 9.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 9.5 -1 -1.5
vertex 9.5 1 1.5
vertex 9.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 9.5 1 1.5
vertex 9.5 -1 -1.5
vertex 9.5 -1 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 10.5 1 -1.5
vertex 9.5 1 1.5
vertex 10.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 9.5 1 1.5
vertex 10.5 1 -1.5
vertex 9.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 9.5 -1 -1.5
vertex 10.5 -1 1.5
vertex 9.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 10.5 -1 1.5
vertex 9.5 -1 -1.5
vertex 10.5 -1 -1.5
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,254 @@
solid OpenSCAD_Model
facet normal 1 -0 0
outer loop
vertex 0.5 -11 1.5
vertex 0.5 -9 -1.5
vertex 0.5 -9 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 -9 -1.5
vertex 0.5 -11 1.5
vertex 0.5 -11 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -0.5 -9 1.5
vertex 0.5 -11 1.5
vertex 0.5 -9 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 -11 1.5
vertex -0.5 -9 1.5
vertex -0.5 -11 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 -11 -1.5
vertex 0.5 -9 -1.5
vertex 0.5 -11 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 -9 -1.5
vertex -0.5 -11 -1.5
vertex -0.5 -9 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 -11 -1.5
vertex -0.5 -9 1.5
vertex -0.5 -9 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 -9 1.5
vertex -0.5 -11 -1.5
vertex -0.5 -11 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 -9 -1.5
vertex -0.5 -9 1.5
vertex 0.5 -9 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 -9 1.5
vertex 0.5 -9 -1.5
vertex -0.5 -9 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 -11 -1.5
vertex 0.5 -11 1.5
vertex -0.5 -11 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 -11 1.5
vertex -0.5 -11 -1.5
vertex 0.5 -11 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0.5 -1 1.5
vertex 0.5 1 -1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 1 -1.5
vertex 0.5 -1 1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -0.5 1 1.5
vertex 0.5 -1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 -1 1.5
vertex -0.5 1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 1 -1.5
vertex -0.5 -1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 -1 -1.5
vertex -0.5 1 1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 1 1.5
vertex -0.5 -1 -1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 1 -1.5
vertex -0.5 1 1.5
vertex 0.5 1 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 1 1.5
vertex 0.5 1 -1.5
vertex -0.5 1 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 -1 -1.5
vertex 0.5 -1 1.5
vertex -0.5 -1 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 -1 1.5
vertex -0.5 -1 -1.5
vertex 0.5 -1 -1.5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 0.5 9 1.5
vertex 0.5 11 -1.5
vertex 0.5 11 1.5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 0.5 11 -1.5
vertex 0.5 9 1.5
vertex 0.5 9 -1.5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -0.5 11 1.5
vertex 0.5 9 1.5
vertex 0.5 11 1.5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0.5 9 1.5
vertex -0.5 11 1.5
vertex -0.5 9 1.5
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -0.5 9 -1.5
vertex 0.5 11 -1.5
vertex 0.5 9 -1.5
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 0.5 11 -1.5
vertex -0.5 9 -1.5
vertex -0.5 11 -1.5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -0.5 9 -1.5
vertex -0.5 11 1.5
vertex -0.5 11 -1.5
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -0.5 11 1.5
vertex -0.5 9 -1.5
vertex -0.5 9 1.5
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 0.5 11 -1.5
vertex -0.5 11 1.5
vertex 0.5 11 1.5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -0.5 11 1.5
vertex 0.5 11 -1.5
vertex -0.5 11 -1.5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -0.5 9 -1.5
vertex 0.5 9 1.5
vertex -0.5 9 1.5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 0.5 9 1.5
vertex -0.5 9 -1.5
vertex 0.5 9 -1.5
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,534 @@
solid OpenSCAD_Model
facet normal -0 0 -1
outer loop
vertex 23.5355 -16.0355 0
vertex 21.9134 -17.1194 0
vertex 24.6194 -14.4134 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 24.6194 -14.4134 0
vertex 20 -17.5 0
vertex 25 -12.5 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 21.9134 -17.1194 0
vertex 20 -17.5 0
vertex 24.6194 -14.4134 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 -12.5 0
vertex 20 17.5 0
vertex 25 12.5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 21.9134 17.1194 0
vertex 23.5355 16.0355 0
vertex 24.6194 14.4134 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 20 17.5 0
vertex 21.9134 17.1194 0
vertex 24.6194 14.4134 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 12.5 0
vertex 20 17.5 0
vertex 24.6194 14.4134 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 25 -12.5 0
vertex 20 -17.5 0
vertex 20 17.5 0
endloop
endfacet
facet normal -0 -0 -1
outer loop
vertex 20 17.5 0
vertex 20 -17.5 0
vertex -20 17.5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -24.6194 14.4134 0
vertex -23.5355 16.0355 0
vertex -21.9134 17.1194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 12.5 0
vertex -24.6194 14.4134 0
vertex -21.9134 17.1194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -20 17.5 0
vertex -25 12.5 0
vertex -21.9134 17.1194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -20 -17.5 0
vertex -25 -12.5 0
vertex -25 12.5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -20 -17.5 0
vertex -21.9134 -17.1194 0
vertex -25 -12.5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -21.9134 -17.1194 0
vertex -23.5355 -16.0355 0
vertex -24.6194 -14.4134 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 -12.5 0
vertex -21.9134 -17.1194 0
vertex -24.6194 -14.4134 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex -20 17.5 0
vertex -20 -17.5 0
vertex -25 12.5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -20 17.5 0
vertex 20 -17.5 0
vertex -20 -17.5 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 24.6194 -14.4134 20
vertex 21.9134 -17.1194 20
vertex 23.5355 -16.0355 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 -12.5 20
vertex 20 -17.5 20
vertex 24.6194 -14.4134 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 24.6194 -14.4134 20
vertex 20 -17.5 20
vertex 21.9134 -17.1194 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 12.5 20
vertex 20 17.5 20
vertex 25 -12.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 24.6194 14.4134 20
vertex 23.5355 16.0355 20
vertex 21.9134 17.1194 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 24.6194 14.4134 20
vertex 21.9134 17.1194 20
vertex 20 17.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 24.6194 14.4134 20
vertex 20 17.5 20
vertex 25 12.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 20 17.5 20
vertex 20 -17.5 20
vertex 25 -12.5 20
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -20 17.5 20
vertex 20 -17.5 20
vertex 20 17.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -21.9134 17.1194 20
vertex -23.5355 16.0355 20
vertex -24.6194 14.4134 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -21.9134 17.1194 20
vertex -24.6194 14.4134 20
vertex -25 12.5 20
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -21.9134 17.1194 20
vertex -25 12.5 20
vertex -20 17.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 12.5 20
vertex -25 -12.5 20
vertex -20 -17.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 -12.5 20
vertex -21.9134 -17.1194 20
vertex -20 -17.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -24.6194 -14.4134 20
vertex -23.5355 -16.0355 20
vertex -21.9134 -17.1194 20
endloop
endfacet
facet normal -0 -0 1
outer loop
vertex -24.6194 -14.4134 20
vertex -21.9134 -17.1194 20
vertex -25 -12.5 20
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -25 12.5 20
vertex -20 -17.5 20
vertex -20 17.5 20
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -20 -17.5 20
vertex 20 -17.5 20
vertex -20 17.5 20
endloop
endfacet
facet normal 0.555587 -0.831458 0
outer loop
vertex 23.5355 -16.0355 0
vertex 21.9134 -17.1194 20
vertex 21.9134 -17.1194 0
endloop
endfacet
facet normal 0.555587 -0.831458 0
outer loop
vertex 23.5355 -16.0355 0
vertex 23.5355 -16.0355 20
vertex 21.9134 -17.1194 20
endloop
endfacet
facet normal 0.831458 -0.555587 0
outer loop
vertex 24.6194 -14.4134 0
vertex 23.5355 -16.0355 20
vertex 23.5355 -16.0355 0
endloop
endfacet
facet normal 0.831458 -0.555587 0
outer loop
vertex 24.6194 -14.4134 0
vertex 24.6194 -14.4134 20
vertex 23.5355 -16.0355 20
endloop
endfacet
facet normal 0.980785 -0.195091 0
outer loop
vertex 25 -12.5 0
vertex 24.6194 -14.4134 20
vertex 24.6194 -14.4134 0
endloop
endfacet
facet normal 0.980785 -0.195091 0
outer loop
vertex 25 -12.5 0
vertex 25 -12.5 20
vertex 24.6194 -14.4134 20
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 25 12.5 0
vertex 25 -12.5 20
vertex 25 -12.5 0
endloop
endfacet
facet normal 1 0 -0
outer loop
vertex 25 12.5 0
vertex 25 12.5 20
vertex 25 -12.5 20
endloop
endfacet
facet normal 0.980785 0.195091 0
outer loop
vertex 24.6194 14.4134 0
vertex 25 12.5 20
vertex 25 12.5 0
endloop
endfacet
facet normal 0.980785 0.195091 -0
outer loop
vertex 24.6194 14.4134 0
vertex 24.6194 14.4134 20
vertex 25 12.5 20
endloop
endfacet
facet normal 0.831458 0.555587 0
outer loop
vertex 23.5355 16.0355 0
vertex 24.6194 14.4134 20
vertex 24.6194 14.4134 0
endloop
endfacet
facet normal 0.831458 0.555587 -0
outer loop
vertex 23.5355 16.0355 0
vertex 23.5355 16.0355 20
vertex 24.6194 14.4134 20
endloop
endfacet
facet normal 0.555587 0.831458 0
outer loop
vertex 21.9134 17.1194 0
vertex 23.5355 16.0355 20
vertex 23.5355 16.0355 0
endloop
endfacet
facet normal 0.555587 0.831458 -0
outer loop
vertex 21.9134 17.1194 0
vertex 21.9134 17.1194 20
vertex 23.5355 16.0355 20
endloop
endfacet
facet normal 0.195091 0.980785 0
outer loop
vertex 20 17.5 0
vertex 21.9134 17.1194 20
vertex 21.9134 17.1194 0
endloop
endfacet
facet normal 0.195091 0.980785 -0
outer loop
vertex 20 17.5 0
vertex 20 17.5 20
vertex 21.9134 17.1194 20
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -20 17.5 0
vertex 20 17.5 20
vertex 20 17.5 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -20 17.5 0
vertex -20 17.5 20
vertex 20 17.5 20
endloop
endfacet
facet normal -0.195091 0.980785 0
outer loop
vertex -21.9134 17.1194 0
vertex -20 17.5 20
vertex -20 17.5 0
endloop
endfacet
facet normal -0.195091 0.980785 0
outer loop
vertex -21.9134 17.1194 0
vertex -21.9134 17.1194 20
vertex -20 17.5 20
endloop
endfacet
facet normal -0.555587 0.831458 0
outer loop
vertex -23.5355 16.0355 0
vertex -21.9134 17.1194 20
vertex -21.9134 17.1194 0
endloop
endfacet
facet normal -0.555587 0.831458 0
outer loop
vertex -23.5355 16.0355 0
vertex -23.5355 16.0355 20
vertex -21.9134 17.1194 20
endloop
endfacet
facet normal -0.831458 0.555587 0
outer loop
vertex -24.6194 14.4134 0
vertex -23.5355 16.0355 20
vertex -23.5355 16.0355 0
endloop
endfacet
facet normal -0.831458 0.555587 0
outer loop
vertex -24.6194 14.4134 0
vertex -24.6194 14.4134 20
vertex -23.5355 16.0355 20
endloop
endfacet
facet normal -0.980785 0.195091 0
outer loop
vertex -25 12.5 0
vertex -24.6194 14.4134 20
vertex -24.6194 14.4134 0
endloop
endfacet
facet normal -0.980785 0.195091 0
outer loop
vertex -25 12.5 0
vertex -25 12.5 20
vertex -24.6194 14.4134 20
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -25 -12.5 0
vertex -25 12.5 20
vertex -25 12.5 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -25 -12.5 0
vertex -25 -12.5 20
vertex -25 12.5 20
endloop
endfacet
facet normal -0.980785 -0.195091 0
outer loop
vertex -24.6194 -14.4134 0
vertex -25 -12.5 20
vertex -25 -12.5 0
endloop
endfacet
facet normal -0.980785 -0.195091 0
outer loop
vertex -24.6194 -14.4134 0
vertex -24.6194 -14.4134 20
vertex -25 -12.5 20
endloop
endfacet
facet normal -0.831458 -0.555587 0
outer loop
vertex -23.5355 -16.0355 0
vertex -24.6194 -14.4134 20
vertex -24.6194 -14.4134 0
endloop
endfacet
facet normal -0.831458 -0.555587 0
outer loop
vertex -23.5355 -16.0355 0
vertex -23.5355 -16.0355 20
vertex -24.6194 -14.4134 20
endloop
endfacet
facet normal -0.555587 -0.831458 0
outer loop
vertex -21.9134 -17.1194 0
vertex -23.5355 -16.0355 20
vertex -23.5355 -16.0355 0
endloop
endfacet
facet normal -0.555587 -0.831458 0
outer loop
vertex -21.9134 -17.1194 0
vertex -21.9134 -17.1194 20
vertex -23.5355 -16.0355 20
endloop
endfacet
facet normal -0.195091 -0.980785 0
outer loop
vertex -20 -17.5 0
vertex -21.9134 -17.1194 20
vertex -21.9134 -17.1194 0
endloop
endfacet
facet normal -0.195091 -0.980785 0
outer loop
vertex -20 -17.5 0
vertex -20 -17.5 20
vertex -21.9134 -17.1194 20
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 20 -17.5 0
vertex -20 -17.5 20
vertex -20 -17.5 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 20 -17.5 0
vertex 20 -17.5 20
vertex -20 -17.5 20
endloop
endfacet
facet normal 0.195091 -0.980785 0
outer loop
vertex 21.9134 -17.1194 0
vertex 20 -17.5 20
vertex 20 -17.5 0
endloop
endfacet
facet normal 0.195091 -0.980785 0
outer loop
vertex 21.9134 -17.1194 0
vertex 21.9134 -17.1194 20
vertex 20 -17.5 20
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,310 @@
solid OpenSCAD_Model
facet normal 0 0 -1
outer loop
vertex 15 -28 0
vertex 14.5637 -29.247 0
vertex 13 -30 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 15 28 0
vertex 13 30 0
vertex 14.247 29.5637 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex -13 30 0
vertex 13 30 0
vertex -15 28 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex -14.5637 29.247 0
vertex -13 30 0
vertex -15 28 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -15 28 0
vertex 13 30 0
vertex 15 28 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 15 -28 0
vertex -15 28 0
vertex 15 28 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 15 -28 0
vertex -15 -28 0
vertex -15 28 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 15 -28 0
vertex 13 -30 0
vertex -15 -28 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -15 -28 0
vertex -13 -30 0
vertex -14.247 -29.5637 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -15 -28 0
vertex 13 -30 0
vertex -13 -30 0
endloop
endfacet
facet normal 0.943894 -0.330249 0
outer loop
vertex 15 -28 0
vertex 14.5637 -29.247 50
vertex 14.5637 -29.247 0
endloop
endfacet
facet normal 0.943894 -0.330249 0
outer loop
vertex 15 -28 0
vertex 15 -28 50
vertex 14.5637 -29.247 50
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 15 28 0
vertex 15 -28 50
vertex 15 -28 0
endloop
endfacet
facet normal 1 0 -0
outer loop
vertex 15 28 0
vertex 15 28 50
vertex 15 -28 50
endloop
endfacet
facet normal 0.900977 0.433866 0
outer loop
vertex 14.247 29.5637 0
vertex 15 28 50
vertex 15 28 0
endloop
endfacet
facet normal 0.900977 0.433866 -0
outer loop
vertex 14.247 29.5637 0
vertex 14.247 29.5637 50
vertex 15 28 50
endloop
endfacet
facet normal 0.330249 0.943894 0
outer loop
vertex 13 30 0
vertex 14.247 29.5637 50
vertex 14.247 29.5637 0
endloop
endfacet
facet normal 0.330249 0.943894 -0
outer loop
vertex 13 30 0
vertex 13 30 50
vertex 14.247 29.5637 50
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -13 30 0
vertex 13 30 50
vertex 13 30 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -13 30 0
vertex -13 30 50
vertex 13 30 50
endloop
endfacet
facet normal -0.433866 0.900977 0
outer loop
vertex -14.5637 29.247 0
vertex -13 30 50
vertex -13 30 0
endloop
endfacet
facet normal -0.433866 0.900977 0
outer loop
vertex -14.5637 29.247 0
vertex -14.5637 29.247 50
vertex -13 30 50
endloop
endfacet
facet normal -0.943894 0.330249 0
outer loop
vertex -15 28 0
vertex -14.5637 29.247 50
vertex -14.5637 29.247 0
endloop
endfacet
facet normal -0.943894 0.330249 0
outer loop
vertex -15 28 0
vertex -15 28 50
vertex -14.5637 29.247 50
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -15 -28 0
vertex -15 28 50
vertex -15 28 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -15 -28 0
vertex -15 -28 50
vertex -15 28 50
endloop
endfacet
facet normal -0.900977 -0.433866 0
outer loop
vertex -14.247 -29.5637 0
vertex -15 -28 50
vertex -15 -28 0
endloop
endfacet
facet normal -0.900977 -0.433866 0
outer loop
vertex -14.247 -29.5637 0
vertex -14.247 -29.5637 50
vertex -15 -28 50
endloop
endfacet
facet normal -0.330249 -0.943894 0
outer loop
vertex -13 -30 0
vertex -14.247 -29.5637 50
vertex -14.247 -29.5637 0
endloop
endfacet
facet normal -0.330249 -0.943894 0
outer loop
vertex -13 -30 0
vertex -13 -30 50
vertex -14.247 -29.5637 50
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 13 -30 0
vertex -13 -30 50
vertex -13 -30 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 13 -30 0
vertex 13 -30 50
vertex -13 -30 50
endloop
endfacet
facet normal 0.433866 -0.900977 0
outer loop
vertex 14.5637 -29.247 0
vertex 13 -30 50
vertex 13 -30 0
endloop
endfacet
facet normal 0.433866 -0.900977 0
outer loop
vertex 14.5637 -29.247 0
vertex 14.5637 -29.247 50
vertex 13 -30 50
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 13 -30 50
vertex 14.5637 -29.247 50
vertex 15 -28 50
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 14.247 29.5637 50
vertex 13 30 50
vertex 15 28 50
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -15 28 50
vertex 13 30 50
vertex -13 30 50
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -15 28 50
vertex -13 30 50
vertex -14.5637 29.247 50
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 15 28 50
vertex 13 30 50
vertex -15 28 50
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 15 28 50
vertex -15 28 50
vertex 15 -28 50
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -15 28 50
vertex -15 -28 50
vertex 15 -28 50
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -15 -28 50
vertex 13 -30 50
vertex 15 -28 50
endloop
endfacet
facet normal -0 -0 1
outer loop
vertex -14.247 -29.5637 50
vertex -13 -30 50
vertex -15 -28 50
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex -13 -30 50
vertex 13 -30 50
vertex -15 -28 50
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,310 @@
solid OpenSCAD_Model
facet normal 0 0 -1
outer loop
vertex 10 -8 0
vertex 9.56366 -9.24698 0
vertex 8 -10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 10 8 0
vertex 8 10 0
vertex 9.24698 9.56366 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 10 -8 0
vertex 8 10 0
vertex 10 8 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 10 -8 0
vertex 8 -10 0
vertex 8 10 0
endloop
endfacet
facet normal -0 -0 -1
outer loop
vertex 8 10 0
vertex 8 -10 0
vertex -8 10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -8 10 0
vertex -10 8 0
vertex -9.56366 9.24698 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -8 -10 0
vertex -10 -8 0
vertex -10 8 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex -8 10 0
vertex -8 -10 0
vertex -10 8 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -10 -8 0
vertex -8 -10 0
vertex -9.24698 -9.56366 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -8 10 0
vertex 8 -10 0
vertex -8 -10 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 8 -10 30
vertex 9.56366 -9.24698 30
vertex 10 -8 30
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 9.24698 9.56366 30
vertex 8 10 30
vertex 10 8 30
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10 8 30
vertex 8 10 30
vertex 10 -8 30
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 8 10 30
vertex 8 -10 30
vertex 10 -8 30
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -8 10 30
vertex 8 -10 30
vertex 8 10 30
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -9.56366 9.24698 30
vertex -10 8 30
vertex -8 10 30
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -10 8 30
vertex -10 -8 30
vertex -8 -10 30
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -10 8 30
vertex -8 -10 30
vertex -8 10 30
endloop
endfacet
facet normal -0 -0 1
outer loop
vertex -9.24698 -9.56366 30
vertex -8 -10 30
vertex -10 -8 30
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -8 -10 30
vertex 8 -10 30
vertex -8 10 30
endloop
endfacet
facet normal 0.943883 -0.330281 0
outer loop
vertex 10 -8 0
vertex 9.56366 -9.24698 30
vertex 9.56366 -9.24698 0
endloop
endfacet
facet normal 0.943883 -0.330281 0
outer loop
vertex 10 -8 0
vertex 10 -8 30
vertex 9.56366 -9.24698 30
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10 8 0
vertex 10 -8 30
vertex 10 -8 0
endloop
endfacet
facet normal 1 0 -0
outer loop
vertex 10 8 0
vertex 10 8 30
vertex 10 -8 30
endloop
endfacet
facet normal 0.900969 0.433884 0
outer loop
vertex 9.24698 9.56366 0
vertex 10 8 30
vertex 10 8 0
endloop
endfacet
facet normal 0.900969 0.433884 -0
outer loop
vertex 9.24698 9.56366 0
vertex 9.24698 9.56366 30
vertex 10 8 30
endloop
endfacet
facet normal 0.330281 0.943883 0
outer loop
vertex 8 10 0
vertex 9.24698 9.56366 30
vertex 9.24698 9.56366 0
endloop
endfacet
facet normal 0.330281 0.943883 -0
outer loop
vertex 8 10 0
vertex 8 10 30
vertex 9.24698 9.56366 30
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -8 10 0
vertex 8 10 30
vertex 8 10 0
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -8 10 0
vertex -8 10 30
vertex 8 10 30
endloop
endfacet
facet normal -0.433884 0.900969 0
outer loop
vertex -9.56366 9.24698 0
vertex -8 10 30
vertex -8 10 0
endloop
endfacet
facet normal -0.433884 0.900969 0
outer loop
vertex -9.56366 9.24698 0
vertex -9.56366 9.24698 30
vertex -8 10 30
endloop
endfacet
facet normal -0.943883 0.330281 0
outer loop
vertex -10 8 0
vertex -9.56366 9.24698 30
vertex -9.56366 9.24698 0
endloop
endfacet
facet normal -0.943883 0.330281 0
outer loop
vertex -10 8 0
vertex -10 8 30
vertex -9.56366 9.24698 30
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10 -8 0
vertex -10 8 30
vertex -10 8 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10 -8 0
vertex -10 -8 30
vertex -10 8 30
endloop
endfacet
facet normal -0.900969 -0.433884 0
outer loop
vertex -9.24698 -9.56366 0
vertex -10 -8 30
vertex -10 -8 0
endloop
endfacet
facet normal -0.900969 -0.433884 0
outer loop
vertex -9.24698 -9.56366 0
vertex -9.24698 -9.56366 30
vertex -10 -8 30
endloop
endfacet
facet normal -0.330281 -0.943883 0
outer loop
vertex -8 -10 0
vertex -9.24698 -9.56366 30
vertex -9.24698 -9.56366 0
endloop
endfacet
facet normal -0.330281 -0.943883 0
outer loop
vertex -8 -10 0
vertex -8 -10 30
vertex -9.24698 -9.56366 30
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 8 -10 0
vertex -8 -10 30
vertex -8 -10 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 8 -10 0
vertex 8 -10 30
vertex -8 -10 30
endloop
endfacet
facet normal 0.433884 -0.900969 0
outer loop
vertex 9.56366 -9.24698 0
vertex 8 -10 30
vertex 8 -10 0
endloop
endfacet
facet normal 0.433884 -0.900969 0
outer loop
vertex 9.56366 -9.24698 0
vertex 9.56366 -9.24698 30
vertex 8 -10 30
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,674 @@
solid OpenSCAD_Model
facet normal -0.831465 -0.555576 0
outer loop
vertex -8.53553 -28.5355 0
vertex -9.6194 -26.9134 5
vertex -9.6194 -26.9134 0
endloop
endfacet
facet normal -0.831465 -0.555576 0
outer loop
vertex -9.6194 -26.9134 5
vertex -8.53553 -28.5355 0
vertex -8.53553 -28.5355 5
endloop
endfacet
facet normal -0.555585 -0.83146 0
outer loop
vertex -8.53553 -28.5355 0
vertex -6.91342 -29.6194 5
vertex -8.53553 -28.5355 5
endloop
endfacet
facet normal -0.555585 -0.83146 -0
outer loop
vertex -6.91342 -29.6194 5
vertex -8.53553 -28.5355 0
vertex -6.91342 -29.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 -30 0
vertex 5 -25 0
vertex 5 -30 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 -30 0
vertex -5 -25 0
vertex 5 -25 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -6.91342 -29.6194 0
vertex -5 -25 0
vertex -5 -30 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 -25 0
vertex -10 -25 0
vertex -5 25 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -8.53553 -28.5355 0
vertex -5 -25 0
vertex -6.91342 -29.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -10 25 0
vertex -5 25 0
vertex -10 -25 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -9.6194 -26.9134 0
vertex -5 -25 0
vertex -8.53553 -28.5355 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex -9.6194 26.9134 0
vertex -5 25 0
vertex -10 25 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -5 -25 0
vertex -9.6194 -26.9134 0
vertex -10 -25 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 25 0
vertex -6.91342 29.6194 0
vertex -5 30 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 25 0
vertex -8.53553 28.5355 0
vertex -6.91342 29.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 25 0
vertex -9.6194 26.9134 0
vertex -8.53553 28.5355 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -25 0
vertex 10 -25 0
vertex 9.6194 -26.9134 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 10 -25 0
vertex 5 -25 0
vertex 10 25 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -25 0
vertex 9.6194 -26.9134 0
vertex 8.53553 -28.5355 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 25 0
vertex 10 25 0
vertex 5 -25 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -25 0
vertex 8.53553 -28.5355 0
vertex 6.91342 -29.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 10 25 0
vertex 5 25 0
vertex 9.6194 26.9134 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -25 0
vertex 6.91342 -29.6194 0
vertex 5 -30 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 9.6194 26.9134 0
vertex 5 25 0
vertex 8.53553 28.5355 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 8.53553 28.5355 0
vertex 5 25 0
vertex 6.91342 29.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 25 0
vertex 5 30 0
vertex 6.91342 29.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 25 0
vertex 5 30 0
vertex 5 25 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 5 30 0
vertex -5 25 0
vertex -5 30 0
endloop
endfacet
facet normal -0.980785 -0.195091 0
outer loop
vertex -9.6194 -26.9134 0
vertex -10 -25 5
vertex -10 -25 0
endloop
endfacet
facet normal -0.980785 -0.195091 0
outer loop
vertex -10 -25 5
vertex -9.6194 -26.9134 0
vertex -9.6194 -26.9134 5
endloop
endfacet
facet normal -0.195089 -0.980786 0
outer loop
vertex -6.91342 -29.6194 0
vertex -5 -30 5
vertex -6.91342 -29.6194 5
endloop
endfacet
facet normal -0.195089 -0.980786 -0
outer loop
vertex -5 -30 5
vertex -6.91342 -29.6194 0
vertex -5 -30 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -5 30 5
vertex 5 25 5
vertex 5 30 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 30 5
vertex -5 25 5
vertex 5 25 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -6.91342 29.6194 5
vertex -5 25 5
vertex -5 30 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 25 5
vertex -10 25 5
vertex -5 -25 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -8.53553 28.5355 5
vertex -5 25 5
vertex -6.91342 29.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -10 -25 5
vertex -5 -25 5
vertex -10 25 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -9.6194 26.9134 5
vertex -5 25 5
vertex -8.53553 28.5355 5
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex -9.6194 -26.9134 5
vertex -5 -25 5
vertex -10 -25 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 25 5
vertex -9.6194 26.9134 5
vertex -10 25 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 -25 5
vertex -6.91342 -29.6194 5
vertex -5 -30 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 -25 5
vertex -8.53553 -28.5355 5
vertex -6.91342 -29.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 -25 5
vertex -9.6194 -26.9134 5
vertex -8.53553 -28.5355 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 25 5
vertex 10 25 5
vertex 9.6194 26.9134 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10 25 5
vertex 5 25 5
vertex 10 -25 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 25 5
vertex 9.6194 26.9134 5
vertex 8.53553 28.5355 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 -25 5
vertex 10 -25 5
vertex 5 25 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 25 5
vertex 8.53553 28.5355 5
vertex 6.91342 29.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10 -25 5
vertex 5 -25 5
vertex 9.6194 -26.9134 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 25 5
vertex 6.91342 29.6194 5
vertex 5 30 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 9.6194 -26.9134 5
vertex 5 -25 5
vertex 8.53553 -28.5355 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 8.53553 -28.5355 5
vertex 5 -25 5
vertex 6.91342 -29.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 -25 5
vertex 5 -30 5
vertex 6.91342 -29.6194 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -5 -25 5
vertex 5 -30 5
vertex 5 -25 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 -30 5
vertex -5 -25 5
vertex -5 -30 5
endloop
endfacet
facet normal 0.555585 -0.83146 0
outer loop
vertex 6.91342 -29.6194 0
vertex 8.53553 -28.5355 5
vertex 6.91342 -29.6194 5
endloop
endfacet
facet normal 0.555585 -0.83146 0
outer loop
vertex 8.53553 -28.5355 5
vertex 6.91342 -29.6194 0
vertex 8.53553 -28.5355 0
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 5 -25 0
vertex -5 -25 5
vertex 5 -25 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -5 -25 5
vertex 5 -25 0
vertex -5 -25 0
endloop
endfacet
facet normal 0.195089 -0.980786 0
outer loop
vertex 5 -30 0
vertex 6.91342 -29.6194 5
vertex 5 -30 5
endloop
endfacet
facet normal 0.195089 -0.980786 0
outer loop
vertex 6.91342 -29.6194 5
vertex 5 -30 0
vertex 6.91342 -29.6194 0
endloop
endfacet
facet normal 0.831465 -0.555576 0
outer loop
vertex 8.53553 -28.5355 5
vertex 9.6194 -26.9134 0
vertex 9.6194 -26.9134 5
endloop
endfacet
facet normal 0.831465 -0.555576 0
outer loop
vertex 9.6194 -26.9134 0
vertex 8.53553 -28.5355 5
vertex 8.53553 -28.5355 0
endloop
endfacet
facet normal 0.980785 -0.195091 0
outer loop
vertex 9.6194 -26.9134 5
vertex 10 -25 0
vertex 10 -25 5
endloop
endfacet
facet normal 0.980785 -0.195091 0
outer loop
vertex 10 -25 0
vertex 9.6194 -26.9134 5
vertex 9.6194 -26.9134 0
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex -5 -25 5
vertex -5 25 0
vertex -5 25 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -5 25 0
vertex -5 -25 5
vertex -5 -25 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -5 25 0
vertex 5 25 5
vertex -5 25 5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 5 25 5
vertex -5 25 0
vertex 5 25 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10 -25 0
vertex -10 25 5
vertex -10 25 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -10 25 5
vertex -10 -25 0
vertex -10 -25 5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -5 -30 0
vertex 5 -30 5
vertex -5 -30 5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 5 -30 5
vertex -5 -30 0
vertex 5 -30 0
endloop
endfacet
facet normal 0.831465 0.555576 0
outer loop
vertex 9.6194 26.9134 5
vertex 8.53553 28.5355 0
vertex 8.53553 28.5355 5
endloop
endfacet
facet normal 0.831465 0.555576 0
outer loop
vertex 8.53553 28.5355 0
vertex 9.6194 26.9134 5
vertex 9.6194 26.9134 0
endloop
endfacet
facet normal 0.555585 0.83146 -0
outer loop
vertex 8.53553 28.5355 0
vertex 6.91342 29.6194 5
vertex 8.53553 28.5355 5
endloop
endfacet
facet normal 0.555585 0.83146 0
outer loop
vertex 6.91342 29.6194 5
vertex 8.53553 28.5355 0
vertex 6.91342 29.6194 0
endloop
endfacet
facet normal 0.980785 0.195091 0
outer loop
vertex 10 25 5
vertex 9.6194 26.9134 0
vertex 9.6194 26.9134 5
endloop
endfacet
facet normal 0.980785 0.195091 0
outer loop
vertex 9.6194 26.9134 0
vertex 10 25 5
vertex 10 25 0
endloop
endfacet
facet normal 0.195089 0.980786 -0
outer loop
vertex 6.91342 29.6194 0
vertex 5 30 5
vertex 6.91342 29.6194 5
endloop
endfacet
facet normal 0.195089 0.980786 0
outer loop
vertex 5 30 5
vertex 6.91342 29.6194 0
vertex 5 30 0
endloop
endfacet
facet normal -0.555585 0.83146 0
outer loop
vertex -6.91342 29.6194 0
vertex -8.53553 28.5355 5
vertex -6.91342 29.6194 5
endloop
endfacet
facet normal -0.555585 0.83146 0
outer loop
vertex -8.53553 28.5355 5
vertex -6.91342 29.6194 0
vertex -8.53553 28.5355 0
endloop
endfacet
facet normal -0.195089 0.980786 0
outer loop
vertex -5 30 0
vertex -6.91342 29.6194 5
vertex -5 30 5
endloop
endfacet
facet normal -0.195089 0.980786 0
outer loop
vertex -6.91342 29.6194 5
vertex -5 30 0
vertex -6.91342 29.6194 0
endloop
endfacet
facet normal -0.831465 0.555576 0
outer loop
vertex -9.6194 26.9134 0
vertex -8.53553 28.5355 5
vertex -8.53553 28.5355 0
endloop
endfacet
facet normal -0.831465 0.555576 0
outer loop
vertex -8.53553 28.5355 5
vertex -9.6194 26.9134 0
vertex -9.6194 26.9134 5
endloop
endfacet
facet normal -0.980785 0.195091 0
outer loop
vertex -10 25 0
vertex -9.6194 26.9134 5
vertex -9.6194 26.9134 0
endloop
endfacet
facet normal -0.980785 0.195091 0
outer loop
vertex -9.6194 26.9134 5
vertex -10 25 0
vertex -10 25 5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 5 -25 0
vertex 5 25 5
vertex 5 25 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 5 25 5
vertex 5 -25 0
vertex 5 -25 5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 10 -25 5
vertex 10 25 0
vertex 10 25 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10 25 0
vertex 10 -25 5
vertex 10 -25 0
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 5 30 0
vertex -5 30 5
vertex 5 30 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -5 30 5
vertex 5 30 0
vertex -5 30 0
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,674 @@
solid OpenSCAD_Model
facet normal -0.831467 -0.555574 0
outer loop
vertex -8.53553 -8.53553 0
vertex -9.6194 -6.91342 5
vertex -9.6194 -6.91342 0
endloop
endfacet
facet normal -0.831467 -0.555574 0
outer loop
vertex -9.6194 -6.91342 5
vertex -8.53553 -8.53553 0
vertex -8.53553 -8.53553 5
endloop
endfacet
facet normal -0.555574 -0.831467 0
outer loop
vertex -8.53553 -8.53553 0
vertex -6.91342 -9.6194 5
vertex -8.53553 -8.53553 5
endloop
endfacet
facet normal -0.555574 -0.831467 -0
outer loop
vertex -6.91342 -9.6194 5
vertex -8.53553 -8.53553 0
vertex -6.91342 -9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 -10 0
vertex 5 -5 0
vertex 5 -10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 -10 0
vertex -5 -5 0
vertex 5 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -6.91342 -9.6194 0
vertex -5 -5 0
vertex -5 -10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 -5 0
vertex -10 -5 0
vertex -5 5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -8.53553 -8.53553 0
vertex -5 -5 0
vertex -6.91342 -9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -10 5 0
vertex -5 5 0
vertex -10 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -9.6194 -6.91342 0
vertex -5 -5 0
vertex -8.53553 -8.53553 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex -9.6194 6.91342 0
vertex -5 5 0
vertex -10 5 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -5 -5 0
vertex -9.6194 -6.91342 0
vertex -10 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 5 0
vertex -6.91342 9.6194 0
vertex -5 10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 5 0
vertex -8.53553 8.53553 0
vertex -6.91342 9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 5 0
vertex -9.6194 6.91342 0
vertex -8.53553 8.53553 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -5 0
vertex 10 -5 0
vertex 9.6194 -6.91342 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 10 -5 0
vertex 5 -5 0
vertex 10 5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -5 0
vertex 9.6194 -6.91342 0
vertex 8.53553 -8.53553 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 5 0
vertex 10 5 0
vertex 5 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -5 0
vertex 8.53553 -8.53553 0
vertex 6.91342 -9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 10 5 0
vertex 5 5 0
vertex 9.6194 6.91342 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 -5 0
vertex 6.91342 -9.6194 0
vertex 5 -10 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 9.6194 6.91342 0
vertex 5 5 0
vertex 8.53553 8.53553 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 8.53553 8.53553 0
vertex 5 5 0
vertex 6.91342 9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 5 5 0
vertex 5 10 0
vertex 6.91342 9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -5 5 0
vertex 5 10 0
vertex 5 5 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 5 10 0
vertex -5 5 0
vertex -5 10 0
endloop
endfacet
facet normal -0.980786 -0.195089 0
outer loop
vertex -9.6194 -6.91342 0
vertex -10 -5 5
vertex -10 -5 0
endloop
endfacet
facet normal -0.980786 -0.195089 0
outer loop
vertex -10 -5 5
vertex -9.6194 -6.91342 0
vertex -9.6194 -6.91342 5
endloop
endfacet
facet normal -0.195089 -0.980786 0
outer loop
vertex -6.91342 -9.6194 0
vertex -5 -10 5
vertex -6.91342 -9.6194 5
endloop
endfacet
facet normal -0.195089 -0.980786 -0
outer loop
vertex -5 -10 5
vertex -6.91342 -9.6194 0
vertex -5 -10 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -5 10 5
vertex 5 5 5
vertex 5 10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 10 5
vertex -5 5 5
vertex 5 5 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -6.91342 9.6194 5
vertex -5 5 5
vertex -5 10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 5 5
vertex -10 5 5
vertex -5 -5 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -8.53553 8.53553 5
vertex -5 5 5
vertex -6.91342 9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -10 -5 5
vertex -5 -5 5
vertex -10 5 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -9.6194 6.91342 5
vertex -5 5 5
vertex -8.53553 8.53553 5
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex -9.6194 -6.91342 5
vertex -5 -5 5
vertex -10 -5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 5 5
vertex -9.6194 6.91342 5
vertex -10 5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 -5 5
vertex -6.91342 -9.6194 5
vertex -5 -10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 -5 5
vertex -8.53553 -8.53553 5
vertex -6.91342 -9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -5 -5 5
vertex -9.6194 -6.91342 5
vertex -8.53553 -8.53553 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 5 5
vertex 10 5 5
vertex 9.6194 6.91342 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10 5 5
vertex 5 5 5
vertex 10 -5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 5 5
vertex 9.6194 6.91342 5
vertex 8.53553 8.53553 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 -5 5
vertex 10 -5 5
vertex 5 5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 5 5
vertex 8.53553 8.53553 5
vertex 6.91342 9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 10 -5 5
vertex 5 -5 5
vertex 9.6194 -6.91342 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 5 5
vertex 6.91342 9.6194 5
vertex 5 10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 9.6194 -6.91342 5
vertex 5 -5 5
vertex 8.53553 -8.53553 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 8.53553 -8.53553 5
vertex 5 -5 5
vertex 6.91342 -9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 -5 5
vertex 5 -10 5
vertex 6.91342 -9.6194 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -5 -5 5
vertex 5 -10 5
vertex 5 -5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 5 -10 5
vertex -5 -5 5
vertex -5 -10 5
endloop
endfacet
facet normal 0.555574 -0.831467 0
outer loop
vertex 6.91342 -9.6194 0
vertex 8.53553 -8.53553 5
vertex 6.91342 -9.6194 5
endloop
endfacet
facet normal 0.555574 -0.831467 0
outer loop
vertex 8.53553 -8.53553 5
vertex 6.91342 -9.6194 0
vertex 8.53553 -8.53553 0
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 5 -5 0
vertex -5 -5 5
vertex 5 -5 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -5 -5 5
vertex 5 -5 0
vertex -5 -5 0
endloop
endfacet
facet normal 0.195089 -0.980786 0
outer loop
vertex 5 -10 0
vertex 6.91342 -9.6194 5
vertex 5 -10 5
endloop
endfacet
facet normal 0.195089 -0.980786 0
outer loop
vertex 6.91342 -9.6194 5
vertex 5 -10 0
vertex 6.91342 -9.6194 0
endloop
endfacet
facet normal 0.831467 -0.555574 0
outer loop
vertex 8.53553 -8.53553 5
vertex 9.6194 -6.91342 0
vertex 9.6194 -6.91342 5
endloop
endfacet
facet normal 0.831467 -0.555574 0
outer loop
vertex 9.6194 -6.91342 0
vertex 8.53553 -8.53553 5
vertex 8.53553 -8.53553 0
endloop
endfacet
facet normal 0.980786 -0.195089 0
outer loop
vertex 9.6194 -6.91342 5
vertex 10 -5 0
vertex 10 -5 5
endloop
endfacet
facet normal 0.980786 -0.195089 0
outer loop
vertex 10 -5 0
vertex 9.6194 -6.91342 5
vertex 9.6194 -6.91342 0
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex -5 -5 5
vertex -5 5 0
vertex -5 5 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -5 5 0
vertex -5 -5 5
vertex -5 -5 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -5 5 0
vertex 5 5 5
vertex -5 5 5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 5 5 5
vertex -5 5 0
vertex 5 5 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -10 -5 0
vertex -10 5 5
vertex -10 5 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -10 5 5
vertex -10 -5 0
vertex -10 -5 5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -5 -10 0
vertex 5 -10 5
vertex -5 -10 5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 5 -10 5
vertex -5 -10 0
vertex 5 -10 0
endloop
endfacet
facet normal 0.831467 0.555574 0
outer loop
vertex 9.6194 6.91342 5
vertex 8.53553 8.53553 0
vertex 8.53553 8.53553 5
endloop
endfacet
facet normal 0.831467 0.555574 0
outer loop
vertex 8.53553 8.53553 0
vertex 9.6194 6.91342 5
vertex 9.6194 6.91342 0
endloop
endfacet
facet normal 0.555574 0.831467 -0
outer loop
vertex 8.53553 8.53553 0
vertex 6.91342 9.6194 5
vertex 8.53553 8.53553 5
endloop
endfacet
facet normal 0.555574 0.831467 0
outer loop
vertex 6.91342 9.6194 5
vertex 8.53553 8.53553 0
vertex 6.91342 9.6194 0
endloop
endfacet
facet normal 0.980786 0.195089 0
outer loop
vertex 10 5 5
vertex 9.6194 6.91342 0
vertex 9.6194 6.91342 5
endloop
endfacet
facet normal 0.980786 0.195089 0
outer loop
vertex 9.6194 6.91342 0
vertex 10 5 5
vertex 10 5 0
endloop
endfacet
facet normal 0.195089 0.980786 -0
outer loop
vertex 6.91342 9.6194 0
vertex 5 10 5
vertex 6.91342 9.6194 5
endloop
endfacet
facet normal 0.195089 0.980786 0
outer loop
vertex 5 10 5
vertex 6.91342 9.6194 0
vertex 5 10 0
endloop
endfacet
facet normal -0.555574 0.831467 0
outer loop
vertex -6.91342 9.6194 0
vertex -8.53553 8.53553 5
vertex -6.91342 9.6194 5
endloop
endfacet
facet normal -0.555574 0.831467 0
outer loop
vertex -8.53553 8.53553 5
vertex -6.91342 9.6194 0
vertex -8.53553 8.53553 0
endloop
endfacet
facet normal -0.195089 0.980786 0
outer loop
vertex -5 10 0
vertex -6.91342 9.6194 5
vertex -5 10 5
endloop
endfacet
facet normal -0.195089 0.980786 0
outer loop
vertex -6.91342 9.6194 5
vertex -5 10 0
vertex -6.91342 9.6194 0
endloop
endfacet
facet normal -0.831467 0.555574 0
outer loop
vertex -9.6194 6.91342 0
vertex -8.53553 8.53553 5
vertex -8.53553 8.53553 0
endloop
endfacet
facet normal -0.831467 0.555574 0
outer loop
vertex -8.53553 8.53553 5
vertex -9.6194 6.91342 0
vertex -9.6194 6.91342 5
endloop
endfacet
facet normal -0.980786 0.195089 0
outer loop
vertex -10 5 0
vertex -9.6194 6.91342 5
vertex -9.6194 6.91342 0
endloop
endfacet
facet normal -0.980786 0.195089 0
outer loop
vertex -9.6194 6.91342 5
vertex -10 5 0
vertex -10 5 5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 5 -5 0
vertex 5 5 5
vertex 5 5 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 5 5 5
vertex 5 -5 0
vertex 5 -5 5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 10 -5 5
vertex 10 5 0
vertex 10 5 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 10 5 0
vertex 10 -5 5
vertex 10 -5 0
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 5 10 0
vertex -5 10 5
vertex 5 10 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -5 10 5
vertex 5 10 0
vertex -5 10 0
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,674 @@
solid OpenSCAD_Model
facet normal -0.83146 -0.555585 0
outer loop
vertex -28.5355 -8.53553 0
vertex -29.6194 -6.91342 5
vertex -29.6194 -6.91342 0
endloop
endfacet
facet normal -0.83146 -0.555585 0
outer loop
vertex -29.6194 -6.91342 5
vertex -28.5355 -8.53553 0
vertex -28.5355 -8.53553 5
endloop
endfacet
facet normal -0.555576 -0.831465 0
outer loop
vertex -28.5355 -8.53553 0
vertex -26.9134 -9.6194 5
vertex -28.5355 -8.53553 5
endloop
endfacet
facet normal -0.555576 -0.831465 -0
outer loop
vertex -26.9134 -9.6194 5
vertex -28.5355 -8.53553 0
vertex -26.9134 -9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 -10 0
vertex 25 -5 0
vertex 25 -10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 -10 0
vertex -25 -5 0
vertex 25 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -26.9134 -9.6194 0
vertex -25 -5 0
vertex -25 -10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 -5 0
vertex -30 -5 0
vertex -25 5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -28.5355 -8.53553 0
vertex -25 -5 0
vertex -26.9134 -9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -30 5 0
vertex -25 5 0
vertex -30 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -29.6194 -6.91342 0
vertex -25 -5 0
vertex -28.5355 -8.53553 0
endloop
endfacet
facet normal 0 -0 -1
outer loop
vertex -29.6194 6.91342 0
vertex -25 5 0
vertex -30 5 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex -25 -5 0
vertex -29.6194 -6.91342 0
vertex -30 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 5 0
vertex -26.9134 9.6194 0
vertex -25 10 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 5 0
vertex -28.5355 8.53553 0
vertex -26.9134 9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 5 0
vertex -29.6194 6.91342 0
vertex -28.5355 8.53553 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 -5 0
vertex 30 -5 0
vertex 29.6194 -6.91342 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 30 -5 0
vertex 25 -5 0
vertex 30 5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 -5 0
vertex 29.6194 -6.91342 0
vertex 28.5355 -8.53553 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 5 0
vertex 30 5 0
vertex 25 -5 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 -5 0
vertex 28.5355 -8.53553 0
vertex 26.9134 -9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 30 5 0
vertex 25 5 0
vertex 29.6194 6.91342 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 -5 0
vertex 26.9134 -9.6194 0
vertex 25 -10 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 29.6194 6.91342 0
vertex 25 5 0
vertex 28.5355 8.53553 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 28.5355 8.53553 0
vertex 25 5 0
vertex 26.9134 9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 25 5 0
vertex 25 10 0
vertex 26.9134 9.6194 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex -25 5 0
vertex 25 10 0
vertex 25 5 0
endloop
endfacet
facet normal -0 0 -1
outer loop
vertex 25 10 0
vertex -25 5 0
vertex -25 10 0
endloop
endfacet
facet normal -0.980786 -0.195089 0
outer loop
vertex -29.6194 -6.91342 0
vertex -30 -5 5
vertex -30 -5 0
endloop
endfacet
facet normal -0.980786 -0.195089 0
outer loop
vertex -30 -5 5
vertex -29.6194 -6.91342 0
vertex -29.6194 -6.91342 5
endloop
endfacet
facet normal -0.195091 -0.980785 0
outer loop
vertex -26.9134 -9.6194 0
vertex -25 -10 5
vertex -26.9134 -9.6194 5
endloop
endfacet
facet normal -0.195091 -0.980785 -0
outer loop
vertex -25 -10 5
vertex -26.9134 -9.6194 0
vertex -25 -10 0
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -25 10 5
vertex 25 5 5
vertex 25 10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 10 5
vertex -25 5 5
vertex 25 5 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -26.9134 9.6194 5
vertex -25 5 5
vertex -25 10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 5 5
vertex -30 5 5
vertex -25 -5 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -28.5355 8.53553 5
vertex -25 5 5
vertex -26.9134 9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -30 -5 5
vertex -25 -5 5
vertex -30 5 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -29.6194 6.91342 5
vertex -25 5 5
vertex -28.5355 8.53553 5
endloop
endfacet
facet normal 0 -0 1
outer loop
vertex -29.6194 -6.91342 5
vertex -25 -5 5
vertex -30 -5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 5 5
vertex -29.6194 6.91342 5
vertex -30 5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 -5 5
vertex -26.9134 -9.6194 5
vertex -25 -10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 -5 5
vertex -28.5355 -8.53553 5
vertex -26.9134 -9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex -25 -5 5
vertex -29.6194 -6.91342 5
vertex -28.5355 -8.53553 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 5 5
vertex 30 5 5
vertex 29.6194 6.91342 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 30 5 5
vertex 25 5 5
vertex 30 -5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 5 5
vertex 29.6194 6.91342 5
vertex 28.5355 8.53553 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 -5 5
vertex 30 -5 5
vertex 25 5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 5 5
vertex 28.5355 8.53553 5
vertex 26.9134 9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 30 -5 5
vertex 25 -5 5
vertex 29.6194 -6.91342 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 5 5
vertex 26.9134 9.6194 5
vertex 25 10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 29.6194 -6.91342 5
vertex 25 -5 5
vertex 28.5355 -8.53553 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 28.5355 -8.53553 5
vertex 25 -5 5
vertex 26.9134 -9.6194 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 -5 5
vertex 25 -10 5
vertex 26.9134 -9.6194 5
endloop
endfacet
facet normal -0 0 1
outer loop
vertex -25 -5 5
vertex 25 -10 5
vertex 25 -5 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 25 -10 5
vertex -25 -5 5
vertex -25 -10 5
endloop
endfacet
facet normal 0.555576 -0.831465 0
outer loop
vertex 26.9134 -9.6194 0
vertex 28.5355 -8.53553 5
vertex 26.9134 -9.6194 5
endloop
endfacet
facet normal 0.555576 -0.831465 0
outer loop
vertex 28.5355 -8.53553 5
vertex 26.9134 -9.6194 0
vertex 28.5355 -8.53553 0
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 25 -5 0
vertex -25 -5 5
vertex 25 -5 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -25 -5 5
vertex 25 -5 0
vertex -25 -5 0
endloop
endfacet
facet normal 0.195091 -0.980785 0
outer loop
vertex 25 -10 0
vertex 26.9134 -9.6194 5
vertex 25 -10 5
endloop
endfacet
facet normal 0.195091 -0.980785 0
outer loop
vertex 26.9134 -9.6194 5
vertex 25 -10 0
vertex 26.9134 -9.6194 0
endloop
endfacet
facet normal 0.83146 -0.555585 0
outer loop
vertex 28.5355 -8.53553 5
vertex 29.6194 -6.91342 0
vertex 29.6194 -6.91342 5
endloop
endfacet
facet normal 0.83146 -0.555585 0
outer loop
vertex 29.6194 -6.91342 0
vertex 28.5355 -8.53553 5
vertex 28.5355 -8.53553 0
endloop
endfacet
facet normal 0.980786 -0.195089 0
outer loop
vertex 29.6194 -6.91342 5
vertex 30 -5 0
vertex 30 -5 5
endloop
endfacet
facet normal 0.980786 -0.195089 0
outer loop
vertex 30 -5 0
vertex 29.6194 -6.91342 5
vertex 29.6194 -6.91342 0
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex -25 -5 5
vertex -25 5 0
vertex -25 5 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex -25 5 0
vertex -25 -5 5
vertex -25 -5 0
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -25 5 0
vertex 25 5 5
vertex -25 5 5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 25 5 5
vertex -25 5 0
vertex 25 5 0
endloop
endfacet
facet normal -1 0 0
outer loop
vertex -30 -5 0
vertex -30 5 5
vertex -30 5 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex -30 5 5
vertex -30 -5 0
vertex -30 -5 5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex -25 -10 0
vertex 25 -10 5
vertex -25 -10 5
endloop
endfacet
facet normal 0 -1 -0
outer loop
vertex 25 -10 5
vertex -25 -10 0
vertex 25 -10 0
endloop
endfacet
facet normal 0.83146 0.555585 0
outer loop
vertex 29.6194 6.91342 5
vertex 28.5355 8.53553 0
vertex 28.5355 8.53553 5
endloop
endfacet
facet normal 0.83146 0.555585 0
outer loop
vertex 28.5355 8.53553 0
vertex 29.6194 6.91342 5
vertex 29.6194 6.91342 0
endloop
endfacet
facet normal 0.555576 0.831465 -0
outer loop
vertex 28.5355 8.53553 0
vertex 26.9134 9.6194 5
vertex 28.5355 8.53553 5
endloop
endfacet
facet normal 0.555576 0.831465 0
outer loop
vertex 26.9134 9.6194 5
vertex 28.5355 8.53553 0
vertex 26.9134 9.6194 0
endloop
endfacet
facet normal 0.980786 0.195089 0
outer loop
vertex 30 5 5
vertex 29.6194 6.91342 0
vertex 29.6194 6.91342 5
endloop
endfacet
facet normal 0.980786 0.195089 0
outer loop
vertex 29.6194 6.91342 0
vertex 30 5 5
vertex 30 5 0
endloop
endfacet
facet normal 0.195091 0.980785 -0
outer loop
vertex 26.9134 9.6194 0
vertex 25 10 5
vertex 26.9134 9.6194 5
endloop
endfacet
facet normal 0.195091 0.980785 0
outer loop
vertex 25 10 5
vertex 26.9134 9.6194 0
vertex 25 10 0
endloop
endfacet
facet normal -0.555576 0.831465 0
outer loop
vertex -26.9134 9.6194 0
vertex -28.5355 8.53553 5
vertex -26.9134 9.6194 5
endloop
endfacet
facet normal -0.555576 0.831465 0
outer loop
vertex -28.5355 8.53553 5
vertex -26.9134 9.6194 0
vertex -28.5355 8.53553 0
endloop
endfacet
facet normal -0.195091 0.980785 0
outer loop
vertex -25 10 0
vertex -26.9134 9.6194 5
vertex -25 10 5
endloop
endfacet
facet normal -0.195091 0.980785 0
outer loop
vertex -26.9134 9.6194 5
vertex -25 10 0
vertex -26.9134 9.6194 0
endloop
endfacet
facet normal -0.83146 0.555585 0
outer loop
vertex -29.6194 6.91342 0
vertex -28.5355 8.53553 5
vertex -28.5355 8.53553 0
endloop
endfacet
facet normal -0.83146 0.555585 0
outer loop
vertex -28.5355 8.53553 5
vertex -29.6194 6.91342 0
vertex -29.6194 6.91342 5
endloop
endfacet
facet normal -0.980786 0.195089 0
outer loop
vertex -30 5 0
vertex -29.6194 6.91342 5
vertex -29.6194 6.91342 0
endloop
endfacet
facet normal -0.980786 0.195089 0
outer loop
vertex -29.6194 6.91342 5
vertex -30 5 0
vertex -30 5 5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 25 -5 0
vertex 25 5 5
vertex 25 5 0
endloop
endfacet
facet normal -1 -0 0
outer loop
vertex 25 5 5
vertex 25 -5 0
vertex 25 -5 5
endloop
endfacet
facet normal 1 -0 0
outer loop
vertex 30 -5 5
vertex 30 5 0
vertex 30 5 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 30 5 0
vertex 30 -5 5
vertex 30 -5 0
endloop
endfacet
facet normal 0 1 -0
outer loop
vertex 25 10 0
vertex -25 10 5
vertex 25 10 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex -25 10 5
vertex 25 10 0
vertex -25 10 0
endloop
endfacet
endsolid OpenSCAD_Model

View file

@ -0,0 +1,6 @@
# __init__.py
__all__ = ["ScadIntegrationTestCase", "IntegrationTest",
"ScadModuleTestCase", "Module", "ModuleTest", "Cube", "Square"]
from .openscadtestframework import ScadIntegrationTestCase, IntegrationTest, ScadModuleTestCase, Module, ModuleTest
from .basic_modules import Cube, Square

View file

@ -0,0 +1,28 @@
from typing import Union, List, Optional
from .openscadtestframework import Module
class Cube(Module):
def __init__(self, size: Union[int, Optional[List[int]]] = None, center: bool = False) -> None:
if size is None:
size = [1, 1, 1]
super().__init__("cube")
if isinstance(size, int):
self.add_call_args(size, center)
if isinstance(size, list):
if len(size) != 3:
raise ValueError("Cube expects list of 3")
self.add_call_args(str(size), center)
class Square(Module):
def __init__(self, size: Union[int, Optional[List[int]]] = None, center: bool = False) -> None:
if size is None:
size = [1, 1]
super().__init__("square")
if isinstance(size, int):
self.add_call_args(size, center)
if isinstance(size, list):
if len(size) != 2:
raise ValueError("Square expects list of 2")
self.add_call_args(str(size), center)

View file

@ -0,0 +1,100 @@
from __future__ import annotations
from pathlib import Path
from typing import Optional, List
from re import match, search
class Mesh():
def __init__(self, file_name: Path):
self.solid: Optional[Solid] = None
tmp_facet: Optional[Facet] = None
with file_name.open(encoding="utf-8") as input_file:
for line in input_file:
if not self.solid and match("solid", line):
self.solid = Solid(line.split()[1])
if self.solid:
if not tmp_facet and search("facet normal", line):
tmp_facet = Facet(
Vector([float(x) for x in line.split()[2:]]))
if tmp_facet:
if search("vertex", line):
tmp_facet.add_vertex(
Vector([float(x) for x in line.split()[1:]]))
if search("endfacet", line):
self.solid.add_facet(tmp_facet)
tmp_facet = None
if not self.solid:
raise ValueError("Failed to parse file")
def __eq__(self, other: object) -> bool:
if not isinstance(other, Mesh):
return NotImplemented
return self.solid == other.solid
class Vector():
def __init__(self, numbers: List[float]):
if len(numbers) != 3:
raise ValueError("List should exist of 3 numbers")
self.numbers = numbers
def __str__(self) -> str:
return str(self.numbers)
def __eq__(self, other: object) -> bool:
if not isinstance(other, Vector):
return NotImplemented
return self.numbers == other.numbers
class Solid():
def __init__(self, name: str):
self.name = name
self.facets: List[Facet] = []
def add_facet(self, facet: Facet) -> None:
self.facets.append(facet)
def __str__(self) -> str:
string = self.name + "\n"
for facet in self.facets:
string = string + str(facet) + "\n"
return string
def __eq__(self, other: object) -> bool:
if not isinstance(other, Solid):
return NotImplemented
if len(self.facets) != len(other.facets):
return False
for facet in self.facets:
if not facet in other.facets:
print(f"facet not found: {facet}")
return False
return True
class Facet():
def __init__(self, normal: Vector):
self.normal = normal
self.vertices: List[Vector] = []
def add_vertex(self, vertex: Vector) -> None:
self.vertices.append(vertex)
def __str__(self) -> str:
string = "normal:" + str(self.normal) + "\n"
for vertex in self.vertices:
string = string + str(vertex) + "\n"
return string
def __eq__(self, other: object) -> bool:
if not isinstance(other, Facet):
return NotImplemented
if not self.normal == other.normal:
return False
for vertice in self.vertices:
if not vertice in other.vertices:
return False
return True

View file

@ -0,0 +1,335 @@
from __future__ import annotations
import shutil
from pathlib import Path
from typing import Tuple, List, Union, Iterator, Dict, Any, Optional
from re import match, search
from subprocess import Popen, PIPE
from unittest import TestCase
from contextlib import contextmanager
from platform import system
from .mesh import Mesh
def count_curly_brackets_in_string(input_line: str) -> Tuple[int, int]:
return input_line.count("{"), input_line.count("}")
def to_scad_str(input_str: Any) -> str:
if isinstance(input_str, bool):
return str(input_str).lower()
return str(input_str)
class Module():
def __init__(self, name: str, content: Optional[List[str]] = None, arguments: Optional[List[str]] = None):
if content is None:
content = []
if arguments is None:
arguments = []
self.name = name
self.content = content
self.arguments = arguments
self._call_args: Tuple[Union[str, int, bool, List[int]], ...] = ()
self._call_kwargs: Dict[str, Union[str, int]] = {}
self._children: List[Module] = []
def get_module_string(self) -> str:
out_str = "module " + self.name + "("
for arg in self.arguments:
out_str = out_str + arg
if arg != self.arguments[-1]:
out_str = out_str + ","
out_str = out_str + ") {\n"
for content in self.content:
out_str = out_str + content + "\n"
out_str = out_str + "}"
return out_str
def __str__(self) -> str:
return self.get_module_string()
def add_child(self, child: Module) -> None:
self._children.append(child)\
def add_call_args(self, *args: Union[str, int, bool, List[int]], **kwargs: Union[str, int]) -> None:
self._call_args += args
self._call_kwargs.update(kwargs)
def get_call_string(self) -> str:
out_str = self.name + "("
for arg in self._call_args:
out_str += to_scad_str(arg) + ","
for key, value in self._call_kwargs.items():
out_str += key + "=" + to_scad_str(value) + ","
if out_str[-1] == ",":
out_str = out_str[:-1]
out_str += ")"
if self._children:
out_str += "{\n"
for child in self._children:
out_str += child.get_call_string() + "\n"
out_str += "}"
out_str += ";"
return out_str
@staticmethod
def from_file(module_name: str, file_name: str) -> Module:
return ModuleBuilder.from_file(module_name, file_name)
class ModuleBuilder():
@ staticmethod
def from_file(module_name: str, file_name: str) -> Module:
file_path = Path.cwd().joinpath(Path(file_name))
module_found: bool = False
open_brackets_found = 0
closed_brackets_found = 0
arguments: List[str] = []
content: List[str] = []
with file_path.open(encoding="utf8") as file:
for line in file:
if not module_found:
if match("module " + module_name + "(.*).*{", line):
open_brackets_found += 1
module_found = True
arguments = ModuleBuilder._get_arguments(line)
else:
o_brack, c_brack = count_curly_brackets_in_string(line)
open_brackets_found += o_brack
closed_brackets_found += c_brack
if open_brackets_found == closed_brackets_found:
break
content.append(line.strip("\n"))
if not module_found:
raise ValueError(
f'Module "{module_name}" not found in {file_path}')
return Module(module_name, content, arguments)
@ staticmethod
def _get_arguments(line: str) -> List[str]:
result = search(r"\((.*?)\)", line)
if result:
arguments = result.group(1).split(",")
arguments = [x.strip() for x in arguments]
return arguments
return []
class ScadTest():
def __init__(self) -> None:
pass
class IntegrationTest(ScadTest):
default_args: List[str] = ["-D$fa=12", "-D$fs=2"]
def __init__(self, test_file: str) -> None:
self.test_file = Path(test_file)
self._kwargs: Dict[str, Union[int, float, bool]] = {}
def add_arguments(self, **kwargs: Union[int, float, bool]) -> None:
self._kwargs.update(kwargs)
def get_cli_arg_list(self) -> List[str]:
tmp_list: List[str] = []
for key, value in self._kwargs.items():
tmp_list.append("-D" + key + "=" + to_scad_str(value))
tmp_list += self.default_args
return tmp_list
class ModuleTest(ScadTest):
def __init__(self, module_under_test: Module):
self.module_under_test = module_under_test
self.dependencies: List[Module] = []
self.const_files: List[Path] = []
def add_dependency(self, module: Module) -> None:
self.dependencies.append(module)
def add_arguments(self, *args: Union[int, bool, List[int]], **kwargs: Union[str, int]) -> None:
self.module_under_test.add_call_args(*args, **kwargs)
def add_children(self, children: List[Module]) -> None:
for child in children:
self.module_under_test.add_child(child)
def add_child(self, child: Module) -> None:
self.module_under_test.add_child(child)
def get_test_file_string(self) -> str:
out_str = ""
for const_file in self.const_files:
out_str += "include <" + str(const_file) + ">\n"
out_str += self._get_call_string() + "\n"
out_str += self.module_under_test.get_module_string() + "\n"
for dependency in self.dependencies:
out_str += dependency.get_module_string() + "\n"
return out_str
def add_constants_file(self, const_file: str) -> None:
full_path = Path.cwd().joinpath(Path(const_file))
if not full_path.exists():
raise FileNotFoundError(f"File does not exist {full_path}")
self.const_files.append(full_path)
def _get_call_string(self) -> str:
return self.module_under_test.get_call_string()
class TestRunner():
out_file_extention = ".stl"
output_arg: str = "-o"
expected_dir = Path.cwd().joinpath("tests/expected")
tmp_dir_prefix = "oscad_generated_test_files."
git_root_cmd = ["git", "rev-parse", "--show-toplevel"]
def __init__(self) -> None:
if (not self._check_if_run_on_root_repo()):
raise OSError(
"Should be executed in root dir of git repo.")
self.tmp_dir: Path = Path()
def Run(self, test_name: str, test: ScadTest, keep_dir: bool = False) -> None:
raise NotImplementedError()
def _check_if_run_on_root_repo(self) -> bool:
with Popen(self.git_root_cmd, stdout=PIPE, stderr=PIPE) as process:
out, _ = process.communicate()
result_path = Path(out.decode("utf-8").strip())
if result_path == Path.cwd():
return True
return False
def _get_scad_executable(self) -> str:
if system() == "Linux":
return "openscad"
if system() == "Windows":
return r'"C:\Program Files\Openscad\openscad.exe"'
if system() == "Darwin":
return r"/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD"
raise OSError(f"Unkown OS: {system()}")
def _run_openscad_command(self, in_file: Path, out_file: Path, args: Optional[List[str]] = None) -> None:
if args is None:
args = []
cmd = [self._get_scad_executable(), self.output_arg,
str(out_file), str(in_file)] + args
# Workaround for Windows PermissionError with shell=False
if system() == "Windows":
tmp_cmd: str = ""
for item in cmd:
tmp_cmd += item + " "
with Popen(tmp_cmd, stdout=PIPE, stderr=PIPE, shell=True) as process:
_, stderr = process.communicate()
if process.returncode != 0:
err_mesage = stderr.decode("utf-8")
raise OSError(
f"openscad failed executing with message:\n{err_mesage}")
return
# End workaround
with Popen(cmd, stdout=PIPE, stderr=PIPE) as process:
_, stderr = process.communicate()
if process.returncode != 0:
err_mesage = stderr.decode("utf-8")
raise OSError(
f"openscad failed executing with message:\n{err_mesage}")
def _compare_output(self, expected: Path, current: Path) -> None:
expected_mesh = Mesh(expected)
current_mesh = Mesh(current)
if expected_mesh != current_mesh:
raise AssertionError("Stl files are not equal")
@ contextmanager
def _temp_dir(self, test_name: str, keep_dir: bool = False) -> Iterator[None]:
self.tmp_dir = Path.cwd().joinpath(Path("oscad_generated_test_files." + test_name))
if self.tmp_dir.exists():
shutil.rmtree(self.tmp_dir)
self.tmp_dir.mkdir()
yield
if not keep_dir:
shutil.rmtree(self.tmp_dir)
class IntegrationTestRunner(TestRunner):
def __init__(self) -> None:
super().__init__()
self.out_file: Path = Path()
def Run(self, test_name: str, test: ScadTest, keep_dir: bool = False) -> None:
if not isinstance(test, IntegrationTest):
raise ValueError("Test should be of type IntegrationTest")
with self._temp_dir(test_name, keep_dir):
self.out_file = Path(test_name + self.out_file_extention)
self._run_openscad_command(
test.test_file, self.tmp_dir.joinpath(self.out_file), test.get_cli_arg_list())
self._compare_output(self.expected_dir.joinpath(
self.out_file), self.tmp_dir.joinpath(self.out_file))
class ModuleTestRunner(TestRunner):
test_scad_file: Path = Path("test.scad")
def __init__(self) -> None:
super().__init__()
self.tmp_dir: Path = Path()
self.out_file: Path = Path()
def Run(self, test_name: str, test: ScadTest, keep_dir: bool = False) -> None:
if not isinstance(test, ModuleTest):
raise ValueError("Test should be of type ModuleTest")
with self._temp_dir(test_name, keep_dir):
self.out_file = Path(test_name + self.out_file_extention)
file_path = self._create_scadfile(test)
self._run_scadfile(file_path)
self._compare_output(self.expected_dir.joinpath(
self.out_file), self.tmp_dir.joinpath(self.out_file))
def _run_scadfile(self, file_path: Path) -> None:
self._run_openscad_command(
file_path, self.tmp_dir.joinpath(self.out_file))
def _create_scadfile(self, module_test: ModuleTest) -> Path:
file_path = self.tmp_dir.joinpath(self.test_scad_file)
with open(file_path, "w", encoding="utf8") as infile:
infile.write(module_test.get_test_file_string())
return file_path
class ScadModuleTestCase(TestCase):
_runner = ModuleTestRunner()
def scad_module_test(self, module_test: ModuleTest, keep_files: bool = False) -> None:
self._runner.Run(self.id(), module_test, keep_files)
class ScadIntegrationTestCase(TestCase):
_runner = IntegrationTestRunner()
def run_test(self, int_test: IntegrationTest, keep_files: bool = False) -> None:
self._runner.Run(self.id(), int_test, keep_files)

View file

@ -0,0 +1,28 @@
from openscadtestframework import ScadIntegrationTestCase, IntegrationTest
# these tescases are all wrong, there is a bug in the baseplates which affects almost all renders
class baseplate(ScadIntegrationTestCase):
def setUp(self) -> None:
self.int_test = IntegrationTest("gridfinity-rebuilt-baseplate.scad")
def test_default(self) -> None:
self.run_test(self.int_test)
def test_fit_to_drawer(self) -> None:
self.int_test.add_arguments(
distancex=200, distancey=250, fitx=-0.5, fity=0.7)
self.run_test(self.int_test)
def test_screw_together(self) -> None:
self.int_test.add_arguments(style_plate=3)
self.run_test(self.int_test)
def test_skeletonized(self) -> None:
self.int_test.add_arguments(style_plate=2)
self.run_test(self.int_test)
def test_weigthed(self) -> None:
self.int_test.add_arguments(style_plate=1)
self.run_test(self.int_test)

45
tests/test_int_bins.py Normal file
View file

@ -0,0 +1,45 @@
from openscadtestframework import ScadIntegrationTestCase, IntegrationTest
import unittest
class bins(ScadIntegrationTestCase):
def setUp(self) -> None:
self.int_test = IntegrationTest("gridfinity-rebuilt-bins.scad")
def test_default(self) -> None:
self.run_test(self.int_test)
def test_2x2x3(self) -> None:
self.int_test.add_arguments(gridx=2, gridy=2, gridz=3)
self.run_test(self.int_test)
def test_compartment_3x2(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=6, divx=3, divy=2, style_tab=5)
self.run_test(self.int_test)
@unittest.skip("Feature broken, fixed in another branch")
def test_style_corner(self) -> None:
self.int_test.add_arguments(
gridx=2, gridy=2, gridz=6, style_corner=True)
self.run_test(self.int_test)
def test_gridz_define_1(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=20, gridz_define=1)
self.run_test(self.int_test)
def test_gridz_define_2(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=30, gridz_define=2)
self.run_test(self.int_test)
def test_no_holes(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=6, style_hole=0)
self.run_test(self.int_test)
def test_div_base_2x3(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=6, div_base_x=2, div_base_y=3)
self.run_test(self.int_test)

33
tests/test_int_lite.py Normal file
View file

@ -0,0 +1,33 @@
from openscadtestframework import ScadIntegrationTestCase, IntegrationTest
class lite(ScadIntegrationTestCase):
def setUp(self) -> None:
self.int_test = IntegrationTest("gridfinity-rebuilt-lite.scad")
def test_default(self) -> None:
self.run_test(self.int_test)
def test_2x2x3(self) -> None:
self.int_test.add_arguments(gridx=2, gridy=2, gridz=3)
self.run_test(self.int_test)
def test_compartment_3x2(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=6, divx=3, divy=2, style_tab=5)
self.run_test(self.int_test)
def test_gridz_define_1(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=20, gridz_define=1)
self.run_test(self.int_test)
def test_gridz_define_2(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=30, gridz_define=2)
self.run_test(self.int_test)
def test_div_base_2x3(self) -> None:
self.int_test.add_arguments(
gridx=1, gridy=1, gridz=6, div_base_x=2, div_base_y=3)
self.run_test(self.int_test)

21
tests/test_int_vase.py Normal file
View file

@ -0,0 +1,21 @@
from openscadtestframework import ScadIntegrationTestCase, IntegrationTest
class vase(ScadIntegrationTestCase):
def setUp(self) -> None:
self.int_test = IntegrationTest("gridfinity-spiral-vase.scad")
def test_default(self) -> None:
self.run_test(self.int_test)
def test_default_base(self) -> None:
self.int_test.add_arguments(type=1)
self.run_test(self.int_test)
def test_printer_settings(self) -> None:
self.int_test.add_arguments(nozzle=0.8, layer=0.5, bottom_layer=2)
self.run_test(self.int_test)
def test_general_bin_settings(self) -> None:
self.int_test.add_arguments(gridx=2, gridy=2, gridz=3, n_divx=4)
self.run_test(self.int_test)

View file

@ -0,0 +1,14 @@
from openscadtestframework import ScadModuleTestCase, Module, ModuleTest
class cutter_weight(ScadModuleTestCase):
def test_cutter_weight(self) -> None:
module = Module.from_file(
"cutter_weight", "gridfinity-rebuilt-baseplate.scad")
module_test = ModuleTest(module)
module_test.add_constants_file("gridfinity-constants.scad")
module_test.add_dependency(Module.from_file(
"pattern_circular", "gridfinity-rebuilt-utility.scad"))
self.scad_module_test(module_test)

138
tests/test_unit_utility.py Normal file
View file

@ -0,0 +1,138 @@
from openscadtestframework import ScadModuleTestCase, Module, ModuleTest, Cube, Square
class block_base(ScadModuleTestCase):
def setUp(self) -> None:
self.module = Module.from_file(
"block_base_hole", "gridfinity-rebuilt-utility.scad")
self.module_test = ModuleTest(self.module)
self.module_test.add_constants_file("gridfinity-constants.scad")
def test_hole_style_0(self) -> None:
self.module_test.add_arguments(style_hole=0)
self.scad_module_test(self.module_test)
def test_hole_style_1(self) -> None:
self.module_test.add_arguments(style_hole=1)
self.scad_module_test(self.module_test)
def test_hole_style_2(self) -> None:
self.module_test.add_arguments(style_hole=2)
self.scad_module_test(self.module_test)
def test_hole_style_3(self) -> None:
self.module_test.add_arguments(style_hole=3)
self.module_test.add_dependency(Module.from_file(
"copy_mirror", "gridfinity-rebuilt-utility.scad"))
self.scad_module_test(self.module_test)
class rounded_rectangle(ScadModuleTestCase):
def setUp(self) -> None:
self.module = Module.from_file(
"rounded_rectangle", "gridfinity-rebuilt-utility.scad")
self.module_test = ModuleTest(self.module)
def test_basic(self) -> None:
self.module_test.add_arguments(50, 35, 20, 5)
self.scad_module_test(self.module_test)
def test_basic_different(self) -> None:
self.module_test.add_arguments(30, 60, 50, 2)
self.scad_module_test(self.module_test)
class pattern_linear(ScadModuleTestCase):
def setUp(self) -> None:
self.module = Module.from_file(
"pattern_linear", "gridfinity-rebuilt-utility.scad")
self.module_test = ModuleTest(self.module)
def test_no_values(self) -> None:
self.module_test.add_child(Cube([1, 2, 3], True))
self.scad_module_test(self.module_test)
def test_x_axis(self) -> None:
self.module_test.add_arguments(x=3, sx=10)
self.module_test.add_child(Cube([1, 2, 3], True))
self.scad_module_test(self.module_test)
def test_y_axis(self) -> None:
self.module_test.add_arguments(y=3, sy=10)
self.module_test.add_child(Cube([1, 2, 3], True))
self.scad_module_test(self.module_test)
def test_both_axes(self) -> None:
self.module_test.add_arguments(x=3, y=3, sx=10, sy=10)
self.module_test.add_child(Cube([1, 2, 3], True))
self.scad_module_test(self.module_test)
class pattern_circular(ScadModuleTestCase):
def setUp(self) -> None:
self.module = Module.from_file(
"pattern_circular", "gridfinity-rebuilt-utility.scad")
self.module_test = ModuleTest(self.module)
def test_no_args(self) -> None:
self.module_test.add_child(Cube([1, 2, 3], False))
self.scad_module_test(self.module_test)
def test_3(self) -> None:
self.module_test.add_arguments(3)
self.module_test.add_child(Cube([1, 2, 3], False))
self.scad_module_test(self.module_test)
class copy_mirror(ScadModuleTestCase):
def setUp(self) -> None:
self.module = Module.from_file(
"copy_mirror", "gridfinity-rebuilt-utility.scad")
self.module_test = ModuleTest(self.module)
def test_no_args(self) -> None:
self.module_test.add_child(Cube([1, 2, 3], False))
self.scad_module_test(self.module_test)
def test_with_args(self) -> None:
self.module_test.add_arguments([8, 4, 9])
self.module_test.add_child(Cube([1, 2, 3], False))
self.scad_module_test(self.module_test)
class rounded_square(ScadModuleTestCase):
def setUp(self) -> None:
self.module = Module.from_file(
"rounded_square", "gridfinity-rebuilt-utility.scad")
self.module_test = ModuleTest(self.module)
self.module_test.add_dependency(Module.from_file(
"rounded_rectangle", "gridfinity-rebuilt-utility.scad"))
def test(self) -> None:
self.module_test.add_arguments(20, 30, 2)
self.scad_module_test(self.module_test)
class sweep_rounded(ScadModuleTestCase):
def setUp(self) -> None:
self.module = Module.from_file(
"sweep_rounded", "gridfinity-rebuilt-utility.scad")
self.module_test = ModuleTest(self.module)
self.module_test.add_dependency(Module.from_file(
"pattern_circular", "gridfinity-rebuilt-utility.scad"))
self.module_test.add_dependency(Module.from_file(
"copy_mirror", "gridfinity-rebuilt-utility.scad"))
def test_no_args(self) -> None:
self.module_test.add_child(Square(5, False))
self.scad_module_test(self.module_test)
def test_width(self) -> None:
self.module_test.add_arguments(w=50)
self.module_test.add_child(Square(5, False))
self.scad_module_test(self.module_test)
def test_height(self) -> None:
self.module_test.add_arguments(h=50)
self.module_test.add_child(Square(5, False))
self.scad_module_test(self.module_test)