Patent Description:
<CIT> discloses a system and method for planning support removal in hybrid manufacturing with the aid of a digital computer.

BECKER P ET AL: "Automation of Post-Processing in Additive Manufacturing with Industrial Robots" discloses a method for using existing production data to generate trajectories to automate post-processing steps.

In a first aspect, the present invention provides a system comprising: an additive component; a subtractive component; and a processor and addressable memory, the processor configured to: receive a contact line associated with a support structure from the additive component, wherein the contact line specifies a set of points of contact between the support structure and a part; receive geometry of the support structure and the part along with an orientation from the additive component, wherein the orientation comprises at least one of: data regarding a finished surface, removal accessibility of the support structure, deformation risk of the supported part, priority holes and priority surfaces, and support marks marking where the support structure contacts the supported part; receive data associated with a tool from the subtractive component; generate a subtractive tool path for a subtraction process to remove the support structure along the contact line based on the received contact line, the received data associated with the tool, and the received geometry; transmit the generated subtractive tool path to an analysis component for processing tool path validation; validate based on accessibility of the contact line for cutting by the tool and collision avoidance of the tool while moving along the tool path, by the analysis component, the tool path based on output from a simulation component to determine whether: removal of the support structure from the part is successfully computed by the subtractive component; or removal of the support structure from the part is unsuccessfully computed by the subtractive component, wherein removal of the support structure from the part is unsuccessfully computed when it is determined that the tool path would cause a collision of the tool with the part; and if the analysis component determines that removal of the support structure from the part is unsuccessfully computed, the additive component is configured to modify the support structure to make the support structure more accessible to the tool for removal of the support structure.

Optionally, if the analysis component determines that removal of the support structure from the part is successfully computed, the system is configured to manufacture the support structure and the part and remove the support structure from the part by cutting along the contact line based on the generated subtractive tool path.

In additional system embodiments, the additive component may comprise an additive manufacturing application and an additive kernel.

In additional system embodiments, the subtractive manufacturing application may be executed on a CNC machine.

In a second aspect, the present invention provides a method comprising: receiving, by a subtractive component, a contact line associated with a support structure from an additive component from an additive kernel, wherein the contact line specifies a set of points of contact between the support structure and a part; receiving, by the subtractive component, geometry of the support structure and the part along with orientation from the additive component, wherein the orientation comprises at least one of: data regarding a finished surface, removal accessibility of the support structure, deformation risk of the supported part (<NUM>), priority holes and priority surfaces, and support marks marking where the support structure contacts the supported part; generating, by the subtractive component, data associated with a tool; determining, by the subtractive component, a subtractive tool path for a subtraction process to remove the support structure along the contact line based on the received contact line, the received geometry, and the received data associated with the tool; transmitting, by the subtractive component, the determined subtractive tool path to an analysis component for processing tool path validation; validating based on accessibility of the contact line for cutting by the tool and collision avoidance of the tool while moving along the tool path, by the analysis component, the tool path based on an output from a simulation component to determine whether: removal of the support structure from the part is successfully computed by the subtractive component; or removal of the support structure from the part is unsuccessfully computed by the subtractive component, wherein removal of the support structure from the part is unsuccessfully computed when it is determined that the tool path would cause a collision of the tool with the part; and if the analysis component determines that removal of the support structure from the part is unsuccessfully computed, modifying the support structure by the additive component to make the support structure more accessible to the tool for removal of the support structure.

Optionally, if the analysis component determines that removal of the support structure from the part is successfully computed, the method comprises manufacturing the support structure and the part and removing the support structure from the part by cutting along the contact line based on the generated subtractive tool path.

In additional method embodiments, the contact line may be based on a region to support and a support structure, where the support structure information may be based on support parameters and the region to support may be based on geometry received from an additive component. In additional method embodiments, the orientation may be further based on output from the analysis component. In additional method embodiments, the support parameters may be based on output from the analysis component.

The method according to the second aspect of the invention may comprise using and/or providing any of the features as recited herein with reference to the first aspect of the invention. The system according to the first aspect of the invention may be configured to perform and/or provide any of the features as recited herein with reference to the second aspect of the invention.

The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principals of the invention. Like reference numerals designate corresponding parts throughout the different views. Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which:.

Additive manufacturing (AM), also known as 3D printing, is considered the construction of a three-dimensional object from a Computer-aided design (CAD) model or a digital 3D model. Additive Manufacturing refers to a variety of manufacturing processes where a part is built by adding material to a smaller base. Subtractive manufacturing (SM), on the other hand, may involve removing material from a larger stock. During the AM process it may be necessary to add support structures to a region of a part to be created in order to, for example, avoid part deformation during manufacturing and where the added support structures, added to the part during the AM process, will need to be removed during the SM process.

In powder bed fusion additive manufacturing for example, a heat source melts layer by layer the powder, and in direct metal deposition the material is added, commonly as a solid or powder, to a melt pool created by a heat source. During this process, support structures are required to support overhanging features while building a part by the AM process. When the part is finally built, the support structure may be removed by the SM process, which is often done manually and/or without direct communication with the AM componentry. In the present application, methods and systems embodiments are disclosed for optimizing removal of support structures in the SM process.

