WO2021025906A1 - Topology optimization with local overhang constraints for 3d printing - Google Patents

Topology optimization with local overhang constraints for 3d printing Download PDF

Info

Publication number
WO2021025906A1
WO2021025906A1 PCT/US2020/043926 US2020043926W WO2021025906A1 WO 2021025906 A1 WO2021025906 A1 WO 2021025906A1 US 2020043926 W US2020043926 W US 2020043926W WO 2021025906 A1 WO2021025906 A1 WO 2021025906A1
Authority
WO
WIPO (PCT)
Prior art keywords
model
unsupported
elements
topology optimization
constraints
Prior art date
Application number
PCT/US2020/043926
Other languages
French (fr)
Inventor
Lucia MIRABELLA
Suraj Ravi MUSUVATHY
Fernando SENHORA
Heng CHI
Original Assignee
Siemens Aktiengesellschaft
Siemens Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Aktiengesellschaft, Siemens Corporation filed Critical Siemens Aktiengesellschaft
Publication of WO2021025906A1 publication Critical patent/WO2021025906A1/en

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y50/00Data acquisition or data processing for additive manufacturing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD

Definitions

  • Computer-aided design (CAD), computer-aided engineering (CAE), and computer- aided manufacturing (CAM) systems can facilitate the design and simulated testing of product structures and product manufacture.
  • Design space exploration can include various design optimization techniques.
  • Example design optimization techniques for CAD systems include topology optimization, shape optimization, and size optimization.
  • Design optimization can be performed for a variety of disciplines such as aerodynamics, hydrodynamics, heat transfer, structural mechanics, acoustics, etc.
  • Topology optimization generally refers to structural optimization.
  • topology optimization may result in the identification of the major load paths in a particular model, thereby enabling the creation of a design in which material is minimized so as to reduce weight without compromising the structural integrity of the design.
  • TO can result in structures that are generally geometrically complex and/or hard to manufacture.
  • Such designs from TO can limit the implementation of topology optimization in industry.
  • additive manufacturing techniques e.g., 3D printing
  • additive manufacturing techniques have advanced, however, complex structures are increasingly able to be produced in a cost-effective manner.
  • technical challenges remain related to topology optimization and additive manufacturing. For example, it is recognized herein that, in some cases, topology optimized designs lack proper structural support for additive manufacturing.
  • Embodiments of the invention address and overcome one or more of the described- herein shortcomings by providing methods, systems, and apparatus that can generate models or designs from topology optimization that meet manufacturing constraints, such as constraints associated with self-supporting structures.
  • manufacturing constraints such as constraints associated with self-supporting structures.
  • embodiments are described herein in which final CAD models are generated that are fully self-supported.
  • a computing system can construct a final CAD model of an object.
  • the system can obtain a first model of the object.
  • the first model can include a plurality of elements that define: 1) a plurality of material elements representative of regions of the object having physical material, and 2) a plurality of void elements representative of regions of the object having no physical material.
  • a kernel for instance one or more directional kernels, can detect at least one unsupported element of the model. For example, a kernel can determine that at least one material element of the plurality of material elements is not supported by the plurality of material elements, so as to detect at least one unsupported element.
  • a plurality of directional kernels can determine an amount of material within a range of each element of the plurality of elements.
  • the range can be defined by an overhang angle that corresponds to each element.
  • the system can impose local constraints on a topology optimization of the first model.
  • the system can perform the topology optimization with the local constraints on the first model so as generate the final CAD model.
  • the system can remove the one or more unsupported elements from the first model, so as to generate the final CAD model.
  • imposing constraints on the topology optimization can include replacing at least one void element with a new material element representative of a region of the object having physical material, so as to change a respective maximum value of a plurality of values associated with the unsupported element to a new value that is less than or equal to a predetermined threshold, thereby removing the unsupported element.
  • imposing constraints on the topology optimization can include replacing the unsupported element with a new void element representative of a region of the object having no physical material, so as to change the respective maximum value of the plurality of values associated with the unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the unsupported element.
  • the first model may, in some cases, include multiple unsupported elements, such that a respective local constraint can be imposed on each element of the plurality of unsupported elements.
  • performing the topology optimization can include identifying a printing direction that defines a direction from (or along) which material is deposited as the object is printed, and performing the topology optimization can be based on the printing direction.
  • the system can convert the final CAD model into machine-executable instructions.
  • a three-dimensional (3D) printer can execute the instructions so as to print the object represented by the final CAD model in the printing direction in which the topology optimization is based.
  • FIG. 1 illustrates an example model that includes an example unsupported element and an example supported element.
  • FIG. 2 illustrates an example kernel
  • FIG. 3 illustrates an example void element of FIG. 1 with an example convoluted kernel that corresponds to the void element.
  • FIG. 4 illustrates a plurality of directional kernels in accordance with an example embodiment.
  • FIG. 5 illustrates an example MBB beam design problem or space that can be solved in accordance with various embodiments.
  • FIG. 6 illustrates an example beam design that can be generated from the design space shown in FIG. 5, using topology optimization without the self-supporting manufacturing constraints described herein.
  • FIG. 7 illustrates example beam designs that can be generated from the design space shown in FIG. 5, using topology optimization with self-supporting manufacturing constraints described herein, wherein the example beam designs vary based on different printing directions, in accordance with an embodiment.
  • FIG. 8 illustrates an example arch use case in accordance with an embodiment. Referring now to FIG. 8, another example arch use case 800 is shown that includes an arch design problem 802.
  • FIG. 9 depicts an example 3D cantilever beam structure that can be modeled using topology optimization without the self-supporting manufacturing constraints described herein.
  • FIG. 10 shows an example 3D cantilever beam structure that can be generated, in contrast to the beam shown in FIG. 9 using topology optimization local self-supporting constraints, in accordance with embodiments described herein.
  • FIG. 11 is a flow diagram that shows example operations that can be performed in accordance with an example embodiment.
  • FIG. 12 is a block diagram of an example CAD system configured to generate self- supporting models in accordance with various embodiments.
  • FIG. 13 shows an example of a computing environment within which embodiments of the disclosure may be implemented.
  • a challenge, among others, to three-dimensional (3D) printing is the necessity of support material.
  • a traditional 3D printing layering process requires that structures are produced from the bottom to top, such that each subsequent layer of material is placed on top of a previously deposited layer.
  • Traditional 3D printing techniques can generally accommodate an overhang angle (e.g., an angle defined from a vertical axis to an axis defined by the outermost edge of material) of up to about 45 degrees.
  • an overhang angle that is greater than about 45 degrees for example an overhang angle defined by a right angle arch, defines a region of unsupported material, and thus often cannot be printed directly.
  • current additive manufacturing techniques include adding structural or support material upon which layers can be added. It is recognized herein, however, that such support material can increase the printing time and the overall cost of the printing. In some cases, adding the support material can also deteriorate the quality of the final printed object.
  • models or designs can be generated that do not have regions of unsupported material.
  • model and design can be used interchangeably, without limitation.
  • such designs or models that do not have regions of unsupported material can be printed directly without using support material, thereby saving time and money, and achieving higher quality results.
  • Such models or designs can be referred to as self-supporting designs.
  • Self-supporting designs that are constructed using topology optimization can be referred to as self-supporting topology optimization designs. It is recognized herein that a technical problem associated with constructing self-supporting topology optimization designs is determining how to accurately detect unsupported elements of a design. It is further recognized herein that another technical problem is, after detecting unsupported elements, determining how to eliminate them from the final design. Formulating the problem of detecting unsupported elements in a manner that can be solved by a computing system can be troublesome, particularly when considering intermediate densities that can be common to an optimization procedure.
  • an example model 100 defines an example overhang angle 102 that is defined between a vertical axis 104 and an edge axis 106.
  • the edge axis 106 is defined by an edge 108 of the model 100, which corresponds to an edge of the structure or object represented by the model 100.
  • the overhang angle 102 can be defined by the vertical axis 104 and the edge 108.
  • overhang angles such as the overhang angle 102, can be detected using edge detection image processing techniques that are based on the density of elements. In such examples, after the edges of the structure or model are detected, the edge can be compared to the vertical axis 104 so as to compute the overhang angle 102.
  • each element in that given region is self-supported or unsupported.
  • An element may correspond to a pixel in a given model, for instance the model 100.
  • a global constraint can be used to eliminate unsupported elements.
  • Unsupported elements can refer to elements that have a feasible range without sufficient material, or amount of material.
  • the range of a given element can be element can be defined by the vertical axis 104 and a maximum overhang angle. It is recognized herein, however, that approaches using edge detection and global constraints can have issues or shortcomings. For example, edge detection can be complicated or inaccurate during optimization because of intermediate densities. Intermediate densities generally refer to densities of elements that are between 0 and 1.
  • elements having density values between 0 and 1 can be referred to as intermediate densities.
  • Such elements having intermediate densities are typical results of topology optimizations, as element densities can vary (or evolve) continuously from 0 to 1 states or densities, or 1 to 0.
  • the presence of intermediate densities often make a given structural boundary difficult to define, which, in turn, can result in the calculated overhanging angle being inaccurate.
  • a global constraint can make the optimization problem very difficult to solve.
  • the implementation of a global constraint can require a relaxation parameter that allows for some regions of unsupported material.
  • the global constraint might not allow local control of an unsupported region, which means that the final result or design might include unsupported elements, and thus might not be an actually self-supported design.
  • an overhang kernel matrix can be used to determine whether a given element is self-supported or unsupported.
  • the kernel can check the elements in a range that is defined by an overhang angle and a given element, and if this range has a significant amount of material, the given element may be considered self-supported. In some cases, this approach is simpler and more stable as compared to the edge detection approach described above.
  • a penalization technique can be applied such that the elements that are not self-supported have a low stiffness to weight ratio when compared to self-supported elements. This way, the elements are able to obtain self-supported results without explicitly imposing a constraint.
  • designs can be constructed that do not include regions of unsupported material, so as define self-supported designs representative of truly self-supporting structures.
  • these designs can be printed directly to construct the corresponding objects or structures, without support material, thereby, in some cases, conserving time and cost while enhancing quality.
  • kernel matrices such as a kernel matrix or kernel 200
  • the kernel matrix can be normalized so that the summation of its components equals 1.
  • a local constraint can be imposed on an optimization problem so as to eliminate the unsupported elements.
  • the kernel 200 can be convoluted through the domain defined by the model, so as to generate a convoluted kernel (matrix) or value associated with each element of the model. The value associated with a given element can indicate whether the given element is self-supported or unsupported.
  • a value associated with a given element that is less than a predetermined threshold indicates that the given element is not sufficiently self-supported (or is unsupported). For example, the unsupported element might have no elements directly underneath it.
  • a value associated with a given element that is greater than a predetermined threshold indicates that the given element is self-supported. Such an element may have one or more elements directly underneath it, so as to support the element.
  • behavior of the kernel 200 is exemplified by being applied to elements.
  • the kernel 200 is applied to a first self-supported element 109, so as to generate a first convoluted matrix (kernel) or value at 111.
  • the kernel 200 is also applied to an unsupported element 112 so as to generate second convoluted matrix (kernel) or value at 116.
  • a local constraint can be imposed on each element of the model 100.
  • the local constraint can be imposed such that the value of a convoluted kernel is greater than a certain value or predetermined threshold that indicates self-support.
  • H represents the kernel 200
  • z represents a density map associated with a given element of the model 100 (e.g., the element located at the center of the density map)
  • s Um represents a limit value (or predetermined threshold) above which the given element is considered self-supported.
  • g t 1, indicating the violation of the self-supporting constraint for the element that is associated with density map at 116.
  • the constraint can be active in void regions of the model 100. Void regions or elements of a model can be representative of regions of the corresponding object having no physical material.
  • the model 100 defines a plurality of void regions or elements, for instance a void element 300.
  • the constraint shown in equation (1) can be active in the void element 300 that does not have physical meaning.
  • the void element 300 can generated a convoluted kernel 302 that is equal to 0.
  • the constraint can be penalized such that if the density of a given element (e.g., void element 300) is zero, then the constraint is automatically satisfied. In some cases, because the density of a void element or region is zero, the constraint is satisfied.
  • z L represents the density of the zth element.
  • the constraint is automatically satisfied, and thus the element is considered self-supported.
  • the constraint in accordance with equation (2) equals zero, which is less than or equal to zero, thereby satisfying the constraint such that the void element 300 is considered to be self-supported in the context of removing unsupported elements.
  • a plurality of directional kernels 400 are shown. It is recognized herein that, in some cases, the kernel 200 might lack some precision. In those cases, the directional kernels 400 can improve precision in determining self-supported elements. For example, if kernel 200 is applied to an element 112 having a density map 114 in
  • the element associated with density map 114 satisfies the self-support condition (e.g., assuming the maximum overhang angle is 45°)
  • the value of constraint g t that is calculated using the kernel 200 indicates that it is not sufficiently self-supported. It is recognized herein that such an inaccurate characterization can cause the optimization algorithm to over-penalize such designs, which can then further be considered or characterized as not optimal.
  • the element associated with density map 114 can be correctly classified as self-supported.
  • any number of directional kernels 400 can be applied to a given element, but multiple directional kernels, in accordance with various embodiments, improve precision in determining or detecting self-supported elements.
  • a max function such as equation (3) can determine whether an element is unsupported, where M represents the number of directional kernels:
  • optimizations can be performed in accordance with an Augmented Lagrangian (AL) technique, so as to compute a large number of constraints in an efficient manner.
  • the constraints can be replaced via a penalization to the objective function.
  • the penalization can be adaptively adjusted so as to satisfy the original constraints:
  • solutions of the approximated problems can converge to the solution of the original problem.
  • an MBB beam design space 500 is depicted that includes an example load condition 502 and boundary conditions 504.
  • the example MBB beam 500 can represent a two dimensional (2D) or three dimensional (3D) use case.
  • a topology optimization can be performed in accordance with the embodiments described above so as generate models (e.g., designs or models 700a-d shown in FIG. 7) that each define a self-supporting design that can be printed directly, and that complies with the design conditions, for instance the conditions 502 and 504.
  • models e.g., designs or models 700a-d shown in FIG. 7
  • FIG. 6 shows an example beam design 600 that can be generated from the design space 500, using topology optimization without the self-supporting manufacturing constraints described herein.
  • FIG. 7 shows various beam designs 700, in particular designs 700a-d, that can be generated in to comply the design space 500, in particular the conditions 502 and 504, by performing topology optimizations with the self-supporting manufacturing constraints imposed in accordance with embodiments described herein.
  • the designs 700a-d can be generated in accordance with different printing directions.
  • a beam that corresponds to each of the designs 700a-d can be generated via additive manufacturing.
  • the printing direction generally refers to the direction from (or along) which the material is deposited to the build plate as an object is printed.
  • the models 700a-d are generated based on different printing directions that are perpendicular to each other, but it will be understood that models can be generated based on any printing direction as desired, and all such printing directions are contemplated as being within the scope of this disclosure.
  • the beam designs 700 can each define a first or top end 702 and a second or bottom end 704 opposite the top end along a transverse direction 710.
  • the beam designs 700 can further define a third or proximal end 706 and a fourth or distal end 708 opposite the proximal end 706 along a longitudinal direction 712.
  • the transverse direction 710 can be substantially perpendicular to the longitudinal direction 712.
  • the load condition 502 applies momentum along the transverse direction 710.
  • the load condition 502 stipulates that momentum is applied on the top end 702 toward the bottom end 704, at a location proximate and adjacent to the proximal end 706.
  • the designs 700 generated by the topology optimizations performed in accordance with embodiments described herein can vary based on printing direction.
  • a first design 702a can be generated based on a first printing direction 714 defined from the proximal end 706 toward the distal end 708.
  • a second design 702b can be generated based on a second printing direction 716 defined from the bottom end 704 toward the top end 702.
  • a third design 702b can be generated based on a third printing direction 718 defined from the distal end 708 toward the proximal end 706.
  • a fourth design 702d can be generated based on a fourth printing direction 720 that is defined from the top end 702 toward the bottom end 704.
  • the first and third printing directions 714 and 718, respectively can be opposite each other along the longitudinal direction 712.
  • the second and fourth printing directions 716 and 720, respectively can be opposite each other the transverse direction 710.
  • the topology optimizations can vary based on different printing directions.
  • FIG. 8 another example arch use case 800 is shown that includes an arch design problem 802.
  • the problem 802 defines a design domain that is supported on its two bottom corners, and subjected to a concentrated load at the center of its bottom edge pointing downward.
  • the printing direction in the example problem 802 is in the same direction as the concentrated load.
  • a topology optimization can be performed in accordance with the embodiments described above so as generate models, for instance a final model 806 that defines a self-supporting design that can be printed directly.
  • the final model 806 can be generated by imposing local self-supporting constraints, as described herein, to the topology optimization.
  • an unsupported model 804 can be generated by performing a topology optimization without imposing the self-supporting constraints that are imposed during the generation of the final model 806.
  • FIG. 9 depicts an example 3D cantilever beam structure 900 that can be modeled using topology optimization without the self-supporting constraints described herein.
  • an example 3D cantilever beam structure 1000 is generated using topology optimization local self-supporting constraints, in accordance with embodiments described herein.
  • the beam structure 900 and the beam structure 1000 can be generated under the same problem conditions.
  • the topology optimization performed to generate the beam structures 900 and 1000 can be the same except that the beam structure 900 is generated without self-supporting constraints, and the beam structure 1000 is generated with local self-supporting constraints.
  • a computing system for example a CAD system 1200 (FIG. 12), can perform an example process 1100 so as to construct a final CAD model of an object.
  • the system can obtain a first model of the object.
  • the first model can include a plurality of elements that define: 1) a plurality of material elements representative of regions of the object having physical material, and 2) a plurality of void elements representative of regions of the object having no physical material.
  • a kernel for instance one or more directional kernels, can detect at least one unsupported element of the model. For example, a kernel can determine that at least one material element of the plurality of material elements is not supported by the plurality of material elements, so as to detect at least one unsupported element.
  • such a kernel defines one kernel of a plurality of directional kernels, such that the plurality of directional kernels can determine that at least one material element of the plurality of material element is not supported by the plurality of material elements.
  • the plurality of directional kernels can determine an amount of material within a range of each element of the plurality of elements. The range can be defined by an overhang angle that corresponds to each element.
  • detecting unsupported elements can further include convoluting each of the directional kernels with a density map defined by the first model, so as to define respective convolution matrices. Based on the convolution matrices, the system can determine a respective plurality of values associated with each element of the plurality of elements.
  • the system can determine that at least one of the plurality of values associated with at least one unsupported element is greater than a predetermined threshold, thereby detecting at least one unsupported element.
  • the system can determine a respective maximum value of each of the plurality of values, and can compare each maximum value to a predetermined threshold so as to determine whether each maximum value is greater than the predetermined threshold.
  • the system can determine that the respective element associated with the maximum value is supported, thereby detecting a supported element.
  • the system can determine that the respective maximum value of the plurality of values associated with at least one unsupported element is greater than the predetermined threshold, so as to detect the at least one unsupported element.
  • determining each maximum value includes computing a smooth approximation of each of the respective plurality of values.
  • each element of the plurality of elements can define a respective density, and determining a respective maximum value associated with each element further can include multiplying the convolution matrices associated with each element by the density of the respective element.
  • the system can impose local constraints on a topology optimization of the first model.
  • the system can perform the topology optimization with the local constraints on the first model so as generate the final CAD model. Thus, by doing so, the system can remove the one or more unsupported elements from the first model, so as to generate the final CAD model.
  • imposing constraints on the topology optimization can include replacing at least one void element with a new material element representative of a region of the object having physical material, so as to change the respective maximum value of the plurality of values associated with the unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the unsupported element.
  • imposing constraints on the topology optimization can include replacing the unsupported element with a new void element representative of a region of the object having no physical material, so as to change the respective maximum value of the plurality of values associated with the unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the unsupported element.
  • the first model may, in some cases, include multiple unsupported elements, such that a respective local constraint can be imposed on each element of the plurality of unsupported elements.
  • performing the topology optimization can include identifying a printing direction that defines a direction along which material is deposited as the object is printed, and performing the topology optimization based on the printing direction.
  • the system can convert the final CAD model into machine- executable instructions.
  • a 3D printer can execute the instructions so as to print the object represented by the final CAD model in the printing direction in which the topology optimization is based.
  • the CAD system 1200 may include one or more processors 1202 and a memory 1204 having stored applications, agents, and computer program modules to implement the embodiments of this disclosure including a design tools application 1206, a topology optimization program module 1208, and a multi-disciplinary optimization program module 1210.
  • a module may refer to a software component that performs one or more functions. Each module may be a discrete unit, or the functionality of multiple modules can be combined into one or more units that form part of a large program.
  • the design tools application 1206, topology optimization program module 1208, and the multi-disciplinary optimization program module 1210 are organized to form a program for model generation.
  • Design tools application 322 may be implemented as a CAD product modeling or drawing application such as Siemens NX, AutoCAD, or the like, which provides an interface for a user, such as a designer, to develop 3D rendering of objects.
  • a user may apply the design tools application 1206 to a final design once it is received from the topology optimization program module 1208 or the multi-disciplinary optimization program module 1210.
  • the final design(s) may include several editable parametric shapes representing void regions and several editable parametric shapes representing solid regions.
  • GUI graphical user interface
  • the multi-disciplinary optimization multi-disciplinary optimization program module 1210 may include a simulation module 1212 and an optimizer 1214.
  • the multi-disciplinary optimization multi-disciplinary optimization program module 1210 may execute various algorithms so as to optimize designs based on multiple objectives or design criteria.
  • the topology optimization program module 1208 may execute various algorithms so as to perform topology optimizations on various designs of 3D objects, in accordance with various embodiments described herein.
  • the multi-disciplinary optimization program module 1210 and the topology optimization program module 1208 may obtain designs or design spaces with problem constraints such as, for example, the size for the design space, physical load information, material, weight, and density information, or any other relevant property needed for the optimization or simulation, as well as any design constraints.
  • the topology optimization program module 1208 may execute an objective function that represents a quantity to be minimized for best performance, such as minimal compliance for maximum stiffness after material removal or distribution.
  • the multi disciplinary optimization program module 1210 or topology optimization program module 1208 may solve for the remaining unknown variables in accordance with embodiments described herein.
  • the modules may variables related to material distribution for self-supporting elements, by applying differential equations for example.
  • the topology optimization program module 1208 or the multi-disciplinary optimization multi-disciplinary optimization program module 1210 may operate using discrete or continuous variables. Discrete modifications to the topology geometry may occur as a series of operations.
  • FIG. 13 illustrates an example of a computing environment within which embodiments of the present disclosure may be implemented.
  • a computing environment 1300 includes a computer system 510 that may include a communication mechanism such as a system bus 521 or other communication mechanism for communicating information within the computer system 510.
  • the computer system 510 further includes one or more processors 520 coupled with the system bus 521 for processing the information.
  • the topology optimization program module 1208 may include, or be coupled to, the one or more processors 520.
  • the processors 520 may include one or more central processing units (CPUs), graphical processing units (GPUs), or any other processor known in the art. More generally, a processor as described herein is a device for executing machine-readable instructions stored on a computer readable medium, for performing tasks and may comprise any one or combination of, hardware and firmware. A processor may also comprise memory storing machine-readable instructions executable for performing tasks. A processor acts upon information by manipulating, analyzing, modifying, converting or transmitting information for use by an executable procedure or an information device, and/or by routing the information to an output device.
  • CPUs central processing units
  • GPUs graphical processing units
  • a processor may use or comprise the capabilities of a computer, controller or microprocessor, for example, and be conditioned using executable instructions to perform special purpose functions not performed by a general purpose computer.
  • a processor may include any type of suitable processing unit including, but not limited to, a central processing unit, a microprocessor, a Reduced Instruction Set Computer (RISC) microprocessor, a Complex Instruction Set Computer (CISC) microprocessor, a microcontroller, an Application Specific Integrated Circuit (ASIC), a Field-Programmable Gate Array (FPGA), a System-on-a-Chip (SoC), a digital signal processor (DSP), and so forth.
  • RISC Reduced Instruction Set Computer
  • CISC Complex Instruction Set Computer
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • SoC System-on-a-Chip
  • DSP digital signal processor
  • processor(s) 520 may have any suitable microarchitecture design that includes any number of constituent components such as, for example, registers, multiplexers, arithmetic logic units, cache controllers for controlling read/write operations to cache memory, branch predictors, or the like.
  • the microarchitecture design of the processor may be capable of supporting any of a variety of instruction sets.
  • a processor may be coupled (electrically and/or as comprising executable components) with any other processor enabling interaction and/or communication there-between.
  • a user interface processor or generator is a known element comprising electronic circuitry or software or a combination of both for generating display images or portions thereof.
  • a user interface comprises one or more display images enabling user interaction with a processor or other device.
  • the system bus 521 may include at least one of a system bus, a memory bus, an address bus, or a message bus, and may permit exchange of information (e.g., data (including computer-executable code), signaling, etc.) between various components of the computer system 510.
  • the system bus 521 may include, without limitation, a memory bus or a memory controller, a peripheral bus, an accelerated graphics port, and so forth.
  • the system bus 521 may be associated with any suitable bus architecture including, without limitation, an Industry Standard Architecture (ISA), a Micro Channel Architecture (MCA), an Enhanced ISA (EISA), a Video Electronics Standards Association (VESA) architecture, an Accelerated Graphics Port (AGP) architecture, a Peripheral Component Interconnects (PCI) architecture, a PCI -Express architecture, a Personal Computer Memory Card International Association (PCMCIA) architecture, a Universal Serial Bus (USB) architecture, and so forth.
  • ISA Industry Standard Architecture
  • MCA Micro Channel Architecture
  • EISA Enhanced ISA
  • VESA Video Electronics Standards Association
  • AGP Accelerated Graphics Port
  • PCI Peripheral Component Interconnects
  • PCMCIA Personal Computer Memory Card International Association
  • USB Universal Serial Bus
  • the computer system 510 may also include a system memory 530 coupled to the system bus 521 for storing information and instructions to be executed by processors 520.
  • the system memory 530 may include computer readable storage media in the form of volatile and/or nonvolatile memory, such as read only memory (ROM) 531 and/or random access memory (RAM) 532.
  • the RAM 532 may include other dynamic storage device(s) (e.g., dynamic RAM, static RAM, and synchronous DRAM).
  • the ROM 531 may include other static storage device(s) (e.g., programmable ROM, erasable PROM, and electrically erasable PROM).
  • system memory 530 may be used for storing temporary variables or other intermediate information during the execution of instructions by the processors 520.
  • a basic input/output system 533 (BIOS) containing the basic routines that help to transfer information between elements within computer system 510, such as during start-up, may be stored in the ROM 531.
  • RAM 532 may contain data and/or program modules that are immediately accessible to and/or presently being operated on by the processors 520.
  • System memory 530 may additionally include, for example, operating system 534, application programs 535, and other program modules 536.
  • Application programs 535 may also include a user portal for development of the application program, allowing input parameters to be entered and modified as necessary.
  • the operating system 534 may be loaded into the memory 530 and may provide an interface between other application software executing on the computer system 510 and hardware resources of the computer system 510. More specifically, the operating system 534 may include a set of computer-executable instructions for managing hardware resources of the computer system 510 and for providing common services to other application programs (e.g., managing memory allocation among various application programs). In certain example embodiments, the operating system 534 may control execution of one or more of the program modules depicted as being stored in the data storage 540.
  • the operating system 534 may include any operating system now known or which may be developed in the future including, but not limited to, any server operating system, any mainframe operating system, or any other proprietary or non-proprietary operating system.
  • the computer system 510 may also include a disk/media controller 543 coupled to the system bus 521 to control one or more storage devices for storing information and instructions, such as a magnetic hard disk 541 and/or a removable media drive 542 (e.g., floppy disk drive, compact disc drive, tape drive, flash drive, and/or solid state drive).
  • Storage devices 540 may be added to the computer system 510 using an appropriate device interface (e.g., a small computer system interface (SCSI), integrated device electronics (IDE), Universal Serial Bus (USB), or FireWire).
  • Storage devices 541, 542 may be external to the computer system 510.
  • the computer system 510 may also include a field device interface 565 coupled to the system bus 521 to control a field device 566, such as a device used in a production line.
  • the computer system 510 may include a user input interface or GUI 561, which may comprise one or more input devices, such as a keyboard, touchscreen, tablet and/or a pointing device, for interacting with a computer user and providing information to the processors 520.
  • the computer system 510 may perform a portion or all of the processing steps of embodiments of the invention in response to the processors 520 executing one or more sequences of one or more instructions contained in a memory, such as the system memory 530. Such instructions may be read into the system memory 530 from another computer readable medium of storage 540, such as the magnetic hard disk 541 or the removable media drive 542.
  • the magnetic hard disk 541 and/or removable media drive 542 may contain one or more data stores and data files used by embodiments of the present disclosure.
  • the data store 540 may include, but are not limited to, databases (e.g., relational, object-oriented, etc.), file systems, flat files, distributed data stores in which data is stored on more than one node of a computer network, peer-to-peer network data stores, or the like.
  • the data stores may store various types of data such as, for example, skill data, sensor data, or any other data generated in accordance with the embodiments of the disclosure.
  • Data store contents and data files may be encrypted to improve security.
  • the processors 520 may also be employed in a multi-processing arrangement to execute the one or more sequences of instructions contained in system memory 530.
  • hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
  • the computer system 510 may include at least one computer readable medium or memory for holding instructions programmed according to embodiments of the invention and for containing data structures, tables, records, or other data described herein.
  • the term “computer readable medium” as used herein refers to any medium that participates in providing instructions to the processors 520 for execution.
  • a computer readable medium may take many forms including, but not limited to, non-transitory, non-volatile media, volatile media, and transmission media.
  • Non-limiting examples of non-volatile media include optical disks, solid state drives, magnetic disks, and magneto- optical disks, such as magnetic hard disk 541 or removable media drive 542.
  • Non-limiting examples of volatile media include dynamic memory, such as system memory 530.
  • Non-limiting examples of transmission media include coaxial cables, copper wire, and fiber optics, including the wires that make up the system bus 521.
  • Transmission media may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
  • Computer readable medium instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages.
  • the computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
  • electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
  • the computing environment 1300 may further include the computer system 510 operating in a networked environment using logical connections to one or more remote computers, such as remote computing device 580.
  • the network interface 570 may enable communication, for example, with other remote devices 580 or systems and/or the storage devices 541, 542 via the network 571.
  • Remote computing device 580 may be a personal computer (laptop or desktop), a mobile device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer system 510.
  • computer system 510 may include modem 572 for establishing communications over a network 571, such as the Internet. Modem 572 may be connected to system bus 521 via user network interface 570, or via another appropriate mechanism.
  • Network 571 may be any network or system generally known in the art, including the Internet, an intranet, a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a direct connection or series of connections, a cellular telephone network, or any other network or medium capable of facilitating communication between computer system 510 and other computers (e.g., remote computing device 580).
  • the network 571 may be wired, wireless or a combination thereof. Wired connections may be implemented using Ethernet, Universal Serial Bus (USB), RJ-6, or any other wired connection generally known in the art.
  • Wireless connections may be implemented using Wi-Fi, WiMAX, and Bluetooth, infrared, cellular networks, satellite or any other wireless connection methodology generally known in the art. Additionally, several networks may work alone or in communication with each other to facilitate communication in the network 571.
  • program modules, applications, computer-executable instructions, code, or the like depicted in FIG. 13 as being stored in the system memory 530 are merely illustrative and not exhaustive and that processing described as being supported by any particular module may alternatively be distributed across multiple modules or performed by a different module.
  • various program module(s), script(s), plug-in(s), Application Programming Interface(s) (API(s)), or any other suitable computer-executable code hosted locally on the computer system 510, the remote device 580, and/or hosted on other computing device(s) accessible via one or more of the network(s) 571 may be provided to support functionality provided by the program modules, applications, or computer-executable code depicted in FIG.
  • functionality may be modularized differently such that processing described as being supported collectively by the collection of program modules depicted in FIG. 12 may be performed by a fewer or greater number of modules, or functionality described as being supported by any particular module may be supported, at least in part, by another module.
  • program modules that support the functionality described herein may form part of one or more applications executable across any number of systems or devices in accordance with any suitable computing model such as, for example, a client-server model, a peer-to-peer model, and so forth.
  • any of the functionality described as being supported by any of the program modules depicted in FIG. 12 may be implemented, at least partially, in hardware and/or firmware across any number of devices.
  • the computer system 510 may include alternate and/or additional hardware, software, or firmware components beyond those described or depicted without departing from the scope of the disclosure. More particularly, it should be appreciated that software, firmware, or hardware components depicted as forming part of the computer system 510 are merely illustrative and that some components may not be present or additional components may be provided in various embodiments. While various illustrative program modules have been depicted and described as software modules stored in system memory 530, it should be appreciated that functionality described as being supported by the program modules may be enabled by any combination of hardware, software, and/or firmware. It should further be appreciated that each of the above-mentioned modules may, in various embodiments, represent a logical partitioning of supported functionality.
  • This logical partitioning is depicted for ease of explanation of the functionality and may not be representative of the structure of software, hardware, and/or firmware for implementing the functionality. Accordingly, it should be appreciated that functionality described as being provided by a particular module may, in various embodiments, be provided at least in part by one or more other modules. Further, one or more depicted modules may not be present in certain embodiments, while in other embodiments, additional modules not depicted may be present and may support at least a portion of the described functionality and/or additional functionality. Moreover, while certain modules may be depicted and described as sub-modules of another module, in certain embodiments, such modules may be provided as independent modules or as sub-modules of other modules.
  • any operation, element, component, data, or the like described herein as being based on another operation, element, component, data, or the like can be additionally based on one or more other operations, elements, components, data, or the like. Accordingly, the phrase “based on,” or variants thereof, should be interpreted as “based at least in part on.”
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s).
  • the functions noted in the block may occur out of the order noted in the Figures.
  • two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Manufacturing & Machinery (AREA)
  • Materials Engineering (AREA)

