Patent Description:
Certain examples are described in the following detailed description and in reference to the drawings.

Additive manufacturing (sometimes referred to as <NUM>-dimensional or 3D printing) may be performed through use of 3D printers that can construct objects on a layer-by-layer basis. With increasing capability and use of additive manufacturing technologies today, manufacture of arbitrary and complex product designs has become increasing possible. Within a given design space, previous manufacturing limitations can be overcome through additive manufacturing, and product designers now have increasing design freedoms that support optimization of manufactured objects. Moreover, additive manufacturing processes can enable the manufacturing of parts with unique physical properties through design or control of the part's geometric structure, including the design of micro-structures that form an internal geometry of the object design (e.g., lattices, internal geometric patterns, etc.).

With the increasing capability and prevalence of additive manufacturing technologies, topology optimization has become an increasingly popular design technique to generate product structures. Topology optimization may include technologies that modify material or structural layouts of an object to achieve a particular goal. Topology optimization may be used in aerospace, mechanical, bio-chemical, automotive, and many other fields to, for example, improve the performance of parts or reduce a required weight of raw materials.

While topology optimization technologies can produce part structures with increased design efficiencies, the output of topology optimization processes may require reconstruction into a geometric form suitable for 3D printing. Moreover, due to design space discretization requirements for finite element analyses (FEA) in topology optimizations, density maps or other topology optimized outputs may yield coarse, rigid, or non-smooth geometries. This may especially be the case as topology optimization discretization to high-resolution granularities may not be computationally feasible because topology optimization and FEA computations at such fine granularities may result in increased processing latencies or required computational resources that are not practical with current computing CAD, CAE, CAM, and other CAx systems.

The disclosure herein may provide systems, methods, devices, and logic for processing topology optimized geometries. In particular, the various topology optimized processing features may include smoothing of topology optimized geometries, conforming topology optimized geometries to preserve original geometry characteristics, and converting topology optimized geometries into CAD-editable models for subsequent design. Each of these various technologies are described in greater detail herein, and the disclosed processing technologies may include various technical features to increase the efficiency, feasibility, and capability of using topology optimization results to further design and manufacture 3D parts.

These and other features and technical benefits are described in greater detail herein.

<FIG> shows an example of a computing system <NUM> that supports processing of topology optimized geometries in accordance with the present disclosure. The computing system <NUM> may take the form of a single or multiple computing devices such as application servers, compute nodes, desktop or laptop computers, smart phones or other mobile devices, tablet devices, embedded controllers, and more. In some examples, the computing system <NUM> is part of or implements (at least in part) a CAD system, a CAM system, a CAE system, any other CAx system, or a 3D printing system. In that regard, the computing system <NUM> may support the design, simulation, or manufacture of topology optimized part designs.

As an example implementation to support any combination of the features described herein, the computing system <NUM> shown in <FIG> includes an geometry access engine <NUM>, a geometry processing engine <NUM>, and a geometry conversion engine <NUM>. The computing system <NUM> may implement the engines <NUM>, <NUM>, and <NUM> (including components thereof) in various ways, for example as hardware and programming. The programming for the engines <NUM>, <NUM>, and <NUM> may take the form of processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines <NUM>, <NUM>, and <NUM> may include a processor to execute those instructions. A processor may take the form of single processor or multi-processor systems, and in some examples, the computing system <NUM> implements multiple engines using the same computing system features or hardware components (e.g., a common processor or a common storage medium).

Note that the example implementation of the computing system <NUM> shown in <FIG> includes the geometry access engine <NUM>, the geometry processing engine <NUM>, and the geometry conversion engine <NUM>. In other implementations, the computing system <NUM> may include only a subset of the engines <NUM>, <NUM>, and <NUM>.

In operation, geometry access engine <NUM> may access geometries associated with a topology optimization process. In particular, the geometry access engine <NUM> may access an original geometry that represents a design space upon which the topology optimization process applies to as well as a topology optimized geometry that represents an output of the topology optimization process performed for the original geometry. In operation, the geometry processing engine <NUM> may generate a final geometry from the topology optimized geometry, including by conforming the topology optimized geometry to the original geometry at portions of the topology optimized geometry that correspond to fixed regions of the original geometry as well as smoothing the topology optimized geometry at portions that correspond to non-fixed regions of the original geometry. In operation, the geometry conversion engine <NUM> may convert the final geometry into a CAD-editable topology, including by extracting a triangle mesh from the final geometry, converting the triangle mesh into subdivision surfaces, and initializing a control cage for the subdivision surfaces.