The present embodiments disclose methods and systems for receiving data related to the AM process, and removing the support structure based on that data within a computer aided manufacturing (CAM) environment. For example, various inputs may be communicated to a kernel from an AM application component, and the kernel in turn relays the data to an SM application component in the CAM environment. Such inputs include the geometry of a part and a support structure, and the points of contact between features of the support structure, and certain regions of the part, such as a region to support (RTS) of the part. The SM application within the CAM environment may be used in some embodiments to program computer numerical control (CNC) machine tools. The CNC machine tools may be used to remove regions of a part, and in this case support structures from the part. CNC machine tools may also be used in machine shops for the production of discrete parts such as molds, dies, tools, prototypes, aerospace components, and more.

In some embodiments, the SM application may provide a tool path for a CNC cutting tool in order to remove the support structures from the RTS, as well as any other points of contact between the support structure and the part. In one embodiment, the support structures may be defined as additional elements used to prevent part deformation during the AM process. Support structures may be used to help construction of overhanging surfaces, anchor the part/surface to the build plate or other surfaces on the part, and assist in thermal dissipation. Support structures are not functional and need to be removed after the AM process. Additionally, when a support structure is added and then ultimately removed, there may be marks remaining on the part that occurred during the adding and subtracting of the support structure; therefore, the surface is finished/polished to remove said marks.

The RTS is related to the region of the part surface that needs to be connected to a support structure. In one embodiment, the RTS may be manually defined by a user by selecting a part surface at a user interface. In another embodiment, the part surface may be automatically selected by the AM system. Once the RTS has been defined, related support structures may be assigned to the RTS, and contact may be established by the support structure with the RTS.

The described technology concerns one or more methods, systems, devices, and mediums storing processor-executable process steps for removing a support structure supporting a region of a part in a CAM environment. In one embodiment, removing a support structure includes receiving, after the AM process, the geometry of the part and the support structure and points of contact between the support structure (e.g., contact lines or also referred to as support lines) and the part, such as points of contact along the RTS. In one embodiment, the RTS may be related to the region of the part surface that needs to be connected to the support structure. The support structure may have some extra elements to prevent part deformation during additive manufacturing. The input data may be received at an additive kernel after the AM process, and then communicated to an SM application by the additive kernel. In turn, the SM application within the CAM environment uses the received input data to create a tool path for a CNC tool to remove the support structure.

The techniques introduced below may be implemented by programmable circuitry programmed or configured by software and/or firmware, or entirely by special-purpose circuitry, or in a combination of such forms. Such special-purpose circuitry (if any) may be in the form of, for example, one or more application-specific integrated circuits (ASICs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), etc..

<FIG> and the following discussion provide a brief, general description of a suitable computing environment in which aspects of the described technology may be implemented. Although not required, aspects of the technology may be described herein in the general context of computer-executable instructions, such as routines executed by a general- or special-purpose data processing device (e.g., a server or client computer). Aspects of the technology described herein may be stored or distributed on tangible computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media. Alternatively, computer-implemented instructions, data structures, screen displays, and other data related to the technology may be distributed over the Internet or over other networks (including wireless networks) on a propagated signal on a propagation medium (e.g., an electromagnetic wave, a sound wave, etc.) over a period of time. In some implementations, the data may be provided on any analog or digital network (e.g., packet-switched, circuit-switched, or other scheme).

The described technology may also be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network, such as a Local Area Network ("LAN"), Wide Area Network ("WAN"), or the Internet. In a distributed computing environment, program modules or subroutines may be located in both local and remote memory storage devices. Those skilled in the relevant art will recognize that portions of the described technology may reside on a server computer, while corresponding portions may reside on a client computer (e.g., PC, mobile computer, tablet, or smart phone). Data structures and transmission of data particular to aspects of the technology are also encompassed within the scope of the described technology.

With respect to <FIG>, an example of a top-level functional block diagram of a computing device system <NUM> is illustrated. The system <NUM> is shown as a computing device <NUM> comprising a processor <NUM>, such as a central processing unit (CPU), addressable memory <NUM>, an external device interface <NUM>, e.g., an optional universal serial bus port and related processing, and/or an Ethernet port and related processing, and an optional user interface <NUM>, e.g., an array of status lights and one or more toggle switches, and/or a display, and/or a keyboard and/or a pointer-mouse system and/or a touch screen. Optionally, the addressable memory may include any type of computer-readable media that can store data accessible by the computing device <NUM>, such as magnetic hard and floppy disk drives, optical disk drives, magnetic cassettes, tape drives, flash memory cards, digital video disks (DVDs), Bernoulli cartridges, RAMs, ROMs, smart cards, etc. Indeed, any medium for storing or transmitting computer-readable instructions and data may be employed, including a connection port to or node on a network, such as a LAN, WAN, or the Internet. These elements may be in communication with one another via a data bus <NUM>. In some embodiments, via an operating system <NUM> such as one supporting a web browser <NUM> and applications <NUM> (e.g., AM application <NUM> and SM application <NUM> described below), the processor <NUM> may be configured to execute steps of a process for a user in a CAM environment to remove support structures that support an RTS based on the prior step of creating/adding the support structure to the RTS.

As described previously, in the course of formation, a part may have region of the part (or surface of the part) that may need to be further reinforced to help support the construction of the part. More specifically, a plurality of construction support lines may be introduced for connecting a support structure and a region to support the part. Upon construction of the part, the support structure may be subsequently removed.