Abstract

The invention relates to creating self-supporting models for 3D printing. A computing system can construct a final CAD model of an object from a first model of the object. The first model can include a plurality of elements that define: 1) a plurality of material elements representative of regions of the object having physical material, and 2) a plurality of void elements representative of regions of the object having no physical material. A kernel, for instance one or more directional kernels, can detect at least one unsupported element of the model. The system can impose local constraints on a topology optimization of the first model. The system can perform the topology optimization with the local constraints on the first model so as generate the final CAD model. Thus, by doing so, the system can remove the one or more unsupported elements from the first model, so as to generate the final CAD model that is fully supported.

Description

TOPOLOGY OPTIMIZATION WITH LOCAL OVERHANG CONSTRAINTS FOR 3D PRINTING
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application Serial No. 62/882,030 filed August 2, 2019, the disclosure of which is incorporated herein by reference in its entirety.
BACKGROUND
[0002] Computer-aided design (CAD), computer-aided engineering (CAE), and computer- aided manufacturing (CAM) systems can facilitate the design and simulated testing of product structures and product manufacture. Design space exploration can include various design optimization techniques. Example design optimization techniques for CAD systems include topology optimization, shape optimization, and size optimization. Design optimization can be performed for a variety of disciplines such as aerodynamics, hydrodynamics, heat transfer, structural mechanics, acoustics, etc.
[0003] Topology optimization (TO) generally refers to structural optimization. By way of example, topology optimization may result in the identification of the major load paths in a particular model, thereby enabling the creation of a design in which material is minimized so as to reduce weight without compromising the structural integrity of the design. In some cases, however, TO can result in structures that are generally geometrically complex and/or hard to manufacture. Such designs from TO can limit the implementation of topology optimization in industry. As additive manufacturing techniques (e.g., 3D printing) have advanced, however, complex structures are increasingly able to be produced in a cost-effective manner. But technical challenges remain related to topology optimization and additive manufacturing. For example, it is recognized herein that, in some cases, topology optimized designs lack proper structural support for additive manufacturing.
BRIEF SUMMARY
[0004] Embodiments of the invention address and overcome one or more of the described- herein shortcomings by providing methods, systems, and apparatus that can generate models or designs from topology optimization that meet manufacturing constraints, such as constraints associated with self-supporting structures. In particular, embodiments are described herein in which final CAD models are generated that are fully self-supported.
[0005] In an example aspect, a computing system can construct a final CAD model of an object. The system can obtain a first model of the object. The first model can include a plurality of elements that define: 1) a plurality of material elements representative of regions of the object having physical material, and 2) a plurality of void elements representative of regions of the object having no physical material. A kernel, for instance one or more directional kernels, can detect at least one unsupported element of the model. For example, a kernel can determine that at least one material element of the plurality of material elements is not supported by the plurality of material elements, so as to detect at least one unsupported element. In particular, a plurality of directional kernels can determine an amount of material within a range of each element of the plurality of elements. The range can be defined by an overhang angle that corresponds to each element. The system can impose local constraints on a topology optimization of the first model. The system can perform the topology optimization with the local constraints on the first model so as generate the final CAD model. Thus, by doing so, the system can remove the one or more unsupported elements from the first model, so as to generate the final CAD model.
[0006] In particular, imposing constraints on the topology optimization can include replacing at least one void element with a new material element representative of a region of the object having physical material, so as to change a respective maximum value of a plurality of values associated with the unsupported element to a new value that is less than or equal to a predetermined threshold, thereby removing the unsupported element. Additionally, or alternatively, imposing constraints on the topology optimization can include replacing the unsupported element with a new void element representative of a region of the object having no physical material, so as to change the respective maximum value of the plurality of values associated with the unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the unsupported element. The first model may, in some cases, include multiple unsupported elements, such that a respective local constraint can be imposed on each element of the plurality of unsupported elements. Further, performing the topology optimization can include identifying a printing direction that defines a direction from (or along) which material is deposited as the object is printed, and performing the topology optimization can be based on the printing direction. In some cases, the system can convert the final CAD model into machine-executable instructions. A three-dimensional (3D) printer can execute the instructions so as to print the object represented by the final CAD model in the printing direction in which the topology optimization is based.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0007] The foregoing and other aspects of the present invention are best understood from the following detailed description when read in connection with the accompanying drawings. For the purpose of illustrating the invention, there is shown in the drawings embodiments that are presently preferred, it being understood, however, that the invention is not limited to the specific instrumentalities disclosed. Included in the drawings are the following Figures:
[0008] FIG. 1 illustrates an example model that includes an example unsupported element and an example supported element.
[0009] FIG. 2 illustrates an example kernel.
[0010] FIG. 3 illustrates an example void element of FIG. 1 with an example convoluted kernel that corresponds to the void element.
[0011] FIG. 4 illustrates a plurality of directional kernels in accordance with an example embodiment.
[0012] FIG. 5 illustrates an example MBB beam design problem or space that can be solved in accordance with various embodiments.
[0013] FIG. 6 illustrates an example beam design that can be generated from the design space shown in FIG. 5, using topology optimization without the self-supporting manufacturing constraints described herein.
[0014] FIG. 7 illustrates example beam designs that can be generated from the design space shown in FIG. 5, using topology optimization with self-supporting manufacturing constraints described herein, wherein the example beam designs vary based on different printing directions, in accordance with an embodiment.
[0015] FIG. 8 illustrates an example arch use case in accordance with an embodiment. Referring now to FIG. 8, another example arch use case 800 is shown that includes an arch design problem 802.
[0016] FIG. 9 depicts an example 3D cantilever beam structure that can be modeled using topology optimization without the self-supporting manufacturing constraints described herein. [0017] FIG. 10 shows an example 3D cantilever beam structure that can be generated, in contrast to the beam shown in FIG. 9 using topology optimization local self-supporting constraints, in accordance with embodiments described herein.
[0018] FIG. 11 is a flow diagram that shows example operations that can be performed in accordance with an example embodiment.
[0019] FIG. 12 is a block diagram of an example CAD system configured to generate self- supporting models in accordance with various embodiments.
[0020] FIG. 13 shows an example of a computing environment within which embodiments of the disclosure may be implemented.
DETAILED DESCRIPTION
[0021] A challenge, among others, to three-dimensional (3D) printing is the necessity of support material. A traditional 3D printing layering process requires that structures are produced from the bottom to top, such that each subsequent layer of material is placed on top of a previously deposited layer. Traditional 3D printing techniques can generally accommodate an overhang angle (e.g., an angle defined from a vertical axis to an axis defined by the outermost edge of material) of up to about 45 degrees. Using such traditional techniques, an overhang angle that is greater than about 45 degrees, for example an overhang angle defined by a right angle arch, defines a region of unsupported material, and thus often cannot be printed directly. In some cases, current additive manufacturing techniques include adding structural or support material upon which layers can be added. It is recognized herein, however, that such support material can increase the printing time and the overall cost of the printing. In some cases, adding the support material can also deteriorate the quality of the final printed object.
[0022] In accordance with various embodiments described herein, models or designs can be generated that do not have regions of unsupported material. As used herein, unless otherwise specified, model and design can be used interchangeably, without limitation. In some cases, such designs or models that do not have regions of unsupported material can be printed directly without using support material, thereby saving time and money, and achieving higher quality results. Such models or designs can be referred to as self-supporting designs.
[0023] Self-supporting designs that are constructed using topology optimization can be referred to as self-supporting topology optimization designs. It is recognized herein that a technical problem associated with constructing self-supporting topology optimization designs is determining how to accurately detect unsupported elements of a design. It is further recognized herein that another technical problem is, after detecting unsupported elements, determining how to eliminate them from the final design. Formulating the problem of detecting unsupported elements in a manner that can be solved by a computing system can be troublesome, particularly when considering intermediate densities that can be common to an optimization procedure.
[0024] Referring to FIG. 1, an example model 100 defines an example overhang angle 102 that is defined between a vertical axis 104 and an edge axis 106. The edge axis 106 is defined by an edge 108 of the model 100, which corresponds to an edge of the structure or object represented by the model 100. Thus, the overhang angle 102 can be defined by the vertical axis 104 and the edge 108. In some cases, overhang angles, such as the overhang angle 102, can be detected using edge detection image processing techniques that are based on the density of elements. In such examples, after the edges of the structure or model are detected, the edge can be compared to the vertical axis 104 so as to compute the overhang angle 102. Further, based on the overhang angle associated with a given region, it can be determined whether each element in that given region is self-supported or unsupported. An element may correspond to a pixel in a given model, for instance the model 100. In some cases, a global constraint can be used to eliminate unsupported elements. Unsupported elements can refer to elements that have a feasible range without sufficient material, or amount of material. The range of a given element can be element can be defined by the vertical axis 104 and a maximum overhang angle. It is recognized herein, however, that approaches using edge detection and global constraints can have issues or shortcomings. For example, edge detection can be complicated or inaccurate during optimization because of intermediate densities. Intermediate densities generally refer to densities of elements that are between 0 and 1. In other words, elements having density values between 0 and 1 can be referred to as intermediate densities. Such elements having intermediate densities are typical results of topology optimizations, as element densities can vary (or evolve) continuously from 0 to 1 states or densities, or 1 to 0. In particular, for example, it is recognized herein the presence of intermediate densities often make a given structural boundary difficult to define, which, in turn, can result in the calculated overhanging angle being inaccurate. Furthermore, it is also recognized herein that, in some cases, a global constraint can make the optimization problem very difficult to solve. For example, the implementation of a global constraint can require a relaxation parameter that allows for some regions of unsupported material. Further still, it is recognized herein that the global constraint might not allow local control of an unsupported region, which means that the final result or design might include unsupported elements, and thus might not be an actually self-supported design.
[0025] In another example approach to detecting unsupported elements, an overhang kernel matrix can be used to determine whether a given element is self-supported or unsupported. For example, the kernel can check the elements in a range that is defined by an overhang angle and a given element, and if this range has a significant amount of material, the given element may be considered self-supported. In some cases, this approach is simpler and more stable as compared to the edge detection approach described above. After detecting the unsupported elements, a penalization technique can be applied such that the elements that are not self- supported have a low stiffness to weight ratio when compared to self-supported elements. This way, the elements are able to obtain self-supported results without explicitly imposing a constraint. It is recognized herein that a disadvantage of this approach is that it alters the mechanical behavior of the material, and therefore the mechanical response can be less accurate. Furthermore, because the self-supporting constraints are not imposed directly, there is no guarantee that the final result will be truly self-supported. As another example approach, kernels can be used to detect the unsupported elements, and then self-support can be imposed as a global constraint. In some cases, such global constraints can present problems. For example, it is recognized herein that the global constraints can sacrifice local control over the constraint, and as a consequence results or models can be generated that are not self-supported designs.
[0026] In various embodiments described herein, however, designs can be constructed that do not include regions of unsupported material, so as define self-supported designs representative of truly self-supporting structures. In various examples, these designs can be printed directly to construct the corresponding objects or structures, without support material, thereby, in some cases, conserving time and cost while enhancing quality.
[0027] Referring also to FIG. 2, in accordance with example embodiments, kernel matrices, such as a kernel matrix or kernel 200, can be used to detect unsupported elements in a model. The kernel matrix can be normalized so that the summation of its components equals 1. After the unsupported elements are detected, a local constraint can be imposed on an optimization problem so as to eliminate the unsupported elements. For example, the kernel 200 can be convoluted through the domain defined by the model, so as to generate a convoluted kernel (matrix) or value associated with each element of the model. The value associated with a given element can indicate whether the given element is self-supported or unsupported. In some cases, a value associated with a given element that is less than a predetermined threshold, for instance a low value, indicates that the given element is not sufficiently self-supported (or is unsupported). For example, the unsupported element might have no elements directly underneath it. Conversely, in some cases, a value associated with a given element that is greater than a predetermined threshold, for instance a high value, indicates that the given element is self-supported. Such an element may have one or more elements directly underneath it, so as to support the element.
[0028] Referring in particular to FIG. 1, behavior of the kernel 200 is exemplified by being applied to elements. In particular, to illustrate the example, the kernel 200 is applied to a first self-supported element 109, so as to generate a first convoluted matrix (kernel) or value at 111. The kernel 200 is also applied to an unsupported element 112 so as to generate second convoluted matrix (kernel) or value at 116. To eliminate unsupported elements, such as the unsupported element 112, from the model 100 so as to construct an updated or final model, a local constraint can be imposed on each element of the model 100. For example, the local constraint can be imposed such that the value of a convoluted kernel is greater than a certain value or predetermined threshold that indicates self-support. The constraint can be defined by equation (1): di(z) = slim - Hz < 0 (1)
Referring to equation (1), and continuing with the example, H represents the kernel 200, z represents a density map associated with a given element of the model 100 (e.g., the element located at the center of the density map), and sUm represents a limit value (or predetermined threshold) above which the given element is considered self-supported. Further, gt refers to the local constraint of the zth element. For example, if the density map at 111 is convolved with the kernel 200, we will obtain a value of Hz = 1, as shown in FIG. 1. With sUm set as 1, the obtained value of gt = 0, which means the constraint is being satisfied with the element that associated with density map at 111. Similarly, convolving the kernel 200 with the density map at 116 results in a value of gt = 1, indicating the violation of the self-supporting constraint for the element that is associated with density map at 116. [0029] It is recognized herein, however, that the constraint can be active in void regions of the model 100. Void regions or elements of a model can be representative of regions of the corresponding object having no physical material.
[0030] For example, referring to FIG. 3, the model 100 defines a plurality of void regions or elements, for instance a void element 300. By way of example, as shown in FIG. 3, the constraint shown in equation (1) can be active in the void element 300 that does not have physical meaning. In particular, the void element 300 can generated a convoluted kernel 302 that is equal to 0. To address this, in accordance with various embodiments, the constraint can be penalized such that if the density of a given element (e.g., void element 300) is zero, then the constraint is automatically satisfied. In some cases, because the density of a void element or region is zero, the constraint is satisfied. In particular, the constraint can be penalized by multiplying the constraint by the density of its respective element, as shown in equation (2): di(z) = (slim - Hz)Zi < 0 (2)
[0031] As shown in equation (2), zL represents the density of the zth element. Thus, when the density of an element is zero, the constraint is automatically satisfied, and thus the element is considered self-supported. By way of example, because the density of the void element 300 is zero, the constraint in accordance with equation (2) equals zero, which is less than or equal to zero, thereby satisfying the constraint such that the void element 300 is considered to be self- supported in the context of removing unsupported elements.
[0032] Referring now to FIG. 1 and FIG. 4, a plurality of directional kernels 400 are shown. It is recognized herein that, in some cases, the kernel 200 might lack some precision. In those cases, the directional kernels 400 can improve precision in determining self-supported elements. For example, if kernel 200 is applied to an element 112 having a density map 114 in
3
FIG. 1, a value of Hz = 1/4 is obtained, which results in g = - 4. Although as a practical matter, the element associated with density map 114 satisfies the self-support condition (e.g., assuming the maximum overhang angle is 45°), the value of constraint gt that is calculated using the kernel 200 indicates that it is not sufficiently self-supported. It is recognized herein that such an inaccurate characterization can cause the optimization algorithm to over-penalize such designs, which can then further be considered or characterized as not optimal. Alternatively, if the direction kernels 400 are applied to density map 114, the maximum value of Hj-z, j = 1, ...,M will be 1 (e.g., attained when applying
Figure imgf000011_0001
to map 114), which results in 9i = 0 through equation (3) below. Consequently, in accordance with an embodiment, the element associated with density map 114 can be correctly classified as self-supported. In practice, any number of directional kernels 400 can be applied to a given element, but multiple directional kernels, in accordance with various embodiments, improve precision in determining or detecting self-supported elements. In an example, if at least one of the directional kernels 400 associated with a given element is greater than a certain value or predetermined threshold, the element is unsupported. In some cases, a max function such as equation (3) can determine whether an element is unsupported, where M represents the number of directional kernels:
9i(.z) = [%mmax H^,H ZiΉ^ ..., HMZi)\zi < 0 (3)
[0033] It is recognized herein that the max function is not differentiable and therefore is not used with various gradient-based optimizations. Thus, in some cases, a smooth approximation of the maximum, for instance a P-mean can be computed according to equation (4):
Figure imgf000011_0002
In this example there can be a constraint for each element, which can, in some cases, result in a relatively large number of constraints. Such a number of constraints can increase the computational overhead of an optimization problem, such as the optimization represented by example equations (5): minC(z) = UTF (5)
Z s.t. V - Vf £ 0
9i(z) < 0 1 < i < N 0 < ze < 1 with: K(z)U = F
In an example embodiment, optimizations can be performed in accordance with an Augmented Lagrangian (AL) technique, so as to compute a large number of constraints in an efficient manner. For example, the constraints can be replaced via a penalization to the objective function. Equation (6) illustrates an example sequence of approximated problems, which can be solved in accordance with various embodiments so as to adaptively adjust the penalization:
Figure imgf000012_0001
s.t. V - Vf £ 0 (6) 0 < ze < 1 with: K(z)U = F
For example, in accordance with equation (7), the penalization can be adaptively adjusted so as to satisfy the original constraints:
Figure imgf000012_0002
Thus, solutions of the approximated problems (e.g., equation (6)) can converge to the solution of the original problem.
[0034] Referring now to FIG. 5, some examples are now discussed to illustrate example effectiveness of various embodiments described herein. In an example illustrated in FIG. 5, an MBB beam design space 500 is depicted that includes an example load condition 502 and boundary conditions 504. The example MBB beam 500 can represent a two dimensional (2D) or three dimensional (3D) use case. A topology optimization can be performed in accordance with the embodiments described above so as generate models (e.g., designs or models 700a-d shown in FIG. 7) that each define a self-supporting design that can be printed directly, and that complies with the design conditions, for instance the conditions 502 and 504. FIG. 6 shows an example beam design 600 that can be generated from the design space 500, using topology optimization without the self-supporting manufacturing constraints described herein. In contrast, FIG. 7 shows various beam designs 700, in particular designs 700a-d, that can be generated in to comply the design space 500, in particular the conditions 502 and 504, by performing topology optimizations with the self-supporting manufacturing constraints imposed in accordance with embodiments described herein.
[0035] Referring in particular to FIG. 7, the designs 700a-d can be generated in accordance with different printing directions. For example, a beam that corresponds to each of the designs 700a-d can be generated via additive manufacturing. The printing direction generally refers to the direction from (or along) which the material is deposited to the build plate as an object is printed. To illustrate various examples, the models 700a-d are generated based on different printing directions that are perpendicular to each other, but it will be understood that models can be generated based on any printing direction as desired, and all such printing directions are contemplated as being within the scope of this disclosure. In particular, the beam designs 700 can each define a first or top end 702 and a second or bottom end 704 opposite the top end along a transverse direction 710. The beam designs 700 can further define a third or proximal end 706 and a fourth or distal end 708 opposite the proximal end 706 along a longitudinal direction 712. In an example, the transverse direction 710 can be substantially perpendicular to the longitudinal direction 712. Thus, referring also to FIG. 5, the load condition 502 applies momentum along the transverse direction 710. In particular, the load condition 502 stipulates that momentum is applied on the top end 702 toward the bottom end 704, at a location proximate and adjacent to the proximal end 706.
[0036] In various examples, specifying different printing directions results in directional kernels with different configurations, which produces different topology optimized designs.
Still referring to FIG. 7, the designs 700 generated by the topology optimizations performed in accordance with embodiments described herein can vary based on printing direction. For example, a first design 702a can be generated based on a first printing direction 714 defined from the proximal end 706 toward the distal end 708. A second design 702b can be generated based on a second printing direction 716 defined from the bottom end 704 toward the top end 702. A third design 702b can be generated based on a third printing direction 718 defined from the distal end 708 toward the proximal end 706. Continuing with the examples shown in FIG.
7, a fourth design 702d can be generated based on a fourth printing direction 720 that is defined from the top end 702 toward the bottom end 704. Thus, the first and third printing directions 714 and 718, respectively, can be opposite each other along the longitudinal direction 712. Similarly, the second and fourth printing directions 716 and 720, respectively, can be opposite each other the transverse direction 710. Thus, as shown, the topology optimizations can vary based on different printing directions.
[0037] Referring now to FIG. 8, another example arch use case 800 is shown that includes an arch design problem 802. As illustrated by FIG. 8, the problem 802 defines a design domain that is supported on its two bottom corners, and subjected to a concentrated load at the center of its bottom edge pointing downward. The printing direction in the example problem 802 is in the same direction as the concentrated load. A topology optimization can be performed in accordance with the embodiments described above so as generate models, for instance a final model 806 that defines a self-supporting design that can be printed directly. The final model 806 can be generated by imposing local self-supporting constraints, as described herein, to the topology optimization. In contrast, an unsupported model 804 can be generated by performing a topology optimization without imposing the self-supporting constraints that are imposed during the generation of the final model 806.
[0038] Referring now to FIG. 9 and FIG. 10, an example 3D use case is shown as another example of imposing the described-herein local self-supporting constraints to a topology optimization. In particular, FIG. 9 depicts an example 3D cantilever beam structure 900 that can be modeled using topology optimization without the self-supporting constraints described herein. In contrast, referring to FIG. 10, an example 3D cantilever beam structure 1000 is generated using topology optimization local self-supporting constraints, in accordance with embodiments described herein. The beam structure 900 and the beam structure 1000 can be generated under the same problem conditions. For example, the topology optimization performed to generate the beam structures 900 and 1000 can be the same except that the beam structure 900 is generated without self-supporting constraints, and the beam structure 1000 is generated with local self-supporting constraints.
[0039] Referring now to FIG. 11, a computing system, for example a CAD system 1200 (FIG. 12), can perform an example process 1100 so as to construct a final CAD model of an object. At 1102, the system can obtain a first model of the object. The first model can include a plurality of elements that define: 1) a plurality of material elements representative of regions of the object having physical material, and 2) a plurality of void elements representative of regions of the object having no physical material. At 1104, a kernel, for instance one or more directional kernels, can detect at least one unsupported element of the model. For example, a kernel can determine that at least one material element of the plurality of material elements is not supported by the plurality of material elements, so as to detect at least one unsupported element. In some cases, such a kernel defines one kernel of a plurality of directional kernels, such that the plurality of directional kernels can determine that at least one material element of the plurality of material element is not supported by the plurality of material elements. In particular, the plurality of directional kernels can determine an amount of material within a range of each element of the plurality of elements. The range can be defined by an overhang angle that corresponds to each element. In various examples, detecting unsupported elements can further include convoluting each of the directional kernels with a density map defined by the first model, so as to define respective convolution matrices. Based on the convolution matrices, the system can determine a respective plurality of values associated with each element of the plurality of elements. In an example, the system can determine that at least one of the plurality of values associated with at least one unsupported element is greater than a predetermined threshold, thereby detecting at least one unsupported element. In another example, the system can determine a respective maximum value of each of the plurality of values, and can compare each maximum value to a predetermined threshold so as to determine whether each maximum value is greater than the predetermined threshold. In various examples, when the maximum value is less than or equal to the predetermined threshold, the system can determine that the respective element associated with the maximum value is supported, thereby detecting a supported element. Alternatively, or additionally, the system can determine that the respective maximum value of the plurality of values associated with at least one unsupported element is greater than the predetermined threshold, so as to detect the at least one unsupported element.
[0040] Still referring to FIG. 11, in some cases, determining each maximum value includes computing a smooth approximation of each of the respective plurality of values. Further, each element of the plurality of elements can define a respective density, and determining a respective maximum value associated with each element further can include multiplying the convolution matrices associated with each element by the density of the respective element. Additionally, at 1106, the system can impose local constraints on a topology optimization of the first model. At 1108, the system can perform the topology optimization with the local constraints on the first model so as generate the final CAD model. Thus, by doing so, the system can remove the one or more unsupported elements from the first model, so as to generate the final CAD model. In particular, imposing constraints on the topology optimization can include replacing at least one void element with a new material element representative of a region of the object having physical material, so as to change the respective maximum value of the plurality of values associated with the unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the unsupported element. Additionally, or alternatively, imposing constraints on the topology optimization can include replacing the unsupported element with a new void element representative of a region of the object having no physical material, so as to change the respective maximum value of the plurality of values associated with the unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the unsupported element. The first model may, in some cases, include multiple unsupported elements, such that a respective local constraint can be imposed on each element of the plurality of unsupported elements.
[0041] With continuing reference to FIG. 11, performing the topology optimization (at 1108) can include identifying a printing direction that defines a direction along which material is deposited as the object is printed, and performing the topology optimization based on the printing direction. At 1110, the system can convert the final CAD model into machine- executable instructions. At 1112, a 3D printer can execute the instructions so as to print the object represented by the final CAD model in the printing direction in which the topology optimization is based.
[0042] Referring now to FIG. 12, the CAD system 1200 may include one or more processors 1202 and a memory 1204 having stored applications, agents, and computer program modules to implement the embodiments of this disclosure including a design tools application 1206, a topology optimization program module 1208, and a multi-disciplinary optimization program module 1210. A module may refer to a software component that performs one or more functions. Each module may be a discrete unit, or the functionality of multiple modules can be combined into one or more units that form part of a large program. In the example depicted in FIG. 12, the design tools application 1206, topology optimization program module 1208, and the multi-disciplinary optimization program module 1210 are organized to form a program for model generation.
[0043] Design tools application 322 may be implemented as a CAD product modeling or drawing application such as Siemens NX, AutoCAD, or the like, which provides an interface for a user, such as a designer, to develop 3D rendering of objects. In an embodiment, a user may apply the design tools application 1206 to a final design once it is received from the topology optimization program module 1208 or the multi-disciplinary optimization program module 1210. For example, the final design(s) may include several editable parametric shapes representing void regions and several editable parametric shapes representing solid regions. A user may select any shape using a graphical user interface (GUI) for example, and edit any of the parameters, such as location, radii, length, etc. [0044] The multi-disciplinary optimization multi-disciplinary optimization program module 1210 may include a simulation module 1212 and an optimizer 1214. The multi-disciplinary optimization multi-disciplinary optimization program module 1210 may execute various algorithms so as to optimize designs based on multiple objectives or design criteria. The topology optimization program module 1208 may execute various algorithms so as to perform topology optimizations on various designs of 3D objects, in accordance with various embodiments described herein.
[0045] The multi-disciplinary optimization program module 1210 and the topology optimization program module 1208 may obtain designs or design spaces with problem constraints such as, for example, the size for the design space, physical load information, material, weight, and density information, or any other relevant property needed for the optimization or simulation, as well as any design constraints. In an example, the topology optimization program module 1208 may execute an objective function that represents a quantity to be minimized for best performance, such as minimal compliance for maximum stiffness after material removal or distribution. Based on initial design criteria, the multi disciplinary optimization program module 1210 or topology optimization program module 1208 may solve for the remaining unknown variables in accordance with embodiments described herein. For example, the modules may variables related to material distribution for self-supporting elements, by applying differential equations for example. The topology optimization program module 1208 or the multi-disciplinary optimization multi-disciplinary optimization program module 1210 may operate using discrete or continuous variables. Discrete modifications to the topology geometry may occur as a series of operations.
[0046] FIG. 13 illustrates an example of a computing environment within which embodiments of the present disclosure may be implemented. A computing environment 1300 includes a computer system 510 that may include a communication mechanism such as a system bus 521 or other communication mechanism for communicating information within the computer system 510. The computer system 510 further includes one or more processors 520 coupled with the system bus 521 for processing the information. For example, the topology optimization program module 1208 may include, or be coupled to, the one or more processors 520.
[0047] The processors 520 may include one or more central processing units (CPUs), graphical processing units (GPUs), or any other processor known in the art. More generally, a processor as described herein is a device for executing machine-readable instructions stored on a computer readable medium, for performing tasks and may comprise any one or combination of, hardware and firmware. A processor may also comprise memory storing machine-readable instructions executable for performing tasks. A processor acts upon information by manipulating, analyzing, modifying, converting or transmitting information for use by an executable procedure or an information device, and/or by routing the information to an output device. A processor may use or comprise the capabilities of a computer, controller or microprocessor, for example, and be conditioned using executable instructions to perform special purpose functions not performed by a general purpose computer. A processor may include any type of suitable processing unit including, but not limited to, a central processing unit, a microprocessor, a Reduced Instruction Set Computer (RISC) microprocessor, a Complex Instruction Set Computer (CISC) microprocessor, a microcontroller, an Application Specific Integrated Circuit (ASIC), a Field-Programmable Gate Array (FPGA), a System-on-a-Chip (SoC), a digital signal processor (DSP), and so forth. Further, the processor(s) 520 may have any suitable microarchitecture design that includes any number of constituent components such as, for example, registers, multiplexers, arithmetic logic units, cache controllers for controlling read/write operations to cache memory, branch predictors, or the like. The microarchitecture design of the processor may be capable of supporting any of a variety of instruction sets. A processor may be coupled (electrically and/or as comprising executable components) with any other processor enabling interaction and/or communication there-between. A user interface processor or generator is a known element comprising electronic circuitry or software or a combination of both for generating display images or portions thereof. A user interface comprises one or more display images enabling user interaction with a processor or other device.
[0048] The system bus 521 may include at least one of a system bus, a memory bus, an address bus, or a message bus, and may permit exchange of information (e.g., data (including computer-executable code), signaling, etc.) between various components of the computer system 510. The system bus 521 may include, without limitation, a memory bus or a memory controller, a peripheral bus, an accelerated graphics port, and so forth. The system bus 521 may be associated with any suitable bus architecture including, without limitation, an Industry Standard Architecture (ISA), a Micro Channel Architecture (MCA), an Enhanced ISA (EISA), a Video Electronics Standards Association (VESA) architecture, an Accelerated Graphics Port (AGP) architecture, a Peripheral Component Interconnects (PCI) architecture, a PCI -Express architecture, a Personal Computer Memory Card International Association (PCMCIA) architecture, a Universal Serial Bus (USB) architecture, and so forth.
[0049] Continuing with reference to FIG. 13, the computer system 510 may also include a system memory 530 coupled to the system bus 521 for storing information and instructions to be executed by processors 520. The system memory 530 may include computer readable storage media in the form of volatile and/or nonvolatile memory, such as read only memory (ROM) 531 and/or random access memory (RAM) 532. The RAM 532 may include other dynamic storage device(s) (e.g., dynamic RAM, static RAM, and synchronous DRAM). The ROM 531 may include other static storage device(s) (e.g., programmable ROM, erasable PROM, and electrically erasable PROM). In addition, the system memory 530 may be used for storing temporary variables or other intermediate information during the execution of instructions by the processors 520. A basic input/output system 533 (BIOS) containing the basic routines that help to transfer information between elements within computer system 510, such as during start-up, may be stored in the ROM 531. RAM 532 may contain data and/or program modules that are immediately accessible to and/or presently being operated on by the processors 520. System memory 530 may additionally include, for example, operating system 534, application programs 535, and other program modules 536. Application programs 535 may also include a user portal for development of the application program, allowing input parameters to be entered and modified as necessary.
[0050] The operating system 534 may be loaded into the memory 530 and may provide an interface between other application software executing on the computer system 510 and hardware resources of the computer system 510. More specifically, the operating system 534 may include a set of computer-executable instructions for managing hardware resources of the computer system 510 and for providing common services to other application programs (e.g., managing memory allocation among various application programs). In certain example embodiments, the operating system 534 may control execution of one or more of the program modules depicted as being stored in the data storage 540. The operating system 534 may include any operating system now known or which may be developed in the future including, but not limited to, any server operating system, any mainframe operating system, or any other proprietary or non-proprietary operating system. [0051] The computer system 510 may also include a disk/media controller 543 coupled to the system bus 521 to control one or more storage devices for storing information and instructions, such as a magnetic hard disk 541 and/or a removable media drive 542 (e.g., floppy disk drive, compact disc drive, tape drive, flash drive, and/or solid state drive). Storage devices 540 may be added to the computer system 510 using an appropriate device interface (e.g., a small computer system interface (SCSI), integrated device electronics (IDE), Universal Serial Bus (USB), or FireWire). Storage devices 541, 542 may be external to the computer system 510.
[0052] The computer system 510 may also include a field device interface 565 coupled to the system bus 521 to control a field device 566, such as a device used in a production line. The computer system 510 may include a user input interface or GUI 561, which may comprise one or more input devices, such as a keyboard, touchscreen, tablet and/or a pointing device, for interacting with a computer user and providing information to the processors 520.
[0053] The computer system 510 may perform a portion or all of the processing steps of embodiments of the invention in response to the processors 520 executing one or more sequences of one or more instructions contained in a memory, such as the system memory 530. Such instructions may be read into the system memory 530 from another computer readable medium of storage 540, such as the magnetic hard disk 541 or the removable media drive 542. The magnetic hard disk 541 and/or removable media drive 542 may contain one or more data stores and data files used by embodiments of the present disclosure. The data store 540 may include, but are not limited to, databases (e.g., relational, object-oriented, etc.), file systems, flat files, distributed data stores in which data is stored on more than one node of a computer network, peer-to-peer network data stores, or the like. The data stores may store various types of data such as, for example, skill data, sensor data, or any other data generated in accordance with the embodiments of the disclosure. Data store contents and data files may be encrypted to improve security. The processors 520 may also be employed in a multi-processing arrangement to execute the one or more sequences of instructions contained in system memory 530. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. Thus, embodiments are not limited to any specific combination of hardware circuitry and software.
[0054] As stated above, the computer system 510 may include at least one computer readable medium or memory for holding instructions programmed according to embodiments of the invention and for containing data structures, tables, records, or other data described herein. The term “computer readable medium” as used herein refers to any medium that participates in providing instructions to the processors 520 for execution. A computer readable medium may take many forms including, but not limited to, non-transitory, non-volatile media, volatile media, and transmission media. Non-limiting examples of non-volatile media include optical disks, solid state drives, magnetic disks, and magneto- optical disks, such as magnetic hard disk 541 or removable media drive 542. Non-limiting examples of volatile media include dynamic memory, such as system memory 530. Non-limiting examples of transmission media include coaxial cables, copper wire, and fiber optics, including the wires that make up the system bus 521. Transmission media may also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications.
[0055] Computer readable medium instructions for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.
[0056] Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer readable medium instructions.
[0057] The computing environment 1300 may further include the computer system 510 operating in a networked environment using logical connections to one or more remote computers, such as remote computing device 580. The network interface 570 may enable communication, for example, with other remote devices 580 or systems and/or the storage devices 541, 542 via the network 571. Remote computing device 580 may be a personal computer (laptop or desktop), a mobile device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer system 510. When used in a networking environment, computer system 510 may include modem 572 for establishing communications over a network 571, such as the Internet. Modem 572 may be connected to system bus 521 via user network interface 570, or via another appropriate mechanism.
[0058] Network 571 may be any network or system generally known in the art, including the Internet, an intranet, a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a direct connection or series of connections, a cellular telephone network, or any other network or medium capable of facilitating communication between computer system 510 and other computers (e.g., remote computing device 580). The network 571 may be wired, wireless or a combination thereof. Wired connections may be implemented using Ethernet, Universal Serial Bus (USB), RJ-6, or any other wired connection generally known in the art. Wireless connections may be implemented using Wi-Fi, WiMAX, and Bluetooth, infrared, cellular networks, satellite or any other wireless connection methodology generally known in the art. Additionally, several networks may work alone or in communication with each other to facilitate communication in the network 571.
[0059] It should be appreciated that the program modules, applications, computer-executable instructions, code, or the like depicted in FIG. 13 as being stored in the system memory 530 are merely illustrative and not exhaustive and that processing described as being supported by any particular module may alternatively be distributed across multiple modules or performed by a different module. In addition, various program module(s), script(s), plug-in(s), Application Programming Interface(s) (API(s)), or any other suitable computer-executable code hosted locally on the computer system 510, the remote device 580, and/or hosted on other computing device(s) accessible via one or more of the network(s) 571, may be provided to support functionality provided by the program modules, applications, or computer-executable code depicted in FIG. 12 and/or additional or alternate functionality. Further, functionality may be modularized differently such that processing described as being supported collectively by the collection of program modules depicted in FIG. 12 may be performed by a fewer or greater number of modules, or functionality described as being supported by any particular module may be supported, at least in part, by another module. In addition, program modules that support the functionality described herein may form part of one or more applications executable across any number of systems or devices in accordance with any suitable computing model such as, for example, a client-server model, a peer-to-peer model, and so forth. In addition, any of the functionality described as being supported by any of the program modules depicted in FIG. 12 may be implemented, at least partially, in hardware and/or firmware across any number of devices.
[0060] It should further be appreciated that the computer system 510 may include alternate and/or additional hardware, software, or firmware components beyond those described or depicted without departing from the scope of the disclosure. More particularly, it should be appreciated that software, firmware, or hardware components depicted as forming part of the computer system 510 are merely illustrative and that some components may not be present or additional components may be provided in various embodiments. While various illustrative program modules have been depicted and described as software modules stored in system memory 530, it should be appreciated that functionality described as being supported by the program modules may be enabled by any combination of hardware, software, and/or firmware. It should further be appreciated that each of the above-mentioned modules may, in various embodiments, represent a logical partitioning of supported functionality. This logical partitioning is depicted for ease of explanation of the functionality and may not be representative of the structure of software, hardware, and/or firmware for implementing the functionality. Accordingly, it should be appreciated that functionality described as being provided by a particular module may, in various embodiments, be provided at least in part by one or more other modules. Further, one or more depicted modules may not be present in certain embodiments, while in other embodiments, additional modules not depicted may be present and may support at least a portion of the described functionality and/or additional functionality. Moreover, while certain modules may be depicted and described as sub-modules of another module, in certain embodiments, such modules may be provided as independent modules or as sub-modules of other modules.
[0061] Although specific embodiments of the disclosure have been described, one of ordinary skill in the art will recognize that numerous other modifications and alternative embodiments are within the scope of the disclosure. For example, any of the functionality and/or processing capabilities described with respect to a particular device or component may be performed by any other device or component. Further, while various illustrative implementations and architectures have been described in accordance with embodiments of the disclosure, one of ordinary skill in the art will appreciate that numerous other modifications to the illustrative implementations and architectures described herein are also within the scope of this disclosure. In addition, it should be appreciated that any operation, element, component, data, or the like described herein as being based on another operation, element, component, data, or the like can be additionally based on one or more other operations, elements, components, data, or the like. Accordingly, the phrase “based on,” or variants thereof, should be interpreted as “based at least in part on.”
[0062] Although embodiments have been described in language specific to structural features and/or methodological acts, it is to be understood that the disclosure is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as illustrative forms of implementing the embodiments. Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments could include, while other embodiments do not include, certain features, elements, and/or steps. Thus, such conditional language is not generally intended to imply that features, elements, and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements, and/or steps are included or are to be performed in any particular embodiment.
[0063] The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.

