Image Processing (IP) Assisted Tools for Pre- and Post-Processing

Operation in Additive (AM)

A thesis submitted to the

Graduate School of the University of Cincinnati

In partial fulfillment of the requirements for the Degree of

MASTER OF SCIENCE

In the Department of Mechanical and Materials Engineering

of the College of Engineering and Applied Science (CEAS)

By

Rohit Vaidya

Bachelor of Engineering (B.E.) – Mechanical Engineering

University of Pune, India. – 2010.

Committee Chair: Dr. Sam Anand

Abstract

Additive Manufacturing (AM) or 3D printing (3DP) process is a layer by layer manufacturing approach for manufacturing parts with complex geometries. The STL

(Stereolithography) file format is the de-facto industry standard for manufacturing parts by

AM/3DP. The STL file is a triangular mesh representation of CAD geometry in non-uniform rational B-spline (NURBS) surface format and thus is an approximation of actual part geometry.

During the conversion of a complex CAD geometry to an STL file, geometric errors are introduced in the model. These drawbacks associated with the STL file may translate into a faulty or inaccurate final manufactured part. This thesis presents a novel Image Processing (IP) based Direct

CAD Slicer, IPSlicer, which can be used to manufacture components directly from CAD geometry

(without converting to STL file). Using sectional image snapshots of a part, captured normal to the build direction, and sectional 2D bounding box data, contour points for each section are identified by performing boundary tracing operation followed by application of Contour Mapping

Algorithm (CMA). The method slices the actual NURBS geometry and thus parts manufactured by this method have reduced GD&T errors such as flatness, cylindricity, and profile error. In addition, a support removability analysis tool is developed by performing color-based segmentation on sectional image snapshots in conjunction with a pixel traversal approach. Using the segmented images and sectional bounding boxes, a sintering area and time calculation tool for each layer is also developed. Lastly, a CAD tool has been developed to identify and highlight sharp features and corners which violate Design for Additive Manufacturing (DFAM) guidelines. The effectiveness of IPSlicer is verified by virtually manufacturing test components and calculating

GD&T errors by the application of computational metrology algorithms on virtually manufactured

i

data. The support removability analysis tool, sintering area and calculator, and sharp feature detection tool are validated using test cases.

ii

iii

Acknowledgement

I would like to take this opportunity to express my gratitude to the people who contributed, in different ways, to the completion of this work.

First and foremost, I would like to thank my academic advisor Dr. Sam Anand and express my deep appreciation for his guidance and support for successful completion of this research. I also take this opportunity to thank Dr. David Thompson and Dr. Jing Shi for serving as members on my master’s thesis defense committee.

I would like to dedicate this thesis to my parents and my sister. Thank you for bearing with my idiosyncrasies and crazy ideas.

I would like to thank my past and present lab mates who were always there to help me when I was stuck during the research work. I would like to thank Rohan Vaidya, Rajit Ranjan,

Sushmit Chowdhury, Nikhil Kabbur, Kunal Mhapsekar, Anay Joshi and Ranjan Melpal for making this MS journey a ride to remember.

iv

Table of Contents

Abstract ...... i

Acknowledgement ...... iv

Table of Contents ...... v

List of Figures ...... vii

List of Tables ...... ix

1 Introduction ...... 1

1.1 Motivation of Research ...... 2

1.2 Objective and Impact of Research ...... 3

1.3 Thesis Outline ...... 5

2 Literature Review ...... 6

2.1 STL File Defects and Input File Modifications ...... 6

2.2 Direct CAD Slicing ...... 7

2.3 Support Structures Removability Analysis ...... 7

2.4 Sintering Area and Time Calculation ...... 8

2.5 Design for Additive Manufacturing (DFAM) Guidelines...... 8

3 Methodology ...... 9

3.1 Direct CAD Slicing using Image Processing Algorithms: IPSlicer ...... 9

3.1.1 Sectional Snapshots and Extraction of Bounding Box Data (Step 1) ...... 10

3.1.2 Boundary Tracing Operation (Step 2)...... 11

3.1.3 Contour Mapping Algorithm (Step 3)...... 13

3.2 Support Structure Removability Calculator using Image Processing ...... 17

3.2.1 Sectional snapshot generation and color-based segmentation ...... 18

v

3.2.2 Segregation of Support pixels into Removable and Non-removable...... 21

3.3 Sintering Area and Time Calculator...... 24

3.4 Sharp Corner Detector ...... 27

4 Examples and Results ...... 31

4.1 Direct CAD Slicing using IPSlicer...... 31

4.1.1 Test Case 1: Component with Cylindrical and Spherical features ...... 31

4.1.2 Test Case 2: Component with Freeform Surface ...... 33

4.2 Support Structures Removability Calculator...... 35

4.2.1 Test Case 1: Component with 100% Removability Score ...... 35

4.2.2 Test Case 2: Component with Non-removable Supports ...... 36

4.3 Sintering Area and Time Calculator...... 37

4.4 Sharp Corner Detector ...... 39

5 Conclusion and Future Scope ...... 41

References ...... 42

vi

List of Figures

Figure 1: AM/3D printing process flow...... 2

Figure 2: Structure of image processing assisted tools ...... 4

Figure 3: CAD to STL conversion error ...... 6

Figure 4: Working principle of IPSlicer ...... 9

Figure 5: 2D sectional bounding box of actual contour ...... 10

Figure 6: a) Moore-neighborhood of pixel P. b) Moore-neighbor tracing algorithm (adapted from

[29])...... 11

Figure 7: Boundary tracing applied on multiple contours ...... 12

Figure 8: Boundary tracing operation workflow ...... 12

Figure 9: Flowchart for CMA ...... 13

Figure 10: Extreme pixels from boundary pixels ...... 14

Figure 11: Translation operation ...... 15

Figure 12: Scaling operation ...... 16

Figure 13: Inverse translation ...... 17

Figure 14: 18 directions considered for Supports removability analysis ...... 18

Figure 15: Flowchart for Supports removability calculator ...... 19

Figure 16: Color-based segmentation algorithm...... 20

Figure 17: Palette used in Color-based segmentation ...... 20

Figure 18: Color-based segmentation process ...... 20

Figure 19: Directions for stage 1 pixel traversal ...... 21

Figure 20: Color-based segmentation and criteria for marking removable supports...... 22

Figure 21: 3D matrix formation ...... 22

vii

Figure 22: Directions for stage 2 pixel traversal ...... 23

Figure 23: Flowchart for sintering parameters calculator ...... 25

Figure 24: Flowchart for sharp corner detector ...... 28

Figure 25: Corner pixel detection using binary image...... 28

Figure 26: Vector method for finding angle ...... 29

Figure 27: Pixels responsible for sharp corners ...... 30

Figure 28: Part with Spherical and Cylindrical feature ...... 32

Figure 29: Slice contour points for part in Figure 28 ...... 32

Figure 30: Part with freeform surfaces ...... 34

Figure 31: Slice contour points for part in Figure 30 ...... 34

