Modifying a geometry of a modeled part

A machine learning model modifies the geometry of 3D CAD models in additive manufacturing to enhance performance properties like conductivity and strength by adding elements, addressing uneven distribution issues in printed parts.

WO2025151122A1PCT designated stage expired Publication Date: 2025-07-17PERIDOT PRINT LLC

Patent Information

Application Number
PCT/US2024/011285
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-01-11
Publication Date
2025-07-17

AI Technical Summary

Technical Problem

Additive manufacturing processes often result in uneven distribution of performance properties such as strength, density, and conductivity across different sections of a printed part, leading to poor performance due to variations in cooling, porosity, and inconsistent material properties.

Method used

A system utilizing a machine learning model, such as a Generative Adversarial Network (GAN), modifies the geometry of a 3D CAD model based on performance property thresholds and variables of interest during the printing process to ensure that the printed part meets design criteria, by adding or modifying elements like voxels to enhance conductivity, strength, or density.

Benefits of technology

The modified geometry ensures that the printed part achieves the desired performance properties, improving mechanical strength, electrical conductivity, and structural integrity by addressing inconsistencies in the printing process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000033_0000
    Figure 00000033_0000
  • Figure 00000034_0000
    Figure 00000034_0000
  • Figure 00000035_0000
    Figure 00000035_0000
Patent Text Reader

Abstract

Examples herein track a variable of interest during a printing simulation of a model of a part. Based on the tracking of the variable of interest during the printing simulation of the model of the part, it is determined whether a performance property of the part meets a design criteria threshold. Based on whether the performance property meets the design criteria threshold, it is determined whether to modify a geometry of the model of the part. The part is caused to be printed based on whether the performance property meets the design criteria threshold.
Need to check novelty before this filing date? Find Prior Art

Description

MODIFYING A GEOMETRY OF A MODELED PARTBACKGROUND

[0001] Additive manufacturing is a process that creates a three-dimensional object by adding material layer by layer. Such process may start with a digital 3D model of the object a user wants to create. This model may be designed using computer-aided design (CAD) or other tools. A set of instructions guide a printer on how to create the object layer by layer from the 3D model. These instructions may include movement commands for the printer’s components, temperature settings, and other parameters that govern the printing process.BRIEF DESCRIPTION OF THE DRAWINGS

[0002] The present technology is described in detail below with reference to the attached drawing figures, which provide examples as follows:

[0003] FIG. 1 depicts a diagram of an example device suitable for implementation of aspects of the technology discussed herein;

[0004] FIG. 2 depicts a diagram of an example system suitable for implementation of aspects of the technology discussed herein;

[0005] FIG. 3 depicts a diagram of an example neural network generating a modified geometry of a model of one or more parts;

[0006] FIG. 4 depicts a screenshot of an example user interface illustrating how a user can set performance prioritization over geometric printing accuracy and geometric tolerances for given parts of a wrench;

[0007] FIG. 5 depicts a diagram illustrating how a model of a part is modified, according to an example;

[0008] FIG. 6 depicts a flowchart of an example method suitable for implementation of aspects of the technology discussed herein; and

[0009] FIG. 7 depicts a flowchart of another example method suitable for implementation of aspects of the technology discussed herein.DETAILED DESCRIPTION

[0010] Additive manufacturing (e.g., powder-based additive manufacturing) and other printing processes often result in uneven or inconsistent distribution of performance properties(e.g., strength, density, chemical resistance, conductivity) for different sections of a printed part or object. Consequently, this may lead to poor performance of the part, such as inability to carry an electrical signal (due to low conductivity of a section), inability to withstand external forces (due to reduced strength of a section), or other performance issues. This may be because there is a change of a variable (e.g., cooling temperature, heating time, and degree of crystallinity (DOC), etc.) throughout a printing process for different sections of the part.

[0011] In an illustrative example, a part may be heated to a specific temperature for a defined period and then slowly cooled. This process results in the growth of crystalline regions within the build material. By carefully controlling the temperature and duration of the heat, it is possible to increase the DOC in the printed part. This, in turn, can result in certain mechanical performance properties, such as increased stiffness, strength, and heat resistance. However, there may be variation in heat due to, for example, the size of the part, the radiation from other parts, variations in cooling due to part location (e.g., close to an edge), etc. This means that the DOC can be very different for different sections of a printed object, which means that the stiffness and strength may be poor for some parts.

[0012] In another illustrative example, some parts may be printed with a high amount of porosity. Porosity refers to the presence of small voids, gaps, or air pockets within build material, which can compromise performance properties, such as the structural integrity, strength, or density at those parts with a high measure of porosity. For example, powder may have gas or air between the particles that varies based on location, and heating can be inconsistent based on the size of the part, the radiation from other parts, variations in cooling due to part location, or the like even when everything is well calibrated or the process is optimized. This can produce porosity.

[0013] In yet another illustrative example, some parts may be printed with a lower level of conductivity than they were designed for. For example, a conductive trace configured to carry electrical signals may be printed with low conductivity. Conductivity may be a useful property for applications like electronics, heat sinks, and thermal management. The choice of build material, for example, may be a factor affecting conductivity. Many 3D build materials, such as most thermoplastics (e.g., PLA, ABS, PETG), are insulators and have low thermal and electrical conductivity. In another example, it may be difficult for a printer to eject enough conductive ink to reach suitable conductivity levels without, for example, degrading mechanical performance. In yet another example, if the printing process results in the inclusionof air gaps or voids (or a high measure of porosity) within the printed object, this can lead to low conductivity. These gaps act as insulators and hinder the flow of heat or electricity.

[0014] Some examples of the techniques described herein may modify a geometry of a model (e.g., a 3D CAD model) of a part based at least on a measure of a performance property not meeting a threshold and / or based on tracking a variable of interest (e.g., DOC) during an estimated printing process. For example, some techniques described herein may use a generative model (e.g., a Generative Adversarial Network (GAN)) or other machine learning model to modify the geometry of the model. In an illustrative example, some aspects add elements (e.g., voxels) representing additional conductive locations to improve conductivity of the printed part, add elements representing more build material to the model to increase strength of the printed part, or the like. In this way, the part can be printed using the modified model so that performance of the part is more likely to be suitable for use.

[0015] Beginning with FIG. 1, an example device 100 is depicted. As shown in the example of FIG. 1, the device 100 includes a processor 102, a machine-readable storage such as memory 104. The processor 102 may include a central processing unit (CPU), whether virtual, physical hardware, or a combination thereof. The machine-readable storage may be any electronic, magnetic, optical, or other physical storage device that stores readable and / or executable instructions. Thus machine -readable storage may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disc, and the like. The device 100 includes an instruction set to cooperate with the processor 102 and the machine-readable storage to, by way of the performance property component 106 and / or the geometry modifier 108, modify a geometry of a model of a part. The processor 102 may read and / or execute the instruction set stored on the machine-readable storage. For example, the performance property component 106 and / or the geometry modifier 108 may represent computer-readable instructions and / or weights stored to the machine -readable storage and the processor 102 may execute such computer-readable instructions and / or perform operations with the weights. The device 100 may operate as part of and / or within the example system environment 200 shown in the diagram of FIG. 2. As such, the system environment 200 may include the machine-learning model 106 of FIG. 1.

[0016] In some examples, the performance property component 106 is responsible for computing (e.g., estimating, predicting, or calculating) a performance property. For instance, some aspects compute multiple performance properties (e.g., tensile strength and porosity) based on predicting or estimating a variable of interest (e.g. a measure of crystallization, ameasure of porosity, etc.). For instance, a neural network can be used to estimate a printing process and classify a performance property based on feeding the network different variables of interest as an input. In some examples, the performance property component 106 additionally or alternatively computes a performance property based on working conditions that the printer was designed for (e.g., printer type, build material used, build orientation, etc.). In some examples, the performance property component 102 additionally or alternatively determines which portions of an object where a performance property is prioritized over geometric printing accuracy. “Printing performance” or “performance properties” are indicative of the functional attributes of a printed part when printed. For example, it may include factors like strength, durability, flexibility, thermal resistance, chemical resistance, and / or electrical conductivity of the part, as opposed to geometry or geometric attributes. Geometry refers to the physical shape or design of the part when printed, such as size, design complexity, and surface finish (e.g., texture). In an illustrative example, various aspects receive an indication that a user has selected a portion of a printed object for which the user has set a geometric tolerance indicative of the degree of geometric accuracy a printer should print a part.