Typically, additive manufacturing, or 3D printing, may include a variety of processes in which material is joined or solidified under computer control to create a three-dimensional object, with material being added together (such as liquid molecules or powder grains being fused together), typically layer by layer. Such layering may require certain areas to provide stronger support to the overall structure. The layered structure of such processes may inevitably lead to a stair-stepping effect on part surfaces which are curved or tilted with respect to the building platform. The effects may mainly depend on the orientation of a part surface inside the building process. In one embodiment, internal supports may be introduced for overhanging features during construction for such methods and processes. In some instances, overhang features, e.g., large regions hanging over a void without sufficient support from the lower structure may be unstable. Self-supporting overhang structures produced by additive manufacturing may then require additional layers of support to be produced and add additional complexity to the additive process, for example, to account for the layer thickness. Overhanging structures or features may then be accounted for and supported using the disclosed embodiments of the present application.

In the disclosed embodiments, after the additive manufacturing process is performed and the part with the support structure (also called the non-finished part or stock piece) is created, the building of the rest of the part is completed. Thereafter, the support structure may be removed in the subtractive process, and the part is then machined. More specifically, embodiments disclose how a tool path may be generated within the CAM environment based on data related to the AM process to then remove the support structure with a CNC cutting tool.

With respect to <FIG>, communication between the additive manufacturing process and the subtractive manufacturing process within the CAM environment is illustrated. In one embodiment, data related to the construction of a support structure may be sent from an additive manufacturing (AM) application <NUM> to a kernel, for example, an additive kernel <NUM>. In one embodiment, the additive kernel <NUM> is the central component of the CAM operating system that manages communication from the AM process to the subtractive manufacturing (SM) process. The additive kernel <NUM> may act as a bridge between the AM and SM applications and perform data processing at the hardware level using inter-process communication and system calls. An SM application <NUM> may receive data from the additive kernel <NUM> related to the AM process carried out by the AM application <NUM>. For example, the additive kernel <NUM> may receive the information related to the geometry of the support structure and the part, as well as the position or location of a set of connecting lines between the support structure and a region to support (RTS) of the part determined during the AM process. The additive kernel <NUM>, in turn, may relay the data to the SM application <NUM> within the CAM environment. In one embodiment, the SM application <NUM> may generate a tool path for a cutting tool in order to remove the support structures from the RTS, based on the data received from the additive kernel <NUM>.

In another embodiment, and with respect to <FIG>, the SM application <NUM> may communicate back to the AM application <NUM>. For example, the SM application <NUM> may find that the generated tool path, which is based on the support structure data sent from the AM application <NUM> after completion of the AM process, may result in poor accessibility to the RTS; therefore, the SM application <NUM> may relay this error to the AM application <NUM> via the additive kernel <NUM>. The AM application <NUM> then modifies the support structure to make the support structure more accessible to the tool for cutting/removal. In that way, the system <NUM> is dynamic in nature in order to optimize the removal of the support structure.

With respect to <FIG>, a graphical representation of a region to support (RTS) <NUM> of an overhanging region <NUM> of a part <NUM> is shown. In one embodiment, the region <NUM> may be defined by the angle that the surface of the region <NUM> subtends relative to the (negative) z direction, shown as the downward vertical direction in <FIG>. In one embodiment, the system may create a new, three-dimensional support structure <NUM> with the additive application <NUM> of the computing device <NUM>, where the new support structure <NUM> may provide additional structural support to the RTS <NUM> of the part <NUM> to be created. The support structure <NUM> includes contact lines <NUM>. In one embodiment, the contact lines <NUM> may connect the support structure <NUM> to the region to support <NUM>. The support structure <NUM> may provide for avoiding deformation of the part <NUM>, such as warping due to thermal effects. In one embodiment, the support structure <NUM> to be created may fit the contour of the RTS <NUM>.

In one embodiment, a user may construct a new support structure to support a region <NUM> of a part which requires support. In one embodiment, creating a support structure includes determining a position of contact lines for connecting the support structure and a region to support the part to be created. In one embodiment, the region to support (RTS) may be related to the region of the part surface that needs to be connected to the support structure. The final three-dimensional support structure <NUM> may be constructed by iteratively adding, removing, and/or terminating contact lines to the RTS <NUM> based on receiving continuous and real-time or near real-time feedback from the SM process.

With respect to <FIG>, a simplified side view of the part <NUM> in the x-z plane is shown. The part <NUM> includes the overhanging portion <NUM> that is supported by the support structure <NUM> and a vertical portion <NUM> that is also in contact with the support structure <NUM>. The part <NUM> has a contact line <NUM>. In one embodiment, the contact line <NUM> may represent points of contact between the support structure <NUM> and the RTS in the z direction, as well as the support structure <NUM> and the vertical portion <NUM> in the y direction.

<FIG> depicts the same simplified side view of the part <NUM> with some additional details. In one embodiment, the contact line <NUM> may represent surfaces where a plurality of contact areas <NUM>, highlighted with open circles for clarity, to show where the support structure <NUM> contacts the part, such as at the RTS <NUM> and at the vertical portion <NUM>. In one embodiment, the contact points <NUM> may include a plurality of surfaces, in this example shown in the shape of teeth <NUM>. Teeth <NUM> show how the support structure comes into contact with the region to support. In some embodiments, the teeth <NUM> may be line or point or surface, depending on the structure of the support. In another embodiment, the contact areas <NUM> may include lines points or surface, such as contact lines <NUM> described above. In one embodiment, the support structure <NUM> may be a volume support, a surface support or a lattice structure support.

