mirror of https://github.com/vitalif/openscad
Merge branch 'search_function' of https://github.com/clothbot/openscad into clothbot-search_function
commit
4f8c89ecf0
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by Qt Creator 2.4.1, 2012-02-09T21:15:55. -->
|
||||
<!-- Written by Qt Creator 2.4.1, 2012-02-15T08:41:23. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
|
@ -103,7 +103,7 @@
|
|||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/Users/clothbot/Projects/github/clothbot/openscad-build-desktop</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-build-desktop</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">-1</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
|
@ -124,7 +124,7 @@
|
|||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-j4</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
|
@ -151,14 +151,14 @@
|
|||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges">
|
||||
<value type="QString">OPENSCAD_LIBRARIES=$$PWD/../libraries/install</value>
|
||||
<value type="QString">CCACHE_BASEDIR=$$PWD/..</value>
|
||||
<value type="QString">PATH=/opt/local/libexec/ccache:/usr/bin:/Users/clothbot/QtSDK/Desktop/Qt/474/gcc/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</value>
|
||||
<value type="QString">PATH=/opt/local/libexec/ccache:/usr/bin:$QTDIR/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin</value>
|
||||
<value type="QString">EIGEN2DIR=$$PWD/../libraries/install/include/eigen2</value>
|
||||
</valuelist>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 4.7.4 for GCC (Qt SDK) Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/Users/clothbot/Projects/github/clothbot/openscad</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">3</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
|
||||
</valuemap>
|
||||
|
@ -208,7 +208,7 @@
|
|||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/Users/clothbot/Projects/github/clothbot/openscad-build-desktop</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-build-desktop</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">-1</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
|
@ -258,7 +258,7 @@
|
|||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/Users/clothbot/Projects/github/clothbot/openscad-build-desktop</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-build-desktop</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">-1</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
|
@ -310,7 +310,7 @@
|
|||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 4.7.4 for GCC (Qt SDK)</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/Users/clothbot/Projects/github/clothbot/openscad-release-desktop</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">$$PWD/../openscad-release-desktop</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">3</value>
|
||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
|
|
|
@ -6,6 +6,9 @@ export DYLD_LIBRARY_PATH=$OPENSCAD_LIBRARIES/lib
|
|||
#export QCODEEDITDIR=$PWD/../qcodeedit-2.2.3/install
|
||||
#export DYLD_LIBRARY_PATH=$OPENCSGDIR/lib:$QCODEEDITDIR/lib
|
||||
|
||||
export QTDIR=`qmake -query "QT_INSTALL_PREFIX"`
|
||||
export PATH=$QTDIR/bin:$PATH
|
||||
|
||||
# ccache:
|
||||
export PATH=/opt/local/libexec/ccache:$PATH
|
||||
export CCACHE_BASEDIR=$PWD/..
|
||||
|
|
144
src/func.cc
144
src/func.cc
|
@ -33,6 +33,7 @@
|
|||
#include "mathc99.h"
|
||||
#include <algorithm>
|
||||
#include "stl-utils.h"
|
||||
#include "printutils.h"
|
||||
|
||||
AbstractFunction::~AbstractFunction()
|
||||
{
|
||||
|
@ -345,6 +346,148 @@ Value builtin_lookup(const Context *, const std::vector<std::string>&, const std
|
|||
return Value(high_v * f + low_v * (1-f));
|
||||
}
|
||||
|
||||
/*
|
||||
Pattern:
|
||||
|
||||
"search" "(" ( match_value | list_of_match_values ) "," vector_of_vectors
|
||||
("," num_returns_per_match
|
||||
("," index_col_num )? )?
|
||||
")";
|
||||
match_value : ( Value::NUMBER | Value::STRING );
|
||||
list_of_values : "[" match_value ("," match_value)* "]";
|
||||
vector_of_vectors : "[" ("[" Value ("," Value)* "]")+ "]";
|
||||
num_returns_per_match : int;
|
||||
index_col_num : int;
|
||||
|
||||
Examples:
|
||||
Index values return as list:
|
||||
search("a","abcdabcd");
|
||||
- returns [0,4]
|
||||
search("a","abcdabcd",1);
|
||||
- returns [0]
|
||||
search("e","abcdabcd",1);
|
||||
- returns []
|
||||
search("a",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",9] ]);
|
||||
- returns [0,4]
|
||||
|
||||
Search on different column; return Index values:
|
||||
search(3,[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",3] ], 0, 1);
|
||||
- returns [0,8]
|
||||
|
||||
Search on list of values:
|
||||
Return all matches per search vector element:
|
||||
search("abc",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",9] ], 0);
|
||||
- returns [[0,4],[1,5],[2,6]]
|
||||
|
||||
Return first match per search vector element; special case return vector:
|
||||
search("abc",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",9] ], 1);
|
||||
- returns [0,1,2]
|
||||
|
||||
Return first two matches per search vector element; vector of vectors:
|
||||
search("abce",[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",9] ], 2);
|
||||
- returns [[0,4],[1,5],[2,6],[8]]
|
||||
|
||||
*/
|
||||
Value builtin_search(const Context *, const std::vector<std::string>&, const std::vector<Value> &args)
|
||||
{
|
||||
Value findThis;
|
||||
Value searchTable;
|
||||
Value returnVector;
|
||||
returnVector.type = Value::VECTOR;
|
||||
unsigned int num_returns_per_match = 1;
|
||||
unsigned int index_col_num=0;
|
||||
if (args.size() < 2 )
|
||||
return Value();
|
||||
findThis=args[0];
|
||||
// PRINTB(" builtin_search: findThis = %s",findThis);
|
||||
searchTable=args[1];
|
||||
// PRINTB(" builtin_search: searchTable = %s",searchTable);
|
||||
if ( args.size() > 2 ) num_returns_per_match=args[2].num;
|
||||
if ( args.size() > 3 ) index_col_num=args[3].num;
|
||||
if ( findThis.type==Value::NUMBER ) {
|
||||
// PRINTB(" builtin_search: findThis type: NUMBER %s",findThis);
|
||||
unsigned int matchCount=0;
|
||||
Value *resultVector = new Value();
|
||||
resultVector->type = Value::VECTOR;
|
||||
for (size_t j = 0; j < searchTable.vec.size(); j++) {
|
||||
if ( searchTable.vec[j]->vec[index_col_num]->type==Value::NUMBER && findThis.num == searchTable.vec[j]->vec[index_col_num]->num ) {
|
||||
Value *resultValue;
|
||||
resultValue = new Value(double(j));
|
||||
returnVector.append(resultValue);
|
||||
matchCount++;
|
||||
if(num_returns_per_match!=0 && matchCount>=num_returns_per_match) break;
|
||||
}
|
||||
}
|
||||
} else if ( findThis.type==Value::STRING ) {
|
||||
//PRINTB(" builtin_search: findThis type STRING %s",findThis);
|
||||
//PRINTB(" builtin_search: checking findThis.text.size()==%s",findThis.text.size());
|
||||
unsigned int searchTableSize;
|
||||
if(searchTable.type == Value::STRING) {
|
||||
searchTableSize=searchTable.text.size();
|
||||
} else {
|
||||
searchTableSize=searchTable.vec.size();
|
||||
}
|
||||
for (size_t i = 0; i < findThis.text.size(); i++) {
|
||||
unsigned int matchCount=0;
|
||||
Value *resultVector = new Value();
|
||||
resultVector->type = Value::VECTOR;
|
||||
for (size_t j = 0; j < searchTableSize; j++) {
|
||||
// PRINTB(" builtin_search: checking findThis.text[i]==%s",findThis.text[i]);
|
||||
if ( searchTable.type==Value::VECTOR && findThis.text[i] == searchTable.vec[j]->vec[index_col_num]->text[0]
|
||||
|| searchTable.type==Value::STRING && findThis.text[i] == searchTable.text[j]
|
||||
) {
|
||||
Value *resultValue;
|
||||
resultValue = new Value(double(j));
|
||||
matchCount++;
|
||||
if(num_returns_per_match==1) {
|
||||
returnVector.append(resultValue);
|
||||
break;
|
||||
} else {
|
||||
resultVector->append(resultValue);
|
||||
}
|
||||
if(num_returns_per_match>1 && matchCount>=num_returns_per_match) break;
|
||||
}
|
||||
}
|
||||
if(matchCount==0) PRINTB(" search term not found: \"%s\"",findThis.text[i]);
|
||||
if(num_returns_per_match==0 || num_returns_per_match>1) returnVector.append(resultVector);
|
||||
}
|
||||
;
|
||||
} else if ( findThis.type==Value::VECTOR ) {
|
||||
// PRINTB(" builtin_search: findThis type: VECTOR %s",findThis);
|
||||
for (size_t i = 0; i < findThis.vec.size(); i++) {
|
||||
unsigned int matchCount=0;
|
||||
Value *resultVector = new Value();
|
||||
resultVector->type = Value::VECTOR;
|
||||
for (size_t j = 0; j < searchTable.vec.size(); j++) {
|
||||
Value *resultValue;
|
||||
resultValue = new Value(double(j));
|
||||
if ( findThis.vec[i]->type==Value::NUMBER && searchTable.vec[j]->vec[index_col_num]->type==Value::NUMBER && findThis.vec[i]->num == searchTable.vec[j]->vec[index_col_num]->num
|
||||
|| findThis.vec[i]->type==Value::STRING && searchTable.vec[j]->vec[index_col_num]->type==Value::STRING && findThis.vec[i]->text == searchTable.vec[j]->vec[index_col_num]->text ) {
|
||||
resultValue = new Value(double(j));
|
||||
matchCount++;
|
||||
if(num_returns_per_match==1) {
|
||||
returnVector.append(resultValue);
|
||||
break;
|
||||
} else {
|
||||
resultVector->append(resultValue);
|
||||
}
|
||||
if(num_returns_per_match>1 && matchCount>=num_returns_per_match) break;
|
||||
}
|
||||
}
|
||||
if( num_returns_per_match==1 && matchCount==0 ) {
|
||||
if(findThis.vec[i]->type==Value::NUMBER) PRINTB(" search term not found: %s",findThis.vec[i]->num);
|
||||
if(findThis.vec[i]->type==Value::STRING) PRINTB(" search term not found: \"%s\"",findThis.vec[i]->text);
|
||||
returnVector.append(resultVector);
|
||||
}
|
||||
if(num_returns_per_match==0 || num_returns_per_match>1) returnVector.append(resultVector);
|
||||
}
|
||||
} else {
|
||||
PRINTB(" search: none performed on input %s",findThis);
|
||||
return Value();
|
||||
}
|
||||
return returnVector;
|
||||
}
|
||||
|
||||
#define QUOTE(x__) # x__
|
||||
#define QUOTED(x__) QUOTE(x__)
|
||||
|
||||
|
@ -397,6 +540,7 @@ void register_builtin_functions()
|
|||
Builtins::init("ln", new BuiltinFunction(&builtin_ln));
|
||||
Builtins::init("str", new BuiltinFunction(&builtin_str));
|
||||
Builtins::init("lookup", new BuiltinFunction(&builtin_lookup));
|
||||
Builtins::init("search", new BuiltinFunction(&builtin_search));
|
||||
Builtins::init("version", new BuiltinFunction(&builtin_version));
|
||||
Builtins::init("version_num", new BuiltinFunction(&builtin_version_num));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
// fonts test
|
||||
|
||||
use <MCAD/fonts.scad>
|
||||
|
||||
thisFont=8bit_polyfont();
|
||||
thisText="OpenSCAD Rocks!";
|
||||
// Find one letter matches from 2nd column (index 1)
|
||||
theseIndicies=search(thisText,thisFont[2],1,1);
|
||||
// Letter spacing, x direction.
|
||||
x_shift=thisFont[0][0];
|
||||
y_shift=thisFont[0][1];
|
||||
echo(theseIndicies);
|
||||
// Simple polygon usage.
|
||||
for(i=[0:len(theseIndicies)-1]) translate([i*x_shift-len(theseIndicies)*x_shift/2,0]) {
|
||||
polygon(points=thisFont[2][theseIndicies[i]][6][0],paths=thisFont[2][theseIndicies[i]][6][1]);
|
||||
}
|
||||
|
||||
theseIndicies2=search("ABC",thisFont[2],1,1);
|
||||
// outline_2d() example
|
||||
for(i=[0:len(theseIndicies2)-1]) translate([i*x_shift-len(theseIndicies2)*x_shift,-y_shift]) {
|
||||
outline_2d(outline=true,points=thisFont[2][theseIndicies2[i]][6][0],paths=thisFont[2][theseIndicies2[i]][6][1],width=0.25);
|
||||
}
|
||||
|
||||
theseIndicies3=search("123",thisFont[2],1,1);
|
||||
// bold_2d() outline_2d(false) example
|
||||
for(i=[0:len(theseIndicies3)-1]) translate([i*x_shift,-2*y_shift]) {
|
||||
bold_2d(bold=true,width=0.25,resolution=8)
|
||||
outline_2d(false,thisFont[2][theseIndicies3[i]][6][0],thisFont[2][theseIndicies3[i]][6][1]);
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
// string searches
|
||||
|
||||
simpleSearch1=search("a","abcdabcd");
|
||||
echo(str("Characters in string (\"a\"): ",simpleSearch1));
|
||||
|
||||
simpleSearch2=search("adeq","abcdeabcd",0);
|
||||
echo(str("Characters in string (\"adeq\"): ",simpleSearch2));
|
||||
|
||||
sTable1=[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",9] ];
|
||||
s1= search("abe",sTable1);
|
||||
echo(str("Default string search (\"abe\"): ",s1));
|
||||
|
||||
sTable2=[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",9],["a",10],["a",11] ];
|
||||
s2= search("abe",sTable2,0);
|
||||
echo(str("Return all matches for string search (\"abe\"): ",s2));
|
||||
|
||||
sTable3=[ ["a",1],["b",2],["c",3],["d",4],["a",5],["b",6],["c",7],["d",8],["e",9],["a",10],["a",11] ];
|
||||
s3= search("abe",sTable3,2);
|
||||
echo(str("Return up to 2 matches for string search (\"abe\"): ",s3));
|
||||
|
||||
sTable4=[ [1,"a",[20]],[2,"b",21],[3,"c",22],[4,"d",23],[5,"a",24],[6,"b",25],[7,"c",26],[8,"d",27],[9,"e",28],[10,"a",29],[11,"a",30] ];
|
||||
s4= search("aebe",sTable4,2,1);
|
||||
echo(str("Return up to 2 matches for string search; alternate columns (\"aebe\"): ",s4));
|
||||
|
||||
// s5= search("abe",sTable4,2,1,3); // bounds checking needs fixing.
|
||||
// echo(str("Return up to 2 matches for string search; alternate columns: ",s4));
|
||||
|
||||
|
||||
// number searches
|
||||
nTable1=[ [1,"a"],[3,"b"],[2,"c"],[4,"d"],[1,"a"],[7,"b"],[2,"c"],[8,"d"],[9,"e"],[10,"a"],[1,"a"] ];
|
||||
n1 = search(7,nTable1);
|
||||
echo(str("Default number search (7): ",n1));
|
||||
n2 = search(1,nTable1,0);
|
||||
echo(str("Return all matches for number search (1): ",n2));
|
||||
n3 = search(1,nTable1,2);
|
||||
echo(str("Return up to 2 matches for number search (1): ",n3));
|
||||
|
||||
// list searches
|
||||
lTable1=[ [1,"a"],[3,"b"],[2,"c"],[4,"d"],[1,"a"],[7,"b"],[2,"c"],[8,"d"],[9,"e"],[10,"a"],[1,"a"] ];
|
||||
lSearch1=[1,3,1000];
|
||||
l1=search(lSearch1,lTable1);
|
||||
echo(str("Default list number search (",lSearch1,"): ",l1));
|
||||
|
||||
lTable2=[ ["cat",1],["b",2],["c",3],["dog",4],["a",5],["b",6],["c",7],["d",8],["e",9],["apple",10],["a",11] ];
|
||||
lSearch2=["b","zzz","a","c","apple","dog"];
|
||||
l2=search(lSearch2,lTable2);
|
||||
echo(str("Default list string search (",lSearch2,"): ",l2));
|
||||
|
||||
lTable3=[ ["cat",1],["b",2],["c",3],[4,"dog"],["a",5],["b",6],["c",7],["d",8],["e",9],["apple",10],["a",11] ];
|
||||
lSearch3=["b",4,"zzz","c","apple",500,"a",""];
|
||||
l3=search(lSearch3,lTable3);
|
||||
echo(str("Default list mixed search (",lSearch3,"): ",l3));
|
||||
|
||||
l4=search(lSearch3,lTable3,0);
|
||||
echo(str("Return all matches for mixed search (",lSearch3,"): ",l4));
|
||||
|
||||
lSearch5=[1,"zz","dog",500,11];
|
||||
l5=search(lSearch5,lTable3,0,1);
|
||||
echo(str("Return all matches for mixed search; alternate columns (",lSearch5,"): ",l5));
|
||||
|
||||
|
||||
// for completeness
|
||||
cube(1.0);
|
|
@ -616,7 +616,8 @@ list(APPEND ECHO_FILES ${FUNCTION_FILES}
|
|||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/dim-all.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/string-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/string-indexing.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/vector-values.scad)
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/vector-values.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/search-tests.scad)
|
||||
|
||||
list(APPEND DUMPTEST_FILES ${MINIMAL_FILES} ${FEATURES_FILES} ${EXAMPLE_FILES})
|
||||
list(APPEND DUMPTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/escape-test.scad
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,848 @@
|
|||
group();
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -60], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 2], [6, 2], [6, 1], [3, 2], [3, 6], [5, 6], [5, 2]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -52], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[1, 0], [1, 6], [6, 6], [6, 5], [7, 5], [7, 3], [6, 3], [6, 2], [3, 2], [3, 0], [3, 3], [3, 5], [5, 5], [5, 3]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -44], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 5], [2, 5], [2, 6], [6, 6], [6, 5], [7, 5], [7, 3], [3, 3], [3, 2], [6, 2], [6, 1], [3, 4], [3, 5], [5, 5], [5, 4]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [14, 15, 16, 17]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -36], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[1, 1], [1, 6], [6, 6], [6, 5], [7, 5], [7, 1], [5, 1], [5, 5], [3, 5], [3, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -28], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[2, 1], [2, 2], [5, 2], [5, 4], [2, 4], [2, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [3, 6], [3, 5], [6, 5], [6, 4], [7, 4], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [5, 5], [5, 6], [3, 6], [3, 2], [5, 2], [5, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[1, 1], [1, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 6], [6, 6], [6, 5], [7, 5], [7, 1], [5, 1], [5, 2], [3, 2], [3, 1], [3, 3], [3, 5], [5, 5], [5, 3]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, -4], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[1, 1], [1, 7], [5, 7], [5, 6], [6, 6], [6, 5], [7, 5], [7, 3], [6, 3], [6, 2], [5, 2], [5, 1], [3, 2], [3, 6], [4, 6], [4, 5], [5, 5], [5, 3], [4, 3], [4, 2]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18, 19]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 4], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = undef, paths = undef, convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 12], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[1, 1], [1, 7], [6, 7], [6, 6], [7, 6], [7, 4], [6, 4], [6, 2], [7, 2], [7, 1], [5, 1], [5, 2], [4, 2], [4, 3], [3, 3], [3, 1], [3, 4], [3, 6], [5, 6], [5, 4]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [16, 17, 18, 19]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 20], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 5], [2, 5], [2, 6], [6, 6], [6, 5], [7, 5], [7, 2], [6, 2], [6, 1], [3, 2], [3, 5], [5, 5], [5, 2]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 28], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 5], [2, 5], [2, 6], [6, 6], [6, 5], [3, 5], [3, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 36], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[1, 1], [1, 7], [3, 7], [3, 4], [4, 4], [4, 5], [6, 5], [6, 4], [5, 4], [5, 3], [6, 3], [6, 2], [7, 2], [7, 1], [5, 1], [5, 2], [4, 2], [4, 3], [3, 3], [3, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 44], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[1, 1], [1, 2], [5, 2], [5, 3], [2, 3], [2, 4], [1, 4], [1, 5], [2, 5], [2, 6], [7, 6], [7, 5], [3, 5], [3, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]], convexity = 1);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 52], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
polygon(points = [[3, 1], [3, 2], [5, 2], [5, 1], [3, 3], [3, 7], [5, 7], [5, 3]], paths = [[0, 1, 2, 3], [4, 5, 6, 7]], convexity = 1);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -24], [0, 1, 0, -8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
group() {
|
||||
union() {
|
||||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
union() {
|
||||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, -16], [0, 1, 0, -8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
group() {
|
||||
union() {
|
||||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
union() {
|
||||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
union() {
|
||||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 4], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, -8], [0, 1, 0, -8], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
group() {
|
||||
union() {
|
||||
group() {
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 1], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 7], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 5], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 6], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 3], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 5], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 3], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 7], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 2], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
hull() {
|
||||
multmatrix([[1, 0, 0, 6], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
multmatrix([[1, 0, 0, 2], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
circle($fn = 8, $fa = 12, $fs = 2, r = 0.125);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0], [0, 1, 0, -16], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
group() {
|
||||
union() {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.25], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.176777], [0, 1, 0, 0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 1.53081e-17], [0, 1, 0, 0.25], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.176777], [0, 1, 0, 0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.25], [0, 1, 0, 3.06162e-17], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.176777], [0, 1, 0, -0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -4.59243e-17], [0, 1, 0, -0.25], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.176777], [0, 1, 0, -0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [3, 2], [3, 5], [2, 5], [2, 6], [3, 6], [3, 7], [5, 7], [5, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 8], [0, 1, 0, -16], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
group() {
|
||||
union() {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.25], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.176777], [0, 1, 0, 0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 1.53081e-17], [0, 1, 0, 0.25], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.176777], [0, 1, 0, 0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.25], [0, 1, 0, 3.06162e-17], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.176777], [0, 1, 0, -0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -4.59243e-17], [0, 1, 0, -0.25], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.176777], [0, 1, 0, -0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[1, 1], [1, 2], [2, 2], [2, 3], [3, 3], [3, 4], [4, 4], [4, 5], [5, 5], [5, 6], [3, 6], [3, 5], [1, 5], [1, 6], [2, 6], [2, 7], [6, 7], [6, 6], [7, 6], [7, 5], [6, 5], [6, 4], [5, 4], [5, 3], [4, 3], [4, 2], [3, 2], [7, 2], [7, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
multmatrix([[1, 0, 0, 16], [0, 1, 0, -16], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
group() {
|
||||
union() {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
group() {
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.25], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.176777], [0, 1, 0, 0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 1.53081e-17], [0, 1, 0, 0.25], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.176777], [0, 1, 0, 0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.25], [0, 1, 0, 3.06162e-17], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -0.176777], [0, 1, 0, -0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, -4.59243e-17], [0, 1, 0, -0.25], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group() {
|
||||
multmatrix([[1, 0, 0, 0.176777], [0, 1, 0, -0.176777], [0, 0, 1, 0], [0, 0, 0, 1]]) {
|
||||
group() {
|
||||
group() {
|
||||
polygon(points = [[2, 1], [2, 2], [1, 2], [1, 3], [3, 3], [3, 2], [5, 2], [5, 3], [4, 3], [4, 4], [3, 4], [3, 5], [4, 5], [4, 6], [1, 6], [1, 7], [7, 7], [7, 6], [6, 6], [6, 5], [5, 5], [5, 4], [6, 4], [6, 3], [7, 3], [7, 2], [6, 2], [6, 1]], paths = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]], convexity = 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
search term not found: "q"
|
||||
search term not found: 1000
|
||||
search term not found: "zzz"
|
||||
search term not found: "zzz"
|
||||
search term not found: 500
|
||||
search term not found: ""
|
||||
ECHO: "Characters in string (\"a\"): [0]"
|
||||
ECHO: "Characters in string (\"adeq\"): [[0, 5], [3, 8], [4], []]"
|
||||
ECHO: "Default string search (\"abe\"): [0, 1, 8]"
|
||||
ECHO: "Return all matches for string search (\"abe\"): [[0, 4, 9, 10], [1, 5], [8]]"
|
||||
ECHO: "Return up to 2 matches for string search (\"abe\"): [[0, 4], [1, 5], [8]]"
|
||||
ECHO: "Return up to 2 matches for string search; alternate columns (\"aebe\"): [[0, 4], [8], [1, 5], [8]]"
|
||||
ECHO: "Default number search (7): [5]"
|
||||
ECHO: "Return all matches for number search (1): [0, 4, 10]"
|
||||
ECHO: "Return up to 2 matches for number search (1): [0, 4]"
|
||||
ECHO: "Default list number search ([1, 3, 1000]): [0, 1, []]"
|
||||
ECHO: "Default list string search ([\"b\", \"zzz\", \"a\", \"c\", \"apple\", \"dog\"]): [1, [], 4, 2, 9, 3]"
|
||||
ECHO: "Default list mixed search ([\"b\", 4, \"zzz\", \"c\", \"apple\", 500, \"a\", \"\"]): [1, 3, [], 2, 9, [], 4, []]"
|
||||
ECHO: "Return all matches for mixed search ([\"b\", 4, \"zzz\", \"c\", \"apple\", 500, \"a\", \"\"]): [[1, 5], [3], [], [2, 6], [9], [], [4, 10], []]"
|
||||
ECHO: "Return all matches for mixed search; alternate columns ([1, \"zz\", \"dog\", 500, 11]): [[0], [], [3], [], [10]]"
|
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
Loading…
Reference in New Issue