Claims

CLAIMS What is claimed is:
1. A method of constructing a final computer-aided design (CAD) model of an object, the method comprising: obtaining a first model of the object, the first model defining a plurality of elements that define: 1) a plurality of material elements representative of regions of the object having physical material, and 2) a plurality of void elements representative of regions of the object having no physical material; determining, by a kernel, that at least one material element of the plurality of material elements is not supported by the plurality of material elements, so as to detect at least one unsupported element; and removing the at least one unsupported element from the first model so as to generate the final CAD model, wherein removing the at least one unsupported element comprises: imposing constraints on a topology optimization of the first model; and performing the topology optimization with the constraints on the first model.
2. The method of claim 1, wherein the kernel defines one kernel of a plurality of directional kernels such that detecting the at least one unsupported element further comprises: determining, by the plurality of directional kernels, that at least one material element of the plurality of material elements is not supported by the plurality of material elements.
3. The method of claim 2, the method further comprising: determining, by the plurality of directional kernels, an amount of material within a range of each element of the plurality of elements, the range defined by an overhang angle that corresponds to each element.
4. The method of claim 2, wherein detecting the at least one unsupported element further comprises: convoluting each of the directional kernels with a density map defined by the first model, so as to define respective convolution matrices; based on the convolution matrices, determining a respective plurality of values associated with each element of the plurality of elements; and determining that at least one of the plurality of values associated with the at least one unsupported element is greater than a predetermined threshold, thereby detecting the at least one unsupported element.
5. The method of claim 2, the method further comprising: convoluting each of the directional kernels with a density map defined by the first model, so as to define respective convolution matrices; based on the convolution matrices, determining a respective plurality of values associated with each element of the plurality of elements; determining a respective maximum value of each of the plurality of values; comparing each maximum value to a predetermined threshold so as to determine whether each maximum value is greater than the predetermined threshold; and when the maximum value is less than or equal to the predetermined threshold, determining that the respective element associated with the maximum value is supported, thereby detecting a supported element.
6. The method further of claim 5, wherein determining each maximum value comprises computing a smooth approximation of each of the respective plurality of values.
7. The method further of claim 5, wherein each element of the plurality of elements defines a respective density, and determining a respective maximum value associated with each element further comprises: multiplying the convolution matrices associated with each element by the density of the respective element.
8. The method further of claim 5, the method further comprising: determining that the respective maximum value of the plurality of values associated with the at least one unsupported element is greater than the predetermined threshold.
9. The method of claim 8, wherein imposing constraints on the topology optimization further comprises: replacing at least one void element with a new material element representative of a region of the object having physical material, so as to change the respective maximum value of the plurality of values associated with the at least one unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the at least one unsupported element.
10. The method of claim 8, wherein imposing constraints on the topology optimization further comprises: replacing the at least one unsupported element with a new void element representative of a region of the object having no physical material, so as to change the respective maximum value of the plurality of values associated with the at least one unsupported element to a new value that is less than or equal to the predetermined threshold, thereby removing the at least one unsupported element.
11. The method of claim 1, wherein the least one unsupported element defines a plurality of unsupported elements, and a respective local constraint is imposed on each element of the plurality of unsupported elements.
12. The method of claim 1, wherein performing the topology optimization with the constraints on the first model further comprises: identifying a printing direction that defines a direction along which material is deposited as the object is printed; and performing the topology optimization based on the printing direction.
13. The method of claim 12, the method further comprising: converting the final CAD model into machine-executable instructions; and executing the instructions by a 3D printer, wherein executing the instructions comprises: printing the object represented by the final CAD model in the printing direction in which the topology optimization is based.
14. A system for constructing a final computer-aided design (CAD) model of an object, the system comprising: a processor executing modules; and a memory for storing the modules comprising a topology optimization program module configured to: obtain a first model of the object, the first model defining a plurality of material elements representative of regions of the object having physical material, and 2) a plurality of void elements representative of regions of the object having no physical material; determine, by a kernel, that at least one material element of the plurality of material elements is not supported by the plurality of material elements, so as to detect at least one unsupported element; and remove the at least one unsupported element from the first model so as to generate the final CAD model, wherein removing the at least one unsupported element comprises: imposing constraints on a topology optimization of the first model; and performing the topology optimization with the constraints on the first model.
15. The system of claim 14, the topology optimization program module further configured to: identify a printing direction that defines a direction along which material is deposited as the object is printed; and perform the topology optimization based on the printing direction.
PCT/US2020/043926 2019-08-02 2020-07-29 Topology optimization with local overhang constraints for 3d printing WO2021025906A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962882030P 2019-08-02 2019-08-02
US62/882,030 2019-08-02