[0017] In some examples, the geometry modifier 108 is responsible for determining whether to modify a geometry of a model of a part and / or modifying the geometry of the model. For example, the geometry modifier may modify a 3D CAD of a model by adding voxels based on whether estimated performance properties meet a design criteria threshold. In an illustrative example, if a measure of predicted strength is less than a strength threshold (e.g., the design criteria threshold), then some aspects modify the geometry. A voxel is a representation of a location in a 3D space (e.g., a component of a 3D space). For instance, a voxel may represent a volume that is a subset of the 3D space. In some examples, voxels may be arranged on a 3D grid. For instance, a voxel may be cuboid or rectangular prismatic in shape. In some examples, a voxel is a three-dimensional counterpart to the more familiar concept of a pixel in 2D images. In some examples, such modification is based on using a machine learning model. For example, during training, a discriminator of a Generative Adversarial Network (GAN) can detect whether a generated model is fake or real based on having been previously trained using, for example, binary cross-entropy loss. This loss function may be used to train the discriminator to distinguish between real (e.g., correct) modified models and fake (incorrect) modified models generated by the generator, as described in more detail below.

[0018] FIG. 2 is a block diagram of an example system 200 for modifying a geometry of a model of apart, according to some examples. The system includes a process digital twin206, a part digital twin 208, and a performance compensator 212. In some examples, the performance property component 106 of FIG. 1 includes the functionality as described with respect to the performance property predictor 215 of FIG. 2. In some examples, the geometry modifier 108 of FIG. 1 includes the functionality of the generative design engine 219 of FIG. 2.

[0019] The process digital twin 206 includes a part slicer 203, an agent distribution map 205, printer / material attribute(s) 230, an agent response active printing 207, an agent response cooling 209, and a printing simulator 211. The process digital twin 206 is responsible for simulating or emulating a printing process for a part of a printed object. In other words, the process digital twin 206 is a virtual representation or simulation of an entire 3D printing process itself, rather than just a simulation of the printed object or part. In some examples, the process digital twin 206 is responsible for predicting and tracking a variable of interest (e.g., thermal journey) during an entire simulated / emulated printing process. For example, a machine learning model may take, as input, an indicator that identifies a printer model to be used, an indicator of the build material used and its physical properties (e.g., density, melting point, thermal conductivity, layer adhesion) or the like to predict variable of interest, such as the temperature of a part at various printing processes, the crystallinity of the part, or the like. The process digital twin 106 thus allows for the detailed modeling and monitoring of the printing process, including the machine, materials, and environmental conditions, to optimize or control the printing operation. In some examples, the process digital twin 206 includes the entire 3D printing process, including the 3D printer hardware, cooling, the materials used, and the environmental factors, which are modeled in a virtual environment. In some examples, this includes the printer’s components, such as the printhead, build platform, and any other relevant parts. In another example, finite element analysis (FEA) could be used to predict and track a variable of interest during a simulated / emulated printing process. For simulating additive manufacturing, for example, this type of simulation may predict the behavior of the material as it's deposited layer by layer, including factors like temperature distribution, material flow, and residual stresses. For instance, some examples assign material properties to elements in the mesh. This includes parameters like thermal conductivity, heat capacity, density, thermal expansion coefficient, and viscosity. The material properties may vary with temperature, so as to, for example, capture the material's behavior as it heats and cools during the printing process.

[0020] At a first time, the part slicer 203 converts a model (e.g., a 3D CAD model) of an object (or part of an object) into a series of 2D cross-sectional layers that can be printed oneon top of the other to create the final three-dimensional object. These individual 2D layers are referred to as "slices.” In some examples, such model is created using computer-aided design (CAD) software or obtained from online 3D model repositories. Various examples import the 3D model into the part slicer 203 (e.g., CURA or SIMPLIFY3D). In some examples, the part slicer 203 then responsively divides the 3D model into numerous 2D layers, or slices, based on the settings and parameters a user specifies. In some examples, these layers correspond to the vertical cross-sections of the object. In some examples, there are many “slices” or “layers” per part. In some examples, a single part may be simulated. In other examples, several parts (e.g., all the parts together) are simulated.

[0021] In some examples, the part slicer 203 accesses the printer / material attributes 230, which define various print and / or build material settings to be used (e.g., as specified by a user), including layer height, print speed, temperature settings, infill density (how solid or hollow the object is), support structures, or the like. These settings influence the quality, strength, and appearance of the final print. Layer Thickness: The user can specify the desired layer height, which determines the thickness of each slice. Smaller layer heights can result in higher-resolution prints but may take longer to complete. Slicers allow users to configure infill density (how solid or hollow the print is). Users can adjust printing parameters like print speed, temperature, and cooling to optimize the print quality and minimize issues like warping. In some examples, where argents are not used, the part slicer 203 calculates the optimal path for the printer's nozzle or laser to follow as it deposits build material for each layer, ensuring a coherent and efficient build process. In some example, the part slicer 203 provides a range of settings related to print quality, such as layer adhesion, shell thickness, and more, giving users control over the final output.

[0022] The agent distribution map(s) 205 refers to a map or predicted representation of the distribution of agents or elements within a printing simulation. That is, the map(s) 205 predicts how much ink or some other agent will be delivered to each location (also called a “contone level). In some examples, the map(s) 205 predict what the printer will be instructing the inkjet print heads to do at each location. In some examples, actual printing “agents” refer ink that is delivered to the powder. A “fusing” agent may be ink that absorbs heat from overhead lamps and causes powder to fuse. A “detailing” agent may be an agent that cools the powder or otherwise prevents the powder from fusing or coalescing. Alternatively or additionally, in some examples, an agent refers to a material or substance used in certain printing processes to bond or fuse together layers or particles of the build material.Alternatively or additionally, in some examples, an agent refers to a material or process used to enhance the fine details, surface finish, or specific features of a printed object. The agent distribution maps 205 thus refer to a predicted data representation of how these agents are distributed or applied to the particles (e.g., powder) within the simulated printing environment..

[0023] In some examples, the agent distribution map(s) 205 are generated by taking the part slicer 203 data (e.g., the printer / material attributes 230, including layer height, print speed, temperature settings, infill density) as input to predict agent distribution. In some examples, a machine learning model, such as a neural network takes these attributes as input in order to predict the agent distribution map(s) 205, as described in more detail below.