Figure 32: Part to be manufactured ...... 35

Figure 33: Part with support structures ...... 36

Figure 34: Removability calculations for bracket ...... 36

Figure 35: Part to be manufactured ...... 37

Figure 36: Part with support structures ...... 37

Figure 37b: Removability calculations in 18 directions for turbine ...... 37

Figure 37a: Removability calculations in orthogonal directions for turbine ...... 37

Figure 38: Part to be manufactured ...... 38

Figure 39: Sectional view of part with supports ...... 38

Figure 40: Sintering area and time calculation report ...... 39

Figure 41: Part for sharp feature detection ...... 40

Figure 42: Sharp features detected and highlighted ...... 40

viii

List of Tables

Table 1: Sphericity error comparison ...... 33

Table 2: Cylindricity error comparison...... 33

Table 3: Effect of sectional snapshot resolution on GD&T error ...... 33

Table 4: Profile error comparison ...... 35

ix

1 Introduction

Additive Manufacturing (AM) or 3D printing is a layer-by-layer manufacturing process and is gaining popularity in becoming a mainstream manufacturing process for complex and custom geometries of aerospace components, automotive parts and medical implants [1]. The

AM/3D printing process is primarily divided into 5 major steps as shown in Figure 1 [2,3].

1. CAD modeling – In the first step, the part to be manufactured is modelled using mainstream

CAD packages such as Siemens NX, SolidWorks, CATIA.

2. STL file generation – In the second step, the modelled part is converted to an STL file which

is a triangular mesh representation of the part. Almost all the commercial as well as free/open-

source CAD packages offer a CAD file to STL file converter.

3. Slicing the STL file – AM/3D printing machines are driven my G-code/CLI file. To generate

G-code/CLI file, contour points at each layer are required which are generated by slicing the

STL file geometry by planes which are spaced at a distance specified in terms of layer

thickness.

4. Manufacturing – In this step the component is manufactured as per the instructions specified

in G-code/CLI file and based on the process parameters selected by user.

5. Post-processing – Once the part is manufactured, post-processing operations such as support

structure removal, polishing of rough surfaces are performed.

The STL file is the de-facto industry standard for almost all the AM/3D printing machines manufacturing components using various additive processes such as Direct Metal Laser Sintering

(DMLS), Fused Deposition Modelling (FDM), and Stereolithography (SLA) [4].

1

Figure 1: AM/3D printing process flow 1.1 Motivation of Research

The STL file is a triangular mesh representation of the CAD geometry represented as

NURBS surfaces and thus there is always some approximation error associated with CAD to STL conversion. This approximation error subsequently translates into part GD&T errors such as flatness, cylindricity, and profile error. During the conversion of CAD geometry to an STL file, there is also the possibility of loss of geometric data that may result in the generation of a corrupt

STL file [5]. These defects may either render the STL file useless or manufacture a faulty part.

Slicing the CAD geometry directly eliminates the CAD to STL conversion step in the AM/3DP process and thus eliminates the errors and pitfalls associated with this conversion. Direct CAD slicing is computationally expensive and a time consuming process. A computationally inexpensive and universal slicer can eliminate this problem.

The orientation in which the part is manufactured by additive processes has a major impact on the amount of supports required and sintering area and time at each layer. As the support structure requirement changes with the part build orientation, the amount of support structures that can be removed during post-processing operation changes. Thus, there is a scope to optimize the part orientation to minimize sintering area and time or maximize support structure removability.

A tool that can accurately predict the support structures removability and sintering area and associated build time within the CAD package can help to optimize the build orientation.

2

Although AM promises to manufacture complicated and intricate geometries, there are some limitations associated with the process. A laser beam performs the sintering operation in most of the additive processes and due to the size of the laser beam diameter, features such as sharp corners, thin features and small openings cannot be manufactured correctly. A tool that can identify and highlight these features can help eliminate these features in early design phase and help re-design the part so that it confirms to the Design for Additive Manufacturing (DFAM) guidelines.

1.2 Objective and Impact of Research

This research proposes using image processing based algorithms within a CAD environment for developing pre- and post-operations tools for parts manufactured using AM. The developed algorithms can be implemented in any CAD software in the form of CAD tools. The first tool presents a novel and fast Image Processing (IP) based slicer, IPSlicer, for directly slicing the CAD geometry within the CAD software. All additive processes start with modelling the part to be manufactured in a CAD software that is subsequently followed by conversion to an STL file.

The STL file geometry is then sliced normal to the build direction to generate 2D slice contours

[6]. The proposed IPSlicer captures sectional image snapshots from the CAD model, extracts sectional 2D bounding boxes of the geometry and uses a novel Contour Mapping Algorithm

(CMA) to generate slice contour points. These slice contour points can subsequently be used to generate G-Code/CLI file to manufacture the part. Since the parts manufactured using IPSlicer would be manufactured directly from the CAD representation of part geometry, the GD&T errors and other geometry errors associated with these parts would be lesser than parts manufactured using STL files. This assumption is validated by virtually manufacturing test parts by both IPSlicer and STL slicer and comparing the GD&T errors for both the builds.

3

The second tool developed performs support removability analysis using color-based segmentation on sectional image snapshots of the part and supports using pixel traversal approach.

In the third tool, the segmented images and 2D bounding box data from previous analysis are used to calculate sintering area and time for each layer and the complete part model. Based on the developed algorithms, 1-click tools are developed in CAD software. The last tool identifies sharp corners within the CAD geometry that violate DFAM guideline. Sharp corner in each slice is detected by capturing the sectional image snapshots along build direction and performing the

Harris corner detection algorithm [7].

Figure 2 depicts the methodology, steps and the flow of the algorithm for each of the four

IP based tools described in this thesis. The methods and tools developed in this thesis are applicable to all metal powder bed fusion processes such as Direct Metal Laser Sintering (DMLS) or Direct

Metal Laser Melting (DMLM) process.

Figure 2: Structure of image processing assisted tools

4

1.3 Thesis Outline

The first chapter of this thesis briefly discusses AM technology, motivation of this research and the objective of this research. The second chapter presents a brief literature review of the research carried out in the field of STL errors, input file modifications, direct CAD slicing, removability of support structures in AM, sintering area and time calculations associated with AM, and design for additive manufacturing (DFAM). In the third chapter, methodology and implementation of the proposed tools are explained. The fourth chapter validates all the algorithms and the tools based on these algorithms using variety of test parts. In the last chapter, conclusions and future scope for this research are highlighted.

5

2 Literature Review

2.1 STL File Defects and Input File Modifications

STL file is an approximation of CAD geometry using triangular planar facets. This approximation leads to the introduction of chordal error as shown in Figure 3 [8]. An STL file does not store any topological data associated with the geometry. Thus, during the conversion of CAD geometry to STL file, there is a possibility of introduction of errors such as inverted surface normal, missing facets or gaps, degenerate facets, overlapping facets and non-manifold conditions [4,5].