<FIG> illustrates the SM application and how it provides a tool path <NUM> to remove the support structure <NUM> along the contact line <NUM>. The tool path <NUM> is based on data related to the AM process, and removing said support structure based on that data within a computer aided manufacturing (CAM) environment. For example, a set of inputs, such as (<NUM>) the position or location of a set of contact points (e.g., connecting teeth, lines or points between support structures and a region to support (RTS) of the part determined), (<NUM>) a cutting tool, and (<NUM>) the geometry of the part and/or support structure may be communicated to a kernel (e.g., additive kernel <NUM>) from an AM application (e.g., AM application <NUM> of <FIG>). The kernel in turn relays the input data to an SM application (e.g., SM application <NUM> of <FIG>)) in the CAM environment.

In some embodiments, the SM application <NUM> passes the tool path <NUM> to a CNC cutting tool in order to remove the support structure from the RTS. More specifically, the SM application <NUM> may provide the tool path <NUM> to the additive kernel <NUM> based on inputs, including: (<NUM>) a contact line input file <NUM> specifying the points of contact between the support structure <NUM> and the part <NUM> along the contact line <NUM>, (<NUM>) a cutting tool <NUM> (e.g., a cutting tool in the form of a data file), and (<NUM>) a file specifying the geometry <NUM> of the part (e.g., the geometry of part <NUM>). The additive kernel <NUM> may then make this information available to the SM application <NUM>. In another embodiment, the three data inputs <NUM>, <NUM>, <NUM> may be embedded in a single file to send to the additive kernel <NUM> from the AM application <NUM>.

In some embodiments, the kernel may be the same and there may be two files for additive and subtractive actions. The disclosed system and method may allow for accurate and precise support removal as compared to variable hand removal. In some embodiments, the support removal may communicate with the same kernel to optimize part production. The kernel may modify the shape, size, depth or other features of the support structures in embodiments where the support removal is more time consuming, less optimal, or the like. The kernel may therefore optimize creation of a part using both additive and subtractive actions based on feedback during the additive and subtractive portions.

With respect to <FIG>, the tool path <NUM> generated by the SM application <NUM> is shown as a dashed line. More specifically, and with respect to <FIG>, the SM application <NUM> provides the tool path <NUM> to remove the support structure <NUM> along the contact line <NUM>. As such, the CNC machine receives instructions as to where to cut using the cutting tool based on the initial AM process; furthermore, the points of contact <NUM> along the contact line <NUM> are known to the CNC machine because the geometry of the support structure <NUM> and the RTS had been previously defined in the AM process. Therefore, the support structure <NUM> may be removed along the contact line <NUM> both at the vertical portion <NUM> and at the overhanging portion <NUM>.

<FIG> highlights how the tool path <NUM> may remove the support structure <NUM>. In one embodiment, the solid dashed line portion of the tool path <NUM> may indicate rapid movement of a CNC cutting tool along the tool path <NUM>, and the dotted dashed line portion may indicate where cutting of the teeth <NUM> of the support structure <NUM> will occur. As described above, this is because the tool path <NUM> is determined based on data and instructions received from the AM process to indicate where the teeth <NUM> contact the part <NUM>.

<FIG> depicts the part <NUM> and support structure <NUM> of <FIG> with the addition of illustrating a cutting tool <NUM> shown travelling along the tool path <NUM> at different points. At the dotted dashed line portions of the tool path <NUM>, the cutting tool <NUM> may cut the support structure <NUM> away from the points of contact between the support structure <NUM> and the part <NUM>, such as where the teeth <NUM> contact the RTS <NUM> of the overhanging portion <NUM> and where the teeth <NUM> contact the vertical portion <NUM>.

<FIG> shows a top view of the cutting tool <NUM> moving along the tool path <NUM> in the y-z plane. More specifically, the cutting tool <NUM> may encounter a support structure <NUM> along the overhanging region <NUM> that may be a surface having a thinner surface, e.g., wall, than other surfaces such that minimal material needs to be cut. In one embodiment, a single tool path may remove the thin support structure wall <NUM>.

With respect to <FIG>, a flow diagram <NUM> illustrates the removal of a support structure based on the additive process in a CAM environment. An AM application, such as AM application <NUM> (see <FIG>) provides at least a contact line and a part geometry to the additive kernel <NUM>. The SM application receives the contact line and part geometry, and, along with a cutting tool, from the additive kernel <NUM> to provide a tool path to remove a support structure along a contact line. The tool path may be based on data related to the AM process, and removing the support structure based on that data within a computer aided manufacturing (CAM) environment. For example, a set of inputs may be received at an additive kernel <NUM> (e.g., additive kernel <NUM> described above). In one embodiment, the inputs received at the additive kernel <NUM> include a geometry <NUM> of the support structure to be removed from a part as well as the geometry of the part itself, along with an orientation <NUM>. In another embodiment, the inputs received at the additive kernel <NUM> may include just the geometry <NUM> of the support structure to be removed from a part, as well as an orientation <NUM>. In another embodiment, the inputs received at the additive kernel <NUM> may include just the geometry of the part itself, as well as an orientation <NUM>.