In that regard, the geometry access engine <NUM>, geometry processing engine <NUM>, and geometry conversion engine <NUM> may support post-processing of topology optimized geometries. These and other topology optimized geometry processing features are described in greater detail next.

<FIG> shows an example of topology optimized geometries that a computing system may access and process. In the particular example shown in <FIG>, a computing system is illustrated in the form of a geometry access engine <NUM> and a geometry processing engine <NUM>. However, other system implementations are contemplated herein.

The geometry access engine <NUM> may access various geometries in support of post-processing topology optimization results. As seen in <FIG>, the geometry access engine <NUM> may access an original geometry <NUM> and a topology optimized geometry <NUM>. Each of these geometries are described in turn.

The original geometry <NUM> may be any geometry that represents a 3D part or object. As examples, the original geometry <NUM> may be a CAD model designed using CAD-based shapes and design primitives (e.g., planes, curves, lines, cylinders, cubes, 3D faces, and other solid bodies and CAD design primitives). As such, the original geometry <NUM> may be comprised of smooth parametrized geometries, e.g., using non-uniform rational B-Splines (NURBS) or in other forms. In some instances, the original geometry <NUM> may be in a form referred to as a cut model.

As another characteristic, the original geometry <NUM> may represent a design space upon which a topology optimization process applies to (e.g., is performed upon). Such a design space may be user-identified as an input to a topology optimization process (for which the output is the topology optimized geometry <NUM>). In some instances, the original geometry may include fixed regions designated to remain unchanged by the topology optimization process. As such, fixed regions may represent a portion of the original geometry <NUM> that is fixed in design (e.g., should not change). In some cases, such fixed regions may be referred to as "keep in" or "keep out" regions for density-based topology optimizations, and may thus specify design constraints that should be adhered to in a topology optimization process.

The topology optimized geometry <NUM> may represent an output of the topology optimization process performed for the original geometry <NUM>. While some of the examples are described herein in the context of density-based topology optimizations (e.g., Solid Isotrophic Material with Penalization (SIMP)-based topology optimizations), any type of topology optimization is contemplated herein. Topology optimization results may be represented in the form of a density map, as one example. As another example, density-based topology optimization results may be converted to a level-set representation, which may refer to a scalar function ϕ that encodes or otherwise represents a given geometry. As a continuing example used herein, the topology optimized geometry <NUM> is described as geometry encoded with a zero level set, in which a boundary of a geometry is the zero value of the level set function ϕ and the interior of the geometry is represented by negative values of the level set function ϕ. However, the topology optimized geometry processing features described herein may be consistently implemented for various other geometry representations as well.

As topology optimization may require discretization of a design space for FEA and other topology optimization computations, the topology optimized geometry <NUM> may likewise be represented or constructed from discretized data (e.g., a density map at a discretization granularity used for the topology optimization). To control computation latencies and required processing power, topology optimizations may be performed at a coarser discretization granularity than geometry resolutions typically used to additively manufacture objects. Consequently, reconstructing a faceted or parametric geometry for 3D printing directly from the topology optimized geometry <NUM> may result in a non-smooth and rough shape. This may be the case as the resolution of a topology optimization process (e.g., a discretization granularity of voxels for FEA of the original geometry <NUM>) is coarser than the printing resolution of 3D printers, resulting in boxy or unrefined 3D printed parts.

The topology optimized geometry processing features described herein may provide post-topology optimization processing capabilities to support manufacture of topology optimized 3D parts with increased effectiveness. In some instances, such features may result in smoothed geometry representations that can be extracted into parametric representations and 3D printed to produce 3D parts with improved aesthetics or mechanical stability. In processing topology optimized geometries, the features described herein may increase the accuracy of 3D part designs by conforming fixed design regions to original geometry designs, smoothing topology optimization results at finer resolutions to improve part structures, converting topology optimization results into CAD-editable forms to support subsequent design adjustments, or any combination thereof.

In order to post-process topology optimization results, the geometry processing engine <NUM> may represent various geometries at a finer granularity (also referred to herein as a finer resolution) than the discretization resolution used to perform a topology optimization for a part design. As used herein, the "finer granularity" may refer to mesh or geometry resolution used to post-process topology optimized results that is finer or higher in resolution/granularity than that used by a topology optimization process to generate the topology optimization results. In the example shown in <FIG>, the geometry processing engine <NUM> represents the original geometry <NUM> and the topology optimized geometry <NUM> at a finer granularity than a discretization granularity used to generate the topology optimized geometry <NUM>.