Figure 3: CAD to STL conversion error The research group at Center for Global Design and Manufacturing have performed prior work to reduce the chordal error through development of alternate file formats for AM and STL file modification. Allavarapu et al. [9] and Paul & Anand [10] have developed a bi-quadratic

Bezier patch and a Steiner patch based alternate input file formats for better approximation of CAD surfaces. Navangul et al. [11] and Zha & Anand [12] have developed algorithms for increasing facet density in STL file locally and adaptively based on GD&T errors.

6

2.2 Direct CAD Slicing

The errors associated with CAD to STL conversion can be eliminated by manufacturing parts directly from the CAD model. Guduri et al. [13] presented a mathematical approach for generating exact contour files from CSG representation. Starley et al. [14] proposed a ray-casting based approach for slicing NURBS surfaces in a STEP format. Direct CAD slicing within a CAD software has been reported previously. Rajagopalan et al. [15] used the plane and model surface intersection function within I-DEAS to generate cross-sectional profiles of the object. Jamieson and Hacker [16] reported an approach for adaptive direct slicing by using software calls to

Parasolid kernel of Unigraphics. Cao and Miyamoto [17] performed direct slicing operation within

AutoCAD and saved the slice data in DXF file using lines, arcs and circles. Sunanon et al. [18] used image processing technique in rapid prototyping for identification of layer thickness.

The IPSlicer presented in this research uses image processing algorithms for generating slice contour points. The methodology is computationally inexpensive and can be implemented in any of the CAD software with minor changes. To prove the concept, it is implemented in open- source FreeCAD software [19] as well as in commercial Siemens NX CAD software [20].

2.3 Support Structures Removability Analysis

The concept of accessibility for conventional manufacturing processes such as milling and injection molding has been reported extensively. Woo [21] extended the concept of Gaussian maps to develop visibility maps which categorize manufacturing processes based on point, line and surface visibility. Bassi and Bedi [22] calculated accessibility of each surface of injection molded component in candidate parting direction using image processing and then determined undercut- free parting direction. Samant [23] used a hierarchical octree data structure to determine the

7

accessibility of support structures for removal. The current research proposes an algorithm which identifies the accessibility of support structures for removal by capturing sectional snapshots of

CAD model followed by image processing based algorithms.

2.4 Sintering Area and Time Calculation

Paul and Anand [24] presented an optimization model for minimizing the laser energy in

SLS process by formulating the laser energy as a function of Total Area of Sintering (TAS). They proposed a convex hull based approach for calculation of TAS. In the current research, slice sintering area and time is calculated using run-length encoding of sectional image snapshot data.

2.5 Design for Additive Manufacturing (DFAM) Guidelines

Ranjan et al. [25] have proposed comprehensive design guidelines for parts to be manufactured using additive manufacturing. They have proposed variety of algorithms for identifying features that violate DFAM guidelines and thus are difficult to manufacture. The algorithms that they have proposed are based on STL files. This research proposes an image processing based algorithm which can be implemented within CAD package for identifying sharp corners, one of the DFAM violating feature, within CAD software.

8

3 Methodology

The methodology section is sub-divided into four different sections wherein each sub- section explains the algorithm and steps of each tool to be adapted in a CAD software.

3.1 Direct CAD Slicing using Image Processing Algorithms: IPSlicer

A typical AM/3DP process follows the following three steps: geometry slicing, toolpath generation and translating toolpath into machine instructions [26]. The proposed IPSlicer performs the first step of geometry slicing. The working principle of the IPSlicer is explained in Figure 4.

To start with, the IPSlicer captures the sectional image snapshot, extracts sectional 2D bounding box within the CAD software and converts the sectional snapshot into a binary image. In the next step, a boundary tracing operation is performed on the captured snapshot to identify boundary pixels. In the last step, using a Contour Mapping Algorithm (CMA), the boundary pixels are mapped to contour points in XYZ co-ordinate space. The entire process is repeated for all layers of the part which are separated by the defined slice thickness along the build direction.

Figure 4: Working principle of IPSlicer

9

3.1.1 Sectional Snapshots and Extraction of Bounding Box Data (Step 1)

The IPSlicer is initiated by importing the CAD model of the part to be manufactured and defining process parameters such as build direction and slice thickness. In the next step, the bounding box for the entire part, sectional image snapshots that mimics slicing, and sectional bounding box at each slice thickness level along the build direction (+Z in this research) are generated within the CAD software. All CAD software have the capability to generate sectional view for the geometry within the graphic window. Using the graphic window capture feature of the CAD software, the sectional image snapshots can be generated. Similarly, the sectional 2D bounding box which represents limits of section contour in X+, X–, Y+, and Y– direction are captured. These limits are denoted as Xmin, Xmax, Ymin, and Ymax as shown in Figure 5. These operations are performed in an open-source FreeCAD 0.15 software [19] as well as in Siemens

NX 10 [20]. The process of sequential snapshot and bounding box data capture at each incremental slice thickness level is automated using Python based FreeCAD API [27] for FreeCAD and

NXOpen API [28] for Siemens NX.

Figure 5: 2D sectional bounding box of actual contour

10

3.1.2 Boundary Tracing Operation (Step 2)

AM machines or 3D printers are driven by G-Codes or CLI file, which stores the information about toolpath at each layer. The toolpath for each layer can be determined from the sectional boundary points for that layer. To generate the sectional boundary points, we need boundary pixels for the sectional snapshot generated in Step 1.

In this work, boundary pixels are identified using Moore-neighbor tracing algorithm modified by Jacob’s stopping criteria [29,30]. Since this algorithm operates on a binary image

(image having pixel value of either 0 - white or 1 - black), the sectional image snapshot captured in Step 1 is first converted to a binary image using simple binary thresholding. Moore neighborhood of a pixel is shown in Figure 6 and it includes 8 neighboring pixels which are in contact with a given pixel [29].

Figure 6: a) Moore-neighborhood of pixel P. b) Moore-neighbor tracing algorithm (adapted from [29])

11

In the Moore-neighbor tracing algorithm, a starting black (1) pixel is identified by raster scanning across length and width of image until a black pixel is identified. Once the starting pixel is identified, traversal in the Moore neighborhood of that pixel in a clockwise direction is performed. During traversal if a black pixel is encountered, the white pixel just prior to that black pixel is marked as a backtracking pixel and the black pixel is marked as next boundary pixel.

Moore neighborhood traversal is continued on the newly identified boundary pixel from the backtracking pixel. This process is repeated until the starting boundary pixel is encountered for at least two times [29,30]. The algorithm is explained in Figure 6. This algorithm is capable of generating boundary pixels for single or multiple contours present in an image as shown in Figure

7.

Figure 7: Boundary tracing applied on multiple contours The entire workflow for the boundary tracing operation is shown in Figure 8.

Figure 8: Boundary tracing operation workflow

12

3.1.3 Contour Mapping Algorithm (Step 3)

The boundary pixels identified in Step 2 are stored in an array based on the length and width indices of these pixels. But for G-Code/CLI file generation, we need the location of sectional boundary points in XYZ co-ordinate space. Contour Mapping Algorithm (CMA) performs the operation of converting pixel data to XYZ co-ordinate data. CMA in conjunction with Step 1 and