In one embodiment, the contact line <NUM> (see also <FIG> reference number <NUM>) may be a contact line input file, such as contact line input file <NUM> (see <FIG>) specifying the contact between the support structure and the part, such as contact teeth lines and/or points (e.g., contact points <NUM> contact teeth <NUM> and contact lines <NUM> described above). The additive kernel <NUM> in turn relays the contact line <NUM> and the geometry <NUM> to an SM application <NUM> (e.g., SM application <NUM> described above). The SM application <NUM> may select a tool <NUM> (see also <FIG> reference number <NUM>), such as a cutting tool. In some embodiments, the cutting tool may be a milling cutter, a lathe, or a combination of tool-electrodes, and workpiece-electrodes. In one embodiment, the cutting tool may be represented in the form of a data file.

The SM application <NUM> generates a tool path <NUM> (see also <FIG> reference number <NUM>) based on the geometry <NUM>, the tool <NUM>, and the contact line <NUM>. The SM application <NUM> may pass the tool path <NUM> to a CNC cutting tool in order to remove the support structure(s) from the RTS. Therefore, the subtractive tool path <NUM> may be generated based on the parameters received from the additive kernel which were used to construct the support structure <NUM> (see also <FIG> reference number <NUM>). In an additional embodiment, the subtractive tool path <NUM> may be generated further based on input from the additive manufacturing application. In the present embodiments the additive component and the subtractive component are in communication with each other, and, as such, the CNC machine may determine how to remove the support structure during the subtractive process based on the prior additive process.

The tool path <NUM> is passed to a simulation / verification component <NUM> in the CAM environment for virtual verification of the subtraction of the support structure. Both the tool path <NUM> and the verification results of the support structure removal may be transmitted to an analysis component <NUM> for analysis of the subtraction process. In one embodiment, the analysis may be carried out by inspection of the part by comparing one or more parameters against a set of thresholds determined by the overall system or an operator. In another embodiment, the analysis component <NUM> may be integrated into the additive kernel <NUM>, creating an integrated design. In yet another embodiment, the analysis component <NUM> may be external to the additive kernel <NUM> and the subtractive application <NUM>, and may be integrated into a global manufacturing layer to provide for communication between the additive application <NUM> and the subtractive application <NUM>. In yet another embodiment, the additive kernel <NUM>, the AM application <NUM>, and the SM process <NUM> may all be run on the same computing device having a processor and addressable memory. In another embodiment, the analysis of the subtraction process may be analyzed by an analysis module of the CAM environment. The analysis may be used to apply any changes to the support <NUM> and the contact line <NUM>. The analysis is determined based on accessibility and collision avoidance on the SM process. The system may adjust parameters in <FIG> along with the geometry orientation in order to respect <FIG> and be able to do machining of the support structure. In the disclosed embodiments, the system design provides a communication bridge between the additive and subtractive components, thereby increasing efficiencies of processing a part that goes through AM and SM. Such efficiencies may be defined in view of the SM application and the part being cut.

In one embodiment, the SM application <NUM> may communicate back to the additive kernel <NUM>, and the additive kernel <NUM>, in turn, may communicate with the AM application. This may provide for dynamic addition and removal of a support structure. For example, the SM application <NUM> may determine that the generated tool path, which is based on the support structure data sent from the AM application to the AM additive kernel <NUM> after completion of the AM process, results in poor accessibility to the RTS <NUM> (see also <FIG> reference number <NUM>). The RTS <NUM> along with a plurality of support parameters <NUM> provide a support structure <NUM> and a contact line <NUM>. Thereafter, the SM application <NUM> may relay this information, for example, in the form of an error message, to the AM application via the additive kernel <NUM>. Accessibility is determined by collision detection. That is, a tool might collide with the target if it is too big or if the shape is not appropriate. The disclosed embodiments provide a method for determining tool path that may suggest preferred tool change and/or tool path parameters.

The AM application then modifies the support structure <NUM> to make the support structure <NUM> more accessible to the tool <NUM> for cutting/removal of the support structure <NUM>. In this way, the system is dynamic in nature to optimize the removal of the support structure <NUM>. In one embodiment where the system provides feedback from one component (SM) to another component (AM) the system creates a hysteresis effect which may be defined as the dependence of the state of a system on its history.

With respect to <FIG>, a flow diagram <NUM> illustrates dataflow during the removal of a support structure based on the additive process in a CAM environment. In embodiments, the AM application <NUM> uses geometry <NUM> along with orientation <NUM> to then, via an additive kernel <NUM>, determine a region to support <NUM> and support parameters <NUM>. The additive kernel <NUM> may also determine and transmit a support structure <NUM> and contact line <NUM> where the additive kernel <NUM> may transmit the contact line to the subtractive manufacturing application <NUM>. The subtractive manufacturing application <NUM> also receives as input the geometry <NUM> to then determine a tool path <NUM> to remove a support structure along a contact line based on the geometry <NUM>, tool <NUM>, and contact line <NUM>. The subtractive manufacturing application <NUM> also includes a simulation component <NUM> which runs a simulation using the received data to perform a verification of the determined tool path <NUM>. The subtractive manufacturing application <NUM> may then transmit the results of the performed verification process by the simulation component <NUM> to an analysis component <NUM> to analyze how the contact line <NUM> may be updated for a more efficient cutting of the part. The Analysis component <NUM> may then transmit the resulting analysis to the additive kernel <NUM>. The additive kernel <NUM> may update and determine a new contact line based on the received analysis for use by the additive manufacturing application <NUM>.