Publications (1)

Publication Number Publication Date
WO2021025906A1 true WO2021025906A1 (en) 2021-02-11

Family

ID=72087217

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2020/043926 WO2021025906A1 (en) 2019-08-02 2020-07-29 Topology optimization with local overhang constraints for 3d printing

Country Status (1)

Country Link
WO (1) WO2021025906A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115630412A (en) * 2022-10-25 2023-01-20 浙江大学 Self-supporting structure optimization design and manufacturing method based on multi-axis 3D printing
WO2023193006A3 (en) * 2022-03-31 2024-01-25 3Dfortify Inc. Image transformations to enhance edge and surface clarity in additive manufacturing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018094758A1 (en) * 2016-11-24 2018-05-31 浙江大学 Three-dimensional printing oriented self-supporting structure design method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018094758A1 (en) * 2016-11-24 2018-05-31 浙江大学 Three-dimensional printing oriented self-supporting structure design method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DENGYANG ZHAO ET AL: "Self-supporting Topology Optimization for Additive Manufacturing", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 24 August 2017 (2017-08-24), XP080954379 *
MATTHIJS LANGELAAR: "Topology optimization of 3D self-supporting structures for additive manufacturing", ADDITIVE MANUFACTURING, vol. 12, 1 October 2016 (2016-10-01), NL, pages 60 - 70, XP055740218, ISSN: 2214-8604, DOI: 10.1016/j.addma.2016.06.010 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023193006A3 (en) * 2022-03-31 2024-01-25 3Dfortify Inc. Image transformations to enhance edge and surface clarity in additive manufacturing
CN115630412A (en) * 2022-10-25 2023-01-20 浙江大学 Self-supporting structure optimization design and manufacturing method based on multi-axis 3D printing
CN115630412B (en) * 2022-10-25 2023-04-28 浙江大学 Self-supporting structure optimal design and manufacturing method based on multi-axis 3D printing
US20240181707A1 (en) * 2022-10-25 2024-06-06 Hangzhou City University Method for optimizing design and manufacture of self-supporting structure based on multi-axis 3d printing