Step 2 forms the IPSlicer module. CMA is explained with the help of the flowchart shown in

Figure 9.

Figure 9: Flowchart for CMA

13

The data generated after performing operations in Step 1 and Step 2 is passed to the CMA.

Based on the slice thickness, build direction and bounding box data of the entire geometry, the total number of slices (i.e. total number of snapshots) is obtained as below:

푇표푡푎푙 푏푢𝑖푙푑 ℎ푒𝑖푔ℎ푡 푁표. 표푓푆푙𝑖푐푒푠/푆푛푎푝푠ℎ표푡푠 = … (1) 푆푙𝑖푐푒 푡ℎ𝑖푐푘푛푒푠푠 CMA starts with identification of extreme pixels among boundary pixels across the length and width of a sectional snapshot (ith layer of build) as shown in Figure 10. These are the pixels that have their length and width indices either minimum or maximum. These indices are denoted as minL, maxL, minW, and maxW. Using these indices, the length and width of contour in a snapshot is calculated as follows:

푡ℎ 퐿푒푛푔푡ℎ 표푓 푐표푛푡표푢푟 𝑖푛 푎 푠푛푎푝푠ℎ표푡 표푓 𝑖 푙푎푦푒푟 = 푎푏푠(푚푎푥퐿 − 푚𝑖푛퐿) … (2)

푊𝑖푑푡ℎ 표푓 푐표푛푡표푢푟 𝑖푛 푎 푠푛푎푝푠ℎ표푡 표푓 𝑖푡ℎ푙푎푦푒푟 = 푎푏푠(푚푎푥푊 − 푚𝑖푛푊) … (3)

Figure 10: Extreme pixels from boundary pixels In the next step, the origin of boundary pixels (and the rest of the boundary pixels relative to it) is translated to the global origin (0, 0). The origin of boundary pixels is the point of intersection of horizontal and vertical line passing through point corresponding to minL and minW

14

respectively (Refer Figure 10). The translation operation is shown in Figure 11 and the translation matrix to perform this operation is:

1 0 0 0 0 1 0 0 푇푟 = [ ] … (4) (𝑖) 0 0 1 0 −푚𝑖푛퐿 −푚𝑖푛푊 0 1

Figure 11: Translation operation Once all the boundary pixels are translated such that origin of these pixels lie at the global origin, non-uniform scaling operation is performed on the boundary pixels as the next step to map the pixel data to actual XYZ co-ordinates. The scaling operation is shown in Figure 12. Using the extreme pixel indices and sectional bounding box data obtained in Step 1, scaling factors to convert pixel data to XYZ co-ordinates are calculated as follows:

퐿푒푛푔푡ℎ 표푓 푐표푛푡표푢푟 𝑖푛 푎 푠푛푎푝푠ℎ표푡 표푓 𝑖푡ℎ푙푎푦푒푟 푚푎푥퐿 − 푚𝑖푛퐿 푋 푎푥𝑖푠 푠푐푎푙𝑖푛푔 푓푎푐푡표푟 (푆푥(𝑖)) = 푡ℎ = … (5) 퐷𝑖푚. 표푓 푎푐푡푢푎푙 푐표푛푡표푢푟 표푓 𝑖 푙푎푦푒푟 푎푙표푛푔 푋 푎푥𝑖푠 푋푚푎푥 − 푋푚𝑖푛

푊𝑖푑푡ℎ 표푓 푐표푛푡표푢푟 𝑖푛 푎 푠푛푎푝푠ℎ표푡 표푓 𝑖푡ℎ푙푎푦푒푟 푚푎푥푊 − 푚𝑖푛푊 푌 푎푥𝑖푠 푠푐푎푙𝑖푛푔 푓푎푐푡표푟 (푆푦(𝑖)) = 푡ℎ = … (6) 퐷𝑖푚. 표푓 푎푐푡푢푎푙 푐표푛푡표푢푟 표푓 𝑖 푙푎푦푒푟 푎푙표푛푔 푌 푎푥𝑖푠 푌푚푎푥 − 푌푚𝑖푛 and the corresponding scaling matrix is

15

푆푥(𝑖) 0 0 0 0 푆푦(𝑖) 0 0 푆(𝑖) = [ ] … (7) 0 0 1 0 0 0 0 1

Figure 12: Scaling operation The scaling operation results in the slice contour points in XYZ co-ordinate space with the origin of these point set as global origin i.e. (0, 0). This may not be the case for actual contour points. Thus a subsequent inverse translation operation is performed on these scaled points such that the origin of contour points coincide with actual contour origin. The actual contour origin is

(Xmin, Ymin) as shown in Figure 5. The inverse translation operations is shown in Figure 13 and the inverse translation matrix is give as:

1 0 0 0 0 1 0 0 퐼푇푟 = [ ] … (8) (𝑖) 0 0 1 0 푋푚𝑖푛 푌푚𝑖푛 0 1

Thus, if matrix PCPixels(i) contains slice contour pixel data for ith layer, the matrix

PCPoints(i) containing the slice contour XYZ co-ordinate points for the ith layer, can be obtained from the following equation:

16

푃퐶푃표𝑖푛푡푠(𝑖) = 푃퐶푃𝑖푥푒푙푠(𝑖) × 푇(𝑖) × 푆(𝑖) × 퐼푇푟(𝑖) … (9)

Figure 13: Inverse translation The point data set obtained after inverse translation operation are the actual points lying on the sectional contours of the CAD surface. CMA when applied iteratively on all sectional snapshots, generates a set of contour points at each slice thickness level. These points lie on actual

CAD surface and thus can be used for G-code/CLI file generation and subsequently to manufacture the part.

3.2 Support Structure Removability Calculator using Image Processing

In this section the sectional snapshot capture method is integrated with color-based segmentation method and pixel-traversal approach to develop support structure removability analysis. In this tool, the CAD model of the part to be manufactured and the support structures required for the geometry form the input. The tool then generates a support structure removability score which denotes the percentage of support structure which can be accessed with a tool from outside the part and removed. Removability of supports is considered only along 18 directions as

17

shown in Figure 14. The steps of the algorithm for the removability calculator tool is explained in

Figure 15.

Figure 14: 18 directions considered for Supports removability analysis 3.2.1 Sectional snapshot generation and color-based segmentation

The supports removability calculation begins by importing the CAD model for part geometry and the support structures required to build the part. The support structures for this research are generated using Materialise Magics software [31]. For ease of image processing, the part geometry and the support structure geometry are marked as two different colors within the

CAD software. The part model is marked as blue, supports are marked as red and void space is marked as white. In order to identify the eight directions of removability (four orthogonal and four diagonal), sectional snapshots of the combined part and support geometry are captured iteratively.

Snapshots are captured along parallel planes orthogonal to the build direction i.e. if the build direction is Z+, snapshots are captured either along X or Y axis. The pixels of the captured snapshot are categorized into part, support or void using color-based segmentation [32].