Referring to <FIG>, in one embodiment, the orientation <NUM> may include data regarding the finished surface, the removal accessibility of the support structure, the deformation risk of the part, priority holes and priority surfaces, and support marks marking where the support structure contacts the part. In one embodiment, the priority holes and priority surfaces may be parameters of high priority while determining the orientation <NUM>. For example, if a hole is of high priority, then the SM application <NUM> may find an orientation <NUM> where the hole will not suffer from, for example, overhang. The input geometry <NUM> and orientation <NUM> in turn yield a region to support (RTS), such as RTS <NUM> (see <FIG>).

Referring now to <FIG>, in one embodiment, the support parameters <NUM> may include upper and lower teeth <NUM>, contour parameters <NUM>, fragmentation <NUM>, a sweep path <NUM>, perforation <NUM>, and hatches parameters <NUM>. For example, fragmentation parameters <NUM> may describe the amount of fragmentation or separation within the support structure. The upper and lower teeth parameters <NUM> may control the height, width, and depth of the teeth included in the support structure. The perforation parameter <NUM> may control the porousness of the support structure. The sweep path parameter <NUM> may control the production of the surface. The contour parameter <NUM> may control the contour of the RTS that may be used to receive support structures surfaces. Finally, the hatches parameter <NUM> may control the support structures strategy to fill the contour.

<FIG> is a high-level flow chart of a method <NUM> for removing support structures, according to an embodiment of the disclosure. The method <NUM> includes a step <NUM> for receiving a contact line generated by an additive manufacturing application. The method <NUM> then includes a step <NUM> for generating a tool path for subtractive manufacturing based on receiving the contact line. The generating of the tool path for subtractive manufacturing is done based on input parameters received from the additive kernel. The method <NUM> may then include a step <NUM> for sending the converted tool path to a subtractive manufacturing application. The method <NUM> may then include a step <NUM> for removing the support structure from a supported part based on the tool path by the subtractive manufacturing application. Additional steps may be performed where the AM process receives feedback from the SM process in the form of analysis data of the cutting and efficiency of removing the support structures in order to dynamically update the AM process in generating parts having support structures added to them in areas to make the removal more efficient than the previous iteration.

<FIG> is a flow chart <NUM> showing how the analysis component <NUM> optimizes the removal of the support structure. The disclosed systems and methods may initiate generation of a tool path with tool data, contact line, and geometry as input. If the generation is successful the tool path is generated, however, if tool path is not generated, a tool change may be requested and based on whether a tool change limit is not reached, the tool change limit is reset and a request for a tool path change is generated. Tool path change limit may be reset and a request for a change in support parameters is sent if the limit is not reached. Next an orientation change reset is made and a request for geometry and redesign is sent.

Referring again to <FIG>, the analysis component <NUM> as part of the SM process receives as input a set of data including tool data (e.g., tool information of the CNC machine), contact line, and geometry (step <NUM>). The process may then determine whether a tool path may be successfully generated taking into account, for example, accessibility and collision avoidance for the cutting (step <NUM>). If successful, then the tool path is generated (step <NUM>). If the tool path is not successfully generated, for example, running the current tool path would cause a collision of the tool with the part, then the process may move on to request a tool change (step <NUM>). The analysis component <NUM> may then provide the new tool information to be analyzed, based on not having reached a tool change limit (<NUM>). The process may now start the process again to determine if a tool path may be successfully generated (step <NUM>). If the tool change limit has been reached (step <NUM>) then the process may perform a tool change limit reset and request a tool path change (step <NUM>). As before, if the tool path change limit is reached (step <NUM>) the process may move to reset the tool change limit and request a change in the support parameters (step <NUM>). If tool path limit has not been reached yet, the process returns to the generating of a tool path (step <NUM>). After the tool change limit reset and request for support parameters change, the process checks to determine whether the support parameter change limit has been reached (step <NUM>). If the limit has been reached, then the process performs a support parameters change reset and request orientation change (step <NUM>). If the support parameter change limit has not been reached, the process may return to the generating of a tool path step (<NUM>). The process may continue after the support parameters change reset and request orientation change to determine if the orientation change limit has been reached (step <NUM>). If the limit has not been reached, the process may return to generate a tool path (step <NUM>). If the limit has been reached and still not able to generate a tool path, the process moves to perform an orientation change reset and ask for a geometry redesign (step <NUM>).

<FIG> is a high-level block diagram <NUM> showing a computing system comprising a computer system useful for implementing an embodiment of the system and process, disclosed herein. Embodiments of the system may be implemented in different computing environments. The computer system includes one or more processors <NUM>, and can further include an electronic display device <NUM> (e.g., for displaying graphics, text, and other data), a main memory <NUM> (e.g., random access memory (RAM)), storage device <NUM>, a removable storage device <NUM> (e.g., removable storage drive, a removable memory module, a magnetic tape drive, an optical disk drive, a computer readable medium having stored therein computer software and/or data), user interface device <NUM> (e.g., keyboard, touch screen, keypad, pointing device), and a communication interface <NUM> (e.g., modem, a network interface (such as an Ethernet card), a communications port, or a PCMCIA slot and card). The communication interface <NUM> allows software and data to be transferred between the computer system and external devices. The system further includes a communications infrastructure <NUM> (e.g., a communications bus, cross-over bar, or network) to which the aforementioned devices/modules are connected as shown.

