Full download Programming with OpenSCAD A Beginner s Guide to Coding 3D Printable Objects 1st Edition Justin Gohde pdf docx
Full download Programming with OpenSCAD A Beginner s Guide to Coding 3D Printable Objects 1st Edition Justin Gohde pdf docx
com
https://ebookmeta.com/product/programming-with-openscad-a-
beginner-s-guide-to-coding-3d-printable-objects-1st-edition-
justin-gohde/
OR CLICK BUTTON
DOWNLOAD NOW
https://ebookmeta.com/product/programming-with-openscad-a-beginners-
guide-to-coding-3d-printable-objects-1st-edition-justin-gohde/
ebookmeta.com
https://ebookmeta.com/product/beginner-s-guide-to-kotlin-programming-
john-hunt/
ebookmeta.com
https://ebookmeta.com/product/scala-programming-a-comprehensive-
beginner-s-guide-to-scala-2nd-edition-william/
ebookmeta.com
https://ebookmeta.com/product/the-oxford-handbook-of-the-valley-of-
the-kings-1st-edition-richard-h-wilkinson-editor/
ebookmeta.com
Mouse as a Model Organism From Animals to Cells 2011th
Edition Cord Brakebusch Taina Pihlajaniemi
https://ebookmeta.com/product/mouse-as-a-model-organism-from-animals-
to-cells-2011th-edition-cord-brakebusch-taina-pihlajaniemi/
ebookmeta.com
https://ebookmeta.com/product/maintenance-architecture-1st-edition-
hilary-sample/
ebookmeta.com
https://ebookmeta.com/product/life-and-death-in-early-modern-
philosophy-1st-edition-susan-james-editor/
ebookmeta.com
https://ebookmeta.com/product/religion-and-society-in-a-cotswold-vale-
nailsworth-gloucestershire-1780-1865-albion-m-urdank/
ebookmeta.com
Spain in the Nineteenth Century New Essays on Experiences
of Culture and Society 1st Edition Andrew Ginger
https://ebookmeta.com/product/spain-in-the-nineteenth-century-new-
essays-on-experiences-of-culture-and-society-1st-edition-andrew-
ginger/
ebookmeta.com
FU L L COLOR
Z
Y
X
PROGRAMMING WITH OPENSCAD
PROGRAMMING
WITH OPENSCAD
A B e g i n n e r ’s G u i d e t o C o d i n g
3D-Printable Objects
by Ju s t in G oh d e a nd M a r i u s Ki n t e l
San Francisco
PROGRAMMING WITH OPENSCAD. Copyright © 2021 by Justin Gohde and Marius Kintel.
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.
The following images are reproduced with permission: Figure 1 in the introduction was created by
Gustavb and is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license. The
photo of the Leaning Tower of Pisa featured in Figures 7-1 to 7-4 is by Svetlana Tikhonova. The image is
covered by the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license.
For information on book distributors or translations, please contact No Starch Press, Inc. directly:
No Starch Press, Inc.
245 8th Street, San Francisco, CA 94103
phone: 1.415.863.9900; [email protected]
www.nostarch.com
No Starch Press and the No Starch Press logo are registered trademarks of No Starch Press, Inc. Other
product and company names mentioned herein may be the trademarks of their respective owners. Rather
than use a trademark symbol with every occurrence of a trademarked name, we are using the names only
in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of
the trademark.
The information in this book is distributed on an “As Is” basis, without warranty. While every precaution
has been taken in the preparation of this work, neither the author nor No Starch Press, Inc. shall have any
liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly
or indirectly by the information contained in it.
About the Authors
Justin Gohde has been teaching math and computer science for more
than 20 years. He is the head of computer science at Trinity School in
Manhattan, New York, where he oversees the computer science curriculum
and programs, including the Design Lab makerspace, which features a
wide collection of rapid prototyping tools for supporting computer science,
robotics, and other STEAM-focused projects.
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Chapter 3: 2D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Chapter 5: Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Afterword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
CO N T E N T S I N D E TA I L
ACKNOWLEDGMENTS xiii
INTRODUCTION xv
What Is OpenSCAD? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Who This Book Is For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
Why Learn to Code with OpenSCAD? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
3D Printing and OpenSCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
What’s in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Terminology and Conventions Used in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
A Brief Introduction to 3D Design with OpenSCAD . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Understanding 3D Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Using the OpenSCAD 3D-View Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Final Tips for Getting the Most Out of This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
1
3D DRAWING WITH OPENSCAD 1
Why Use OpenSCAD? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Getting Started with OpenSCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Drawing Basic 3D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Drawing Cuboids with cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Drawing Spheres with sphere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Drawing Cylinders and Cones with cylinder . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Importing 3D Models with import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Modifying Basic Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Moving Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Smoothing Curves with $fn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Combining 3D Shapes with Boolean Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Subtracting Shapes with difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Carving Out Overlapping Shapes with intersection . . . . . . . . . . . . . . . . . . . . 16
Grouping Shapes with union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Getting Ready for 3D Printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Calibration Pyramid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Smiley-Face Pendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hole-and-Pins Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2
MORE WAYS TO TRANSFORM SHAPES 25
OpenSCAD Shape Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Rotating Shapes with rotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Reflecting Shapes with mirror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Scaling Shapes with resize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
More Ways to Combine 3D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Combining Shapes with hull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Combining Shapes with minkowski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Combining Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Game Die . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Desktop Organizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3
2D SHAPES 39
Drawing Basic 2D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Drawing Circles with circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Drawing Rectangles with square . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Drawing Polygons with polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Drawing Words with text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Applying Transformation and Boolean Operations on 2D Shapes . . . . . . . . . . . . . . . . . 45
Extruding Shapes Vertically with linear_extrude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Extruding Shapes Along a Circle with rotate_extrude . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Growing and Shrinking a Shape with offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Importing 2D Shapes with import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Storytelling Dice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Project Box for Storytelling Dice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Trophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4
USING LOOPS AND VARIABLES 61
Leaving Notes with Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Writing Single-Line Comments with // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Writing Multiline Comments with /* */ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Repeating Code with a for Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Debugging for Loops with echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Using Variables and Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Naming Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Applying Mathematical Operations on Variables . . . . . . . . . . . . . . . . . . . . . . 66
Using Math and Variables Inside for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Using Arithmetic to Create Unique Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Using Nested Loops to Draw 2D and 3D Grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Generating the Windows in a Skyscraper with Nested Loops . . . . . . . . . . . . . 70
Triple Nesting to Create a 3D Grid of Shapes . . . . . . . . . . . . . . . . . . . . . . . . 71
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Detail Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Towers of Hanoi Puzzle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Tic-Tac-Toe Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
x Contents in Detail
5
MODULES 79
Simplifying Code with Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Splitting Your Design into Multiple Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Adding Parameters to Your Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Building a LEGO Brick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Sharing and Collaborating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Skyscraper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
LEGO Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6
DYNAMIC DESIGNS WITH IF STATEMENTS 95
Using if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Defining Complex Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Choosing Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Using Logical Operators to Combine Boolean Expressions . . . . . . . . . . . . . . . 98
Following an Expanded Order of Operations . . . . . . . . . . . . . . . . . . . . . . . . 98
Making Two-Way Choices with if…else Statements . . . . . . . . . . . . . . . . . . . . 99
Using Extended if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Using Nested if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Useful Applications of if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Setting Up a Design Mode and Print Mode . . . . . . . . . . . . . . . . . . . . . . . . . 104
Using Random Numbers as a Design Element . . . . . . . . . . . . . . . . . . . . . . . 105
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7
DESIGNING BIG PROJECTS 115
The Design Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Leaning Tower of Pisa Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Step 1: Investigate—Define Multiple Views . . . . . . . . . . . . . . . . . . . . . . . . . 117
Step 2: Plan—Apply Computational Thinking . . . . . . . . . . . . . . . . . . . . . . . 117
Step 3: Create—Use a Walking Skeleton Approach . . . . . . . . . . . . . . . . . . 121
Step 4: Evaluate—Decide Which Design Process Steps to Repeat . . . . . . . . . 121
Walking Skeleton: Building the Leaning Tower of Pisa . . . . . . . . . . . . . . . . . . . . . . . . 122
Iteration 1: Connecting the Tower’s Basic Building Blocks . . . . . . . . . . . . . . . 122
Iteration 2: Finding Repetition in the Middle Section . . . . . . . . . . . . . . . . . . 125
Iteration 3: Adding More Details to the Middle Section . . . . . . . . . . . . . . . . . 128
Iteration 4: Adding Details to the Top Section . . . . . . . . . . . . . . . . . . . . . . . 132
Iteration 5: Adding Details to the Bottom Section . . . . . . . . . . . . . . . . . . . . . 136
Final Evaluation of the Design Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Design Organization Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Contents in Detail xi
AFTERWORD 143
Learn More About OpenSCAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
The Open Source Ethos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Motivation and Ecosystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Online Citizenship . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
OpenSCAD and the Maker Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Making and Creative Problem-Solving . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
2D Fabrication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Physical Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Makerspaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Final Ideas for More Practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Customizable Measuring Spoons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Customizable Vacuum Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Customizable Flowerpots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Drawer Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Lab Clamps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Chess Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Pegboard Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
A
OPENSCAD LANGUAGE REFERENCE 155
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
2D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Boolean Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Shape Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Loops, Decisions, and List Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Other Shape Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Modifier Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Special Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Mathematical Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Other Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
B
OPENSCAD VISUAL REFERENCE 165
3D Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
2D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Combining Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
INDEX 173
First, the authors would like to acknowledge the hard work and significant
efforts put in by so many folks operating behind the scenes to make this
book happen. As technical reviewer, Miro Hrončok made many, many
insightful and meaningful contributions to the evolution of each chapter.
His feedback and advice were well seen, well considered, and well appreci-
ated. We’d also like to thank everyone at No Starch for their remarkable
patience, dedication, and guidance throughout the book writing process.
In particular, we’d like to acknowledge and thank Bill Pollock for agreeing
to publish one of the first books about OpenSCAD, Tyler Ortman for get-
ting the ball rolling, and finally Jill Franklin and Dapinder Dosanjh for get-
ting the project back on track and over the finish line.
Justin would like to thank the many Trinity students and faculty who
helped prototype the core lessons and activities presented in this book—in
particular, colleagues Noah Segal, Mark Schober, Rob Newton, Jean Kim,
and Andrew Rose for their thoughtful contributions to the conversation.
Much gratitude is owed to Chris Martin, for initiating scores of London
chats on the pedagogical importance of using starting points to motivate
self-reflective, inquiry-based learning. And, finally, an infinite debt of
thanks is due to Yasuho Mori due to her eternal patience, persistent opti-
mism, and steadfast support.
Marius would like to thank all contributors and users of OpenSCAD.
In particular he would like to thank Torsten Paul, who has been instru-
mental in keeping OpenSCAD moving forward over a number of years.
Other documents randomly have
different content
Jo pian ehti Mikko köyhiin kotinsa lämpöiseen suojaan, siellä
kohtasi hän rakkaan vaimonsa ahkerassa työssä ja pienen poikansa
terveenä ja iloisena. Se häntä vähiin suretti, ett'ei hänellä ollut
tuomisiksi sen enempää; mutta nähdessään, miten iloinen ja
tyytyväinen vaimonsa oli, haihtui surut kokonaan.
"Miks'ei isä tuo hyvää leipää, en minä saa tätä syödyksi", kuului
taas lapsen itkevä soperrus.
Mikon käsi jähmettyi oven ripaan. Ensi kerran kävi hänen mielensä
synkäksi, toivottomaksi: hän ei parhaalla tahdollaankaan voinut
hankkia edes kunnollista leipää rakkaille omaisillensa, tämä koski
kovasti hänen lempeään, vaikka lujaan mieleensä.
"Onneton en ole niin kauvan, kuin sinä olet minulla", sanoi Kerttu,
"mutta sitä itkin, kun sinulla on niin paljo huolta, ett'ei yön lepoa!"
"Mitäs tänne tulit, kun kielsin", torui Maija, "ole täällä nyt susien
syöttönä!"
"Äläs nyt sentään niin kova ole, ettäs minun tänne susille jätät;
mistäs sitten luulet miehen saavas," jutteli Pekka.
"Olehan nyt", vastaa Pekka, "kun kerran kotia pääsen, kyllä siellä
pysynkin!"
*****
"Ja Mikko tarvitsee, hän teki työtä enemmän kuin muut! Nyt on
hän ollut kaksi vuotta poissa; sanotaan hänen käyvän koulua, mutta
mitä varten? Olisipa hän jo herra muutenkin?"
Näin puhui Pekka myöhään yöhön, siksi kuin uni viimeinkin lopetti
keskustelun.
"Jos vielä tässä tällä tavoin nostelemme kaloja jonkun aikaa, niin
pian rupee käymään kuin kaimamiehen Kristuksen aikaan; mutta
näkyyhän tuolla Suonpään Wilppukin ruuhinensa, kyllä se auttaa",
jutteli Pekka.
"Kyllä kai," sanoi Pekka, "mutta ei se ole niin vallan helppoa, sillä
teidän laatuisia miehiä hän ei kärsi; kuitenkin jos teillä on tupakkaa,
niin taitaa tuo olla mahdollista!"
"Tulenko mukaan, kyllä kai, eihän tuon ole niin kiirettä", mumisi
Wilppu. "Tupakoimaan, sanoi Pekka; niin kyllä, eihän olisi
hullumpaa.
Mistä lienevät veneesensä saaneet tuommoisen herra rentun? Kyllä
miesparat on huonoilla teillä!"
Mikko sillä välin haki tupakat ja tarjosi Wilpulle. Nyt rupesi ukko
koperoimaan housunsa taskuja ja löysi siellä mustan, varrettoman
nysän; sitte haki hän tulukset ja monen vaikean kokeen perästä sai
hän viimein palavan taulapalan piippunsa päälle. Vähitellen rupesi
ankaruus katoamaan ukon kasvoista, hän istui tyytyväisenä,
poltellen nysäänsä, ja unhottain raju-ilmat ja muut vastukset.
*****
"Niinpä niin, kyllä se niin on. Mutta totta se, vaikka minulle
tarjottaisiin talo töllipahastani, niin tuskinpa vaihtaisin!"