18

Figure 15: Flowchart for Supports removability calculator The steps involved in color-based segmentation algorithm are shown in Figure 16. In color- based segmentation, initially the palette image containing reference colors is read and converted to L*a*b* colorspace from RYG colorspace. In our case, the palette image would have blue, red and white colors as shown in Figure 17. Using the colors present in the palette, the reference L*, a*, and b* markers are calibrated. In next step, the sectional snapshot is converted to L*a*b* colorspace and nearest-neighbor search is performed for each pixel of the sectional snapshot with respect to reference L*, a*, and b* markers. Based on this step, pixels of snapshot are categorized into either part, support or void pixel. The image generated at the end of this stage is the segmented image and its 2D matrix representation would contain either 0, 1 or 2 integers where 0 represents

19

void pixel, 1 represents part pixel and 2 represents support pixel. The color-based segmentation is demonstrated using a sample image in Figure 18.

Figure 16: Color-based segmentation algorithm

Figure 17: Palette used in Color-based segmentation

Figure 18: Color-based segmentation process

20

3.2.2 Segregation of Support pixels into Removable and Non-removable

In the segmented image, for all the pixels marked with 2 i.e. support pixels, we need to decide if they are accessible from outside and removable. As mentioned previously, removability of support structures is checked along 18 directions; 6 orthogonal directions and 12 diagonal directions. This is achieved in 2 different stages. In the first stage, during the iterative snapshot generation, the removability of support pixels is identified along 8 directions (as shown in Figure

19).

Figure 19: Directions for stage 1 pixel traversal A support pixel is termed as removable and is marked as 3 only if it can reach a border void pixel (0 pixel) of the snapshot without being obstructed by any part pixel i.e. pixel marked with 1 as shown in Figure 20. Once the 8 directional analysis is performed for one particular snapshot, the 2D matrix data for that snapshot is updated and stored as a layer in the 3D matrix which comprises the data for the entire geometry. This process is repeated until all the snapshots corresponding to each layer are segmented and analyzed for 8 directions.

21

Figure 20: Color-based segmentation and criteria for marking removable supports At the end of the first stage, 8 directional analysis for each sectional snapshot generates a

3D matrix for the entire part. The 3D matrix is generated by stacking 2D segmented images parallel to each other as shown in Figure 21.

Figure 21: 3D matrix formation

22

Using the 3D matrix, pixel traversal for the remaining 10 directions is performed (See

Figure 22). These directions include 2 orthogonal, 4 lateral diagonal, and 4 longitudinal diagonal directions. During pixel traversal in 3D matrix, each support pixel is marked as removable (pixel marked as 3) if it can reach either the face or the edge of 3D matrix without encountering any other part pixel. In this manner by the end of this stage, the 3D matrix having 0, 1, 2 or 3 integer values is generated where 3 represents support pixels which are removable and 2 represents support pixels which are non-removable. Thus, we can calculate percentage of removable support structures as follows:

푅푒푚표푣푎푏푙푒 푠푢푝푝표푟푡 푝𝑖푥푒푙푠 ∑ 푃𝑖푥푒푙푠 푚푎푟푘푒푑 푎푠 3 % 푅푒푚표푣푎푏푙푒 푠푢푝푝표푟푡푠 = = … (10) 푇표푡푎푙 푠푢푝푝표푟푡 푝𝑖푥푒푙푠 ∑(푃𝑖푥푒푙푠 푚푎푟푘푒푑 푎푠 2 + 푃𝑖푥푒푙푠 푚푎푟푘푒푑 푎푠 3)

Figure 22: Directions for stage 2 pixel traversal

23

3.3 Sintering Area and Time Calculator

Sintering area is the area hatched by the laser during any laser sintering additive processes or area traversed by the nozzle for deposition based additive processes. Sintering time is the time taken to perform either hatching or deposition operation. Sintering time is assumed to be linearly proportional to the hatch area and the effect of different hatch pattern geometries are not taken into consideration. For the current work, a zig-zag type of hatch pattern is considered while calculating the sintering area and time. By using the sectional snapshots and the associated sectional bounding box along the build direction as described in section 3.1.1, and the segmented image of sectional snapshots described in section 3.2.1, part and support sintering area as well as sintering time can be calculated. Taking into account machine parameters such as laser or deposition head scanning velocity and recoating time (time required to spread new layer of powder or platform lowering time) in the area calculation method, the time required for total part build can be calculated. The details of the algorithm for this tool are explained in the flowchart shown in Figure 23.

The sintering area calculator is initiated by taking into account the part and support geometry. Part and supports are marked as two different colors to facilitate image processing operations later. As before, the part is marked as blue and supports are marked as red. The bounding box dimensions for the entire geometry (part and supports combined) is extracted.

Further, the input machine parameters such as scanning velocity, recoating time and slice thickness are taken into consideration. Once all the initiating parameters are identified, the process of sectional image snapshot capturing and extraction of sectional bounding box is performed normal to the build direction as described in Section 3.1.1.

24

Figure 23: Flowchart for sintering parameters calculator In the next step, boundary tracing operations is performed to identify the boundary pixels.

From the boundary pixels, extreme pixels are identified. The indices of extreme pixels across width are designated as minW and maxW while those across length are termed as minL and maxL. Based on the extreme pixels, the sectional snapshot is cropped and only the area which represents the contour of the part and support geometry is retained. Color-based segmentation is performed on the cropped snapshot to categorize pixels into part, support, or void pixels. Once the pixels are

25

categorized, the fraction of part and support pixels with respect to total pixels in a cropped sectional snapshot (ith layer of build) is calculated as follows:

푃푎푟푡 푝𝑖푥푒푙푠 푃푎푟푡 푝𝑖푥푒푙푠 푓푟푎푐푡𝑖표푛 (푃 ) = … (11) 푓(𝑖) 푇표푡푎푙 푝𝑖푥푒푙푠

푆푢푝푝표푟푡 푝𝑖푥푒푙푠 푆푢푝푝표푟푡 푝𝑖푥푒푙푠 푓푟푎푐푡𝑖표푛 (푆 ) = … (12) 푓(𝑖) 푇표푡푎푙 푝𝑖푥푒푙푠

The sectional bounding box represents limits of the sectional contour along X+, X–, Y+

th and Y– axis in terms of 4 variables: Xmin, Xmax, Ymin, and Ymax. For the i layer, the area of the 2D sectional bounding box can be calculated as follows:

푡ℎ 퐴푟푒푎 표푓 푠푒푐푡𝑖표푛푎푙 푏표푢푛푑𝑖푛푔 푏표푥 표푓 𝑖 푙푎푦푒푟 (퐴푆(𝑖)) = (푋푚푎푥 − 푋푚𝑖푛) ∗ (푌푚푎푥 − 푌푚𝑖푛) … (13)

Thus, the sintering areas for part and supports for ith layer can be calculated as follows:

푡ℎ 푃푎푟푡 푠𝑖푛푡푒푟𝑖푛푔 푎푟푒푎 표푓 푡ℎ푒 𝑖 푙푎푦푒푟 = 푃푓(𝑖) ∗ 퐴푆(𝑖) … (14)

푡ℎ 푆푢푝푝표푟푡 푠𝑖푛푡푒푟𝑖푛푔 푎푟푒푎 표푓 푡ℎ푒 𝑖 푙푎푦푒푟 = 푆푓(𝑖) ∗ 퐴푆(𝑖) … (15)

By using the indices of extreme pixels along the length and width, the number of pixels in the cropped sectional snapshot across the length and width can be calculated. Using the dimensions of sectional bounding box and the number of pixels in the cropped sectional snapshot, the dimension of each pixel in XYZ co-ordinate space for the ith layer can be identified by the following formula:

퐷𝑖푚. 표푓 푠푒푐푡. 푏표푢푛푑𝑖푛푔 푏표푥 표푓 𝑖푡ℎ 푙푎푦푒푟 푎푙표푛푔 푋 푎푥𝑖푠 푋 − 푋 푃𝑖푥푒푙 푑𝑖푚푒푛푠𝑖표푛 (푃 ) = = 푚푎푥 푚𝑖푛 … (16) 푑(𝑖) 푁푢푚푏푒푟 표푓 푝𝑖푥푒푙푠 푎푐푟표푠푠 푙푒푛푔푡ℎ 푓표푟 𝑖푡ℎ푙푎푦푒푟 푚푎푥퐿 − 푚𝑖푛퐿

Thus based on the number of part pixels and support pixels, the sintering time for each layer can be calculated using following formulae:

푡ℎ (푁푢푚푏푒푟 표푓 푝푎푟푡 푝𝑖푥푒푙푠 𝑖푛 𝑖 푙푎푦푒푟) ∗ 푃푑(𝑖) 푃푎푟푡 푠𝑖푛푡푒푟𝑖푛푔 푡𝑖푚푒 표푓 푡ℎ푒 𝑖푡ℎ푙푎푦푒푟 = … (17) 푆푎푐푛푛𝑖푛푔 푣푒푙표푐𝑖푡푦

푡ℎ (푁푢푚푏푒푟 표푓 푠푢푝푝표푟푡 푝𝑖푥푒푙푠 𝑖푛 𝑖 푙푎푦푒푟) ∗ 푃푑(𝑖) 푆푢푝푝표푟푡 푠𝑖푛푡푒푟𝑖푛푔 푡𝑖푚푒 표푓 푡ℎ푒 𝑖푡ℎ푙푎푦푒푟 = … (18) 푆푎푐푛푛𝑖푛푔 푣푒푙표푐𝑖푡푦

26

The entire process is repeated iteratively for all the slices of the part. To calculate the total build time, sintering areas for all layers are summed together and recoating time is added for each slice level increment.

3.4 Sharp Corner Detector

AM offers a unique advantage of manufacturing complex parts. In metal based AM processes such as DMLS, a laser beam is used for sintering the metal powder. Due to the limitations posed by the laser beam diameter, features such as sharp corners, thin regions, and small openings may not be manufactured as per the design. Identifying such features before actually manufacturing the part can provide input to re-design the part or change the build orientation. For a given build orientation, the proposed sharp corner detector tool detects and highlights sharp features in the CAD geometry within a CAD package. The criteria to decide if a feature is sharp or not is based on a user defined threshold angle.

The sharp corner detector highlights sharp regions at each layer. The sequence of operations performed by this tool are highlighted in the flowchart shown in Figure 24. In the first step, the tool captures sectional snapshots of part to be manufactured. These snapshots are spaced at a distance of layer thickness specified by user. In the next step, the captured sectional snapshot is converted to a binary image using binary thresholding operation. This operation is performed as a precursor to the next two steps. From the binary image, boundary pixels are extracted using

Moore-neighbor tracing algorithm modified by Jacob’s stopping criteria [29,30] . The same binary image is also used to identify pixels that form corners in the binary image as shown in Figure 25.

Corner and edge detection algorithm proposed by Harris and Stephens [7] is used to perform this

IP operation.

27

Figure 24: Flowchart for sharp corner detector

Figure 25: Corner pixel detection using binary image

28

Once we get the boundary pixels as well as corner pixels, they are superimposed with each other to generate two vectors which are formed at a corner pixel. The method is shown in Figure

26.

Figure 26: Vector method for finding angle The feature angle at corner pixel A can be identified by the following formulation.

푎̅. 푏̅ = |푎|. |푏|. cos(휃) … (19)

푎̅. 푏̅ 푎̅. 푏̅ cos(휃) = 𝑖. 푒. 휃 = cos−1 ( ) … (20) |푎|. |푏| |푎|. |푏| Similar procedure is performed for rest of the corner pixels at each layer to identify angles associated with all the corners. Once we have the angle data for all the corners in the part, based on user input of threshold angle, all the corner pixels that do not satisfy threshold angle criteria are isolated. These are the pixels associated with corners that will be difficult to manufacture. Using the sectional bounding box data for each layer, the location of those pixels on actual geometry are mapped using a process as described in Section 3.1.1. Using this tool and a threshold angle of 150, sharp corner regions for the binary sectional snapshot shown in Figure 25 are detected and highlighted in Figure 27.

29

Figure 27: Pixels responsible for sharp corners

30

4 Examples and Results

In this section the algorithms and the developed tools are validated using test cases.

FreeCAD and Siemens NX 10 are used as CAD tools. Image Processing Toolbox offered by

MATLAB [33] and OpenCV 3.1 [34] module are used for performing Image Processing operations.

4.1 Direct CAD Slicing using IPSlicer

The IPSlicer offers a unique capability to generate data for G-code/CLI file directly from

CAD geometry. Thus the parts manufactured by this method will have reduced GD&T errors as compared to components manufactured from STL file. The effectiveness of IPSlicer is validated by virtually building the part models based on the specified parameters [11].

4.1.1 Test Case 1: Component with Cylindrical and Spherical features

Figure 28 shows the CAD model of a part having cylindrical and spherical features. The axis aligned bounding box dimensions for this geometry are 20mm x 10mm x 21.83mm. The part is sliced normal to the build axis using the IPSlicer to generate the slice contour point cloud as shown in Figure 29. The slicing and point cloud generation is performed in 24 secs using Core i7

PC. The resolution for sectional snapshot images generated by IPSlicer is 3200x2400. By using this point cloud, the part can be manufactured by generating G-code/CLI file. The same point cloud is used for virtually manufacturing the component. The results obtained by using IPSlicer are compared against the results obtained by slicing an STL file with a translation tolerance of 0.05mm

[26].

31

The GD&T parameters considered for this part are cylindricity and sphericity. These parameters are calculated using the minimum zone algorithms [35]. Table 1 and Table 2 show the reduction in sphericity and cylindricity errors for IPSlicer compared to STL slicing method.

Figure 28: Part with Spherical and Cylindrical feature