Information transferred via communications interface <NUM> may be in the form of signals such as electronic, electromagnetic, optical, or other signals capable of being received by communications interface <NUM>, via a communication link <NUM> that carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular/mobile phone link, an radio frequency (RF) link, and/or other communication channels. Computer program instructions representing the block diagram and/or flowcharts herein may be loaded onto a computer, programmable data processing apparatus, or processing devices to cause a series of operations performed thereon to produce a computer implemented process.

Embodiments have been described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments. Each block of such illustrations/diagrams, or combinations thereof, may be implemented by computer program instructions. The computer program instructions when provided to a processor produce a machine, such that the instructions, which execute via the processor, create means for implementing the functions/operations specified in the flowchart and/or block diagram. Each block in the flowchart/block diagrams may represent a hardware and/or software module or logic, implementing embodiments. In alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures, concurrently, etc..

Computer programs (i.e., computer control logic) are stored in main memory and/or secondary memory. Computer programs may also be received via a communications interface <NUM>. Such computer programs, when executed, enable the computer system to perform the features of the embodiments as discussed herein. In particular, the computer programs, when executed, enable the processor and/or multi-core processor to perform the features of the computer system. Such computer programs represent controllers of the computer system.

<FIG> shows a block diagram of an example system <NUM> in which an embodiment may be implemented. The system <NUM> includes one or more client devices <NUM> such as consumer electronics devices, connected to one or more server computing systems <NUM>. A server <NUM> includes a bus <NUM> or other communication mechanism for communicating information, and a processor (CPU) <NUM> coupled with the bus <NUM> for processing information. The server <NUM> also includes a main memory <NUM>, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus <NUM> for storing information and instructions to be executed by the processor <NUM>. The main memory <NUM> also may be used for storing temporary variables or other intermediate information during execution or instructions to be executed by the processor <NUM>. The server computer system <NUM> further includes a read only memory (ROM) <NUM> or other static storage device coupled to the bus <NUM> for storing static information and instructions for the processor <NUM>. A storage device <NUM>, such as a magnetic disk or optical disk, is provided and coupled to the bus <NUM> for storing information and instructions. The bus <NUM> may contain, for example, thirty-two address lines for addressing video memory or main memory <NUM>. The bus <NUM> can also include, for example, a <NUM>-bit data bus for transferring data between and among the components, such as the CPU <NUM>, the main memory <NUM>, video memory and the storage <NUM>. Alternatively, multiplex data/address lines may be used instead of separate data and address lines.

The server <NUM> may be coupled via the bus <NUM> to a display <NUM> for displaying information to a computer user. An input device <NUM>, including alphanumeric and other keys, is coupled to the bus <NUM> for communicating information and command selections to the processor <NUM>. Another type or user input device comprises cursor control <NUM>, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to the processor <NUM> and for controlling cursor movement on the display <NUM>.

According to one embodiment, the functions are performed by the processor <NUM> executing one or more sequences of one or more instructions contained in the main memory <NUM>. Such instructions may be read into the main memory <NUM> from another computer-readable medium, such as the storage device <NUM>. Execution of the sequences of instructions contained in the main memory <NUM> causes the processor <NUM> to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in the main memory <NUM>. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the embodiments. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.

The terms "computer program medium," "computer usable medium," "computer readable medium", and "computer program product" are used to generally refer to media such as main memory, secondary memory, removable storage drive, a hard disk installed in hard disk drive, and signals. These computer program products are means for providing software to the computer system. The computer readable medium allows the computer system to read data, instructions, messages or message packets, and other computer readable information from the computer readable medium. The computer readable medium, for example, may include non-volatile memory, such as a floppy disk, ROM, flash memory, disk drive memory, a CD-ROM, and other permanent storage. It is useful, for example, for transporting information, such as data and computer instructions, between computer systems. Furthermore, the computer readable medium may comprise computer readable information in a transitory state medium such as a network link and/or a network interface, including a wired network or a wireless network that allow a computer to read such computer readable information. Computer programs (also called computer control logic) are stored in main memory and/or secondary memory. Computer programs may also be received via a communications interface. Such computer programs, when executed, enable the computer system to perform the features of the embodiments as discussed herein. In particular, the computer programs, when executed, enable the processor multi-core processor to perform the features of the computer system. Accordingly, such computer programs represent controllers of the computer system.

Generally, the term "computer-readable medium" as used herein refers to any medium that participated in providing instructions to the processor <NUM> for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as the storage device <NUM>. Volatile media includes dynamic memory, such as the main memory <NUM>. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise the bus <NUM>. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.

Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, an EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.

Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to the processor <NUM> for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. A modem local to the server <NUM> can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to the bus <NUM> can receive the data carried in the infrared signal and place the data on the bus <NUM>. The bus <NUM> carries the data to the main memory <NUM>, from which the processor <NUM> retrieves and executes the instructions. The instructions received from the main memory <NUM> may optionally be stored on the storage device <NUM> either before or after execution by the processor <NUM>.

