From de1deb113fa098d2a758b933436cde81a1a09beb Mon Sep 17 00:00:00 2001 From: Andrew Plumb Date: Sat, 18 Feb 2012 21:22:31 -0500 Subject: [PATCH] Added better example023 with test output. --- examples/example023.scad | 34 +++++++----------- .../cgalpngtest/example023-expected.png | Bin 0 -> 6984 bytes .../opencsgtest/example023-expected.png | Bin 0 -> 7402 bytes .../example023-expected.png | Bin 0 -> 7402 bytes 4 files changed, 12 insertions(+), 22 deletions(-) create mode 100644 tests/regression/cgalpngtest/example023-expected.png create mode 100644 tests/regression/opencsgtest/example023-expected.png create mode 100644 tests/regression/throwntogethertest/example023-expected.png diff --git a/examples/example023.scad b/examples/example023.scad index 3f592644..13328994 100644 --- a/examples/example023.scad +++ b/examples/example023.scad @@ -1,30 +1,20 @@ -// MCAD/fonts.scad with search() function example. +// Example combining MCAD/fonts.scad with search() function. use 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]); + +hours=["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve"]; + +module clock_hour_words(word_offset=20.0,word_height=2.0) { + for(i=[0:(len(hours)-1)]) assign( hourHandAngle=(i+1)*360/len(hours), theseIndicies=search(hours[i],thisFont[2],1,1) ) { + rotate(90-hourHandAngle) translate([word_offset,0]) + for( j=[0:(len(theseIndicies)-1)] ) translate([j*x_shift,-y_shift/2]) { + linear_extrude(height=word_height) polygon(points=thisFont[2][theseIndicies[j]][6][0],paths=thisFont[2][theseIndicies[j]][6][1]); + } + } } +clock_hour_words(word_offset=16.0,word_height=5.0); diff --git a/tests/regression/cgalpngtest/example023-expected.png b/tests/regression/cgalpngtest/example023-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..c528b904c00df4321d94ba4c3deca76858ec31ab GIT binary patch literal 6984 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 literal 0 HcmV?d00001 diff --git a/tests/regression/opencsgtest/example023-expected.png b/tests/regression/opencsgtest/example023-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a097d9984475e5db8005645347be7e5c55155d2f GIT binary patch literal 7402 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 literal 0 HcmV?d00001 diff --git a/tests/regression/throwntogethertest/example023-expected.png b/tests/regression/throwntogethertest/example023-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a097d9984475e5db8005645347be7e5c55155d2f GIT binary patch literal 7402 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 literal 0 HcmV?d00001