In some cases, the geometry processing engine <NUM> refines the resolution by a factor of <NUM>, but the degree to which the geometry processing engine <NUM> enhances resolution may be configurable (e.g., 4x, 8x, 16x, etc.) and dependent upon computational latency requirement, available computing resources, etc. Resolution enhancement by the geometry processing engine <NUM> may be performed, for example, by equally subdividing voxels (or other discrete elements) of the topology optimized geometry <NUM> into the finer resolution. In <FIG>, the geometry processing engine <NUM> represents three geometries in a finer granularity, shown as the overall geometry <NUM>, the fixed geometry <NUM>, and the topology optimized geometry <NUM>.

The overall geometry <NUM> and the fixed geometry <NUM> may be represented from the original geometry <NUM>, e.g., by discretizing the original geometry <NUM> (or portions thereof) at the finer granularity and representing the discretized original geometry as level set representations (or any other geometric form). The overall geometry <NUM> may set boundary limits of the design space of the original geometry <NUM> upon which a topology optimization process applies to (e.g., an initial input geometry, with bounding boxes or other design spaces to optimize as well as fixed regions in the initial input geometry). The fixed geometry <NUM> may include a portion of the design space of the original geometry <NUM> that is designated not to change from the topology optimization process (e.g., the fixed regions of the original geometry <NUM>). As subsequently described, the geometry processing engine <NUM> may use the overall geometry <NUM> and the fixed geometry <NUM> to conform topology optimized geometries to correspond to fixed regions of the original geometry <NUM>.

The geometry processing engine <NUM> may represent the topology optimized geometry <NUM> by discretizing the topology optimized geometry <NUM> at the finer granularity (e.g., enhancing the mesh resolution by a factor of <NUM>, <NUM>, <NUM>, <NUM>, etc.). In that regard, the geometry (e.g., represented shape) of the topology optimized geometry <NUM> may be identical to that of the topology optimized geometry <NUM>, but discretized at a finer granularity to support conforming and smoothing operations as described herein.

In some implementations (and as a continuing example herein), the geometry processing engine <NUM> may represent the overall geometry <NUM>, fixed geometry <NUM>, and the topology optimized geometry <NUM> as level-set representations, which may be referred to herein respectively as ϕOG (for the overall geometry <NUM>), ϕFG (for the fixed geometry <NUM>), and ϕTO (for the topology optimized geometry <NUM>). Moreover, some the examples described herein depict level set representations on a full rectangular grid, but the geometry processing engine <NUM> may support level set representations according to narrow band methods to provide increased processing efficiency.

To conform portions of the topology optimized geometry <NUM> to the original geometry <NUM>, the geometry processing engine <NUM> may enrich the topology optimized geometry <NUM> with the fixed geometry <NUM>, restrict the topology optimized geometry <NUM> with the overall geometry <NUM>, or a combination of both. Examples of such features are described next in connection with <FIG> and <FIG>.

<FIG> shows an example of an enrichment operation by the geometry processing engine <NUM> to conform the topology optimized geometry to an original geometry. In particular, the geometry processing engine <NUM> may enrich the topology optimized geometry <NUM> (represented at the finer granularity) with the fixed geometry <NUM> (extracted from the original geometry <NUM> and also represented at the finer granularity).

In performing the enrichment operation, the geometry processing engine <NUM> may add, into the topology optimized geometry <NUM>, any fixed portions of the original geometry <NUM> (as represented by the fixed geometry <NUM>) that were removed by a topology optimization process used to generate the topology optimized geometry <NUM> (and now represented as the topology optimized geometry <NUM>). Such enriching may be performed by overlaying the fixed geometry <NUM> on the topology optimized geometry <NUM> (or vice versa) and ensuring any "keep-in", solid, or interior portions of the fixed geometry <NUM> are likewise represented as solid and interior portions of the topology optimized geometry <NUM>.

In <FIG>, an example overlay is illustrated through the overlapping view <NUM>, in which can be seen certain portions of the fixed geometry <NUM> are not included as solid or interior to the geometry of the topology optimized geometry <NUM>. As such, the geometry processing engine <NUM> may modify the topology optimized geometry <NUM> to include these missing portions of the fixed geometry <NUM>, thereby enriching the topology optimized geometry <NUM>. Put another way, the geometry processing engine <NUM> may enrich the topology optimized geometry <NUM> to include portions of the fixed geometry <NUM> that are missing in the topology optimized geometry <NUM> due to removal by a topology optimization process, doing so at a finer granularity than the discretization granularity used for the topology optimization process. An example output of an enrichment operation by the geometry processing engine <NUM> is shown in <FIG> as the enriched TO geometry <NUM>, and portions at which solid geometries are reintroduced by the geometry processing engine <NUM> are shown as the enriched portions <NUM>.

