75% found this document useful (8 votes)
24K views200 pages

Advanced 3d Printing-Resized

Uploaded by

Michael Friday
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
75% found this document useful (8 votes)
24K views200 pages

Advanced 3d Printing-Resized

Uploaded by

Michael Friday
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 200
~Acknowledg ements We must acknowledge. in particular, Adrian Bowyer y Alessandro Ranellucci for the RepRap and Slic3r projects. As well as Jonathan Keep for being one of the greatest pioneers of clay 3D printing. Thanks to WASP for the LOM technology development. To Sergio for the effort we put into Controimad's development every day. Congratulations to Bob Meneel and his team for this amazing family called Rhino. Special thanks to the many students of architecture and design who have worked and studied with us over the last years. Sometimes we learn from them more than they learn from us. Also, thanks to Rachael Verdugo and Ryan Hillier on the English version side. Authors as Arturo Tedeschi and Giancarlo Di Marco were an inspiration. Finally, we want to thank Alice and Laura. Their support, in every imaginable way. has made this book possible. Advanced 30 printing with Grasshopper® vii (ee Vill ‘Advanced 30 printing with Grasshoppers The authors Diego Garcia Cuevas Diego Garcia Cuevas is an expert in digital fabrication. Architect by Universidad de Valladolid (Spain) and Master in Biodigital Architecture by Universitat Internacional de Catalunya. As a Rhino lover, he is an Authorized Rhinoceros® Trainer by Mcneel Europe (2008). He currently teaches at Universidad Europea and as a visitor at other schools of architecture and design. At Universidad Europea he teaches Architectural Geometry as course's coordinator, and several design and drawing courses. Also parametric design at Master de Arquitectura. Co-founder with Sergio Alonso del Campo of Controlmad Advanced Design Centre (Madrid) Linkedin: dgcuevas _Instagram: diegocuevasene Gianluca Pugliese Gianluca Pugliese is a digital fabrication and AM expert. He is Master in Digital Fabrication (Fab Academy] by Fab foundation. He currently teaches additive manufacturing and sustainability at I.E. Business School and 3d printing and robotics for the Digital Fabrication and Fashion Future Master at IED Madrid. He also works as a visitor in other intemational schools of design, Iberia manager for WASP, he founded Lowpoly in 2018, in Madrid and he develops projects based on 3D printing and sustainable materials. Linkedin: gpugliese Instagram: lowpoly info Advanced 20 printing with Grasshopper x Peg: 30>) Cuneuemectece ome elec) Ctr controlmad Controlmad Advanced Design Centre is both, a design practice and a training centre, Founded at early 2010 by Sergio Alonso del Campo and Diego Garcia Cuevas, Controimad tries to answer the changing environment for advanced architecture, engineering and design. As a design practice, our working process is characterized by CNC technology. which allows making architectural components - interior and exterior ones - furniture, prototypes, etc., leaving the static concept of a design office and taking Anglo-Saxon concepts such as "Know-How" and “Leaming-by-doing”, where is put into practice formal and theoretical research As a training center, we teach Rhinoceros® and Grasshopper® as well as many plug-ins. We are an Authorized Rhino Training Center and Authorized Rhino FabStudio. (Picture by Controlmad ~ all rights reserved) Advanced 30 printing with Grasshoppers xl 5 x a Q 8 = F a 2 = Mera ane. &y) LOWPOLY LOWPOLY was born as a WASP distributor in the Iberian Peninsula, later expanding to offer a comprehensive design service specialized in digital manufacturing and innovation, which is tailored to the needs of each client, From rapid prototyping, to designing parts for industrial use, 3D ceramic printing: 3D scanning or developing innovation and sustainable projects, everything is custom made using the latest technology. Large companies and institutions such as Fundacién La Caixa, Acciona, Istituto Europeo di Design Madrid, Canal de Isabel Il and many more have trusted our services (Picture by Lowpoly ~ all rights reserved) Advanced 30 printing with Grasshoppers xill _ Introduction This book is developed for students and professionals interested in controlling 3d printing directly from Rhinoceros® and Grasshopper. It is a manual to learn the basics of the connection between software and digital fabrication language in a detailed way, focusing on extrusion machines with material as clay, thermoplastics or any other material that can be extruded with a 3D printer, Grasshopper® is the parametric environment of Rhinoceros®. It has become one of the most powerful tools for any designer as it allows you to start coding from scratch, in a visual and easy way. It is widely used on car, jewellery, architectural design and almost any design field. Nowadays a complete digital designer is a multitasking individual capable of controlling the necessary tools (digital and physical) for the development of a design. This means that design and crafting technique should be together. This. is not a new concept. Students from many fields such as architecture, design, arts and crafts, engineering... are forced to learn many different software in order to develop their ideas and integrate themselves into the uprising competitive professional working environment. Their designs have to go outside of the computer and so, nowadays we can find more laboratories integrated into universities and high-schools with digital fabrication tools. These laboratories’ standard equipment usually includes laser cutters, milling machines and 3d printers but other tools such as vinyl cutters or robot arms could be found. Its interesting to see how students depend on these machines to develop physical mock-ups of their 3d models. What students usually expect from this technology is to get the most accurate mock-up of their model. We could say that this technology is mainly used as a definitory or last step to try to get the virtual into the physical but it is even more interesting to explore and experiment on these machines and materials as many new options open up in the fields of design and research. Advanced 30 printing with Grasshopper® 1 In this book we will give solutions to some problems that present themselves when 3d printing, but we want to introduce the reader to also explore the possibilities of the code vs. design, and create a sensibility over design and its fabrication process. Aspects such as the geometry of the design vs. the behaviour of the material, may differ to what we expected, opening a new range of possibilities that where not foreseen. The aim of this book is also to have fun and work with the material in an experimental way where parameters such as gravity, fluidity, speed or flow rate create new possibilities that were not pre-empted in the design. At the beginning the reader will discover sculptural objects, unique on their features. A possible mass production could be proposed after controling all aspects of the g-code evolving the 3d printing process of the production into a singular aspect. For the development of the models we will work with a 3 axis 3d printer because this type of machine is very common in the laboratories of digital fabrication some readers may own one themselves - the near-weekly rate of new & affordable models appearing on the market makes possessing your own cheaper than ever. Any brand of 3D printer could be used to follow the book. We will focus on the DeltaWASP 2040. It is a trustable machine that can be used to extrude plastic or clay just by changing the type of extruder. It uses a delta system considerably faster than a cartesian one. The printing area is a cylinder of 20cm. diameter by 40cm. height, hence its name. Part | introduces to the reader C.N.C. technology. Part Il explains how to prepare the clay for 3D printing Part Ill explains the standard workflow for 3D printing. it mainly consists of the following steps: 1. Create a 3D model in any 30 software 2. Export it as *.st! format 3. Open the *stl file in a slicer software. It will make horizontal sections of ‘our model with an embedded g-code generator, which will transform the sections into a text file that can be understood by C.N.C technology. 4. Sendit to a 3D printer. 1d 3D printing with Grosshopper® part IV shows a more custom way of 3D printing controlling the path for the 3D printer directly in Rhinoceros® and Grasshopper® and transforming the path ctly from Grasshopper®, with no plug-ins. Non-planar 3D .g and drawing 3D printing can be done. printin part V shows parametric samples for 3D printing mo F- y § ale C milling laser ral s}e 1 a £1 — 5 : waterjet plasma — mo c 1 : hot wire 3D printing PART | C.N.C. technology C.N.C. stands for Computer Numerical Control. It is a technology that can move a machine in different directions or axis according to a set of defined instructions given to the machine by a text file. That file contains the points in space simplified to their X.Y,2 coordinates. The coordinates describe the movements and the subsequent paths created to make the physical model. This technology has existed since 1980's and it has remained almost the same since then. What has really changed, is the software that creates the paths or polylines itself, making the user experience much easier. As we design 3d models, it is necessary to transform them into points. A typical path is as following: 3D model > polylines > points > text file > 3D printer In accordance with the ‘3D model’, we can mainly find two types of objects: Meshes and N.U.R.B.S. A mesh is a 3D object made of points, joined with edges creating faces that ‘are (mostly) quadrangular or triangular. Meshes are commonly used for animation, free organic modelling and other operations as form finding or structural analysis. Due to subdivision calculation algorithms as Catmull-Clark or Loop, it is relatively easy to start modelling a simple object and subdivide it into a smooth, rounded object. They are also necessary in order to evaluate an object for form finding strategies or calculation analysis. Forces and supports Advanced 30 printing with Grasshopper® have to be applied to the vertices of a mesh (or to the equivalent linear element, the points of a polyline) Mesh subdivision example. AN.URBS. could be a cure or a surface (or of course a polysurface} Whatever the shape, itis a mathematical representation of an object. They are more precise than polylines or meshes as they attend to parameters. For example, all the points of the edge of a cylinder are at the same distance {radius} to the centre. In a polyline or mesh, the distance is slightly different. As N.U.R.B.S. are more accurate they are commonly used in the manufacturing indusiry were precision and tolerances are absolutely essential. NURBS. MESH MESH ‘6 Advanced 30 printing with Grasshopper® in the pictures we can see the difference between a N.U.R.B.S. cylinder and a Mesh one with less and more faces. N.U.R.B.S. are created based on the algorithm of Castelljau. We can say that this type of object has infinite points. This means that N.U.R.B.S. objects have to be modified to be understood by machines, moreover, Rhinoceros® creates polylines and meshes to visualize N.U.R.8.S. that can be manipulated at the Options in Rhinoceros®. Display mode sett “Shaded Creating meshes. Press Esc to cancel Command: According to manufacturing, in general terms, a curve must be transformed into a polyline and a surface must be transformed into a mesh. 3D printers work under C.N.C. technology like many other manufacturing machines. We can differentiate two big groups of C.N.C. machines defining some of the most commonly used tools: Subtractive tools: milling machine, laser cutter, waterjet cutter, plasma cutter, hot wire cutter, etc. Additive tools (3D printers): Stereolithography technology (SLS, SLA, MJF), fused deposition (PLA, ABS, nylon...), extrusion (clay, concrete, chocolate, pizza ...). Additive manufacturing is the opposite of subtractive, as during the 3D printing process the parts are created starting from an empty build plate where the printhead then adds or hardens material while subtractive techniques need a stock of material to subtract part of it Advanced 30 printing with Grasshoppere 7 3D printing is an old technology invented in the ‘80s by Chuck Hull in 2005 when the existent patent was expiring, a professor, Adrian Bowyer, in the university of Bath decided to make 3D printing open source, hence creating the RepRap project. RepRap basically consisted of a 30 printer which was able to print the plastic parts required to make another 30 printer. Thanks to Bowyer and others pioneers like Vik Oliver, Alessandro Ranellucci and Joseph Prusa, the technology of 3D printing grew very fast. There are several different technologies related to 3D printing but ail share a common feature: the object is created layer by layer. Below is a quick overview of different kind of 3D printing technologies: SLS: Selective Laser Sintering. A laser melts the powder of raw material in a tank and then a roller deposits another thin layer of powder on top of the exposed raw material SLA: Stereo Lithograpy Apparatus. A UV laser cures a thin layer of a special liquid resin in a tank. There are 2 variations: DLP: where the laser is substituted by a DLP projector that can project an image and cure an entire layer in the form of the image. LCD: where instead of the projector there is a 2k or 4k LCD screen modified with a UV light. MJF: MultiJet Fusion is similar to a common Inkjet printer, where the machine deposits a special ink which is then cured with a UV light. Then, the build plate is moved along the Z axis and deposits another layer of ink which is cured again. This technology allows us to also print in colours. FDM: Fused Deposition Modeling, is the most popular and cheapest technology. | consist of an extruder that melts a plastic filament that is deposited following a | path generated from software. LDM: Liquid Deposition Modeling, very similar to FDM but uses fluid/dense material instead of the plastic filament. LOM is the technology used in this book to print in Clay with a Delta WASP 2040 model. 8 Advanced 30 printing with Grasshope WASP world Advances Saving Project is an Italian company bom with the dream of helping poor people printing houses with raw and cheap material such as soll and vegetal fibers. They started in 2012 by developing a small cartesian 3D printer with a syringe extruder, which was able to print fluids like silicone and - of course _ clay. They realized quickly the limits of the cartesian kinematics in printing big and with a lot of weight resting on the printhead, so they moved to another style of machine that was used before for a pick&place solution, the DeltaBot. In cartesian 3D printers, each axis has its own motor, so to move the head in the x direction only the x motor is required, whereas in the delta style machine each movement is generated by the combination of the 3 arms working together. The big advantage of the Delta style printers is the easy scalability, faster movement and the possibility to increase the weight on the effector. In this book we are using the DeltaWASP 2040 with the Clay extruder. It is a 3D printer able to print both, plastic and Clay. «] li ! — Image courtesy of WASP Advanced 30 printing with Grasshoppers 9 PART Il Clay and 3D printing Clay is a natural material, which comes from soil and has been used for thousands of years to make different kinds of objects - from dishes, to vases and sculptures. We can define two different types of clay: primary and secondary. Primary - the clay that is found in the same place that it formed Kaolin: A fine, white, very pure, and infusible China clay, almost pure alumina and silica. Mainly used in the manufacture of porcelain and fine earthenware. Secondary / sedimentary - the clay that has been eroded by the river or the movement of the earth and then deposited in different layers: Ball Clay: 20-80% kaolin, 10-25% mica, 6-65% quartz It's used in a percentage between 10 and 20% to improve the plasticity of the clay Refractory: a refractory material retains its strength at high temperatures. ASTM C71 defines refractories as "non-metallic materials having those chemical and physical properties that make them applicable for structures, or as components of systems, that are exposed to environments above 538 °C. Refractory materials are used in linings for fumaces. kilns, incinerators and reactors. They are also used to make crucibles. Stoneware: due to its high strength and durability, stoneware has a wide range of uses, including: hotelware, kitchenware, cookware, garden products. electrical, chemical and laboratory ware. Formulations vary considerably, although the vast majority will conform to: plastic fire clays 0 - 100% , ball clays 0 - 15%, quartz 0 - 30% feldspar and chamotte 0 - 15% Biscuit firing is around 900°C and glost firing 1180 - 1280°C. Water absorption of stoneware products is less than 1% When 30 printing as well as traditional clay modelling, we have to choose the correct clay according to our application. The main difference between clays is the firing temperature, that comes from their individual compositions. Depending on the desired application and on the kiln being used, we have to choose the correct clay for the project. Low firing clay: red clay, white clay, egyptian clay High firing clay: stoneware, porcelain or paperclay. 12 Advenced 20 printing with Grasshopper The best clay for our application also depends on other features like plasticity, shrinkage or porosity. Plasticity: it is the property of the clay that defines its ability to be able to resist cracking when bent, dependent on the mix and ratio of the basic components of the clay (chamote, ball clay, kaolin etc.) Plastic clay Less plastic clay In case of 30 printing, itis better to use clay with good plasticity to avoid cracking during the drying period. Shrinkage: it depends on type of clay and the quantity of water inside the mix Around 5-10% for red clay and 10-20% for porcelain. Porosity: it depends on the type of clay and defines the clay’s ability to absorb liquid after firing, which is important when applying glazes. In this book we use the DeltaWASP 2040 Clay 3d printer that needs a relatively soft clay - at time of writing there are other 3d printers from WASP as well as other other companies that can print using harder clays. Mixing The process starts from a common block of commercial clay, adding some water 1 mix and make it softer. Usually the final proportion is 5% liquid. E.g. 950g clay 50g liquid. Some people prefer to add alcohol/ethanol instead of water, because alcohol evaporates quickly and helps clay support its own weight Curing the printing process. During the mix, - done either by hand or with a mixing Advanced 3D printing with Grasshoppera machine - the main issue is to avoid incorporating air bubbles in the paste. In ‘order to prevent air bubbles remaining in the mix, it is possible to throw the paste on the floor to make the bubbles explode without damaging the clay. | Air bubbles are one of the most common issues encountered during 3d printing because they can change the material flow or create small air craters in the / printed object, which can leave lumps or burst marks. Air bubble during the mix. 4 Advanced 30 printing with Grasshoppers extruding the clay goes inside the clay's deposit in clay balls, Pushed by an air compressor gr any other system, it goes into the extruder to be shaped with the correct flow ‘according to our 3D design. WASP extruder. Firing Firing is one of the final stages involved but it is also one of most complex parts Before firing it is important to properly dry the object. Clay is composed of almost 25% water. it is very important to dry slowly, to prevent shrinkage & cracking during the air drying and air bubble explosions during firing. The firing is usually controlled by an electronical kiln controller that sets a heating curve for ‘hight firing clay’ divided into steps: (1) Drying: at this stage the temperature is set at about 100° to boil the water, usually taking almost 2 hours but it could be even longer in order to guarantee the prevention of shrinkage. (2) Dehydration: at 350° this is the point where the chemically combined water of the clay evaporates. (3) Quartz inversion: it happens at 573°. At this point, quartz crystals rearrange themselves into a different order. Advanced 30 printing with Grasshoppers 15 (4) Biscuit: 900° the clay is fired but not completely vitrified. It is porous. If the piece is going to be glazed, this is the stage to stop firing (8) Vitrification: itis the hardening and partial glassification of the clay, which depends on its composition, for example red clay will vitify at about 1000®, porcelain at about 1250°, degrees 1200 1000 500 0 2 4 6 8 10 120: 1816 hours Due to the diminishing size of the particles, shrinkage mainly happens during the Vitrification stage and the overall size can decrease between 8% and 13%. Melting: A dangerous stage that should be avoided, melting occurs if the firing temperature exceeds that in the reported datasheet, as the clay will melt and this cannot be reversed Glazing After firing comes glazing, but that is a task already covered by many specialized books In the picture, 3D printed parts in the kiln ready to be fired 16 Advanced 30 printing with Grasshoppers FOL ART Ill Solids 3D printing Probably the reader is aware of the main features and parameters of 3D printing, but we want to clarify and remember some of them before going into ‘drawing 30 printing’, chapter IV The 3 most important features for basic 3D printing are: 1. Model units: mm. 2. Watertight model (closed, solid). 3. Export as * stl file extension. In the next chapter (‘drawing 3D printing’) it will not be necessary for the model to be watertight or export it as *.stl fle. But before that, let us remember some important features for 3D printing. Advanced 30 printing with Grasshoppers 19 Design for 3D printing requires thoughts on how the machine works and knowledge of the advantages and limitations of the process. The basic behaviour of a 3D printer is to extrude material onto a build plate adding layer upon a _layer. Adding material from zero allows us to create also hollow parts or decide a percentage of internal infill, something that is impossible with other manufacturing methods. Advantages Limits Almost all geometries are possible Anisotropic properties Create hollow parts Lower mechanical _ properties compared with other methods Low cost machine and start up Design limitations due to force of gravity Wasteless process Slicer software. In 3D printing the CAM software used is called ‘slicer’ because it literally slices the solid and creates a path to move the printhead. The most commons slicers are! lic3r, Cura and Simplify3D. These software are really useful and powerful but sometimes they can limit our imagination. Each slicer has many different parameters that can be edited, but they all share these basic parameters: Wall thickness. Modelling in meshes or in surfaces allows us to make objects with walls without thickness, but in case of 30 printing, every wall must have a thickness to explain to the software how much material is needed. V layer O Overhangs. 2 layers O 4 layers o Overhangs are a big nightmare in 3D printing, especially in FOM or LOM technology.Overhangs are created from printing at an angle - intemal or external - more than 45°. Over this range, the material does not have the support of the layer behind and may fall down due to the force of gravity. If the overhang begins and ends in a pillar, the slicing software recognizes the 2 pillars and the software will program a movement called a ‘bridge’ that consists in a small overfiow of material and an increase in printing speed to stretch the material extruded and cover the distance between the pillars. To know the maximum distance achievable by your 3d printer a bridge test could be made. In order to avoid overhangs, there is an old trick that helps the printer to create almost perfect horizontal circles by designing the hole like a ‘tear drop’, which prevents the top layer > from falling down — take a look on the RepRap logo. Advanced 3 printing with Grasshopper Support structure In a standard plastic FDM 3D printer, it is possible to add support materials that represents some form of structure that helps the final part to sustain itself during the printing process. They can be easily removed. It is a helpful tool to support parts where the angles of extrusion are more than 45°. This structure is made of columns that support from the build plate to the required part, Usually the support material leaves some marks on the final object surface depending on the settings and the quality of the printer. Some 3D printers have @ double extruder. This way it is possible to print the support materials with a soluble material that can be dissolved in water or other chemical products after printing, leaving the final object perfect. The use of soluble materials is more recommended when the object has intemal channels or thin parts that would be broken by removing the supports by hand When 30 printing clay, support materials are a possibility, but they leave visible marks on the final part and are not recommended; also the support materials would have to be kept in the kiln to avoid the collapse of the object during firing, Tolerances. Depending on the type and model of 3D printer, the tolerance changes according to the nozzle diameter and the material used £.g. when printing with a clay 3d printer and using a 2mm nozzle, the minimum distance to print walls that don't touch each other is Imm, whereas printing in plastic with a 0.4 nozzle the tolerance normally is 0.2mm. In some slicing software it is possible to define whether the path should follow the internal or external part, but the common method is following the centre line. Details. Avoid details that are thinner than the nozzle diameter or geometries where the slicing software cannot generate paths for, 22 Advanced 3D printing with Grosshopper® isin ened Origin / orientation. The object should be designed from the position =0 because many slicing software identify the same origin position of the CAD Design. Choose the correct orientation of the model by checking the overhangs, choose aplane surface as a base to guarantee a good build plate adhesion and, when printing in clay, check if the bottom part can bear its own weight. Also check out the right layer deposition direction according to the stresses the part will be subjected to. Also, ensure that there is a proper surface of the model that touches the base to avoid the detachment of the model during the print. THEY Rule 2 The ‘THEY’ rule is a set of basic rules that explains how to orient the parts to print according to their | geometry The rule says we can only rotate the pieces in the XZ plane. Tneeds supports. The problem is solved if we rotate it 180° H needs supports. It has a bridge. Some slicers have a ‘bridge’ option that increases the printing speed in that area avoiding the supports. E needs intermediate supports. The problem is solved if we rotate it 90°. Yis the maximum angled shape to 3D print without supports. It could be 3D printed as it is, or rotated 180°, improving the contact with the build plate. i H Ww A 1800-4200 mm/m_ CLAY -> 1200-3000 mm/m Advanced 3D printing with Grasshopper 25 Temperature In the common slicing setting, there are 2 temperature parameters when we work with plastic: The extruder temperature: it is the temperature required to melt the filament, depending on the material used. For example. for PLA the temperature range is from 190° to 220°. And the build plate temperature with a range from 50° to 80°. It helps to the adhesion of the part to the build plate and avoids extra warping in big pieces. Adhesive material can be used to stick the model down to the plate as hair spray, blue tape, etc. tis not necessary to heat any component when 3D printing clay, Watertight The model should be ‘watertight’ or ‘solid’ avoiding double surfaces and collisions. It has to be clear what is the interior and what is the exterior. In Rhinoceros® there is an interesting tool to check out: _ShowEdges. ©] This tool can distinguish from ‘All’, ‘Naked’ and ‘Non-manifold" edges. The ‘naked edges’ are the open ones. Where the 3D object is not watertight. The ‘non-manifold edges’ are edges that belong to three or more faces (Breps or meshes). Those are usually a big issue for 3D printing as they can create other ‘interiors’ and several problems. By default Rhinoceros® does not allow to create non-manifold edges. They mainly happen when importing files form other software SAVE the file In Rhinoceros®, export to *.stl and save as Binary as the file describes the mesh in such an efficient way as ASCII format and it is a smaller file. If the model was done in Grasshopper®, then ‘Bake’ it to Rhinoceros and export as *stl file extension. 26 Advanced 30 printing with Grasshopper@ il oS Advanced 30 printing with Grasshopper@ 7 *3dm & *.gh wu mio / at PART IV Drawing 3D printing The first step to control the detailed movement of a 3D printeris getting the curves for the paths. Then, the curves will transform into a g-code that can be understood by the machine. The aim of this chapter is to help Grasshopper® users to control the g-code for a 3D printer directly from Grasshopper®, without leaving its environment and without plug-ins. There are some amazing plug-ins available, but their use could constrain the results and also become obsolete or useless over time if developers do not maintain them up continuously. Controlling the code opens a huge amount of possibilities for 3D printing as well as design possibilities. No knowledge of coding language is necessary but expert users that have knowledge of Python, C#, C++, VisualBasic etc. can use this to maximise their model's possibilities and their Grasshopper® definitions. According to hardware, 3D printer manufacturers worldwide are continuously bringing new models to the market. We will focus on WASP technology, specifically on a WASP DELTA 2040, a 3 axes delta 3D printer. The customization Possibilities that this type of machine offer depend mainly on the path, the speed and the flow Advanced 3D printing with Grasshopper® 29 The path is the curve that must be followed by the 3D printer's nozzle. It is the base for any design. You can find some paradigmatic study cases in Part V and their explanation in Grasshopper®. The feed rate (F) or speed. It can be a constant or a variable along the design, producing different results. Changes in the speed could create quite impressive effects when printing translucent clay The extrusion rate (£) or flow or amount of extruded material could be proportional for the distances between points or not. A controlled overflow of material can create interesting textures. Extrusion is calculated by the proportion between the material that enters in the extruder and the material that exists according to the nozzle diameter. 30 \ced 30 printing with Grass! G-Code The g-code is a text file that includes the orders that tell the machine how to move and the extruder how much to extrude, as the combination of movement and extrusion is fundamental for 3D printing It is the most extensive language used by C.N.C. automated machines as milling machines or 3D printers. It is an alphanumeric language that contains orders made of the combination of a letter and a number (e.g. G28). This code contains orders with all the letters of the English alphabet (A-Z) but it has evolved so that the letter G is chosen to describe the controlled movements of the machine. So, orders with ‘G' as GO or G1 will be the most common in this type of code. That is why it is known as g-code. G-code can descrite hundreds of orders for a machine. But 3D printers do not use all the possible orders as some of them have been developed to work with other type of machines. E.g. G97 allows to control the spindle speed on a milling machine which is unnecessary for a 3D printer. The g-code will be read by the machine's firmware. Firmware is a software installed on the memory chip of the 3d printer. The most common firmwares are Marlin, Repetier, Reprap, Prusa, etc. As some machines use variations of these, the first thing to establish is to find out what firmware our machine uses as they do not read the g-code in the same way. There are some orders that make no effect on some firmware and have to be changed by another. As our machine uses Marlin as firmware, the reader can find below a list with the orders you need to know to take control over the g-code of a WASP 3D printer. Also google ‘Marlin g-code' and the ‘Reprap project’ to find a complete list of g-code commands as well as a bounty of useful information for different firmware. Advanced 30 printing with Grasshoppers 31 G-code common commands list: 3 Text after semicolon will make no effect on the code. Very useful for explanations and comments. E Extrusion amount in mm (E10 means ‘extrude 10mm’). F Feed rate in mm/m (F1800 means speed of 1800mm per | minute). G0 Rapid positioning. GO must be followed by one or more or the following: an € value, F value or X.Y or Z value (GO F3000 X10, means move 10mm in X axis at 3000mm/m). In case of no F value, the movement will be done at the max speed Gl Linear movement. G1 must be followed by one or more or the following: an E value, F value or X.Y or Z value (G1 F1800 X10, means move 10mm in X axis at 1800mm/m). G1 needs a F valve. Both GO and G1 describe a movement. In fact they could be used in the same way. Depending on the firmware installed in the 3D printer, there could be sight differences. Usually G0 is used to describe ‘a movement in the most efficient way according to speed for travels, and G1 isa movement at a certain defined speed for extrusion. Also, this could be used just to differentiate a movement with extrusion from another without it. Always test beforehand for critical jobs. G4 Wait or dwell. it must be followed by the time we want the machine to stop. It can be described by P and the amount of milliseconds or $ and the number of seconds. G4 P500 means wait for 500 milliseconds, so half a second. G4 $0.5 means wait for half a second too. Parameters such as extruder temperature or fan speed should remain the same. G20 Set units to Inches. G21 Set units to Millimetres (one of the two G20 or G21 has to be chosen, but not both} G28 Go home to all axes if none are given, or move home to only the specified axes. (G28 will move all axes home, G28 X Y only X and Y axis) G90 Absolute coordinates. After G90 XYZ coordinates are absolute to the origin of the machine. This is usually the firmware’s default 32 Advanced 30 printing with Grasshopper@ G91 Relative coordinates. After G91 XYZ coordinates are relative to the last position. This means that the last coordinate is the new zero for the next one. M82 Set exiruder to absolute coordinates. Equivalent to G90, but for the extruder. M83 Set extruder to relative coordinates. Equivalent to G91, but for the extruder, G92 Overwite the position of an axis to zero or to the specified value. No physical motion will occur. (G92 E will reset E to zero. G92 X50 will reset the current machine's X coordinate to 50. If no values are specified, all axes will be set to zero) If you work with thermoplastic material, some extra orders need to be controlled: M104 Start heating the extruder. The temperature is one of the most important parameters when fusing thermoplastic material. It has to be followed by the letler S and the temperature in degrees (M104 S210 sets the extruder temperature to 210°Celsius). M106 Set fan ON. It could be followed by $ and a parameter from 0 (stop) to 255 (max. power) M107 Set fan OFF. You can also use M106 SO instead, but it depends on the firmware availability. M109 Wait until the extruder is heated to run other commands (M109 $210 means wait till extruder temperature is 210°) M117 It is used to display a message in the LCD screen (M117 Waiting} M140 Heat the build plate. Followed by temperature. (M140 S60 heat build Plate to 60°Celsius). M190 Heat build plate and wait until the build plate is heated to run other commands (M190 $60 means wait fil build plate's temperature is 60°Celsius). Many other orders could be found in a g-code file and depending on the 3D Printer's firmware, they could differ from one to another. For further interest, the reader can find more information on the RepRap project's wiki, by looking up “g-code’. Advanced 30 printing with Grasshopper® 33 The g-code for a 3 axis 3D printer is made of three parts: Start protocol (get ready) Core with instructions (print our design) End protocol (finish) The start and the end protocols are a set of g-code routines or instructions for the machine to get ready and to finish printing. They include information as ‘go home in all axis’ or, when finished, ‘go back to origin’ Each machine has a protocol. We will focus on the Delta WASP 2040 3D printer protocols, but many thermoplastics 3 axis machines have similar instructions. If you own a 3d printer and you are not so sure about your machine protocol. you can just open an already made *.gcode extension file in notepad app (for Windows) or textedit in Mac and copy the start and end protocols of your printer Find an example of the start and end g-code protocols for Delta WASP 2040 as well as an explanation of the ‘core’ on the right-hand page: Start protocol Start g-code instructions explanation j~- START GCODE ~ Text after semicolon makes no effect on the code mez Set extruder to absolute coordinates G28 Home all axes G92 0.0000 Overwrite extruder position to zero G1 €-4.0000 F6000 Retract the extruder -4mm at a speed of 6000mm/m -- end of START GCODE ~ Core with instructions The core of the g-code is made of a sequence of movements describing our design. The main order for a controlled movement will have this structure: G1 F1800 X10 YI0 ES G1is the order in g-code to describe a controlled movement. F is the feed rate or speed in mm/minute. If it is constant and it does not change, this parameter is only necessary at the fist line of the code. Xand ¥ are the coordinates to move to. Eis the length in mm for the extruded material End protocol End g-code instructions explanation: - END GCODE ~ Text after semicolon makes no effect on the code G92 €0,0000 Overwrite extruder position to zero G1 €-4,0000 F600 Retract the extruder -4mm at a speed of 6000mm/m G28 Home all axes p+ end of END GCODE - Advanced 30 printing with Grasshopper® 35 Examples starting at 0,0,0 coordinate: Move 10mm in X direction from 0,0.0 extruding Imm G1 X10 YOET Move 10mm in Y direction from 0.0.0 extruding Imm GI XOYIOEI When 30 printing by layers, all the points of the same layer have the same Z valve. This can be repetitive and could increase the g-code length, adding the Z component to every single line of code. Software that creates g-code by layers, changes the Z coordinate by stopping the movement, moving to the next level and working in the next Z value again only with X.Y coordinates. To stop and dwell, the order G0 is commonly used G1 F1800 X10 YO E10 GI X10 Y10 £20 GI X0 Y10 £30 G1 x0 YO E40 GO x0 Yo GO X0 YOZ1 G1 X10 YO E50 ara GIXIOYIOESO ag 2D GIXOYIOE70 “4% GI XO Yo E80 Vs This is the core's g-code to draw two layers of a square of 10 mm edge length, at a constant speed of 1800 mm/minute and a constant flow of Imm. of material per mm. of length. The layer height is Imm. 36 Advar D printing wi cosshopper® Now, to check out if you got it, try to make your own g-code by hand to draw asquare of 20 mm. side. If you own a 3D printer, use a g-code file as reference for the Start and End protocols. In the next chapter we will lear how fo launch it j~ START GCODE- rend of START GCODE - i END GCODE ~ ‘= end of END GCODE ~ Advanced 3D printing with Grasshopper® 37 38 Ad G-code with Grasshopper® As we have already explained, the base for the g-code is made of points’ coordinates. We could have the points we need for the movement of the machine but typically, we will have a polysurface, a mesh, or luckily, a polyline instead. Depending on the input object, we must follow different paths to transform it into XYZ coordinates. These are the most common paths to be followed depending on the input objects that we desire to 3D print: Points > = X.Y.Z Polylines > Points > = XYZ Curves > Points > XYZ Mesh > Polylines > Points > = X.Y.Z BRep > Mesh > Polylines > Points > = X.Y,Z BRep > Curves> — Polylines > Points > = -X.Y.Z Advanced 3D printing with Grasshopper® 39 Points -> X,Y,Z Points are the basis in understanding how to create a g-code in Grasshopper®, The most basic g-code can be created just using points in Rhinoceros® or Grasshopper®. The sequence of points’ coordinates will design the movements for the 30 printer. So not only the coordinates are important but also their order on the list, as the movement will follow that sequence For the first example, the points are created in Rhinoceros® and then referenced into Grasshopper® with the ‘Point’ component: Point : * =~ eo e —_ > a 1G etme warings . 1B tevne 1B con D simpy ° ° (_Goveston . eo oe Scone Pit Manage Pt coecion We can also create the coordinates favac parame directly into a ‘Panel’. In that case, to 1@ tes. generate a proper list we should disable the option ‘Multiline data’: te, 1/50,0,0 2 50,50,0 3/0,50,0 TOW) 9 canotes Wrap tere Special codes rom at [BB Ova ices Advanced 30 printing with Grasshoppera 4l To create the g-code we need to transform the points into a text file. For that, we will use the tool ‘Concatenate’ on the text menu. ‘Concatenate’ can join letters and numbers to create text lines. It is also one of those tools with the possibility to add more inputs if we zoom in on it, The text we have to create has this structure: G1 F1800 X50 50 ES First, ‘Deconstruct’ to split their coordinates. Then, add the letters and the whitespaces necessary to construct that text line: Concatenate Deconstruct 7 tor 0 x0 YO z0 1x50 Yo 20 2 x50 ¥50 20 3X0 ¥50 20 Notice that there is a whitespace (_.) in the panels before YandZ: _Y 2 The Z components not usually a predominant part of the g-code as commonly 30 printing is made by layers. If the designed curves are not in a plane parallel to World XY plane and as such the points are in a curve with different heights, it is necessary to specify the Z coordinate for each point. See example at chapter socurves. Anyway, we will keep the Z coordinate for the explanation. To get a first rough g-code we need to add more parts: - The order G1 to indicate ‘movement’ = The order F for the speed - The letter E to tell the extruder how many millimetres of material it has to extrude: 42 Advanced 30 printing with Grasshopper® Concatenate alin 0 Gi F1800 x0 YO 20 B50 161 F1800 x50 vo 20 B50 2 Gi F1800 x50 v50 20 B50 3 ¢1 Fi800 xo vs0 20 E50 Deconstruct Notice the new whitespaces (_.) added to the panels. Before and after F1800 F800. and before E50 _,£50. This is the rough base to create the CORE of a g-code for a 3D printer. Now we have to add the START and the END protocols of our particular 3D printer and control the parameters F and E. F (feed rate or speed). It is a parameter that represents the feed rate in mm/minute. F1800 mean 1800 millimetres per minute or equal to 30 millimetres per second (divide 1800 by 60 seconds in a minute]. The proper speed will depend on parameters such as the layer height, material, its fluidity and even the geometry of the design. Normal speeds are between 600mm/m and 3600 mm/m but this could be higher or lower. Some tests on different speeds need to be done by the user, to understand the expected results. A high speed for travel movement is usually used at the beginning such as for ‘go home’ and then, a slower one, for printing. Some materials such as translucent clay or porcelain could give interesting results varying the speed according to some pictures or attractors. As the value for the speed is easier to understand divided by second than by minute, some users prefer to use mm/second. It is interesting to have it apart from the rest of the definition as in the figure (30*60=1800) ‘Advanced 3D printing with Grasshopper 43 Concatenate Multiplication oy Gi F1800 x0 ¥0 20 B50 3 G1 F1800 x50 YO z0 B50 2 G1 F1800 x50 ¥50 20 B50 3.G1 F1800 x0 x50 20 £50 E (extrude rate). It is a parameter that tells the extruder how much to extrude. The parameter represents the number of millimetres extruded from the current position of the machine to the next position. The most appropriate number for the extruder will depend on the speed (F), the layer height, the material fluidity and the geometry, according to the desired result. A bigger extrusion of material will give as resuit a wider wall on the object. and a variable layer height the amount of extruded material could be different. ! Itis common to use a constant extrusion rate but depending on the geometry | See example at chapter isocurves. ! 44 Adv 1d 30 printing with Grosshopper® if we opt for a constant extrusion of material, the parameter E should be calculated according to the distance between points. In order to keep it simple use ‘Polyline’ to connect the points and ‘Explode' it into their segments to get the ‘Length’ of each segment. If the value for the length applied to the extrusion suits our design, then we have finished. If it is too big, we shall divide it, and if it is too low, we can multiply it. Add it to the previous definition and change the previous E50 by just E. Concatenate Multiplication a 30 x a pqs * cepa] (* Teas wn maa he {6h eae #50 x0 0 30 Wh 2 Gi P1800 X50 ¥50 20 B50 afpare ° dh 3.61 r1800 x0 ¥50 20 nso 2 50,5,0 —— 3 0.5,0 rain (Broce) [ecg Lan eye ry Advanced 30 printing with Grasshopper 45 Reaching this point, we notice 4 facts; 1. ‘Polyline' component displays the path 0 for the extrusion. This is very useful. 6 e 2. The square is not closed. We can extract the first point with ‘List item’ component and add it at the end of the list with ‘List insert’ making the list one point larger. This operation wil | | | | | | close the path. ‘o 6 Insert Items. Grasshopper® users that are familiar with lists tools could also use ‘List Length’ to feed the input ‘Indices’ of ‘Insert Items’. ‘List Length’ outputs an integer corresponding to the number of items in the list. In this case ‘4’. That ‘4’ can be used for the new index 46 Advanced 30 printing with Grasshopper® Insert Items. ‘insert Items’ adds items to a list. In the example, we are extracting or isolating '0.0.0' coordinate from the first list with ‘List item’. This component can isolate one or more elements in a new list according to their indices in said list. By default, the index is ‘0° so the output will be the item or coordinate with ‘index 0": ‘0,0,0'. That output feeds the ‘item’ input. The ‘indices' input is fed by ‘List length’ with a ‘4’. That means that *0,0.0' will occupy the index ‘4’ in the list as displayed in the last panel. 3. The values for E. It will start extruding 50 at ‘0.0,0’. It should extrude 0 instead, so it should display £0 at the first line of code. Use the same strategy with ‘Insert Items’. This time we will insert a ‘0’ value at the beginning of the list of values from ‘List Length’: Advanced 30 printing with Grosshopper® 47 Polytine Explode Length {0;0;0) 0 50 1 50 250 350 Insert Items i According to the new list of values for E, S0mm of material will be extruded from the first point (0,0,0) to the second (50.0.0) but nothing else to the rest of points as 50 remains as the only value. It is necessary that a component is able to add the lengths of the segments of the path: ‘Mass Adittion’. Notice how the 50 mm, length of each segment is added to the previous length obtaining the series: 0, 50, 100, 150, 200. Wor 050 150 230 350 (ass Addition 48 ‘Advanced 30 printing with Grasshoppers Congratulations! You have created the Core for the g-code. Now it is necessary to add the Start code and the End code. We can do it with 'Merge Tree’ tool. As ‘Merge Tree" takes into account the paths of the lists to rearrange them, the inputs need to be flattened. This will make the path for each list, {0} and it will keep the order in the list as they are connected to the inputs. 0000 e000 fend of SEART ccoDE — 1 G1 #1800 x0 x0 20 x0 3.01 P1800 x50 vs0 20 R100 4 G1 P1800 x0 x50 20 2150 0000 F6000 5 G1 P1600 x0 ¥0 £0 2200 28 of BxD cone — ‘0000 P6000 Final step, with right button over the panel, ‘Copy Data Only’, and paste it in ‘Notepad’ app in Windows or 'Textedit' in Mac. The type of file must be ‘All fle types’. The name of the file could be whatever, but try to avoid symbols or whitespaces. Type *.GCODE as extension. Advanced 30 printing with Grasshoppere 49 7 == START GCODE =~ crn eh 690 me2 ; 0 G2a 92 £0.0000 ee G1 E~4.0000 F6000 ~ sot 7 == end of START GCODE~ ; 161 F180 xo Yo 20 0 nee +] Jon raeoe x0 ve 20 «0 261 F100 x50 yo 20 E50 De @1 F100 X30 ¥50 70 £1 3.G1 F190 x50 ¥50 20 £100 eee le 4.61 F800 xo Y50 Zo E150 to ecooe 5 61 F180 xo Yo z0 E200 ‘ene F600 ; => END GCODE -~ ¢ 3 of em Gcooe G92 £0.0000 : 6 G1 E-4.0000 F6000 le . acter oes a2 } == end of END GcopE - Depending on the printer, you could save the file in an SD card, USB memory stick, or directly send it to the printer by USB connection. The path can be checked out in the slicing software as some of them have the ability to display it just using the gcode file. and 30 print! There is one more important fact regarding the position of the points refered to 00,0 in Rhinoceros®. Deltabots 3dprinters have its own 0,0,0 in the center of the build plate, cartesian 3D printers on the bottom left comer. To be sure, you could know were itis with an existant .gcode file, reading the coordinates. oo 0,0,0 0,0,0 50 D printing with oppers Advanced Grasshopper® users will easily make a definition to move the 3D object from its centroid to the best place for 3D printing in Rhinoceros® according to the 3D printers 0,0,0 position. Otherwise it can be moved manually in Rhinoceros. Important to note: Grasshopper® uses 6 digits when there is a decimal number. E.g. 5.381648 As we work in millimetres, 6 digits is too much accuracy. 2 or 3 can be enough. ifmore than 6 digits are necessary after the decimal point, Grasshopper® uses scientific notation. E.g. 5.3816e+5. This can create conflicts when reading the g-code. To remove digits after the decimal point, we can use a simple mathematical expression that must be applied after ‘Deconstruct Point’, ‘Length’ and any component able to create this conflict: ‘Multiplication This definition works because ‘Integer’ component rounds any number to integer numbers. ITthere are more than 999.999 values also on the left side of the decimal point (big projects at the E value) it can cause conflicts too. It is recommended to use then relative coordinates instead of absolute ones Advanced 20 printing with Grasshopper® 51 Polylines -> Points -> X,Y,Z It is quite common to draw the polylines that define the path for 3D printing. With the previous definition (from point to g-code}, it is very easy to extract the Points’ coordinates from a polyline. There are several tools that we could use to find points in a polyline: ‘Control polygon’, ‘Control points’ and ‘Discontinuity’ Advanced 30 printing with Grasshopper® 53 Control Polygon {0;0} {0, 0, 0} {0, 50, 0} {25, 0, 0} {50, 50, 0} {50, 0, 0) aWNHO (0; {0, 0, OF {0, 50, 0} {25, 0, 0} {50, 50, 0} {50, 0, OF Control Points awWNHO {0;0} {0, 0, O}F {0, 50, 0} {25, 0, 0} {50, 50, 0} {50, 0, 0} ewWNnHO v7 The polyline with ‘M' shape is inscribed in a 50 millimetres square. The three tools seem to output the same results. But depending on the shape of the polyline, there are two main differences: 1- ‘Discontinuity’ will not find all the polyline's vertexes, only the discontinuities of the function. In a polyline with more than one point on a straight part, the vertexes will be omitted by ‘Discontinuity’, as the function is continuous, but not by the other tools as you can see in the panels on the following example 54 Advan 3D printing with Grass Control Polygon Advanced 30 printing with Grasshopper® I {0;0) 0 {0, 0, 0} 1 {10, 0, 0} 2 {20, 0, 0} 3 {20, 10, 0} 4 {30, 10, 0} | {0;0} 0 {0, 0, 0} 1 {10, 0, 0} 2 {20, 0, 0} p 3 {20, 10, 0} 4 {30, 10, 0} | {0;0} 0 {0, 0, 0} 1 {20, 0, O} 2 (20, 10, 0} 3 {30, 10, 0} 55 That ‘Discontinuity’ property will have a more visible effect on the next unit cure Ppoints PX,Y.Z 2. In closed curves, ‘Di continuity’ does not repeat the seam point. The seam is both the first and the last points. It reads both as just one, the first one. It can be useful fo connect to another closed curve as we will explain later. However, not so much with closed curves as we should manually repeat the first point and add it at the end of the list as explained in the previous chapter (points > X.Y.Z). The other two tools seem to be more useful for closed curves. Check out this square of 20 millimetres side: 56 Advanced opel Control Polygon | {0;0} 0 {0, 0, 0} 1 (20, 0, 0} 2:{20, 20, 0} 3:{0, 20, 0} 4 {0, 0, 0} | {0;0} 0 {0, 0, 0} 1 (20, 0, 0} 2/(20, 20, 0} 3 :{0, 20, 0} 4 {0, 0, 0} | {0;0} 0 {0, 0, 0} 1{20, 0, O} 2 (20, 20, 0} 3{0, 20, OF Once we obtain the desired points we can move to the g-code creation as explained in the previous chapter. If there is more than one curve, open, closed or both, we have to detail the Path to improve the results of the clay extrusion and order the code were to stop extruding (if our machine/extruder has the option to). WASP clay extruders have the option to stop and/or retract, the same as thermoplastic filament extruders. But other printers might not share that option. In that case we should look for a continuous path. It means, we should transform several curves into one. Advanced 30 printing with Grasshopper® 57 Exampte with two open curves in XY: (0,0,0) 0 (0, 0, OF 1 (10, 0, oF 2 {10, 10, 0} Control Points [0 (20, 0, o} 1 (30, 0, oF 2 130, 10, 0) (070) (072) Length Insert Items 10:0) 0 Line-like Curve 1 Line-like curve | (ray | 0 Line-like Curve | 1 Line-Like curve 58 soda} 1d 3D printing with Grassh to — Deconstruct poco tnaca. to Mass Addition In this case there are two polylines, ‘Control points’ create a list with each of the polyline vertexes. ‘Explode’ outputs the segments for the E values. Data is organized into lists by polylines. This is very helpful for the insertion of the 0 value at the beginning of each polyline. Then, a ‘Flatten tree’ must be done to have just one single list to create the ‘Mass adition’ for the final E valves. Notice that number ‘20’ is repeated thanks to the insertion of 0 at the beginning of each list. This means that the extruder will not extrude material from the end point of the first polyline to the start point of the second: Multiplication Concatenate: 30 * ia a 6 8 F Deconstruct o <—to x 0 G1 ¥2800 x0 xO 20 BO Control x 1 G1 F1800 x10 0 20, ponte AY = 2G1 Fieo0 x10 v10 #0 E20 § 3.G1 Fig00 x20 vo e220 zB 4 G1 P1800 x30 xo 20 z 5 G1 F1900 x30 ¥10 20 R40 @ <- to Lass Addition Insert ems J) a 6 soe, + bo 20 540 G1 F1800 XO YO Z0 EO G1 F1800 X10 YO 20 E10 G1 F1800 X10 Y10 20 £20 € G1 F1800 X20 YO 20E20 € G1 F1800 X30 YO Z0 £30 G1 F1800 X30 Y10 Z0 £40 Advanced 30 printing with Grosshopperé 9 This definition also works with more than one curve or even with closed curves: e = ? 4 a le “| |e bd (3,3,0) 1 {0} x0 YO 20 EO X10 YO 20 £10 X10 ¥10 20 E20 x0 ¥10 20 £30 x0 x3 x7 x7 x3 x3 Mass Addition The values for the extruder are repeated. It works! When the curves are not in XY plane, but moved in Z axis, the grammar we have created still works, but now, depending on the direction of the curves, the result could be better or worse. 60 Advanced 30 printing with Grasshopper In this example the previous definition works, But as the polylines have the start point in the same place, the printer will create a travel that could lead to loss of material between the end of the first curve and the start point of the next, and as such, not creating the best results. We can check the path, displaying it with a 'Polyline’ component and fattening the list of points to create a continuous polyline, Control Points Advanced 30 printing with Grasshopper él aS When the curves are closed and similar, like in the picture above, they do not present a problem as the seam points are very close one to the other. To solve the travelling problem in the example with two (or more) open polylines, it is as easy as flipping the direction of the second curve - or flipping the odd ones if there are more than two. For that, we must flip the direction of every other curve. It is possible to select every other polyline in one with the ‘Dispatch’ component and then flip the direction of the polylines of the output lists with ‘Flip Curve’ component. ‘Dispatch’ already has a pattern TRUE-FALSE in the ‘Pattern’ input. This means that the first curve on the list goes to ‘A’ output, the second to ‘8’, the third to ‘A’, and so on Once we have flipped one of the lists, it is necessary to put them together in the same order they had. ‘Weave’ works in the opposite way to ‘Dispatch’. It puts together elements from different lists using a pattem. They are called ‘streams’. By default the pattern input is ‘0,1’ so the output list will be made of one element from list 0, the next from list 1, the next from list 0, and so on, so the 62 Advanced 30 printing with Gra pers fesult will be the same list we had at the beginning with ‘half’ of the polylines flipped Notice the difference in the display of the paths. That system will improve the 3D printed object quality as well as printing duration. Control Points Gurve Dispatch The complex part comes in when we mix open and closed curves. There, it is up to the reader if it would be ok leaving it by default or changing the direction of the curves. This can be done in Grasshopper® but that means that the reader should be an advanced user to deal with data splitting the list, and then putting it together again. Toolbar Menu Analyze = Direction Analyze Main Mainz For not so advanced users, there is a more ‘physical’ way to change the directions of the curves in Rhinoceros® with the ‘Flip Direction’ tool. In this example we have only changed one curve to optimize the path. Advonced 3D printing with Grasshopper 63 Curves -> Points -> X,Y,Z A NURBS curve could be directly created in Grasshopper® or could be made in Rhinoceros® and then referenced to Grasshopper® with the ‘Curve’ parameter. Notice that Rhinoceros® names ‘curve’ to any linear element making no difference between the type of curve depending on the degree: degree 1 = line or polyline degree 2 = circle, ellipse, parabola, hyperbola, arcs, degree 3 or more = freeform curves ANURBS curve has infinite points. To translate the geometry of a curve into g- code, we must discretize it into a certain amount of points. The ideais to create the minimum quantity of points possible in order to have a smaller g-code without losing precision and accuracy. Advanced 20 printing with Grasshopper® 65 We can follow two strategies: 1. To transform directly the curve into points with a ‘Divide’ tool 2. To transform the curve into a polyline with ‘Curvetopolyline’ component and go on as in the previous chapter, Polylines > Points > X,Y.Z. 1. ‘Divide’ tools: There are different division tools such as ‘Dividecurve’, 'Dividedistance’ or ‘Dividelength’ to find points on the curve with different results. This strategy would lead us back to the chapter Points 9 X,Y.Z. Coy Co 101 points A greater number of points will increase the accuracy from the curve to the points. The Grasshopper® user will probably have some experience with these components. 66 Advanced 30 printing with Grasshoppers 2. ‘Curvetopolyline’ ‘Curvetopolyline’ is a component that transforms a curve into a polyline allowing us greater control of the result, rather than just a simplified division of the curve as with the previous tools. With this tool we will get a polyline and so, we should go on working asin the previous chapter Polylines > Points > X.Y.2. This component controls the resultant polyline through 4 inputs: Tolerance (distance): deviation tolerance. This is the maximum distance between the curve and the resultant polyline. The units are the units of the model in Rhino. This means that if we are working in mm, '1' represents 1 mm tolerance. The smaller the distance is, the more accurate the polyline will be. can Cure Tolerance distance) _Pobine ff Tolerance (distance) Polyline Toverance (angie) MB Tolerance (angle) MB Minédge segments Minéd9e segments p Maxtdge Advanced 30 printing with Grasshopper@ 67 Tolerance (angle): it is the angle tolerance in radians. If the user is not familiar with radians, it is also possible to work in degrees by changing the option with @ right click over tolerance. The angle for the tolerance is the maximum angle between the tangent vector to the curve at a point and the polyline at the same point, A smaller angle will create a more accurate polyline cove ] we 7] Tolerance (distance) Polvfine Tolerance (distance Potytine Tolerance (angie) 4 | =e Tolerance angie) Minkd9e segments MinEd9® segments Mavédge Maxtoge 68 Advanced 30 printing with Gra MinEdge: optional minimum allowed segment length MaxEdge: optional maximum allowed segment length Minimum and Maximum edge parameters could be combined to get a polyline within these restrictions. E.g. a polyline with segments of more than 3 and less than 9 mm length: Poiyine q rteane (tine) Tovwane al) Wintise segments) axtoge Or, we could just work with the 'MaxEdge’ input to get a fitted polyline, which would be equivalent to the ‘Dividedistance’ component. It looks like we are creating a very dense and fitted polyline but if the curve has varying curvatures, in the low curvature area we will get extra unnecessary points that will lead to a larger g-code file, On the other hand, in the parts of the curve with a big curvature we will not have a good accuracy. In that case it may be better to control the ‘Tolerance (distance]' or the ‘Tolerance (angle}' inputs. Advanced 30 printing with Grasshopper 6 Mind the difference: with the ‘Tolerance’ inputs, more points are obtained in the areas of the curve with more curvature, for this example of a curve of 50mm. length in X direction Curve Tolerance (distance) _ Polvine MinEdge Maxédge Segments cune Tolerance (distance) fal (B__ Tolerance (angler MB Mintdge ‘Segments Maxtdge une Tolerance (distance) _ Polyline ay Minédge Maxédge Segments The input parameters for these examples are created so that the total amount of vertexes for the polyline is 50. The difference is on the points’ disposal. Notice in the next figure how the resultant polyline fits the original curve better depending on its curvature. The ‘Tolerance (angle)’ works better than the others in the areas with more curvature but does not work on the points in the straight ones. The opposite behaviour happens with the ‘Maxedge' option. For the same amount of points, ‘Tolerance (distance)' is the most equilibrated option for the different parts of the curve 70 Advanced 3D printing with Grasshoppe’ ee ee | ‘cune Tolerance (distance) Tolerance (angle) -+ MaxEdge Advanced 30 printing with Grosshopper® 7 Mesh -> Polylines -> Points -> X,Y,Z Amesh is a three-dimensional object compounded of vertexes in the cartesian space, joined with edges creating faces that could be triangular, quadrangular ‘or polygonal (n-gons) To 3d print a mesh following a path, we need to extract curves from it. A very popular tool is ‘Contour’. It makes sections of the 3D object with virtual planes perpendicular to a chosen direction: Shape Itis widely used in architecture, interior design and furniture design as it allows us to transform a 3dimensional object in 2dimensional planar curves that can be Manufactured with standard planar materials used in construction, as wood boards, glass, etc. Advanced 30 printing with Grasshopper® 73 Here some examples by Controlmad Advanced Design Center (Madrid). Dy C 30 ~ al rights reserved} Rooftop in Madrid Rooftop in Madrid Entrance sculpture for Arup Engineering, Madrid Piece of furniture for Ikea Valladolid 1 2. 3. 4. X and Y directions X and Y directions 74 Advance ing with Grasshopper® i icici Z direction The typical vector direction for architecture or design could be along any given direction; furthermore, contours in two opposite directions are usually combined in order to create a stable and steady structure. In 3d printing the most common direction for the contours is the Z axis. Mesh Contour Shape Direction Distance Shape’ input will be the mesh or Brep (surface or polysurface) Point’ is the start point, by default 0,0,0. Direction’ is a vector. It represents the normal (perpendicular) direction to the cutting planes and as such, to the resultant section curves. By default, it is '0,0.1" that represents a unitary vector in the Z axis. | Distance’ is the distance in Rhino units (mm.) between sections. For 3D printing it will represent a very important concept as it is the Layer Height. 76 Advanced 3D printing with Gr pepending on the geometry of the mesh or Brep, it could generate closed curves, open curves or both: Clay is very sensitive to any change on speed or movement. In order to improve the results on the pieces, it is very important to reduce the amount of travels of the extruder and the changes in extrusion direction to a minimum. This help us to control the seam. The seam is both the origin and the end point of a closed curve. It will determine the order of the points in the list to be followed by the 3d printer. A good control over the seams of the contours will be necessary to improve the results of the printed object. Let’s begin with a mesh that produces only closed polylines. ‘Contour component will section the mesh and will output closed polylines. According to the process explained in previous chapters, the printer will follow those sections and will move from one to the next without extruding clay. In this, case the stop&go of the extruder could display the seam more than is desired (1) There is the possibility to extract the points, flatten all in one list and create a Continuous polyline. This way we can avoid the extruder stopping but we will have an extra amount of clay in the vertical part of the path (2) ‘Advanced 30 printing with Grasshopper® 7 a) Potentially, the best option is to create a continuous path connecting the last point of the polyline to the second point of the next by creating a certain slope and so, one continuous polyline (3). To remove the first point in the list, there are two easy options. Use the component ‘Shift list’ on the points of each contour and then selecting ‘Invert’ in ‘Wrap’ input to avoid its addition to the list at its end ~ or use the tool ‘Cull index' entering 0 as integer in the ‘indices’ input to cull the first element in the list. Then ‘Flatten’ the list of points to get one single list that creates a single continuous polyline’. This system will be improved in the next chapter with curves, where we can select how many points we want to create along the slope. * ‘Contour’ tool creates a data tree with the sections, one list per curve. This makes it mandatory to ‘Flatten’ the lists of points at the input of ‘Polyline’ as they come in ists by contours. Flattening the lists, the polyline will go from the last point of one list to the first of the next list as in the following figure: 78 Advanced 30 printing with Grasshopper Mesh Contour Control Points rr Control Points Shift List Control Points, Cull Index Advanced 30 printing with Grasshoppers PolyLine PolyLine Polyline (3) 79 : There is a big difference between an open and a closed mesh | when doing contours: the end point of a polyline and the start point of the next one will be separated by a certain distance, This means that there will be a ‘travel’ between polylines. That is not a big issue as we can stop the extruder’s extrusion during the travel, but in order to avoid unnecessary travels we could flip the direction of one out of two curves so that the start point of the next curve is close to the end point of the previous. The following steps were already explained at the Polyline > Points > X,Y.Z chapter, but below explains them again: - Select one out of two curves from a flattened list with ‘Dispatch’. By default, this tool uses a pattern of TRUE-FALSE. This means that the first polyline in the list will go to ‘List A’ output, the second to ‘List 8", the third to ‘List A’ again and so on - Flip either ist A or B polyline's direction with ‘Flip Curve’. - Finally, we have to put them together again into one single list. For that we can use ‘Weave’ that will create a new list taking one item (polyline) from list 0, next from list 1, next from 0, and so on, in the same way that we wave the fingers of the two hands [if one hand would be named as 0 and the other as 1). We can check out the resultant path as usual with ‘Control points' and ‘Polyline’ Mesh. Contour, Flip Curve Weave | Dispatch 80 Advanced 30 printing with Grasshopper Contours Travels (dashed lines) Travels after ‘Flip Curve’ Control Points] [PolyLine Advanced 30 printing with Grasshoppera 81 Brep -> Mesh -> Polyline -> Points >XYL grep stands for Boundary representation and is a type of 3d entity. In 3d software this term englobes any kind of surface, polysurface or extrusion that is open or closed. Rhinoceros® was developed as a N.U.R.B.S. software, so was aimed to work with surfaces and polysurfaces. We could say that a Brep is a N.U.R.B.S. type 3D object. ‘As usual, for 3D printing we need to transform the 3d object into XYZ coordinates. There are two options: 1. To convert the Brep into a mesh and go on as in the previous chapter or 2. To extract curves from the Brep. In this chapter we will explain the first option. There are a few ways to transform a surface or a polysurface into a mesh. In Rhinoceros®, we use the command ‘Mesh’. In Grasshopper® there is an equivalent, ‘Mesh Brep', but there is also ‘Mesh’ component or ‘Mesh Surface’ (this one only works for surfaces, not polysurfaces). Getting a proper mesh from a Brep is not always so simple. Here we are not going to focus on that process, as interesting books as AAD by Arturo Tedeschi already explain that process in a detailed and efficient way. But a minimum knowledge is necessary and interesting effects can be created with the different options from this tool: Polygon Mesh Options. A single slider allows us to create a mesh with fewer polygons or more polygons in a simplified way. The ‘Detailed Control...’ option opens the Polygon Mesh Detailed Options dialog box with several parameters that can be modified accordingly’ Density. it is a number from 0 to 1 that creates a mesh with more or less edges depending on how close the polygon edges are to the original surface. It is equivalent to the previous slider in the ‘Polygon Mesh Options dialog box’. the slider aligned to the left and 1 the slider aligned to the right. Advanced 20 printing with Grasshoppers 83 Maximum angle. It sets the maximum angle between the surface normal and the mesh for the mesh vertices. It will refine the mesh and make it denser where the curvature is greater. Maximum aspect ratio. It is the proportion between the two directions of the | quadrangles of the mesh. E.g. 6 means that one of the directions of the | quadrangles can be no more than 6 times larger than the other. 1 means that the quadrangles will tend to be quadrangular. This option is very useful to create homogenous meshes. This option could be combined with the density value or with the minimum initial | gtid quads to control the amount of faces on the mesh Minimum edge length. It is a number in the current unit system that controls the minimum length of the edges of the mesh. It is useful when very small edges are created, in order to get a faster and simpler mesh. Maximum edge length. The zero value by default tums off this option. When another number is provided, it will control the maximum allowable length for the edges of the mesh in the current unit system | Maximum distance, edge to surface. It controls the maximum allowable distance | between the original NURBS and the subsequent mesh that is going to be created. Itis measured from the midpoint of the edges to the NURBS surface. It is also known as ‘Tolerance’ in the export option as *st! file (for 3D printing) and is very useful to get an accurate mesh from a NURBS. Zero value tums off the option. Important to note: very small values can turn in very dense meshes that could make the computer crash. | | | | Minimum inifial grid quads. It is the initial number of quadrangles of the mesh. As usual, zero value tums it off. This option can be combined with the previous ones but it is possible that if the amount of faces in this option is higher than the mesh received from previous values, it could override them creating a mesh that does not attend to previous values. Refine mesh. It is a recursive or subdivision process on the parts of the mesh that need to be refined to meet the parameters set at ‘Maximum angle’, ‘Minimum edge length’, ‘Maximum edge length' and ‘Maximum distance edge to | surface’. If the mesh is not refined, will be less accurate, but lighter. Its effect is very clear in combination with ‘Maximum angle’ option 84 Advanced 30 printing with Grasshoy Jagged seams. If we are working on a polysurface, all surfaces will mesh independently. That means that the edges of the meshes of each surface do not join (stich) with the edges of the adjacent mesh. This occurs if ‘jagged seams' is on. Ifit is not on, then the vertices and edges will match creating a continuous topology of the mesh called, a watertight mesh. It is better for further operations, as well as for rendering, as it does not create cracks between meshes. simple planes. This option will create the minimum amount of quadrangles on planar surfaces. This will ignore all settings defined on previous options except for ‘jogged seams’. Pack Textures. When polysurfaces are meshes, the coordinates for texture are also created. Pack texture applies the texture over all faces in the polysurface. Preview. Click it to refresh the mesh displays after any change on the settings. ‘simple Controls. it opens the Polygon Mesh Options dialog box. important to note: ‘extrusion objects’ do not behave as proper surfaces or polysurfaces so we have to explode and/or join them. For further details please check the ‘Help’ button on Polygon Mesh Detailed Options. Some meshing examples with two surfaces and a polysurface of 100 mm. side length. Once we have created the desired mesh, the path can be created asin the previous chapter. Advanced 30 printing with Grasshopper® 85 Density: 0.0 Maximum angle: 0 Maximum aspect ratio: 6 Minimum edge length: 0.0001 Maximum edge length: 0.0 Maximum distance, edge to surface: 0.0 Minimum initial grid quads: 0 Refine mesh 0 Jagged seams & Simple planes & Pack textures Density: 0.0 Maximum angle: 20 Maximum aspect ratio: 1 Minimum edge length: 0.0001 Maximum edge length: 0.0 Maximum distance, edge to surface: 0.0 Minimum initial grid quads: 0 & Refine mesh 1 Jagged seams @ Simple planes @ Pack textures Maximum angle: 0 Maximum aspect ratio: 1 Minimum edge length: 0.0001 Maximum edge length: 10 Maximum distance, edge to surface: 0.0 Minimum initial grid quads: 0 ® Refine mesh 0 Jagged seams EAE Simple planes i 8 Pack textures Density: 0.0 86 Advanced 3D printing with Grasshoppers Density: 0.0 Maximum angle: 0 maximum aspect ratio: 1 Minimum edge length: 0.0001 maximum edge length: 10 i maximum distance, edge to surface: 0.0 & Minimum initial grid quads: 0 @ Refine mesh @ Jagged seams @ Simple planes & Pack textures Density: 0.0 Maximum angle: 0 Maximum aspect ratio: 1 Minimum edge length: 0.0001 Maximum edge length: 0.0 Maximum distance, edge to surface: 0.2 Minimum initial grid quads: 0 Refine mesh 1D Jagged seams B Simple planes Pack textures Density: 0.0 Maximum angle: 0 Maximum aspect ratio: 6 Minimum edge length: 0.0001 Maximum edge length: 0.0 ad p> Maximum distance, edge to surface: 0.0 Axsstttth Minimum initial grid quads: 500 Refine mesh Ee O Jagged seams O Simple planes & Pack textures Ht Advanced 30 printing with Grasshoppers 87 reate a surface with a simple loft using three circles. imple, we ct In this exar al parts. With selection tools inequi im' divide the surface struct Brep’ + ‘List Item’ and ‘Point On Curve’ it is possible to select faces’ corners at . g S65 S Eo 58 aa ° Qo oe zo 63 ind mid points to draw the 3D path. subsur if) Printer and allow the le lastic to harden. ‘ Remember that every instr ction for the G-code must be included in the 3d Printer's firmware, Wireframe 191 S24 30 printing with Grasshoppere For our example: Name: ‘Base Contours’ Nickname: 'BaseCon’ Description: Creates a continuous polyline for a Base. Icon: draw it and save it as .png The final Cluster will have this appearance with and without icons display: Base Contours Base Contours Shape Normal Direction mI Polyline Shape q Normal Direction Polyline Nozzle Diameter Nozzle Diameter Assign Password, A password can be assigned to our cluster. It means that the cluster can be used, but not opened or modified without the password. This is very useful if you want to keep the ‘secret’ of your magic or if you don't want another user to ‘destroy’ your masterpiece by editing its content. For example. if you want your students to edit inputs and explore different outputs, but not to modify the inside of the cluster. Either way, it seems that the addition of a password does not make your cluster 100% safe, as Grasshopper® needs to directly work with the cluster when a file is open, and an advanced programmer could steal the cluster information. Explode Cluster. This option will undo the ‘Cluster’ Disentangle. Every ‘Cluster’ has an ID which is created randomly with the ‘Cluster’. Copied ‘Clusters’ maintain their assigned ID. ‘Clusters' with the same ID are modified simultaneously when one of them is edited. We could say that they behave like a ‘block’ instance. So, if one ‘Cluster’ is edited, each copy will be edited simultaneously unless we uncheck the ‘Disentangle’ option. 188 Advanced 3D printing with Grasshopper Export. Creates a new *.ghcluster fle based on that ‘Cluster’, Fog used in another *.gh file. Export & Reference. Similar to ‘Export’, but which the original ‘Cluster’ was created and any files where j afterwards. So, if the ‘Cluster’ is changed in the Original file, it wit the second file. This is a similar behaviour to a ‘block’ instance be: IS then, Also ch tween files, Update. itis useful to regularly update a ‘Cluster’ ina file when it hy 195 been edit in the original file and was exported using ‘Export & Reference’: them both ready to use in your Grasshopper® session. itis as simple as selecting one (only one at a time) ‘Cluster’, ‘File’, ‘Create User Object...'. The category will be the name of the fag and the Sub-Category the sub menu, This is a more similar and easy way to create something that looks like your ‘own Plugrin’ ~ see picture at page 184, That would be the appearance of our ribbon our cluster ‘Base Con’, Important to note: Advanced 30 printing with Grasshoppera 189 grammar, the new tool will be a “Cluster if we cluster all the components in the without inputs nor outputs: ‘Cluster’ and the grouped components wi [custer] Double click on the pop up in a new window where they can then be edited. in the first example the inputs and outputs ore automatics created using the folowing components that can be found at ‘Param’ menu tab in the ribbon menu. For the second, We to add them manually, choosing which elements we want to become OU! and inputs in our ‘Cluster’ nce{D)" Use ‘Cluster Input’ for ‘Shape(s)", ‘Direction(N)' and ‘Distal onents- ‘Cluster Output" for ‘Polyline(Pl)’. Then ‘Cluster’ the set of comp: Advanced 30 painting wi 186 Contour PolyLine Shape Normal Direction @ Polyline Nozzle Diameter = : i= created a new cluster as a tool that — | ‘outputs a polyline depending on three a ees inputs, a curve, a vector and a number a. ! that represents the nozzle diameter: om The ‘Cluster’ adopts the names of the inputs and outputs of ‘Contour’ and ‘Polyline’. To change them, right click on each one and type the new names ‘shape’, ‘Normal Direction’ and ‘Nozzle Diameter’ for the inputs and ‘Polyline’ for the output (it does not have to be these exact names specified, these are just suitable example as other names will also work) Then right click over the icon to explore several interesting options: Edit Cluster...: It is equivalent to double click. Anew window will BE ceacue Pop up where we can edit the content. There are options eee Qvailable to save the edition, or not. Properties: Add a name, a nickname, a description and change the icon. The Ime is the complete name for the tag. The nickname is the name that appears len we don't display icons. The icon can be chosen from the list of icons that fasshopper® has already available or it can be a custom image. If you chose le latter option, it is recommended to make it in .png format with transparent Ickground, NCEd 3D printing with Grasshopper@ 187

You might also like