Figure 29: Slice contour points for part in Figure 28

32

Table 1: Sphericity error comparison Table 2: Cylindricity error comparison

The resolution of sectional snapshots used in IPSlicer has a direct impact on the GD&T errors associated with the components manufactured using IPSlicer. As the image resolution of sectional snapshots used by IPSlicer is increased, GD&T errors are reduced. Table 3 highlights the effect of sectional snapshot resolution on cylindricity error for geometry shown in Figure 28.

Table 2: Effect of sectional snapshot resolution on GD&T error

4.1.2 Test Case 2: Component with Freeform Surface

The IPSlicer is also tested on a part made up of freeform surfaces as shown in Figure 30.

The slice contour points for this part are shown in Figure 31. IPSlicer slices and generates sectional point cloud data for this geometry in 7 secs using a Core i7 PC. The dimensions of the axis aligned bounding box for this geometry are 5mm x 5mm x 5mm. The GD&T parameter under consideration for this part is profile error. The profile error calculation is performed by superimposing the CAD model and virtually manufactured point cloud within Siemens NX 10.

Using NXOpen API [28], we calculate the deviation of each slice point and virtually manufactured point from the actual CAD surface to obtain the profile error associated with each point in the point cloud. The average of this error yields the average profile error. Table 3 shows the average profile error comparison for the part virtually manufactured using IPSlicer and the part virtually manufactured by slicing STL file. The STL file used in this test case has a lower translation

33

tolerance of 0.01mm and the IPSlicer uses a default image resolution of 1581x891 while generating a sectional snapshot images.

Figure 30: Part with freeform surfaces

Figure 31: Slice contour points for part in Figure 30

34

Table 3: Profile error comparison

4.2 Support Structures Removability Calculator

The support removability calculator generates the removability score which is the percentage of support structures which can be accessed and removed in the post processing stage.

Two test cases will be considered to validate and demonstrate this tool. The sectional snapshots generated by the tool has an image resolution of 1581x891.

4.2.1 Test Case 1: Component with 100% Removability Score

Figure 32 shows the CAD model of bracket and the supports required for this bracket in this build orientation. The supports are generated using the Materialise Magics [31] software. The bracket and supports are imported into CAD software and then are marked with two different colors. As can be seen from Figure 33, all the supports for this model can be removed from six standard orthogonal directions. The removability calculator also generates the same results thus validating the algorithm. The result is shown in Figure 34.

Figure 32: Part to be manufactured

35

Figure 33: Part with support structures

Figure 34: Removability calculations for bracket 4.2.2 Test Case 2: Component with Non-removable Supports

In the second test case, a complex CAD geometry is considered. Figure 35 shows the CAD model of a turbine [36] and the supports required for it along build direction. As can be seen in the

Figure 36, some of the supports below the turbine fins are not removable from any of the orthogonal directions and thus removability score will be less than 100%. The obtained score has been validated by comparing with a similar test case presented in [23]. If all 18 accessible directions are considered for support removal then all the supports can be removed. The reports generated for both the cases are shown in Figure 37a and Figure 37b.

36

Figure 35: Part to be manufactured

Figure 36: Part with support structures

Figure 37a: Removability calculations in orthogonal Figure 37b: Removability calculations in 18 directions for directions for turbine turbine

4.3 Sintering Area and Time Calculator

The sintering area and sintering time calculator is validated on the CAD model shown in

Figure 38. In Figure 39 the blue colored geometry represents part while the red colored geometry

37

represents the support structure required by the part. A scanning velocity of 5m/s is used for calculation [37]. The sectional snapshots generated by the tool has an image resolution of

1581x891. A snippet of the generated report by this tool is shown in Figure 40.

Figure 38: Part to be manufactured

Figure 39: Sectional view of part with supports

38

Figure 40: Sintering area and time calculation report 4.4 Sharp Corner Detector

The sharp corner detector is validated by using the geometry shown in Figure 41. The user defined threshold angle for this case is considered as 150. Based on the user defined input, the corners which form angle of less than 150 in each layer are identified by the tool and highlighted using red color in CAD software as shown in Figure 42.

39

Figure 41: Part for sharp feature detection

Figure 42: Sharp features detected and highlighted

40

5 Conclusion and Future Scope

This research presents a novel image processing based method for directly slicing the CAD geometry. By using this method, the part to be manufactured by using additive processes can be manufactured directly without the need of converting it to STL file. The effectiveness of this method is validated by demonstrating improvement in GD&T errors on sample parts.

The concepts and tools used in direct CAD slicing method are coupled with color-based segmentation algorithm to develop support structure removability calculator and sintering area and time calculator. A tool that highlights sharp regions which are difficult to manufacture using additive processes has also been developed using image processing algorithms. All the developed tools are validated using test cases.

Future work includes coupling G-code/CLI generator with IPSlicer to provide a 1-click tool for manufacturing components by additive processes. The supports removability calculator can be further enhanced to highlight all the inaccessible regions. The sintering area and time calculator can be further refined to account for factors such as hatch pattern, recoating time and build platform lowering time. The support generation tool can be integrated within the CAD software along with the IPSlicer, support removability calculator, and sintering area and time calculation tool to assist designers with pre- and post- processing information of additively manufactured parts during early design stage. Finally, as an extension, other design for additive manufacturing algorithms including identification of thin sections, small openings, and support contact area can be developed based on the image snapshot of each layer. This could be used for further design modifications and selection of optimal build orientation.

41

References

[1] Edison Welding Institute (EWI), 2015, "Additive Manufacturing: Moving Beyond Rapid

Prototyping", eGuide. Available at: https://ewi.org/additive-manufacturing-moving-beyond- rapid-prototyping/.

[2] Coykendall, J., Cotteleer, M., Holdowsky, J., and Mahto, M., 2014, "3D Opportunity in

Aerospace and Defense: Additive Manufacturing Takes Flight", eReport. Available at: http://dupress.com/articles/additive-manufacturing-3d-opportunity-in-aerospace/.

[3] Gibson, I., Rosen, D., and Stucker, B., 2015, Additive Manufacturing Technologies, Springer,

New York, USA. http://dx.doi.org/10.1007/978-1-4939-2113-3.

[4] Leong, K. F., Chua, C. K., and Ng, Y. M., 1996, "A Study of Stereolithography File Errors and

Repair. Part 1. Generic Solution", International Journal of Advanced Manufacturing Technology,

12(6), pp. 407-414. http://dx.doi.org/10.1007/BF01186929.

[5] Grimm, T., 2004, User's Guide to Rapid Prototyping, Society of Manufacturing Engineers,

Dearborn.

[6] Kulkarni, P., Marsan, A., and Dutta, D., 2000, "Review of Process Planning Techniques in

Layered Manufacturing", Rapid Prototyping Journal, 6(1), pp. 18-35. http://dx.doi.org/10.1108/13552540010309859.

[7] Harris, C., and Stephens, M., 1988, "A Combined Corner and Edge Detector", Alvey vision conference, Manchester, UK, pp.147-151. http://dx.doi.org/10.5244/C.2.23.