In examples in which the fixed geometry <NUM> and topology optimized geometry <NUM> are represented as zero level sets with interior geometries represented by negative values of a level set function ϕ, the geometry processing engine <NUM> may perform the enrichment operation as a minimum function. As such, the geometry processing engine <NUM> may generate the enriched TO geometry <NUM> (with a level set function of ϕeTO) as ϕeTO = min(ϕTO,ϕFG).

Accordingly, the geometry processing engine <NUM> may enrich a topology optimized geometry to include fixed portions of an original geometry that were removed from a design by topology optimization.

<FIG> shows an example of a restriction operation by the geometry processing engine <NUM> to conform a topology optimized geometry to an original geometry. In particular, the geometry processing engine <NUM> may restrict the enriched TO geometry <NUM> (represented at the finer granularity) with the overall geometry <NUM> (as extracted from the original geometry <NUM> and also represented at the finer granularity).

In performing the restriction operation, the geometry processing engine <NUM> may remove, from a topology optimized geometry (such as the enriched TO geometry <NUM>) any additional portions, added by the topology optimization process used to generate the topology optimized geometry <NUM>, that extend beyond a boundary of the design space of the original geometry <NUM>. Such restricting may be performed by overlaying the overall geometry <NUM> on the enriched TO geometry <NUM> (or vice versa) and ensuring that (i) any "keep-out" portions of the fixed geometry <NUM> are likewise represented as empty or exterior shape portions of a topology optimized geometry (e.g., the enriched TO geometry <NUM>) as well as (ii) solid portions of the topology optimized geometry (e.g., the enriched TO geometry <NUM>) do not extend beyond the external boundaries of the overall geometry <NUM>.

In <FIG>, an example overlay is illustrated through the overlapping view <NUM>, in which can be seen certain portions of the enriched TO geometry <NUM> extend beyond a boundary of the overall geometry <NUM>. As such, the geometry processing engine <NUM> may modify the enriched TO geometry <NUM> to remove these additional portions of the enriched TO geometry <NUM> that extend beyond an allowable design space, thereby restricting the enriched TO geometry <NUM>. Additionally or alternatively, the geometry processing engine <NUM> may perform the restriction operation to remove portions of the enriched TO geometry <NUM> that correspond to fixed regions of the original geometry <NUM> configured to be non-solid or empty, thereby ensuring that fixed "keep-out" regions of the original geometry <NUM> are adhered to in a topology optimized design.

As described herein, the geometry processing engine <NUM> may restrict a topology optimized geometry (e.g., the enriched TO geometry <NUM>) to exclude portions of the topology optimized geometry that extend beyond the overall geometry <NUM>, exclude portions of the topology optimized geometry that are designated as fixed empty regions in the original geometry <NUM>, or a combination of both. The geometry processing engine <NUM> may do so at the finer granularity. An example output of a restriction operation by the geometry processing engine <NUM> is shown in <FIG> as the restricted TO geometry <NUM>, and some examples of restricted portions <NUM> at which solid geometries extending beyond a design space boundary are removed are shown as the restricted portions <NUM>.

In examples in which the fixed geometry <NUM> and enriched TO geometry <NUM> are represented as zero level sets with interior geometries represented by negative values of a level set function ϕ, the geometry processing engine <NUM> may perform the restriction operation as a maximum function. As such, the geometry processing engine <NUM> may generate the restricted TO geometry <NUM> (with a level set function of ϕrTO) as ϕrTO = max(ϕeTO,ϕOG).

Note that in the example shown in <FIG>, the geometry processing engine <NUM> performs a restriction operation on the enriched TO geometry <NUM>, as doing so may preserve the results of an enrichment operation previously performed by the geometry processing engine <NUM>. Consequently, the restricted TO geometry <NUM> shown in <FIG> also includes enriched portions <NUM> added into a topology optimized geometry to conform to fixed regions of an original geometry.

While the ordering of <FIG> and <FIG> provide an illustrative example of performing an enrichment operation prior to performing a restriction operation, alternative orderings are possible by the geometry processing engine <NUM>. For example, the geometry processing engine <NUM> may perform a restriction operation between the overall geometry <NUM> and the topology optimized geometry <NUM> to generate a given restricted TO geometry, and then subsequently perform the enrichment operation between the given restricted TO geometry and the fixed geometry <NUM>.