[0024] The agent response active printing 207 refers to a computational model that represents the computed / predicted thermal response (e.g., a prediction of how build materials react as temperature conditions or heat varies) will be based on the predicted quantity of agent produced by the agent distribution maps 205, predicted radiation from lamps, and / or surrounding hardware parameters (e.g., the printer's frame, cooling systems, sensors, and / or any other hardware that may impact or be affected by the thermal dynamics of the system). For example, a computed thermal response may include data on temperature changes, heat distribution, or thermal gradients to a build material based on a specific quantity of heat radiation from lamps. Lamps may be used in additive manufacturing processes for their role in providing heat. They may be used to preheat the printing material or to selectively heat specific areas of the build platform during the printing process.

[0025] The agent response cooling 209 refers to a computational model that represents how individual simulated agents or elements, such as simulation voxels, within the simulation respond or change during a cooling phase of the 3D printing process. Cooling is a secondary phase in 3D printing that involves cooling or solidifying the material after deposition. The aim may be to prevent deformation and to maintain the shape and structural integrity of the printed object. During the cooling phase, printers may employ cooling fans, liquid baths, or UV light (in the case of photopolymer resins) to solidify or cool the printed layer. In some examples, rapid cooling leads to deformation of the part. This is a choice point where users can trade off time to cool versus dimensional accuracy. In some examples, cooling takes many hours (24 hours in some cases) for the powder block and objects to cool. However, the amount of time and procedure of cooling varies depending on the technology. Accordingly, these attributes (cooling component type) may be used as input to predict how the part will change during the cooling process. In an illustrative example, particular examples can predict a quantity ofshrinkage, crystallinity, or other features. In some examples, the agent response active printing 207 and the agent response cooling 209 are determined via a machine learning model, as described in more detail below.

[0026] The printing simulator 211 refers to the actual simulating of the entire 3D printing process, from the design of a model to the final printed object using the part slicer 203, the agent distribution map(s) 205, the agent response active printing 207, and / or the agent response cooling 209 as input. For example, a simulated 3D printer first reads the 2D slices or parts (generated by the part slicer 203) one at a time and prints each virtual layer of each part by depositing or solidifying virtual material / agents (such as voxels representing plastic filament, virtual resin, or virtual metal powder) according to the design of that specific virtual layer and the agent distribution map(s) 205. In some examples, based on using the agent response active printing 207 as input, the printing simulator 211 builds the part / object from the bottom up, while the variable(s) of interest tracker 213 detec ts / records variables of interest (e.g., temperature, cooling rates, coalescence, agent deposition, etc.) during active printing. For example, the variable(s) of interest tracker 214 may track the entire thermal journey of each voxel during simulated agent distribution, active printing and cooling to predict, for example, the crystallinity or porosity. Each virtual layer adheres to the previous one, and this layer-by- layer approach eventually forms the final printed object produced by the part digital twin 208. After the final 3D printed object is produced, the printing simulator 211 simulates the cooling phase of printing using the agent response cooling 209 as input and the variable(s) of interest tracker 213 additionally tracks a variable of interest (e.g., temperature across cooling history) during the cooling phase.

[0027] The part digital twin 208 digitally generates a part based on the variable(s) of interest, a performance property predictor 215, a part performance predictor 221, and a performance prioritized compensation 223. The part digital twin 208 is responsible for generating a model of a part based on taking, as input, the variable(s) of interest determined by the process digital twin 206. In some examples, the part digital twin 208 refers to a virtual replica or representation of a specific 3D-printed object or component to be printed by a 3D printer.

[0028] After the variable(s) of interested have been tracked and extracted via the variable(s) of interest tracker 213, the variable(s) of interest tracker 213 then passes the corresponding variable(s) of interest (e.g., a timestamped value for different portions of the printing / cooling, such as a temperature value at different times throughout printing) to theperformance property predictor 215, which uses these variable(s) of interest as input to help generate a part by determining or predicting measure(s) of a performance property for the corresponding part. For example, particular examples may receive an indication of temperature and that the cooling history is quicker, over a threshold speed, at a top of a part than the bottom of the part (all variables of interest). Crystallinity may be a final output in the part, which may be calculated from the thermal history. Consequently, the part may be built with higher crystallinity at the top than the bottom. In some examples, crystallinity is computed at each location or section of a part in order to compute the overall strength of the part based on the crystallinity at each location within the part.

[0029] Performance properties focus on the functional attributes of the 3D-printed object. It includes factors like strength, durability, flexibility, thermal resistance, chemical resistance, electrical conductivity, and / or other properties. The choice of 3D printing materials, infill density, layer height, and printing temperature (each of which may be a variable of interest) can all affect the performance characteristics of the object. For example, printing with higher infill density and specific materials can result in stronger and more durable parts, making them suitable for mechanical applications. Performance properties are different than geometry or geometric properties. In an illustrative example, based on the cooling history, the porosity of traces / conductive material, or crystallinity predicted (the variables of interest), particular examples can predict a measure of strength or likely breakage at various points along the part. For example, a machine learning model can take, as input, the variables of interest in order to predict a particular performance properties.

[0030] The working conditio n(s) module 217 is responsible for listing or determining a working condition (e.g., loading conditions) for which a printed part was designed for. A “working condition” as described herein refers to one or more loading and / or stress parameters that the part will be subjected to during its use. For example, with respect to a cane handle, the working conditions can include the pressure of the hand, the load and flexion it receives at each step, the load at the section where the cane attaches to the handle, and / or the number of steps this should resist (this would be a case of repetitive loading). In another example, with respect to a shoe insole, the working conditions may include the pressure applied by the feet, and / or bending during gait, which will vary if the user is running or just walking. In yet another example, with respect to flexible electronics, the working conditions can include the load and bending that the material produces, mechanical stress and deformation in the conductive trace, and / or the material where the conductive trace is contained that can modify the electricalresistance of the trace. With applied electrical current the conductive trace may be subjected to different kinds of heating due to modified resistance, which could lead to degradation of the material and reduction in mechanical resistance.

[0031] The working conditions module 217 passes the working conditions to the part performance predictor 221 and the genitive design engine 219. The part performance predictor 221 takes, as input, the measure of the performance properties predicted by the performance property predictor 215 and the working conditions set by the working conditions module 217, in order to generate a final virtual printed part and / or predict performance of the part.

[0032] In some examples, the part performance predictor 221 predicts whether a predicted performance value (e.g., strength value) meets a design criteria threshold (e.g., a strength threshold value). A “design criteria threshold” refers to any suitable performance value (e.g., a hand-coded predetermined threshold) and / or other threshold (e.g., working conditions value). For example, a design criteria threshold can include various types of forces, stresses, and environmental factors or other threshold to which a 3D-printed object should and / or should not be subjected during its use. For example, the following may be included among the design criteria threshold is it relates to loading conditions: a static loads (e.g., an allowable weight of a load on a 3D-printed structural component or allowed static pressure on a part), dynamic loads, dynamic loading (e.g., threshold quantity of magnitude and direction of vibrations allowed), tensile loads (e.g., tolerated quantity of stretching or pulling forces applied to a part), compressive loads (e.g., a tolerance for pushing or compressing a part under a threshold), shear loads (e.g., a force tolerance to act parallel to the surface of a part but in opposite directions), torsional loads (e.g., an allowable twisting forces applied to a component), thermal loads (e.g., a threshold tolerance level of expansion or contraction with temperature fluctuations), environmental conditions (e.g., an acceptable level of humidity, chemicals, UV exposure, and other conditions can affect the material properties and integrity of 3D-printed parts), and / or fatigue loads (e.g., acceptable fatigue tolerances over time)

[0033] In another illustrative example, with respect to the design criteria threshold, a programming data structure may include a set of performance property thresholds as well as a series of conditional (e.g., if-then) statements to handle each condition. For example, such data structure may include a particular Pascals (Pa) or megapascals (MPa) value X (indicative of tensile strength) and a statement that if the predicted performance value does not exceed Y (it does not meet the threshold), the part should be scored (or the score reduced) towards part failure or otherwise not meeting the design criteria threshold. Responsively, in some examplesthe generative design engine 219 iteratively modifies the geometry of the model of the part (e.g., iteratively loops through the process digital twin 106 and the part digital twin 108) until a measure of a performance property meets the design criteria threshold. For example, as described in more detail below, a machine learning model may learn how a geometry of the model of a part is to be modified based on its individual performance property, variables of interest, printer characteristics, material properties, and / or other characteristics.

[0034] If the performance property(s) and / or the working conditions do not meet such design criteria threshold(s), then the part performance predictor 221 passes data to the generative design engine 219, such as the performance properties derived from the performance property predictor 215 and / or a delta or difference between design criteria threshold(s) and the performance property predictor 215. In some examples, the part performance predictor 221 represents or includes a machine learning model, such as Random Forest model such that various nodes and splits are generated in order to determine whether the modeled part should be modified. The Random Forest Model selects the best feature to split the data at each node based on some criteria (e.g., design criteria threshold). For example, one node may indicate that a particular strength value exceeding or below a particular value (representative of a design criteria threshold) is incremented to a class of “modify” (e.g., send a modify signal to the generative design engine 219).

[0035] The generative design engine 219 is responsible for modifying a geometry of the part produced by the part performance predictor 221 based on inputs received from the working conditions module 217, and / or the part performance predictor 221. For example, in some examples, the generative design engine 219 is a generative machine learning model (e.g., a Generative Adversarial Network (GAN)) that is responsible for generating a geometry of a model of the part based on learning a relationship between different geometric portions of the model and the performance characteristics needed to meet the design criteria threshold, as described in more detail below. The generative design engine 219 is included the part performance compensator 212, which also includes the variable(s) of interest tracker 213 and the working conditions module 217.

[0036] The performance prioritized compensation component 223 takes the modified geometry of the modeled part generated by the generative design engine 219 as input so that the part digital twin 208 may make a final simulation of the model of the part by fitting the output from the generative design engine 210 to a CAD or other representation, such as to add more details or put in another format. For example, the part digital twin 208 may display aprinted part with realistic lighting, reflectance, or other features (e.g., via a Spatially-varying Bidirectional Reflectance Distribution Function (SVBRDF)). A Bidirectional Distribution Function (BRDF) is a function used to describe the reflectance properties of a real world object surface (or how light interacts with a surface). “Spatially-varying” BRDF means that reflectance properties change across a surface depending on the position of the corresponding object in relation to a light source, which affects the lighting (e.g., intensity, absorption, or scattering), the color of the object, the texture of the object, or other geometric features of the object (e.g., roughness, glossiness, etc.).

[0037] When the user is satisfied with the model of the printed part generated by the digital twin 208, the user may initiate a real-world (non- simulated) printing, via a client interface component of a user device, and the part is printed by a real-world printer (e.g., a 3D printer). The printer may be any suitable type of printer that prints multidimensional objects, such as a Multi Jet Fusion (MJF) printer, a Fused Deposition Modeling (FDM) printer, a Stereolithography (SLA) printer, a Digital Light Processing (DLP) printer, a Selective Laser Sintering (SLS) printer, a Selective Laser Melting (SLM) printer, Electron Beam Melting (EBM) printer, Binder Jetting printer, Laminated Object Manufacturing printer (LOM), Continuous Liquid Interface Production (CLIP) printer, a Multi Jet Printing (MLP) printer, or the like.

[0038] FIG. 3 depicts a diagram of an example neural network 305 generating a modified geometry of a model of a part. In some examples the neural network 305 represents or includes the generative design engine 219 of FIG. 2. In some examples, the neural network 305 represents what the geometry modifier 108 uses to modify geometry. In some examples, the neural network 305 represents any suitable model functionality, such as supervised learning (e.g., using logistic regression, using back propagation neural networks, using random forests, decision trees, etc.), unsupervised learning (e.g., using an Apriori algorithm, using K-means clustering), semi-supervised learning, reinforcement learning (e.g., using a Q-leaming algorithm, using temporal difference learning), a regression algorithm (e.g., ordinary least squares, logistic regression, stepwise regression, multivariate adaptive regression splines, locally estimated scatterplot smoothing, etc.), an instance-based method (e.g., k-nearest neighbor, learning vector quantization, self-organizing map, etc.), a regularization method (e.g., ridge regression, least absolute shrinkage and selection operator, elastic net, etc.), a decision tree learning method (e.g., classification and regression tree, iterative dichotomiser 3, C4.5, chi-squared automatic interaction detection, decision stump, random forest, multivariateadaptive regression splines, gradient boosting machines, etc.), a Bayesian method (e.g., naive Bayes, averaged one-dependence estimators, Bayesian belief network, etc.), a kernel method (e.g., a support vector machine, a radial basis function, a linear discriminate analysis, etc.), a clustering method (e.g., k-means clustering, expectation maximization, etc.), an associated rule learning algorithm (e.g., an Apriori algorithm, an Eclat algorithm, etc.), an artificial neural network model (e.g., a Perceptron method, a back-propagation method, a Hopfield network method, a self-organizing map method, a learning vector quantization method, etc.), a deep learning algorithm (e.g., a restricted Boltzmann machine, a deep belief network method, a convolution network method, a stacked auto-encoder method, etc.), a dimensionality reduction method (e.g., principal component analysis, partial lest squares regression, Sammon mapping, multidimensional scaling, projection pursuit, etc.), an ensemble method (e.g., boosting, bootstrapped aggregation, AdaBoost, stacked generalization, gradient boosting machine method, random forest method, etc.), and / or any suitable form of machine learning algorithm.

[0039] The neural network 305 is modeled as a data flow graph (DFG), where each node (e.g., 321) in the DFG is an operator with an input and output tensor, such as 320 and 322. A “tensor” (e.g., a vector) is a data structure that contains values representing the input, output, and / or transformations processed by the operator. Each edge of the DFG depicts the dependency between the operators. Neural network 305 includes an input layer, an output layer and a hidden layera. An Input layer is the first layer of the neural network 305. The input layer receives pre-processed (e.g., via the pre-processing 304 or 316) input data represented by 303 and 315, such as an original geometry of a model of part(s), printer / material attributes of the part(s), working conditions, or the like. The Output layer is the last layer of neural network 305. The output layer generates images or the modified geometry of a model (309 or 307), which is represented by the inference and predictions 309 and 307. Neural network 305 may include any number of hidden layers. Hidden layers are intermediate layers in neural network 305 that perform various operations.

[0040] Each node in FIG. 3, such as node 321, is associated with or includes an activation tensor, such as input tensor 320, output tensor 322, and / or intermediate tensors. An “activation tensor” is a tensor that is an input, intermediate, and / or output to at least one neural network layer (e.g., as modeled going from left to right), as illustrated by the flow of data from input tensor 320 to output tensor 322. This is different than a weight tensor, such as 324, where weight tensors are modeled as flowing upward (not being actual inputs or outputs). In other words activation tensors represent some form of the neural network inputs 303 and 315. Forexample, the input tensor 320 or node 321 can represent specific values for a particular performance property (e.g., tensile strength), whereas a weight tensor represents the weight values indicating node activation / inhibition values indicating significance of the particular performance property for the overall prediction at 309 or 307.

[0041] Each node in the network 305 may also be associated with or include and / or a weight tensor(e.g., 324), which include weight values. A “weight” in the context of machine learning may represent the importance or significance of a feature or feature value for prediction. For example, each feature (e.g., a particular variable of interest or performance property value / measure) may be associated with an integer or other real number where the higher the real number, the more significant the feature is for its prediction. In some aspects, a weight in a neural network represents the strength of a connection between nodes or neurons from one layer (an input) to the next layer (a hidden or output layer). A weight of 0 may mean that the input (e.g., the input tensor 320) will not change the output (e.g., the output tensor 322), whereas a weight higher than 0 changes the output. The higher the value of the input or the closer the value is to 1 , the more the output will change or increase. Likewise, there can be negative weights. Negative weights may proportionately reduce the value of the output. For instance, the more the value of the input increases, the more the value of the output decreases. Negative weights may contribute to negative scores. For example, a particular modification of a model section of a part may be highly correlated with a specific quantity of porosity (a variable of interest) and so neural network layers or nodes representing the specific quantity of porosity may be weighted higher so that that this data is activated or taken into account when making a final prediction score.

[0042] Each node of the neural network 305 may additionally perform a a function using the activation tensors and weight tensors, such as activation functions, matrix multiplication, normalization, or the like. Tn some examples, the nodes in the neural network 305 are fully connected or partially connected. Continuing with FIG. 3, each node may process an input in 303 and 315 (or portion thereof) using activation tensors and weight tensors. In some examples, in response to receiving the deployment input(s) 303 and the training data input(s) 315, the neural network 305 first performs pre-processing 304 or 316, such as encoding or converting such input into machine-readable indicia representing the entire input (e.g., a tensor representing all of the deployment input(s) 303). Responsively, the node may then receive an input tensor, which may, for example, represent whether a feature (e.g., specific working conditions, such as whether the geometric tolerance level is between a specific range)are present in the input. In some examples, the input tensor is an N-dimensional tensor, where N can be greater than or equal to one. In some examples, an input tensor 320 represents the input data of neural network 305 if the node is in the input layer. In some examples, the input tensor 320 is also the output of another node in the preceding layer. In some examples after a node, such as the node 321, performs an operation using the input tensor 320, it generates an output tensor 322, which is then passed to the other neurons in the hidden layer and / or output layer. The output tensor 322 represents the output processed by the node 321. For example, the output tensor 322 may be a matrix representing the product of matrix multiplication or a matrix indicating whether particular performance properties or its values / measures were present. In various aspects, the output tensor 322 represents an input of another node in the succeeding layer (i.e., the output layer).

[0043] In some examples node 321 applies a weight tensor 324 to the input tensor 320 via a linear operation (e.g., matrix multiplication, addition, scaling, biasing, or convolution). All other nodes in the neural network may perform identical functionality. In some examples, the result of the linear operation is processed by a non-linear activation, such as a step function, a sigmoid function, a hyperbolic tangent function (tan h), and rectified linear unit functions (ReLU) or the like. The result of the activation or other operation is an output tensor 322 that is sent to a subsequent connected node that is in the next layer of neural network 305. The subsequent node uses the output tensor 322 as the input activation tensor to another node.

[0044] Each of the functions in the neural network 305 may be associated with different coefficients (e.g., weights and kernel coefficients) that are adjustable during training. For example, after preprocessing 316 (e.g., normalization, feature scaling and extraction) in various aspects, the neural network 305 is trained using a data set of the preprocessed training data inputs 315 in order to make acceptable loss training predictions at the appropriate weights to set the weight tensors. This will help later at deployment time to make a correct inference 309. In some aspects, learning or training includes minimizing a loss function between the target variable (for example, an incorrect prediction of a modified geometry) and the actual predicted variable (for example, a correct prediction of a modified geometry). Based on the loss determined by a loss function (for example, Mean Squared Error Loss (MSEL), cross-entropy loss, etc.), the loss function learns to reduce the error in prediction over multiple epochs or training sessions so that the neural network 305 learns which features and weights are indicative of the correct inferences, given the inputs. Accordingly, it is desirable to arrive as close to 100% confidence in a particular classification or inference as much as possible so as to reduce theprediction error. In an illustrative example, the neural network 305 learns that for a given part, set of working conditions (e.g., conditions set by the working conditions module 217, such as allowable tensile strength tolerance) of that part, variables, and performance properties (e.g., predicted tensile strength), the part should be modified by adding X quantity of layers, contone, or the like at section A of the part.

[0045] Subsequent to a first round / epoch of training, the neural network 305 makes predictions with a particular weight value, which may or may not be at acceptable loss function levels. For example, the neural network 305 may process the pre-processed training data inputs 315 a second time to make another pass of predictions. This process may then be repeated over multiple iterations or epochs until the weight values in the weight tensors are learned for optimal predicted values (for example, a ver}' precise manner in modification of geometries of different models of different parts) and / or the loss function reduces the error in prediction to acceptable levels of confidence.

[0046] In some examples, before the training data input(s) 315 (or deployment input(s)303) are provided as input into the neural network 305, the inputs are preprocessed at 316 (or304). In some examples, such pre-processing includes feature scaling, feature extraction, normalization, and the like. Scaling (or “feature scaling”) is the process of changing number values (e.g., via normalization or standardization) so that a model can better process information. For example, some aspects can bind number values between 0 and 1 via normalization. Other examples of preprocessing includes feature extraction, handling missing data, feature scaling, and feature selection.

[0047] Continuing with FIG. 3, in some examples, the neural network 305 is trained in a supervised manner using annotations or labels. For example, in some examples, training includes (or is preceded by) annotating / labeling training data 315 so that the neural network 305 learns associations between the features or weights and corresponding labels, which is used to change the weights / neural node connections for future predictions. For example, a document can include an original shape / or geometry of a model of a part, as well as particular performance properties, working conditions, variables of interest and / or printer / material attributes for that same part. Responsively, subject matter experts, programming logic, or other users then label such document with an image of a modified geometry of the same model, which indicates how the geometry should be modified for that same part. In some examples, a model is trained with labeled data to generate modified models that meet a geometric tolerance. In some examples, a “geometric tolerance” refers to the maximum amount of dilation (orerosion) that can occur in the direction normal to the surface at the location with the specified tolerance. For example, the labels of the image of the modified geometry can include the maximum amount of dilation or erosion that occurs so that the model learns how to modify the geometry according to the specific amount of needed dilation or erosion. Such process can repeated for various subsequent parts (e.g., of the same printed objects so that labels can be made for different parts of the same printed object). In this way, the neural network 305 can learn which weights or features are indicative of a specific modification of a geometry of different parts. As such, the neural network 305 accordingly adjusts the weights (the weight tensors) or deactivates nodes such that certain nodes corresponding particular performance values, parts, printer / material attributes, variables of interest, working conditions, or performance properties are activated and other nodes corresponding to other performance values, parts, printer / material attribute, variables of interest, working conditions, or performance properties are inhibited to make geometry modifications.

[0048] In some examples, where a Generative Adversarial Network (GAN) is used, a generator and discriminator can be used to generate realistic modified geometries at the training predictions 307 and the inference predictions 309. For example, during training, the discriminator is presented with a labeled dataset including real and fake modified geometries, where real samples are drawn from the actual dataset to mimic, and fake samples are generated by the GAN's generator. For each sample, the discriminator performs a forward pass, which means it processes the input (real or fake sample) through its neural network layers. This process generates a prediction (or activation) for the sample. In some examples, the discriminator computes two losses or loss functions for each prediction. For example, the first loss may be a binary classification loss, such as cross-entropy loss. For real samples, the first loss may be calculated for the "real" label (e.g., 1), and for fake samples, it is calculated for the "fake" label (e.g., 0). The second loss may be based on how correct or accurate a modified geometry prediction is. Some examples therefore use a custom modified geometry correctness loss that quantifies how well the generated modifications match the correct ones, which will help guide the generator toward making more accurate modifications. For example, the discriminator could use a mean squared error (MSE) between a generated model and the corresponding "correct" generated model as part of the loss function Accordingly, in some examples, the discriminator's role is to become adept at distinguishing not just between real and fake data but between "correct" and "incorrect" modifications. In some embodiments, thea discriminator loss is based on the design criteria threshold (e.g., as described with respect to the part performance predictor 221).

[0049] In some examples, the loss function of the generator is a combination of adversarial loss and other geometric loss functions. Geometric loss functions, like Chamfer distance or Earth Mover's Distance (Wasserstein distance), can help ensure that the modified model is geometrically close to the desired output. After calculating the loss, in some examples the GAN uses backpropagation to compute the gradients of the loss with respect to the model parameters of the discriminator. The model parameters of the discriminator are updated using an optimization algorithm like stochastic gradient descent (SGD) or an advanced variant like Adam. These updates are based on the computed gradients, which aim to improve the discriminator's ability to correctly classify real and fake samples. A particular objective function in GANs is the adversarial feedback loop. As the discriminator becomes better at distinguishing real from fake samples, it provides a stronger signal to the generator about how to produce more convincing fake samples. This helps train the generator to produce betterquality synthetic data so as to create modified geometries that meet working conditions.

[0050] It is understood that in some embodiments a compensator in conjunction with a loss function may be used to modify geometry of a part in addition or alternative to a GAN (and / or any neural network). In the context of additive manufacturing, for example, a compensator may be a component or mechanism designed to modify the input to a system to achieve desired modified geometry so as to correct or compensate for deviations or errors, ensuring that the modified geometry meets specified requirements. In other words, a compensator may adjust or compensate for variations in the printed part by using a loss function as a basis for making modifications. The loss function (e.g., a cost function or objective function) may be a mathematical function that measures the difference between the predicted modified geometry and the actual / existing geometry. Put another way, the loss function may quantify the error or deviation between the intended design of the printed part and the actual result of the predicted geometry (e.g., the result produced by the part digital twin 208 before compensation). Accordingly, an algorithm may analyze the difference between the intended and actual predicted geometry for the predicted additive manufacturing process. The loss function may serve as a metric to quantify this difference, and the compensator may then make adjustments to minimize or compensate for the identified errors. The compensator may modify printing parameters, alter the design, or implement other corrective measures to improve the accuracy and quality of the printed part.

[0051] In some aspects, subsequent to the neural network 305 training, the neural network 305 (for example, in a deployed state) receives the pre-processed deployment input(s) 303. When a machine learning model is deployed, it has been trained, tested, and packaged so that it can process data it has never processed. Responsively, in some aspects, the deployment input(s) 303 (i.e., the geometry of a model of a part, the printer / material attribute(s) of the part, the variable(s) of interest of the part, the working condition(s) of the part, and / or the performance property(s) of the part ) are fed to the neural network 305, which then uses the same weight tensors (e.g., 324) that were learned via training so that the neural network 305 can produce the correct inference predictions 309. For example, the input tensor 320 can include new values (e.g., performance property(s) indicated in 303), which is then multiplied or otherwise combined with the weight tensor 324, representing the same weight values learned at training, in order to make the inference prediction(s) 309.

[0052] In some examples, the variable(s) of interest in the inputs 303 and 315 are generated via the variable(s) of interest tracker 213. In some examples, the printer / material attribute(s) of the part in the inputs 303 and 315 represent the printer / material attributes 230 of FIG. 2. In some examples, the working condition(s) of the part in the inputs 303 and 315 represent the conditions set by the working conditions module 217 of FIG. 2. In some examples, the performance property(s) of the inputs 303 and 315 represent the performance properties predicted by the performance property predictor 215 of FIG. 2. In some examples, the modified geometry of the model 309 or 307 represents the output of the generative design engine 219 and / or the performance prioritized compensation 223 of the part digital twin 208 of FIG. 2.

[0053] In some examples, the neural network 305 or similar neural network can be used to make any of the predictions described in FIG. 2. For example, performance properties can be included in the inference and training predictions 309 and 307 so that the performance property predictor 215 can make these predictions based on the variables of interest in the inputs 303 and 315. In another example, results of the printing simulator 211 (a predicted printing process) can be included in the predictions 307 and 309 based on outputs of the agent distribution maps 205, the agent response active printing 207, and the agent response cooling 209 being included in the inputs 303 and 315.

[0054] FIG. 4 is a screenshot 400 of an example user interface illustrating how a user can set performance prioritization over geometric printing accuracy and geometric tolerances for given sections of a wrench 401. In some examples, a “geometric tolerance” refers to the maximum amount of dilation (or erosion) that can occur in the direction normal to the surfaceat the location with the specified tolerance. At a first time, the representation of the wrench 401 may be a particular color (e.g., white) or otherwise indicate “geometric accuracy by default,” which means that the geometry of the wrench 401 will be printed according to a default geometric accuracy tolerance or threshold (e.g., 1%) relative to a model of the wrench 401 as generated by the part slicer 203. In other words, for example, all of the wrench 401 (sections 413, 409, 403, 407, 405, 411, and 415) are initially set to a default geometric printing accuracy. At a second time subsequent to the first time, particular aspects receive an indication that a user has selected or otherwise defined sections 403 and 405 (e.g., via a manual lasso gesture), where such selections indicates that the performance property of the parts 403 and 405 are prioritized over geometric printing accuracy of the part. Some examples additionally receive an indication that a user has set a specific geometric tolerance level of 5% as illustrated in the screenshot 400 for the sections 403 and 405, which indicates that the printing geometry of the sections 403 and 405 can differ from its intended original geometric design by 5% or less.

[0055] The user may have selected these sections 403 and 405 because these sections, may for example, be the weakest regions of the wrench 401 and so the user wants to ensure that these sections 403 and 405 are enforced with more layers of build material or otherwise more reinforced up to the 5% geometric tolerance level to make the sections 403 and 405 stronger. In some examples, the selection of the sections 403 and / or 405 is alternatively done automatically as a recommendation via a machine learning model, as described in more detail below. In some examples, in response to receiving of the selections of the sections 403 and 405, particular examples set a particular RGB field and value to change the color relative to the other wrench sections to clearly indicate which parts are prioritized for performance. Additionally or alternatively, in some examples, the colors indicate how much deviation of the geometric tolerance level is permitted. Each color channel, for example, may correspond to a property, and grayscale value for that channel can may indicate the geometric tolerance level. Alternatively or additionally, in some examples, the colors indicate specific performance properties, such as strength or conductivity. For example, the screenshot 400 may be indicative of a visualization heat map where the “hotter” (higher presence of red) the color, the higher the strength and the “cooler” (higher presence of blue) the color, the lower the strength is for a given section.

[0056] In some examples at a third time subsequent to the second time (or immediately before the selections of the sections 403 and 405), particular examples receive an indication that the user has selected parts 413 and 415, where such selections indicates that geometricprinting accuracy of the parts 413 and 415 are prioritized over performance properties for the same parts 413 and 415. Some aspects additionally receive an indication that a user has set a specific geometric tolerance level of 0.002% as illustrated in the screenshot 400 for the parts 413 and 415, which indicates that the printing geometric accuracy of the parts 413 and 415 can differ from their original geometric design by 0.002%> or less. The user may have selected these parts 413 and 415 because geometric accuracy may be needed for these parts. For example, these parts 413 and 415 may be specifically shaped for sizes to fit different types and sizes of fasteners (nuts and bolts). The shape and dimensions of the wrench often match the fastener to prevent slipping, damaging the fastener, or causing injury. In some examples, in response to receiving of the selections of 413 and 415, particular examples set a particular RGB field and value to change the color relative to the other wrench sections to clearly indicate which parts are prioritized for geometric printing accuracy.

[0057] In some examples, subsequent to the user selections and geometric tolerance level selections, the functionality of FIG. 1 or FIG. 2 may occur. For example, with respect to FIG. 2, the part slicer 203 may slice a model of the wrench 401 at the specific regions defined by the user, such as slicing the model by the boundaries indicated in sections 403, 405, 407, 411, 409, 413, and 415. In some examples, the geometric tolerance level selections and / or the performance priority selections are a part of the working conditions used by the working conditions module 217 of FIG. 2. In some embodiments, users may set a hard limit on geometric tolerance levels so that models (e.g., the neural network 305 or a compensator) do not exceed the geometric tolerance level selection, when, for example creating a modified geometry. Users may experiment with the ranges of the RGB channels to indicate geometric tolerance levels. All data about geometric tolerance limits, boundary conditions and / or working conditions can be coded in the “universe” given by the RGB channels.

[0058] FIG. 5 depicts a diagram illustrating how a geometry of a model of a part is modified, according to an example. Specifically, the model 502 of an object (a cross-beam part) is first generated. In some examples, the model 502 represents what is generated by the part digital twin 208 before any part thereof is compensated or modified. The model 502 indicates that the beam material of the model 502 is not homogenous due to a differing cooling rates (e.g., as determined via the variable(s) of interest tracker 213) for parts. Specifically, for example, section 502-1 may have been cooled during a printing simulation substantially slower than section 502-2. Cooling too quickly between layers or parts can cause poor adhesion between them, leading to delamination and weakened parts. Slow cooling allows for betterinterlayer bonding, improving part strength. Accordingly, based on the differing cooling rates it can be predicted (e.g., via the performance property predictor 215) that the section 502-2 is weaker than the section 502-1.

[0059] After the model 502 of the object has been generated, various functionality occurs, such as the functionality as described with respect to the part performance predictor 221 of FIG. 2. Responsively, aspects (e.g., the generative design engine 219 and the performance prioritized compensation 223) modify or compensate the geometry of the model 502 by increasing, with additional virtual build material 504-1 (e.g., additional voxels), the cross-sectional area at a section corresponding to 502-1 and generates the model 504 so that it is able to withstand tension as designed (e.g. as indicated in its design criteria threshold).

[0060] FIG. 6 depicts a flowchart of an example method 600. In various aspects, the method 600 is performed by components of the example device 100 of FIG. 1 and / or components of the example system 200 of FIG. 2 in order to modify a geometry of a model of a part. At block 602, a part (and / or section), of a plurality of parts (and / or sections), for which a performance property of the part is prioritized over (e.g., more critical or important relative to) geometric printing accuracy of the section and / or part is identified. For instance, in some examples, some aspects receive, via a user interface (e.g., illustrated in the screenshot 400), user input that selects a representation of the section. Illustrative examples of this are described with respect to FIG. 4 where, for instance, a user selects the section 403, which indicates that the performance property of the section 403 is prioritized over geometric accuracy of the section 403.

[0061] In some examples, block 602 is performed automatically via the use of a machine learning model. In these examples, aspects automatically identify the part based on training a machine learning model to identify different parts where performance is prioritized over geometric accuracy. For example, a neural network can be feed different labeled models (e.g., CAD models) of different printed objects, where each part is labeled as 1 (e.g., performance is prioritized over geometric printing accuracy) or 0 (geometric printing accuracy is prioritized over performance properties). In this way the model uses a loss function and adjusts weights to learn which parts of which printed objects are to have performance properties prioritized over geometric accuracy of parts.

[0062] In some examples, as part of block 602, aspects receive, via a user interface, a first user request to set a geometric tolerance level indicative of a degree of geometric accuracy needed for printing each respective part. In this way, the identifying of the part is based on thegeometric tolerance level set for the part. Illustrative examples of this are described with respect to FIG. 4 where a user, for example, sets the geometric tolerance level of part 403 to 5% and sets the geometric tolerance level of part 413 to 0.002%. In this way, in some examples, the geometric tolerance levels can vary for different locations on the part or object to be printed.

[0063] Per block 604, some aspects compute (e.g., estimate, predict, or calculate) a measure (e.g., specific values) of the performance property of the part from an estimated printing process of the part. Examples of this are described with respect to the functionality of the performance property predictor 215 of FIG. 2 and the process digital twin 206. In some examples, the performance property includes a measure of durability of the part, which can be measured or predicted based on variables of interest such as build material selection, thickness, support structures, and the overall geometry. Alternatively or additionally, the performance property can include a measure of flexibility of the part (e.g., via a predicted Young’s Modulus value variable of interest), a measure of strength of the part (e.g., via a predicted tensile strength value variable of interest), and / or a measure of thermal resistance of the part (e.g., via a predicted temperature difference (AT) across the object and the heat flux (Q) passing through it). Alternatively or additionally, the performance property may include a measure of chemical resistance of the part. Various aspects predict such measure of chemical resistance based on build material used (e.g., materials known for its chemical resistance, like polypropylene), changes in color, texture, warping, dimensional stability, or other variables of interest. Alternatively or additionally, the performance property may include a measure of electrical conductivity of the part.

[0064] Some aspects predict the measure of electrical conductivity performance property via a variable of interest. The choice of 3D printing material may be variable of interest in determining electrical conductivity. Some materials, like metals and conductive plastics, have high inherent conductivity, while others, like most polymers, are insulating or have low conductivity. Further, the concentration and type of filler variable of interest can significantly affect the electrical conductivity. The 3D printing method and other variables of interest can influence the electrical conductivity and may be used for its prediction. For example, fused filament fabrication (FFF) or fused deposition modeling (FDM) processes can introduce anisotropy in the conductivity due to the layer-by-layer deposition of material. Other processes, like selective laser sintering (SLS) with conductive powders, can result in more uniform conductivity. The object’s geometry, including its shape, size, and layer orientation, or other variables of interest impact the electrical conductivity.

[0065] Other performance properties may additionally or alternatively include a measure of density of the part (e.g., as predicted by build material selection, fillers, additives used for mixing or other variables of interest), a Coefficient of Thermal Expansion (CTE) of the part (e.g., as predicted from build material selection, printing process (for instance, Fused Filament Fabrication (FFF) or Fused Deposition Modeling (FDM) processes often introduce anisotropic CTE due to the layer-by-layer deposition of material) or other variables of interest. Other performance properties may additionally or alternatively include a measure of fatigue resistance of the part (as predicted via printer settings, such as layer height, infill density, and print orientation, build material selection or other variables of interest), a measure of fracture toughness of the part (stress concentration points, sharp corners, and the like may be variables of interest to consider) and / or a measure of ductility of the part. Ductility is the ability to deform and withstand plastic deformation without fracturing. Different materials, such as metals, polymers, ceramics, and composites (or other variables of interest), have varying levels of ductility. Factors such as print temperature, layer height, infill density, or other variables of interest can influence the object's internal structure, which in turn affects its ductility.

[0066] In some examples, the computing of the measure of the performance property is based on using a process digital twin model that simulates a printing and cooling process of the part, and further based on using a part digital twin model that takes an output of the process digital twin to generate the model of the part. Examples of this are described with FIG. 2, where the process digital twin 206 simulate a printing and cooling process of the part via the printing simulator 211 and the part digital twin takes an output (e.g., tracked variables of interest) of the process digital twin 206 to generate a model of the part.

[0067] In some examples, aspects track a variable of interest during a printing simulation of the model of the part and compute the measure of the performance property based on the variable of interest, as described above. Examples of this are described with respect to the variable(s) of interest tracker 213 that tracks a variable of interest that is used by the performance property predictor 215 to predict or compute a performance property. In some examples, such variable of interest includes a measure of porosity (the volume or fraction of void spaces within the object relative to its total volume) of the model of the part. Alternatively or additionally the variable of interest may include a measure crystallization (e.g., DOC) of the model of the part. This is useful because the degree of crystallinity can influence the material's properties such as strength, stiffness, and thermal characteristics. Crystallization can be predicted via cooling rate, temperature of object when being printed, or the like. Additionallyor alternatively, the variable of interest may include a temperature gradient of the model of the part during a cooling phase of the printing simulation, and / or a temperature gradient of the model of the part during an active printing phase of the printing simulation. A temperature gradient indicates a change in temperature over a distance, in a particular direction, and / or a particular time period. It represents how temperature varies within a given space or along a path over time. Temperature gradients may be useful in understanding heat transfer and the flow of thermal energy.

[0068] In some examples, aspects compute the performance property based on learning, via a machine learning model, a relationship between the variable of interest and the performance property. For example, aspects reduce an error rate and adjusts weights base on receiving a document including a particular variable of interest values (e.g., various porosity values) for a part that is labeled with a particular performance property ranges, such as different ranges of tensile strength, ductility, electrical conductivity, or the like so that the model may learn which range of variables of interest values are indicative of a particular performance property category. In yet another example, the performance property can be computed in any suitable manner, such as via hand-coded data structures. For example, a lookup data structure could be used where, for instance, the key or index columns correspond to the various variables of interests and corresponding values / ranges (e.g., porosity between A and B) and the performance properties can be looked up as part of the same record or entry according to the corresponding variable of interest values / ranges (e.g., strength level C) such that the values of the variable of interest can be mapped to the particular performance property values. Some aspects cause presentation, at a user interface, of an indication of the variable of interest during the printing simulation of the model of the part. For example, some aspects track the thermal history of the voxels to analyze the degree of crystallization in the part, which indicates a clear heterogeneous distribution of material.

[0069] Continuing with FIG. 6, per block 606, based on the computing of the measure of the performance property, some aspects determine whether the measure of the performance property meets a design criteria threshold.. Examples of block 606 are described with respect to the part performance predictor 221 of FIG. 2. For example, a predicted or computed performance property value may include a specific measure of conductivity - as specific siemens per meter (S / m) 1. However, in order to print the part, the design criteria threshold specifies that the S / m should be 2 or more.

[0070] Per block 608, based on the measure of the performance property not meeting the design criteria threshold, some aspects modify a geometry of the model of the part. Examples of such modification are described with respect to the additional representative build material (e.g., voxels) 504-1 of FIG. 5, the inference prediction(s) 309 of FIG. 3, and / or the generative design engine 219 or the performance prioritized compensation 223 of FIG. 2. For example, using the illustration above, more layers of conductive material are added to the part in printing simulation until the S / m value is two or more if and until the design criteria threshold is met or exceeded.

[0071] In some examples, the modifying of the geometry of the model of the part is based on providing at least one of, a set of loading conditions, a set of performance properties, and a set of variables of interest as an input into a machine learning model, where the machine learning model generates the modified geometry of the model based on ingesting the input. Examples of this are described with respect to FIG. 3, where the modified geometry of the model at interference prediction(s) 309 is made based on ingesting the deployment input(s) original geometry of the model of the part, printer / material attribute(s) of the part, variable(s) of interest of the part, working condition(s) of the part, and / or performance property(s) of the part.

[0072] In some examples, the modifying of the geometry of the model at block 608 includes increasing or decreasing a representation of a contone. The “contone” refers to how much agent is being delivered from the printhead at a particular location. For example, modifying may include delivering a particular quantity of a fusing agent, which may adjust a printed part’ s bonding strength or adhesion to enhance or reduce the cohesion between layers in the printed object.

[0073] In some examples, the modifying at block 608 includes modifying a representation of a conductor (e.g., electrical wire or trace) shape. For example, an increase or decrease of the infill density can be made to change the shape and density of conductive traces within the object. In some example, the modifying at block 608 additionally or alternatively includes modifying a representation of a quantity of conductors (e.g., 3 traces to 5 traces), and / or adding or removing a representation of a layer of build material (e.g., as illustrated by the layers 504-1 of FIG. 5). Alternatively or additionally, in some example, the modifying includes modifying a representation of a support beam, and / or modifying a representation of a lattice. Support beams are used to support complex geometries that would be impossible to print accurately without some form of scaffolding. They prevent deformations or sagging thatcan occur during the printing of these areas, a lattice is a three-dimensional structure made up of interconnected struts or beams that form a repeating geometric pattern. Lattices are often used as infill patterns within the interior of 3D printed objects.

[0074] Per block 610, some aspects print (or cause a printer to print) the part with the modified geometry. For example, referring back to FIG. 5, a printer may take, as input the modified model 504 and print a real-world part that represents the model 504 by doing the following operations. A 3D printer first reads the model 504 (or slices of the model 504 one at a time) and prints each layer of each part by depositing or solidifying material / agents (such as polymer powder, plastic filament, resin, or metal powder) according to the design of that specific layer. The 3D model forms these layers on top of each other to build the part / object from the bottom up. Each layer adheres to the previous one, and this layer-by-layer approach eventually forms the final 3D printed object represented by the model 505. In an illustrative example, a carriage with multiple inkjet printheads passes over a powder bed. In some examples, these printheads apply two different types of liquid agents onto the powder: a fusing agent and a detailing agent. The fusing agent may selectively apply heat to specific areas of the powder bed, causing it to fuse and solidify. In some examples, this agent is applied in a pattern corresponding to the cross-section of the part being printed. The detailing agent may be used to add additional detail and fine features to the part by modifying the surface properties of the powder in selected areas. In some examples, after the agents are applied onto the powder, the entire layer may be exposed to an energy source (e.g., infrared lamps). This energy heats the areas with the fusing agent, causing the powdered material to melt and fuse together. The areas without the fusing agent remain in a loose, powdered state. In some example, these operations are repeated for each layer of the part, with new powder spread on top of the previously solidified layers. The process may be iterative, and the layers gradually build up until the entire part is complete. Once the printing process is finished, the excess loose powder may be removed.

[0075] FIG. 7 depicts a flowchart of another example method 700. Per block 703, aspects simulate a printing process of a part. Examples of this are described with respect to the printing simulator 211. Per block 705, aspects determine a working condition. In some examples, working conditions include any of the working conditions described with respect to the working conditions module 217.1n yet another example, a loading condition may include the amount or type of infills and shells used in printing. Infills and shells are design choices that directly impact the strength, weight, and other performance properties of the printed part.For instance, higher infill densities (e.g., 100%) result in a more solid interior, making the object stronger and more rigid. Further, the number of outer shells or perimeters and their thickness directly affect the object's external surface and its resistance to external forces. More shells increase the part's strength and durability, while thicker shells offer better protection against impacts and external stress. In yet another example, a loading condition can include a continuous fiber field. Continuous fiber field printing is a technique that involves adding continuous strands of high-strength fibers, such as carbon fiber or fiberglass, to the printed parts. Continuous fiber reinforcement significantly enhances the mechanical properties of 3D- printed parts. The fibers add strength, stiffness, and impact resistance performance properties to the parts. This can make them suitable for applications for high structural integrity and durability.

[0076] Per block 707, aspects determine performance properties for a model of the part. 707. In some examples, the performance properties are predicted or determined based on tracking particular variables of interest, as performed by the variable(s) of interest tracker 213. Alternatively or additionally, in some examples, the performance properties are predicted or determined based on the working conditions specified at block 705. In an illustrative example, the durability of a part (a performance property) can be predicted based on a working conditions of a particular part orientation and layer height.

[0077] Per block 709, aspects evaluate the model’s performance based on the performance properties and / or working conditions. For example, as described with respect to the part performance predictor 221, particular aspects determine whether the quantity of strength predicted performance property meets (e.g., falls below or exceeds) a design criteria threshold or other predetermined value that is set based on the working conditions. For instance, the design criteria threshold may be a minimum strength performance value that should be predicted to be considered for the model to perform correctly. Accordingly, any strength value below such value leads to a “no” decision at block 711 and any strength value above such value leads to a “yes” decision at block 711. If the model of the part is performing correctly at block 711, then the part is printed (i.e., an actual physical printing of the part) per block 713.

[0078] If the model of the part is not performing correctly (e.g., it is not meeting the design criteria threshold) at block 711, then aspects modify the model’s geometric characteristic(s) to compensate for the model’s performance per block 715. As described with respect to FIG. 3, a neural network 305 (e.g., a GAN) can learn to generate an accurate model or realistic models Per block 717, particular aspects re-run the printing process simulation (asdescribed with respect to block 703) and blocks 707, 709, and / or 711 are repeated, except that the model of the part refers to the “modified” model of the part in blocks 707, 709, and 711. For example, if a model’s geometric characteristic(s) are modified enough at block 715, then the new modified geometry causes a thermal load (e.g., a variable of interest) of a part to change, which leads to a different set of performance property predictions at block 707 after a printing process has been re-run via block 717. In some examples, the model of the part is continuously generated and modified, such as described with respect to a GAN, where the GAN learns to iteratively generate realistic models via a discriminator and a generator, as described herein. Accordingly, the model is continuously modified in a loop until it meets the design criteria threshold, after which the corresponding part is printed per block 713.

[0079] While various examples of techniques are described herein, the techniques are not limited to the examples. Variations of the examples described herein may be implemented within the scope of the disclosure. For example, operations, functions, aspects, or elements of the examples described herein may be omitted or combined.

Claims

CLAIMS1. A method comprising: identifying a part for which a performance property of the part is prioritized over geometric printing accuracy of the part; subsequent to the identifying of the part, computing a measure of the performance property of the part from an estimated printing process of the part; based on the computing of the measure of the performance property, determining whether the measure of the performance property meets a design criteria threshold; based on the measure of the performance property not meeting the design criteria threshold, modifying a geometry of a model of the part; and printing the part with the modified geometry.

2. The method of claim 1, wherein the identifying of the part for which performance for printing the part is prioritized over geometric accuracy for printing the part is based on one of: receiving, via a user interface, user input that selects a representation of the part, or automatically identifying the part based on training a machine learning model to identify different parts where performance is prioritized over geometric accuracy.

3. The method of claim 1, further comprising receiving, via a user interface, a first user request to set a geometric tolerance level for each part, of the plurality of parts, the geometric tolerance level indicative of a degree of geometric accuracy needed for printing each respective part, wherein the identifying a part for which printing performance of the part is prioritized over printing the part for geometric accuracy is based on the geometric tolerance level set for the part.

4. The method of claim 1, wherein the measure of the performance property includes at least one of: a measure of durability of the part, a measure of flexibility of the part, a measure of strength of the part, a measure of thermal resistance of the part, a measure of chemical resistance of the part, a measure of electrical conductivity of the part, a measure of density of the part, a Coefficient of Thermal Expansion (CTE) of the part, a measure of fatigue resistance of the part, a measure of fracture toughness of the part, or a measure of ductility of the part.

5. The method of claim 1, wherein the computing of the measure of the performance property is based on using a process digital twin model that simulates a printing and cooling process of the part, and further based on using a part digital twin model that takes an output of the process digital twin to generate the model of the part.

6. A computer-readable medium comprising instructions, which when executed by a processor, cause the processor to: track a variable of interest during a printing simulation of a model of a part; based on the tracking of the variable of interest during the printing simulation of the model of the part, determine whether a performance property of the part meets a design criteria threshold; based on whether the performance property meets the design criteria threshold, determine whether to modify a geometry of the model of the part; and cause the part to be printed based on whether the performance property meets the design criteria threshold.

7. The computer-readable medium of claim 6, wherein the printing simulation of the model of the part is based on using a process digital twin model that simulates a printing and cooling process of the part, and further based on using a part digital twin model that takes an output of the process digital twin to generate the model of the part.

8. The computer-readable medium of claim 6, wherein the variable of interest includes at least one of, a measure of porosity of the model of the part, a measure crystallization of the model of the part, a temperature gradient of the model of the part during a cooling phase of the printing simulation, and a temperature gradient of the model of the part during an active printing phase of the printing simulation.

9. The computer-readable medium of claim 6, wherein a computing of the performance property is based on learning, via a machine learning model, a relationship between the variable of interest and the performance property.

10. The computer-readable medium of claim 6, wherein the processor is further caused to cause presentation, at a user interface, of an indication of the variable of interest during the printing simulation of the model of the part.

11. The computer-readable medium of claim 6, wherein the instruction set to cooperate with the processor and the machine-readable storage to further determine to modify the geometry of the model of the part based on the performance property not meeting the design criteria threshold, wherein the modifying of the geometry of the model of the part is based on providing at least one of, a loading condition, the performance property, and the variable of interest as an input into a machine learning model, wherein the machine learning model generates the modified geometry of the model based on ingesting the input.

12. The computer-readable medium of claim 6, wherein the processor is further caused to determine to modify the geometry of the model of the part based on the performance property not meeting the design criteria threshold, and wherein the modifying of the geometry of the model includes at least one of, increasing or decreasing a representation of a contone of an agent, modifying a representation of a conductor shape, modifying a representation of a quantity of conductors, or adding or removing a representation of a layer of build material.

13. The computer-readable medium of claim 6, wherein the determining whether to modify the geometry of the model of the part is based on identifying the part for which the performance property of the part is prioritized over geometric printing accuracy of the part.

14. A system comprising: a memory; and a processor to: identify a part for which a performance property of the part is prioritized over geometric printing accuracy of the part; subsequent to the identifying of the part, compute at least one of, a measure of the performance property of the part, a working condition, or a variable of interest from an estimated printing process of the part; based on the computing, determine whether a design criteria threshold has been met; and based on the design criteria threshold not having been met, modify a geometry of a model of the part.

15. The system of claim 14, wherein the processor is further to: track the variable of interest during a printing simulation of the model of the part; and estimate the measure of the performance property based on the variable of interest.

Citation Information

Patent Citations

  • Thermal behavior prediction from a contone map

    US20210200187A1

  • Method and apparatus for an interactive compliant manufacturing process

    US20230289860A1

Cited By

  • Method and system for intelligently measuring and calculating specification of pre-fine adjustment fastener of ballastless track

    CN121117991A

  • Adaptive object fabrication using enriched voxel-based digital twins and AI-guided material substitution

    US12617155B1