Similar Documents

Publication Publication Date Title
US11541601B2 (en) Systems and methods for printing of 3D models
US8665267B2 (en) System and method for generating 3D surface patches from unconstrained 3D curves
Ito Challenges in unstructured mesh generation for practical and efficient computational fluid dynamics simulations
US11669656B2 (en) Systems and methods for running a simulation
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
Tasse et al. Enhanced texture‐based terrain synthesis on graphics hardware
Zhao et al. Fine-grained parallel algorithm for unstructured surface mesh generation
WO2021025906A1 (en) Topology optimization with local overhang constraints for 3d printing
EP3137993B1 (en) Combining compute tasks for a graphics processing unit
WO2020055595A1 (en) Computer aided design system for program-based representation of lattice structures
AU2020358062A1 (en) Artificial learning fracture system and method for predicting permeability of hydrocarbon reservoirs
WO2020023811A1 (en) 3d object design synthesis and optimization using existing designs
Shi et al. Cranial implant design through multiaxial slice inpainting using deep learning
Jaillet et al. Fast Quadtree/Octree adaptive meshing and re-meshing with linear mixed elements
US20160117428A1 (en) Method and apparatus for modeling a target object based on particles
WO2021163282A1 (en) Detailed design system for lattice structures
WO2020005274A1 (en) Tracking a topology optimization to construct an editable topology
CN107103636B (en) System and method for multiple representation dependency graphs
CN110837707B (en) Finite element analysis system, method, computer equipment and storage medium
WO2020056107A1 (en) Automated simulation pipeline for fast simulation driven computer aided design
WO2023133734A1 (en) Topology optimization with bidirectional mesh adaptation
Liu Radial basis functions: Biomedical applications and parallelization
Qi et al. A parallel solution to finding nodal neighbors in generic meshes
US11756264B2 (en) Continuous optimization of discrete parameters using a unified stress indicator
US20230297743A1 (en) Deep neural networks for synthesis and optimization of smooth surfaced 3d objects

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20757087

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20757087

Country of ref document: EP

Kind code of ref document: A1