In that regard, the geometry processing engine <NUM> may enrich and restrict a topology optimized geometry (in various orders) to conform the topology optimized geometry to fixed regions an original geometry. The restricted TO geometry <NUM> shown in <FIG> may represented a conformed geometry in that the restricted TO geometry <NUM> represents the fixed geometry <NUM> of the original geometry <NUM> and does not extend beyond the overall geometry <NUM> of the original geometry <NUM>. Understood in a different way, a conformed geometry may be generated by the geometry processing engine <NUM> to represent fixed regions of an original design at finer granularity than a discretization granularity of a topology optimization process.

In <FIG> and <FIG>, the geometry processing engine <NUM> may conform a topology optimized geometry to an original geometry via geometric operations performed for a given representation of the geometries (e.g., zero level sets at a finer granularity). In some implementations, the geometry processing engine <NUM> may conform topology optimized geometries to original geometries by directly inserting portions (e.g., fixed regions) of an original geometry into the topology optimized geometry, as discussed in greater detail next in connection with <FIG>.

<FIG> shows an example of a conformed geometry generated through insertion of fixed regions of an original geometry into a topology optimized geometry. The geometry processing engine <NUM> may generate a conformed geometry via the features described in <FIG>, for example as an alternative to the geometry conforming features as described for <FIG> and <FIG>.

In particular, the geometry processing engine <NUM> may identify portions of a topology optimized geometry that correspond to correlated portions of an original geometry <NUM> and replace such portions of the topology optimized geometry directly with the geometry of the original geometry. Using the original geometry <NUM> described in <FIG> as an illustrative example, the geometry processing engine <NUM> may identify such correlated portions as fixed regions of the original geometry <NUM>. As such, the geometry processing engine <NUM> may replace the portions of a topology optimized geometry (e.g., the topology optimized geometry <NUM> or <NUM>) that correspond to fixed regions of the original geometry <NUM> with the original geometry at the fixed regions.

That is, the geometry processing engine <NUM> may reconstruct portions of the original geometry <NUM> directly into a topology optimized geometry. Additionally or alternatively, the geometry processing engine <NUM> may input, align, or otherwise insert the boundary geometry of fixed regions of the original geometry <NUM> into topology optimized geometry, which may directly preserve the original design intent of a part design. In doing so, the geometry processing engine <NUM> may restrict or enrich portions of the topology optimized geometry directly with the boundary geometry itself of the original geometry <NUM> (e.g., corresponding portions thereof to form the exterior boundary of the topology optimized geometry). Explained in yet another way, the geometry processing engine <NUM> may adapt, insert, or configure geometry boundaries of the topology optimized geometry directly with geometry boundaries (or portions thereof) of fixed regions of the original geometry <NUM> (but need not enforce or insert internal boundaries of fixed regions that do not affect or form a geometry boundary of the topology optimized geometry). By doing so, the geometry processing engine <NUM> may support tighter integration of topology optimized geometries with the original geometry <NUM> from which a topology optimized geometry is generated from.

The reconstructed portions may be inserted into a topology optimized geometry as boundary geometries, cut models, CAD design primitives, or in any other CAD-editable form. In that regard, a conformed geometry generated in such a way by the geometry processing engine <NUM> may include multiple types of geometric representations in the same design. As an example shown in <FIG>, the geometry processing engine <NUM> may generate a convergent model <NUM> in which fixed regions of the original geometry <NUM> are represented as computer-aided design (CAD) geometry and non-fixed regions of a topology optimized geometry are represented as facets (e.g., at a finer granularity). As such, the convergent model <NUM> may be in the form of a single object model, with a combination of facet and classic geometry.

As noted herein, to generate the convergent model <NUM>, the geometry processing engine <NUM> may identify portions of a topology optimized geometry <NUM> that correspond to the fixed regions, and replace those identified directly with the fixed regions of the original geometry <NUM> (e.g., directly with CAD design primitives). Through insertion of portions of an original geometry into a topology optimized geometry, such features may preserve design intent and associativity and provide for downstream processing of such regions (e.g., for CAM simulations) with increased efficiency.

In <FIG>, the convergent model <NUM> generated by the geometry processing engine <NUM> may be a conformed geometry in that a topology optimized geometry has been processed to conform (in this case directly) to fixed regions of the original geometry <NUM>. The geometry processing engine <NUM> may conform a topology optimized geometry through insertion of original geometry portions before or after smoothing other portions of the topology optimized geometry. In some implementations, the geometry processing engine <NUM> conforms a topology optimized geometry (e.g., according to any of the features described in connection with <FIG>) prior to smoothing non-fixed portions of the topology optimized geometry. Doing so may increase efficiency by reducing the portion of a topology optimized geometry required to be processed to smooth the geometry. Smoothing is described next in connection with <FIG>.