The server <NUM> also includes a communication interface <NUM> coupled to the bus <NUM>. The communication interface <NUM> provides a two-way data communication coupling to a network link <NUM> that is connected to the world wide packet data communication network now commonly referred to as the Internet <NUM>. The Internet <NUM> uses electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link <NUM> and through the communication interface <NUM>, which carry the digital data to and from the server <NUM>, are exemplary forms or carrier waves transporting the information.

In another embodiment of the server <NUM>, interface <NUM> is connected to a network <NUM> via a communication link <NUM>. For example, the communication interface <NUM> may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line, which can comprise part of the network link <NUM>. As another example, the communication interface <NUM> may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. In any such implementation, the communication interface <NUM> sends and receives electrical electromagnetic or optical signals that carry digital data streams representing various types of information.

The network link <NUM> typically provides data communication through one or more networks to other data devices. For example, the network link <NUM> may provide a connection through the local network <NUM> to a host computer <NUM> or to data equipment operated by an Internet Service Provider (ISP). The ISP in turn provides data communication services through the Internet <NUM>. The local network <NUM> and the Internet <NUM> both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link <NUM> and through the communication interface <NUM>, which carry the digital data to and from the server <NUM>, are exemplary forms or carrier waves transporting the information.

The server <NUM> can send/receive messages and data, including e-mail, program code, through the network, the network link <NUM> and the communication interface <NUM>. Further, the communication interface <NUM> can comprise a USB/Tuner and the network link <NUM> may be an antenna or cable for connecting the server <NUM> to a cable provider, satellite provider or other terrestrial transmission system for receiving messages, data and program code from another source.

The example versions of the embodiments described herein may be implemented as logical operations in a distributed processing system such as the system <NUM> including the servers <NUM>. The logical operations of the embodiments may be implemented as a sequence of steps executing in the server <NUM>, and as interconnected machine modules within the system <NUM>. The implementation is a matter of choice and can depend on performance of the system <NUM> implementing the embodiments. As such, the logical operations constituting said example versions of the embodiments are referred to for e.g., as operations, steps or modules.

Similar to a server <NUM> described above, a client device <NUM> can include a processor, memory, storage device, display, input device and communication interface (e.g., e-mail interface) for connecting the client device to the Internet <NUM>, the ISP, or LAN <NUM>, for communication with the servers <NUM>.

The system <NUM> can further include computers (e.g., personal computers, computing nodes) <NUM> operating in the same manner as client devices <NUM>, where a user can utilize one or more computers <NUM> to manage data in the server <NUM>.

As shown, cloud computing environment <NUM> comprises one or more cloud computing nodes <NUM> with which local computing devices used by cloud consumers, such as, for example, personal digital assistant (PDA), smartphone, smart watch, set-top box, video game system, tablet, mobile computing device, or cellular telephone 54A, desktop computer 54B, laptop computer 54C, and/or automobile computer system 54N may communicate.

Claim 1:
A system (<NUM>) comprising:
an additive component (<NUM>, <NUM>);
a subtractive component (<NUM>, <NUM>); and
a processor and addressable memory, the processor configured to:
receive a contact line (<NUM>, <NUM>, <NUM>) associated with a support structure (<NUM>, <NUM>) from the additive component, wherein the contact line (<NUM>, <NUM>, <NUM>) specifies a set of points of contact between the support structure (<NUM>, <NUM>) and a part (<NUM>);
receive geometry (<NUM>, <NUM>, <NUM>) of the support structure (<NUM>, <NUM>) and the part (<NUM>) along with an orientation (<NUM>, <NUM>) from the additive component, wherein the orientation (<NUM>, <NUM>) comprises at least one of: data regarding a finished surface, removal accessibility of the support structure, deformation risk of the supported part (<NUM>), priority holes and priority surfaces, and support marks marking where the support structure (<NUM>, <NUM>) contacts the supported part (<NUM>);
receive data associated with a tool (<NUM>, <NUM>) from the subtractive component;
generate a subtractive tool path (<NUM>, <NUM>) for a subtraction process to remove the support structure (<NUM>, <NUM>) along the contact line (<NUM>, <NUM>, <NUM>) based on the received contact line, the received data associated with the tool, and the received geometry;
transmit the generated subtractive tool path to an analysis component (<NUM>) for processing tool path validation;
characterised by the processor being configured to:
validate, based on accessibility of the contact line for cutting by the tool and collision avoidance of the tool (<NUM>, <NUM>) while moving along the tool path, by the analysis component, the tool path based on output from a simulation component (<NUM>) to determine whether:
removal of the support structure from the part (<NUM>) is successfully computed by the subtractive component; or
removal of the support structure from the part (<NUM>) is unsuccessfully computed by the subtractive component, wherein removal of the support structure from the part (<NUM>) is unsuccessfully computed when it is determined that the tool path would cause a collision of the tool with the part; and
wherein:
if the analysis component determines that removal of the support structure from the part (<NUM>) is unsuccessfully computed, the additive component (<NUM>, <NUM>) is configured to modify the support structure to make the support structure more accessible to the tool for removal of the support structure.