[8] Fadel, G. M., and Kirschman, C., 1996, "Accuracy Issues in CAD to RP Translations", Rapid

Prototyping Journal, 2(2), pp. 4-17. http://dx.doi.org/10.1108/13552549610128189.

42

[9] Allavarapu, S., Paul, R., and Anand, S., 2013, "A New Additive Manufacturing File Format using Bezier Patches", 41st North American Manufacturing Research Conference 2013, Madison,

WI, pp.580-590.

[10] Paul, R., and Anand, S., 2015, "A New Steiner Patch Based File Format for Additive

Manufacturing Processes", Computer-Aided Design, 63, pp. 86-100. http://dx.doi.org/10.1016/j.cad.2015.01.002.

[11] Navangul, G., Paul, R., and Anand, S., 2013, "Error Minimization in Layered Manufacturing

Parts by Stereolithography File Modification using a Vertex Translation Algorithm", Journal of

Manufacturing Science and Engineering, Transactions of the ASME, 135(3), pp. 031006-1-13. http://dx.doi.org/10.1115/1.4024035.

[12] Zha, W., and Anand, S., 2015, "Geometric Approaches to Input File Modification for Part

Quality Improvement in Additive Manufacturing", Journal of Manufacturing Processes, 20, pp.

465-477. http://dx.doi.org/10.1016/j.jmapro.2015.06.021.

[13] Guduri, S., Crawford, R., and Beaman, J., 1993, "Direct Generation of Contour Files from Constructive Solid Geometry Representation", Proceedings of Solid Freeform Fabrication

Symposium, Austin, TX, pp.291-302.

[14] Starly, B., Lau, A., Sun, W., Lau, W., and Bradbury, T., 2005, "Direct Slicing of STEP Based

NURBS Models for Layered Manufacturing", CAD Computer Aided Design, 37(4), pp. 387-397. http://dx.doi.org/10.1016/j.cad.2004.06.014.

[15] Rajagopalan, M., Aziz, N. M., and Huey, C. O., J., 1995, "A Model for Interfacing Geometric

Modeling Data with Rapid Prototyping Systems", Advances in Engineering Software, 23(2), pp.

89-96. http://dx.doi.org/10.1016/0965-9978(95)00051-W.

43

[16] Jamieson, R., and Hacker, H., 1995, "Direct Slicing of CAD Models for Rapid Prototyping",

Rapid Prototyping Journal, 1(2), pp. 4-12. http://dx.doi.org/10.1108/13552549510086826.

[17] Cao, W., and Miyamoto, Y., 2003, "Direct Slicing from AutoCAD Solid Models for Rapid

Prototyping", International Journal of Advanced Manufacturing Technology, 21(10-11), pp. 739-

42. http://dx.doi.org/10.1007/s00170-002-1316-0.

[18] Sunanon, P., Koomsap, P., and Nachaisit, S., 2005, "Image Processing for Rapid Prototyping

Technology", Proceedings of the 2005 International Conference on Simulation and Modeling.

[19] FreeCAD, 2015, "FreeCAD V0.15". Available at: http://www.freecadweb.org/, Accessed on:

August 2015.

[20] Siemens PLM Software, 2015, "NX for Design". Available at: http://www.plm.automation.siemens.com/en_us/products/nx/about-nx-software.shtml, Accessed on: September 2015.

[21] Woo, T. C., 1994, "Visibility Maps and Spherical Algorithms", Computer Aided Design,

26(1), pp. 6-16. http://dx.doi.org/10.1016/0010-4485(94)90003-5.

[22] Bassi, R., and Bedi, S., 2013, "Image Processing-Based Accessibility Analysis Method for

Determining Undercut-Free Parting Direction", International Journal of Advanced Manufacturing

Technology, 69(5-8), pp. 1581-91. http://dx.doi.org/10.1007/s00170-013-5129-0.

[23] Samant, R., 2015, "Support Structure Accessibility and Removal in Additive Manufacturing using Octree data Structure", Master's Thesis, University of Cincinnati, Cincinnati, OH.

[24] Paul, R., and Anand, S., 2012, "Process Energy Analysis and Optimization in Selective Laser

Sintering", Journal of Manufacturing Systems, 31(4), pp. 429-37. http://dx.doi.org/10.1016/j.jmsy.2012.07.004.

44

[25] Ranjan, R., Samant, R., and Anand, S., 2015, "Design for Manufacturability in Additive

Manufacturing using a Graph Based Approach", ASME 2015 International Manufacturing Science and Engineering Conference, Charlotte, NC, pp.V001T02A069. http://dx.doi.org/10.1115/MSEC2015-9448.

[26] Topçu, O., Taşcıoğlu, Y., and Ünver, H., 2011, "Method for Slicing CAD Models in Binary

STL Format", Proceedings of 6th International Advanced Technologies Symposium (IATS’11),

Elazığ, Turkey, pp.141-145.

[27] Riegel, J., Mayer, W., and van Havre, Y., 2013, "FreeCAD python API documentation".

Available at: http://www.freecadweb.org/api/, Accessed on: August 2015.

[28] Siemens PLM Software, 2014, "NXOpen API". Available at: https://docs.plm.automation.siemens.com/tdoc/nx/10/nx_api/#uid:index_nxopen_prog_guide:id1

142146:what_is_nxopen, Accessed on: September 2015.

[29] Ghuneim, A. G., 2015, "Moore-Neighbor Tracing". Available at: http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing

_Abeer_George_Ghuneim/moore.html, Accessed on: July 2015.

[30] Gonzalez, R. C., Woods, R. E., and Eddins, S. L., 2004, Digital Image Processing using

MATLAB, Pearson Prentice Hall, New Jersey.

[31] Materialise, 2015, "Magics". Available at: http://software.materialise.com/magics, Accessed on: August 2015.

[32] MathWorks, 2015, "Color-Based Segmentation Using the L*a*b* Color Space". Available at: http://www.mathworks.com/help/images/examples/color-based-segmentation-using-the-l-a-b- color-space.html, Accessed on: August 2015.

45

[33] MathWorks, 2015, "Image Processing Toolbox". Available at: http://www.mathworks.com/products/image/index.html, Accessed on: July 2015.

[34] Itseez, 2015, "OpenCV 3.1(Open Source Computer Vision Library)". Available at: http://opencv.org/downloads.html, Accessed on: September 2015.

[35] Carr, K., and Ferreira, P., 1995, "Verification of Form Tolerances Part II: Cylindricity and

Straightness of a Median Line", Precision Engineering, 17(2), pp. 144-156. http://dx.doi.org/10.1016/0141-6359(94)00018-U.

[36] Sula, S., 2015, "Turbine Rotor". Available at: https://grabcad.com/library/turbine-rotor-18,

Accessed on: August 2015.

[37] EOS e-Manufacturing Solutions, 2015, "EOS M 290". Available at: http://www.eos.info/eos- m290, Accessed on: October 2015.

46