<FIG> shows an example of smoothing that the geometry processing engine <NUM> may perform for non-fixed portions of a topology optimized geometry. In <FIG>, the geometry processing engine <NUM> performs a smoothing operation for an unsmoothed geometry <NUM>, which may be a conformed geometry such as the restricted TO geometry <NUM> described in <FIG> or the convergent model <NUM> described in <FIG>.

The geometry processing engine <NUM> may smooth the unsmoothed geometry <NUM> through geometric flows. For instance, the geometry processing engine <NUM> may solve the following evolution equation, described using a conformed topology optimized geometry level set function ϕcTO as an example: <MAT> In this example, the geometry processing engine <NUM> may set V equal to zero (<NUM>) at fixed regions of the unsmoothed geometry <NUM> to ensure the fixed (e.g., conformed) regions of the unsmoothed geometry <NUM> do not change from the smoothing, thereby preserving the fixed regions of the original geometry <NUM> conformed into the unsmoothed geometry <NUM>. In the remaining portions of the domain, e.g., the non-fixed portions of the unsmoothed geometry <NUM>, the geometry processing engine <NUM> may smooth the curves via geometry flows, such as mean curvature flow or Willmore Flow as two examples.

By applying such smoothing processes, the geometry processing engine <NUM> may generate the final geometry <NUM>. Since non-fixed portions of the unsmoothed geometry <NUM> may be represented at finer granularity than a discretization granularity applied for topology optimization, the smoothing operations may result in increased smoothness of curves in the final geometry <NUM> as compared to the topology optimized geometry <NUM>.

From the final geometry, the geometry processing engine <NUM> may extract a tessellated or triangular-faceted geometry, e.g., via Marching Cubes or dual contouring, which may then be provided to a 3D printing system for additive manufacture. In some implementations, the geometry processing may further conform a tessellated or triangular-faceted geometry extracted from the final geometry <NUM>. As one example, the geometry processing engine <NUM> may perform a Boolean operation between a mesh representation of the final geometry <NUM> and the original geometry <NUM> to remove distortions to the final geometry <NUM> that extend beyond boundaries of the original geometry <NUM>. As another example, the geometry processing engine <NUM> may perform triangle smoothing on an extracted representation to smooth a design prior to additive manufacture.

In some implementations, further processing may be performed on the final geometry <NUM> or a faceted geometry extracted from the final geometry <NUM>. Such processing may include conversion into a parametric geometry to support CAD editing which may be performed by a geometry conversion engine <NUM> as described in greater detail subsequently herein.

<FIG> shows an example of logic that a system may implement to process topology optimized geometries according to the present disclosure. For example, the computing system <NUM> may implement the logic <NUM> as hardware, executable instructions stored on a machine-readable medium, or as a combination of both. The computing system <NUM> may implement the logic <NUM> via the geometry access engine <NUM> and the geometry processing engine <NUM>, through which the computing system <NUM> may perform or execute the logic <NUM> as a method to post-process topology optimized geometries. The following description of the logic <NUM> is provided using the geometry access engine <NUM> and the geometry processing engine <NUM> as examples. However, various other implementation options by systems are possible.

In implementing the logic <NUM>, the geometry access engine <NUM> may access geometries associated with a topology optimization process (<NUM>). Accessed geometries may include an original geometry that represents a design space upon which the topology optimization process applies to and a topology optimized geometry that represents an output of the topology optimization process performed for the original geometry. In implementing the logic <NUM>, the geometry processing engine <NUM> may generate a final geometry from the topology optimized geometry (<NUM>), and generation of the final geometry may include performing conforming and smoothing operations on various portions of the topology optimized geometry.

For instance, the geometry processing engine <NUM> may conform the topology optimized geometry to the original geometry at portions of the topology optimized geometry that correspond to fixed regions of the original geometry (<NUM>). In doing so, the geometry processing engine <NUM> may generate a conformed geometry, whether by enrichment and restriction operations as described herein or by direct insertion of fixed regions of the original geometry into the topology optimized geometry, as also described herein. The geometry processing engine <NUM> may smooth topology optimized geometry at portions that correspond to non-fixed regions of the original geometry (<NUM>), e.g., by smoothing a conformed geometry via geometric flows.

