Professional Documents
Culture Documents
CH 011
CH 011
1.2 1.3
Preliminaries
Rapid Prototyping Representation Current Slicing Algorithms Java Collaborative Design
1.4
1.5
Utpal Roy
Syracuse University
M. Cargian
Syracuse University
1.6
Conclusions
The fundamental aspects of rapid prototyping systems have steadily matured since their inception in the 1980s. Intricacies of CAD model slicing for layered manufacturing are compounded by construction of a 3-D model from 21/2 -D slices. Surface nish problems, processing time, and accuracy are within the scope of this work, which entails the development of a slicing algorithm that works through the World Wide Web. Additionally, this process extends the current slicing algorithms to one that is more apt to deal with le processing time and connections for collaborative design. The use of the World Wide Web will enable this software to be utilized by others without the need for software at their sites. The software is developed with tools such as Java, HTML, and the Web.
1.1 Introduction
Manufacturing in todays world has developed and changed due to new technology and worldwide competition. As a consequence, a need for quicker and faster development times for products has arisen. Other design and manufacturing technologies such as concurrent engineering, design for manufacture, just-in-time production, and computer-aided design (CAD) have pushed the design envelope further. To reduce the development times, companies need to be able to create prototypes of their new products quickly and cost effectively.
FIGURE 1.1
height. Ideally, the cusp height should be a minimum for any object. Although the slice height can be changed by the user of most software packages, and will reduce the cusp height, a decreased xed slice height results in longer computing and processing time on the machine. In general, it would be advantageous for the slicing software to minimize the cusp height while performing the slicing procedure as quickly as possible.
1.2 Preliminaries
The essence for rapid prototyping is the need to obtain fast, cost-effective parts to aid in the design of a new product. There are several criteria that describe the layer-by-layer manufacturing process, including le format, slicing algorithms, and manufacturing systems. File format denes the current standards for object and feature information transfer. The prototype nish is directly affected by the slicing algorithm and manufacturing process used.
FIGURE 1.2
Java
A new tool for the Web is the Java programming language developed by Sun Microsystems, Inc., in 1991 (Cornell and Horstmann, 1996). It is becoming the next language of the Internet, and changes the way the World Wide Web operates. With Java, Web pages can come alive with graphics, animations, video, and sound. Java is a full-featured, object-oriented programming language that is adaptable to many situations. Within Java, the programmer can create applets (programs that run over the Internet or intranets) or applications. Applets are stored on an Internet/intranet server, and users download them when they
FIGURE 1.3
Previous slicing algorithms that intersect a plane with the STL object to create each contour.
FIGURE 1.4
Resulting unsorted, unordered contour that needs to be arranged to form a complete contour.
arrive on a Web page which then runs locally on the users machine. An interpreter usually found in the Web browser is required to read and process the neutral Java le. Applications, on the other hand, are stand-alone programs that do not run inside a browser. Java programs are stored as bytecodes, intermediary les that allow the Java program to run on any computer that has an interpreter. There is no longer a barrier caused by differences among operating systems run on a computer. The code for a Java program can be written once, stored on a Web server, and then downloaded by the user onto any machine. Because popular browsers now support Java, and many operating systems are adding Java as a central feature, it is easy to run Java applets or applications. One limitation of the current system is a question of security. Most browsers disable Javas access to read or write to the local users machine. The security feature in the browser limits the Java program to only access les on the server from which it came. By doing so, a malicious program is prevented from erasing or damaging the users computer or data. If access is required to read and write on the local computer, Java can develop stand-alone applications. These applications are full-blown applications such as those created in C++ and can be run directly from the command line. The possibilities for Java-enabled Web pages are endless. Utilizing this programming language opens the possibility to the diskless computer, where all applications are stored on Internet/intranet servers.
As programs are needed for specic tasks, they would be downloaded from a Web page. Whether or not Internet-centric computing becomes a reality, Java will have an important role in creating dynamic, useful Web pages.
Collaborative Design
The Internet and corporate Intranets have become a powerful tool for communication. Engineers and designers now have the opportunity to work on projects with people all over the world through the Web. Research in this area is being done at Syracuse University to make the collaborative design process possible for product design. Systems are being implemented to connect feature and part information with a sharable object using tools like VRML. This collaborative product design framework allows designers from all over the world to work together on a design. Once the design takes place in this networked enterprise, an Internet/intranet-based rapid prototyping module could then be used to process the CAD model to create the object. This program could be linked directly to a layered manufacturing machine to create the prototype immediately.
Slicing Algorithms
A great deal of prototyping time is involved in the slicing of the CAD le. The slicing process has a direct effect on the length of time to build the prototype, as well as on the quality of the nished product. Any modications to the slicing process will help with the speed of the program. The current algorithms that create slices by intersecting planes with objects can be enhanced. Each facet that is intersected with a slicing plane, forms a line segment of the contour. Each of these unorganized line segments is then ordered from head to tail to create the closed contour. One method (Chalasani et al., 1991) offers an alternative to plane intersection slicing using the scan-line type approach to nd the contours of an object. By utilizing scan-line type slicing, the contour segments are found in a closed loop. The search starts at an origin point and searches until it intersects the object at either an edge or a vertex. Then, the tracing procedures are executed to generate the contour. This search continues, nding all of the contours that are present on that slice of the object. Although scan-line type slicing is more complex, it yields considerable savings. Two reasons explain this: there is no need to store the contour segments and then sort them at the end, and it reduces the need for difcult geometric calculations to nd the intersections with the facets. After the contours have been traced, a simple hatching routine is formed to drive the laser in the build process. At the time this chapter was written, the scan-line type approach had not yet been implemented. This process requires an exhaustive search of the entire object to nd all of the contours on any given layer. This searching is a computationally expensive procedure. One enhancement to this method utilizes topological information to increase slicing speed (Rock and Wozny, 1991). The rst information generated by this algorithm is connectivity information about the facets. Topology building compensates for some of the deciencies in the STL le by linking the three edges of each facet with the three neighboring facets. By searching through the STL le, the connections between facets and their edges can be saved for future use. A sort is used to nd the neighboring facet for each edge. The connectivity information is used during contour tracing to move from one facet to the next. The facets are then spatially partitioned into areas called bins. These bins store the numbers of the facets that pass through them. A facet may belong to one bin, several, or all of them, depending on the facets orientation and size. Figure 1.5 shows several facets of an object in relation to the different bins. Facet 1
2001 by CRC Press LLC
FIGURE 1.5
FIGURE 1.6
in this gure is completely contained within bin 3, whereas facets 2 and 4 are contained within several bins. Facet 3 lies in all four bins and would be recorded as such in the bin listing. These two steps of the algorithm are important for reducing slicing time. The next step is to nd an intersection of one of the facets with the slicing plane. Once this is found, the line segments of the contour are generated by intersecting the slicing plane with the next facets. This intersection determination is simplied by realizing that the normal to the slicing plane does not change, and the new point can be found through interpolation. The new point is given by:
the cusp height. The algorithm presented varied the slice height based on these problems of at surfaces, changing slopes, and cusp height.
to aid in cusp height minimization and surface nish. An expert system is used and works with two of the features of the object to determine its orientation. Another way to decrease processing time is to slice the le using a multi-processor system. Programs (Kirschman and Jara-Altamonte, 1992) that use the parallel processors are able to decrease the processing time of the STL le signicantly. Other le formats and computer processes will evolve to meet the needs of rapid prototyping as it grows. A neutral le format needs to be extended to all CAD vendors to be able to slice any part with the required accuracy and nish. Other researchers are looking into the Internet/intranets to provide additional functionality for the rapid prototyping process. Tele-manufacturing (Bailey, 1995) is one term that has been created to represent the use of rapid prototyping over the Internet. The main area that is presented is the repair of an incorrect STL le. Due to the lack of topology or order in the facets, the le often needs to be repaired to handle cracks, overlapping triangles, and zero-thickness surfaces. Although the STL le is passed across the Internet to the site to be processed, the slicing has not been implemented directly on the Web.
FIGURE 1.7
that overhangs or other unsupported features do not break off during the build process. Once manufacture is complete, these areas are removed, leaving the desired prototype.
FIGURE 1.8
Interior edges of the object that will not be used for contour tracing.
Without contour or feature information on the object, a search of edges on the slicing level is required to nd all possible contours. During the searching and tracing procedures, it is important that the line segments are never created inside the contour. All contours for prototyping are on the outside of an object of feature. Interior edges that will not be used for contour tracing are shown in Fig. 1.8. These edges are never used in the contour tracing because they are inside the contour for the rst slice. If these edges were used, they would result in an undesirable slice that does not show the true shape of the object. To nd interior edges, each edge is checked to see if the two facets that share this edge are parallel to the slicing plane. If so, the edge is interior to the contours of the object and will not be used for tracing. The search method starts by selecting an unagged edge in the slicing zone. The trigger point is found by comparing each of the unagged edges in the zone to the following rules: 1. If the edge is completely above or below the slicing level, do not use this edge. 2. If either end point of the edge is on the slicing level, use this vertex as the trigger point. 3. If neither rule 1 nor rule 2, then this edge passes through the slicing level. Find the point on the edge at the slice height to use as the trigger point. The contour is traced from this point moving from one facet to the next around the object until a contour is traced out. As each segment is created, the edges that were visited are agged so they are not used again. Next, the search continues within the same level to nd any remaining unagged edges that form other contours on this level. It is important that searching continues through all of the facets on each slicing level to insure that no contours or features are missed.
FIGURE 1.9
FIGURE 1.10
Whenever one of these cross products is zero, the trigger point possibly lies on that edge. In the case of a vertex trigger point, one of the point vectors will be zero. The other two point vectors will coincide with two facet vectors. This results in ve of the nine cross products being zero. As shown in Fig. 1.9, point vector[2] and point vector[1] are aligned with facet vector[1] from Fig. 1.10. When these vectors are crossed, there will be two zero cross products, as is the case for all edge points. In Fig. 1.11, two examples of trigger points are shown. The rst search through the unagged edges results in a vertex trigger point at the corner of the object. Later in the search, a trigger point is found at the hole.
FIGURE 1.11
FIGURE 1.12
Sample contour segments are shown in Fig. 1.12. The rst trigger point from the search is on vertex 0 of facet 0. The contour will continue by tracing segment 0 to land on the other edge of the facet. Then facet 1 will be used with the new edge trigger point. Segment 1 will then be constructed from edge to edge of facet 1. The process continues around the object until the complete contour is traced. When Tracing Begins from a Vertex For vertex trigger points, there are three possibilities for tracing the next segment of the contour: 1. If the trigger point is above both of the other vertices, or completely below the other vertices, then the trigger point does not change and the next facet is used. 2. If only one of the other vertices is at the same z level as the trigger point, move all the way to that other vertex. 3. If the z level of the trigger point is between the z levels of both of the other points, the segment is constructed across the facet to an edge point between the other two vertices.
FIGURE 1.13
Vertex trigger point completely below the other vertices of the facet.
FIGURE 1.14
Another vertex of the facet lies on the same slicing level as the trigger point.
In the rst case, the trigger point is on a vertex that is the lowest or highest point on the facet relative to the slicing level. As shown in Fig. 1.13, every other point on facet 1 is above the current trigger point; therefore, the contour will not move because moving to any other point on the facet would not maintain the current slicing level. The tracing will continue directly to facet 2 using this same point as the new point. In the second case, another vertex of the facet (not the trigger point vertex) is on the slicing level. In Fig. 1.14, the trigger point is on vertex 0, while vertex 1 is also on the slicing level. The new segment of the contour is created directly all the way to the other vertex that is on the same level. Because these two points are co-planar and on the slicing level, there is no need to do any computations to determine this segment. In the third case, the facet is as shown in Fig. 1.15. The trigger point lies on vertex 0. The z value of vertex 0 is between the z values of the other two vertices. The contour must be traced across the facet, from the vertex to edge 1 on the facet. When Tracing Begins from an Edge For the case of an edge trigger point, vectors are used to move to the other edge of the facet. As shown in Fig. 1.16, the trigger point lies on edge 0. To move to edge 1, and stay on the slicing level, a similar
FIGURE 1.15
The vertex trigger point height lies between the levels of the other two vertices of the facet.
FIGURE 1.16
method as implemented by Rock and Wozny (1991) has been followed: A vector is constructed from vertex 2 to vertex 1. A percentage of the vector is used to move from vertex 2 to the new point on the slicing level on edge 1. The new point is used as the trigger point for the next segment of the contour on the next facet.
Program Initialization
HyperText Markup Language (HTML), the language of the World Wide Web, is used to set up the Web page and launch the Java program. Two windows are created within the page, one running a program that displays the STL le and another that does the slicing. Once the programs are called, Java begins by initializing the window and calling the start method. The start and init methods handle the operations of the program, including setting display colors, adding buttons, and handling events that may be triggered during execution. Some of these events are button pushing, mouse movements, and mouse clicks. After the initialization, the start function calls the rest of the modules needed for the programs execution.
FIGURE 1.20
Java code that opens the STL le and stores the data in a Vector array.
is used up by an array that is larger than the number of facets. The initialization and trim methods are shown in Fig. 1.20. This gure also shows the code to open a le on the server and read in the data. A method is used to determine the minimum and maximum points on the object. All of the vertices of the faceted object are compared to an initial minimum value. If the new point is less than that value, it is selected as the new minimum point. This continues until all of the vertices have been checked. Finding the maximum point is done in a similar manner. To compensate for some of the deciencies in the STL le, some connectivity information must be determined. Each facet has three edges that it shares with three other facets. By searching through the STL le, the connections between facets, and their edges, can be saved for future use. A sort is used to nd the neighboring facet for each edge. These adjacent facets are stored in the neighbor facets array which has three slots, one for each edge. The neighbor information is used during contour tracing to move from one facet to the next. Without sorting and storing the adjacent facets, every facet would need to be searched after nding each segment of every contouran exhaustive computational procedure.
For edges that pass through the slicing layer, the trigger point is found by rst constructing a vector from end point to end point of the edge. Then the trigger point is found by moving a percentage of this vector until reaching the slicing level. The entire search method is described by the following pseudo-code: method ScanTriangles() set DX, DY, DZ for each slice height do determine zone while there are unagged edges in zone nd trigger point on edge traceContour() nextslice endMethod Once a trigger point is determined, the edge or FIGURE 1.21 Initialization and scanning of STL le. edges that it lies on are found. The cross products are found for the facet edge vectors and the trigger point vectors. Cross product information is also used to verify that this point is a vertex or an edge point, as will be shown in the next section.
The tracing may result in several contours on one layer, each of which is numbered. The agEdge method sets the variable for that edge to the contour number. The isFlagOn method checks to see if the ag is on for that edge. If so, it returns control back to the search program. In the event that a contour is not completely traced out, the ags must be cleared. The eraseContour method does this by comparing all of the agged edges with the current contour number and resetting them to 1, the unagged state. Once all contours have been traced, and the program is ready to move to the next slicing level, all of the edges are returned to the unagged state with the eraseAllEdges method. All trigger points and contour segments are checked throughout the tracing process to see if they fall on a agged edge. Vertex Trigger Point Contour Tracing (Cases 1 and 2) Each of the rst two cases of the vertex trigger point are handled in a straightforward manner. In Case 1 above, where the trigger point lies completely above or below the other vertices of the facet, the trigger point remains the same and the next facet is used. The neighbor facets array is consulted to nd the next facet to use. The point becomes the trigger point on the new facet. In Case 2 above, the program moves the contour from the vertex to the new vertex that is on the same slicing level. This new vertex is used as the trigger point for the new facet. In both cases, the edges that the trace has been on are agged so that they are not used in future contour searches. Edge Trigger Point and Vertex Case 3 Trigger Point Tracing Case 3 above is the same method as edge trigger points. To create the new segment, the z terms of the other vertices are compared with the trigger point and the edge that will maintain the slicing level is chosen. Because the tracing method will now move to the other edge, it must determine which point to move to on that edge. A vector is constructed between vertex 0 and vertex 1 of Fig. 1.22 and the new point is found by moving a percentage of that vector to maintain the required slicing level. A variable is set to determine if the trigger point is above or below (z level) the end of the vector. The new point is now found by starting at the other vertex and moving by the vector multiplied by the percentage. The new edge trigger point is used on the next facet. End of Each Segment After the new point has been determined and the next facet found, the information for our new coordinates is written to an array in the addToContour() method. The new point is checked against the starting point of the contour. If the two points are the same, the contour is complete and the tracing is stopped. Otherwise, the new point is used as the trigger point on the next facet. The process continues until the program traverses completely around the contour to the starting point.
FIGURE 1.22
FIGURE 1.23
FIGURE 1.24
The tessellation of this object is shown in the left window; the protrusion is going away from the viewer. As displayed in the right window, even difcult contoured surfaces can be traced quickly. Case Study 3 This example shows a pinion part which has a number of features. The pinion itself is a long protrusion with a hole through the center and a number of teeth around the outside of the shaft at different angles. The output of the program is shown in Fig. 1.25. Case Study 4 In the nal example, a more complex and resulting larger STL le part is used. This is a gear that has several protrusions to comprise the shaft, as well as a pattern of gear teeth around the radius of the gear. The STL le has over 2600 facets associated with it. The sliced object is shown in Fig. 1.26. The scan-line type approach was implemented using both the exhaustive search method (Chalasani et al., 1991) and the modied unagged edge starting method. The times presented in Fig. 1.27 were noted for the objects shown in the case studies. The times noted reect the improvement of utilizing unagged edges to determine a trigger point to trace from. The exhaustive search method is affected by the number of facets, the size of the part, and the resulting facet vertices precision. The search will not nd suitable matches unless the search increment is small enough to match the data in the STL le. The unagged edge method overcomes this limitation by determining a point that lies on an edge that passes through the slicing plane. Then, only the edges that have not been used yet are consulted for further possible contours, a much faster process. In comparison with the work reported by Rock and Wozny (1991), savings are found in two places. In one improvement, slicing is enhanced in areas of the object where the surfaces are parallel to the slicing plane. The bottom slice of Fig. 1.28 is generated using contour tracing case 1 and 2 only, which require very little computation time.
FIGURE 1.25
FIGURE 1.26
Case Study Number and Description 1 - Polyhedra with hole and rounded rear surface, (see Fig. 1.23) - 116 facets 2 - Revolved surface (see Fig. 1.24) - 832 facets 3 - Pinion gear (see Fig. 1.25) - 1468 facets 4 - Main gear (see Fig. 1.26) - 2684 facets
a
Time to Create 10 Slices of the Object Using Search Method to Determine Trigger Pointa 11.2 minutes
Time to Create 10 Slices of the Object Using Modied Unagged Edge Method 43 seconds
FIGURE 1.28 Facets parallel to the slicing plane can be traced out quickly.
The second improvement is the method of determining the starting point for tracing. In the plane-plane intersection method, the normals of the slicing plane and normal of each facet are crossed to determine a vector parallel to their intersection. Then, this vector and a point on the facet are used to nd this line segment. Using the modied unagged edge method, these computations are greatly reduced.
1.6 Conclusions
The proposed algorithm and its implementation have shown an alternative method to extend the rapid prototyping process. By utilizing the World Wide Web and Java, a slicing algorithm has been constructed that can be available to anyone. There are still many areas of research and work that need to be continued to make the process more efcient. Each of the CAD models once translated to an STL le, can be read and sliced by this program and displayed through the VIEW.JAVA program. Once displayed, the slicing program begins the process and displays it on the Web page. The Web-accessible program allows designers to see the faceted and sliced object without the need for expensive software or dedicated hardware at their physical site. All of this can be accessed over the World Wide Web, allowing the possibility of a completely sliced le to be sent directly to a layered manufacturing machine connected to the Internet or intranet. The work presented here emphasizes four issues of rapid prototyping on the Internet or intranets:
2001 by CRC Press LLC
1. Display of an STL le into a local browser showing a projected view of the object that can be rotated 2. Implementation of a modied scan line-contour tracing algorithm to slice the object 3. Platform-independent, sharable software that can be accessed over the Internet/intranet, as well as being able to run locally on a machine; the abilities of the Internet and collaborative design have been extended to the rapid prototyping process 4. Utilizes Java as a rst step toward creating a true Internet-manufacturing process Additionally, this software is one of the services within the collaborative product design environment. This module can be called after the CPD evaluation of an object to start the prototyping process. The framework for this software can be further improved. The graphics of the program can be extended into a complete design environment to cover the entire rapid prototyping process. Viewing of the object could be enhanced with shaded views or views of the completed prototype showing the cusp height. The software will need to be extended to create the hatching patterns and the le that actually drive the layered manufacturing machine. A module of this type could be added directly to the program at any time using the contour information. The continued expansion of the World Wide Web lends this program to possible connections with VRML or collaborative design environments. The Web is an open-ended medium that can extend the method for design and research. Modules could be added to the software to allow other information to be obtained as well. There are many areas of research still left unsolved in the rapid prototyping world. Research areas exist in part orientation, slicing directly from the CAD le (no STL le), and multiple part optimization. Additional work will be done in the area of producing more accurate parts directly from the CAD le. This will require a new common part storage instead of the STL le; perhaps some of the emerging formats that extend STEP will take its place. Ultimately, rapid prototyping will evolve into rapid manufacturing. Many of the parts on those systems are used as is for tooling or in a product. As software and hardware increase in speed and accuracy, additional parts can be made for instant use. Additionally, by harnessing the power of the World Wide Web, the entire prototyping process can reach new levels of power and application in todays design process.
References
Bailey, Michael, Tele-Manufacturing: Rapid Prototyping on the Internet with Automatic Consistency Checking, University of California at San Diego. Chalasani, K.L. et. al., An Algorithm to Slice 3-D Shapes for Reconstruction In Rapid Prototyping Systems, Computers in Engineering, V 1, ASME 1991, 209215. Cornell, Gary, and Horstmann, Cay S., Core Java, SunSoft Press, Prentice Hall, 1996. Dolenc, A., An Overview of Rapid Prototyping Technologies in Manufacturing, http://www.cs.hut./ ~ado/rp/rp.html, Helsinki University of Technology, 1994. Dolenc, A., Mkel, I., Slicing Procedures for Layered Manufacturing Techniques, Computer Aided Design, Vol 26, Number 2, February 1995, 119126. Frank, Dietmar, and Fadel, Georges, Expert System Based Selection of the Preferred Direction of Build for Rapid Prototyping Processes, IWB, Technical University of Munich, Munich, Germany. Kirschman, C.F. et. al., Computer Aided Design of Support Structures for Stereolithographic Components, Proceedings of the 1991 ASME Computers in Engineering Conference, Santa Clara, CA, August 1991, 443448. Kirschman, C.F., Error Compensation of Stereolithographic Parts, Clemson University, Clemson, SC. Kirschman, C.F., Jara-Altamonte, C.C., A Parallel Slicing Algorithm for Solid Free Form Fabrication, Proceedings of the 1992 Solid Freeform Fabrication Symposium, Austin, Texas, August 1992. Kulkarni, Prashant and Dutta, Debasish, Adaptive Slicing of Parametrizable Algebraic Surfaces For Layered Manufacturing, DE-Vol 82, 1995 Design Engineering Technical Conferences, V 1, ASME 1995, 211217.
Ngoi, B. et. al., Development of a Stereolithography Preprocessor for Model Verication, Computing and Control Engineering Journal, October 1993, 218224. Rajagopalan, M. An Approach to CAD Interface for Stereolithography Using Non-Uniform Rational BSplines, Master of Science Thesis, Clemson University, Clemson, SC, 1992. Rock, S, and Wozny, M., Utilizing Topological Information to Increase Scan Vector Generation Efciency, Proceedings, Solid Freeform Fabrication Symposium, University of Texas at Austin, Austin, Texas, August 1991. Vuyyuru, P. et. al., A NURBS-Based Approach for Rapid Product Realization, Proceedings of the Fifth International Conference on Rapid Prototyping, Dayton, Ohio, June 1994. Wodziak, J., Fadel, G., Kirschman, C., A Genetic Algorithm for Optimizing Multiple Part Placement to Reduce Build Time, Proceedings of the Fifth International Conference on Rapid Prototyping, Dayton, Ohio, June 1994.