The logic <NUM> shown in <FIG> provides an illustrative example by which a computing system <NUM> may support processing of topology optimized geometries. Additional or alternative steps in the logic <NUM> are contemplated herein, including according to any features described herein for the geometry access engine <NUM>, geometry processing engine <NUM>, geometry conversion engine <NUM>, or any combinations thereof.

<FIG> shows an example of logic <NUM> that a system may implement to support conversion of a topology optimized geometry into a CAD geometry. For example, the computing system <NUM> may implement the logic <NUM> as hardware, executable instructions stored on a machine-readable medium, or as a combination of both. The computing system <NUM> may implement the logic <NUM> via the geometry conversion engine <NUM>, through which the computing system <NUM> may perform or execute the logic <NUM> as a method to post-process topology optimized geometries to convert the geometries into parametric or CAD-editable forms. The following description of the logic <NUM> is provided using the geometry conversion engine <NUM> as an example. However, various other implementation options by systems are possible.

In implementing the logic <NUM> and in operation, the geometry conversion engine <NUM> may convert a topology optimized geometry into a CAD-editable geometry (<NUM>). For instance, the geometry conversion engine <NUM> may convert the final geometry <NUM> described in <FIG>, which maybe conformed to an original geometry and smoothed to support subsequent additive manufacture. The final geometry <NUM> (another other topology optimized geometries described herein) may be discrete models, and the geometry conversion engine <NUM> may support transformation of such discrete models into CAD models, which may support further design and edits via a CAD system or application.

To convert a topology optimized geometry, the geometry conversion engine <NUM> may extract a triangle mesh from the topology optimized geometry (<NUM>). Isosurface extraction or other triangular meshing techniques may be used, e.g., to convert density maps generated by topology optimization processes into a triangular mesh. For geometries represented as level set functions (e.g., as described herein), the geometry conversion engine <NUM> may apply any number or tessellation or triangularization processes. In some instances, the geometry conversion engine <NUM> may further smooth the surface and remove jagged edges or other noisy artifacts as well, e.g., via standard surface mesh processing techniques.

The geometry conversion engine <NUM> may convert the triangle mesh into subdivision surfaces (<NUM>), doing so in various ways. In some examples, the geometry conversion engine <NUM> may decimate or otherwise simplify the triangle mesh using edge collapse operations. Then, the geometry conversion engine <NUM> may convert the decimated triangle mesh into a quadrilateral mesh, the quadrilaterals in the quadrilateral mesh may form a control cage through which subdivision surfaces can be generated via a subdivision process. As such, the geometry processing engine <NUM> may initialize a control cage with the quadrilateral mesh. As another example, the geometry conversion engine <NUM> may convert the triangle mesh into a quadrilateral mesh and then coarsen the quadrilateral mesh, in which the coarsened quadrilateral mesh may form the subdivision surfaces through the subdivision process. In this example, the geometry processing engine <NUM> may initialize a control cage from the coarsened quadrilateral mesh. Subdivision surfaces may be form from initialized control cages. Through subdivision processes of the control cage, a limit surface in a geometric shape that matches the topology optimized geometry may be formed to support editing via CAD processes.

In some instances, the geometry conversion engine <NUM> may initialize a control cage for the subdivision surfaces, doing so from the quadrilateral mesh formed from the triangle mesh. A control cage may be any CAD functionality that surrounds CAD faces that support manipulate underlying limit surfaces (e.g., faces formed by subdivision surfaces and the subdivision process). Control cages may be supported by various CAD systems, and the subdivision surfaces (e.g., limit surfaces) converted from the topology optimized geometry may provide references or anchors for the control cage, allowing subsequent CAD-based editing and modifications to a topology optimized geometry.

In some instances, the geometry conversion engine <NUM> may further adapt parameters of the control cage, e.g., by performing surface fitting to fit a triangular surface of the subdivision surfaces, adjusting weights of cage edges to create creases in the control cage, or combinations of both.

The logic <NUM> shown in <FIG> provides an illustrative example by which a computing system <NUM> may support converting of topology optimized geometries into CAD-editable forms. Additional or alternative steps in the logic <NUM> are contemplated herein, including according to any features described herein for the geometry access engine <NUM>, geometry processing engine <NUM>, geometry conversion engine <NUM>, or any combinations thereof.

<FIG> shows an example of a computing system <NUM> that supports processing of topology optimized geometries in accordance with the present disclosure. The computing system <NUM> may include a processor <NUM>, which may take the form of a single or multiple processors. The processor(s) <NUM> may include a central processing unit (CPU), microprocessor, or any hardware device suitable for executing instructions stored on a machine-readable medium. The system <NUM> may include a machine-readable medium <NUM>. The machine-readable medium <NUM> may take the form of any non-transitory electronic, magnetic, optical, or other physical storage device that stores executable instructions, such as the geometry access instructions <NUM>, the geometry processing instructions <NUM>, and the geometry conversion instructions <NUM> shown in <FIG>. As such, the machine-readable medium <NUM> may be, for example, Random Access Memory (RAM) such as a dynamic RAM (DRAM), flash memory, spin-transfer torque memory, an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disk, and the like.

The computing system <NUM> may execute instructions stored on the machine-readable medium <NUM> through the processor <NUM>. Executing the instructions (e.g., the geometry access instructions <NUM>, the geometry processing instructions <NUM>, and/or the geometry conversion instructions <NUM>) may cause the computing system <NUM> to perform any of the features described herein, including according to any of the features with respect to the geometry access engine <NUM>, the geometry processing engine <NUM>, the geometry conversion engine <NUM>, or any combinations thereof.

For example, execution of the geometry access instructions <NUM> by the processor <NUM> may cause the computing system <NUM> to access geometries associated with a topology optimization process. The accessed geometries may include an original geometry that represents a design space upon which the topology optimization process applies to and a topology optimized geometry that represents an output of the topology optimization process performed for the original geometry.

Execution of the geometry processing instructions <NUM> by the processor <NUM> may cause the computing system <NUM> to generate a final geometry from the topology optimized geometry, including by conforming the topology optimized geometry to the original geometry at portions of the topology optimized geometry that correspond to fixed regions of the original geometry as well as smoothing the topology optimized geometry at portions that correspond to non-fixed regions of the original geometry.

Execution of the geometry conversion instructions <NUM> by the processor <NUM> may cause the computing system <NUM> to convert the final geometry into a CAD-editable topology, including by extracting a triangle mesh from the final geometry, converting the triangle mesh into subdivision surfaces, and initializing a control cage for the subdivision surfaces.

Any additional or alternative features as described herein may be implemented via the geometry access instructions <NUM>, geometry processing instructions <NUM>, geometry conversion instructions <NUM>, or any combinations thereof.

The systems, methods, devices, and logic described above, including the geometry access engine <NUM>, the geometry processing engine <NUM>, and the geometry conversion engine <NUM>, may be implemented in many different ways in many different combinations of hardware, logic, circuitry, and executable instructions stored on a machine-readable medium. For example, the geometry access engine <NUM>, the geometry processing engine <NUM>, the geometry conversion engine <NUM>, or combinations thereof, may include circuitry in a controller, a microprocessor, or an application specific integrated circuit (ASIC), or may be implemented with discrete logic or components, or a combination of other types of analog or digital circuitry, combined on a single integrated circuit or distributed among multiple integrated circuits. A product, such as a computer program product, may include a storage medium and machine-readable instructions stored on the medium, which when executed in an endpoint, computer system, or other device, cause the device to perform operations according to any of the description above, including according to any features of the geometry access engine <NUM>, the geometry processing engine <NUM>, the geometry conversion engine <NUM>, or combinations thereof.

The processing capability of the systems, devices, and engines described herein, including the geometry access engine <NUM>, the geometry processing engine <NUM>, and the geometry conversion engine <NUM>, may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems or cloud/network elements. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may be implemented in many ways, including data structures such as linked lists, hash tables, or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in many different ways, such as in a library (e.g., a shared library).

Claim 1:
A method for improving a manufacture of topology optimized 3D parts, the method comprising:
by a computing system (<NUM>, <NUM>):
accessing (<NUM>) geometries associated with a topology optimization process, the geometries comprising:
an original geometry (<NUM>) that represents a design space upon which the topology optimization process applies to, wherein the original geometry (<NUM>) also represents the 3D part, and wherein the original geometry (<NUM>) comprises fixed regions designated to remain unchanged by the topology optimization process; and
a topology optimized geometry (<NUM>) that represents an output of the topology optimization process performed for the original geometry (<NUM>); and
generating (<NUM>) a final geometry (<NUM>) from the topology optimized geometry (<NUM>) by:
conforming (<NUM>) the topology optimized geometry (<NUM>) to the original geometry (<NUM>) at portions of the topology optimized geometry (<NUM>) that correspond to said fixed regions of the original geometry (<NUM>); and
smoothing (<NUM>) the topology optimized geometry (<NUM>) at portions that correspond to non-fixed regions of the original geometry (<NUM>).