Operator prediction in block representation
The method addresses the ergonomic inefficiencies in designing 3D modeled objects by using a computer-implemented method that combines 3D and 2D representations with machine learning to predict and add operators, enhancing the design process with improved efficiency and accuracy.
Patent Information
- Application Number
- JP2024195313
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-11-07
- Filing Date
- 2024-11-07
- Publication Date
- 2025-06-17
AI Technical Summary
The existing solutions for designing 3D modeled objects representing products to be manufactured lack ergonomic efficiency, particularly in the manual search for operators in 2D block representations.
A computer-implemented method that simultaneously displays a 3D shape representation and a 2D block representation, allowing users to select connectors and use a pre-trained machine learning function to predict and add operators to the 2D block representation, thereby improving the ergonomic design process.
The method enhances the ergonomic design process by providing an efficient way to select and add operators, improving user interaction and reducing manual search efforts, ultimately leading to faster and more accurate design of 3D modeled objects.
Smart Images

Figure 2025090523000001_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to the field of computer programs and systems, and more specifically, to methods, devices, and programs related to predicting one or more operators in a block representation of a product to be manufactured.
Background Art
[0002] Numerous solutions, hardware, and software for object design, engineering, and manufacturing are available in the market. CAD is an acronym for Computer-Aided Design, and for example, it is related to software solutions for designing objects. CAE is an acronym for Computer-Aided Engineering, and for example, it is related to software solutions for analyzing and simulating the physical behavior of future products. CAM is an acronym for Computer-Aided Manufacturing, and for example, it is related to software solutions for defining the manufacturing processes and resources of products. In such computer-aided design solutions, graphical user interfaces play an important role regarding the efficiency of the technology. These technologies can be incorporated into product lifecycle management (PLM) solutions. PLM refers to an engineering strategy that helps companies develop products across the entire concept of the extended enterprise, from concept to end-of-life, by sharing product data, applying common processes, and leveraging the company's knowledge. The PLM solutions provided by Dassault Systèmes (offered under the trademarks of CATIA, SIMULIA, DELMIA, and ENOVIA) provide an engineering hub for organizing product engineering knowledge, a manufacturing hub for managing manufacturing engineering knowledge, and an enterprise hub that enables the integration and connection of the company to both the engineering hub and the manufacturing hub. These solutions all come together to provide a common model that links products, processes, and resources, enables dynamic knowledge-based product creation and decision-making support, and drives optimized product definition, manufacturing preparation, production, and service.
[0003] As part of the CATIA software suite, xGenerative Design is a known web application that enables the design of 3D modeled objects representing products to be manufactured, based on the 2D block representation of the 3D modeled objects. In said application, the user can select one or more connectors of the 2D block representation and then, via a dedicated menu, manually search for new operators that are added to the representation and connected to one or more selected connectors via each arc (plural). Such manual search includes text input into a search bar and / or scrolling through a long and unordered list of operators.
Summary of the Invention
Problems to be Solved by the Invention
[0004] The ergonomics of such a solution need to be improved.
Means for Solving the Problems
[0005] Accordingly, a computer-implemented method for designing a 3D modeled object representing a product to be manufactured is provided. The design method includes simultaneously displaying, by a computer system, a 3D shape representation of the 3D modeled object and a 2D block representation of the 3D modeled object. The 2D block representation includes block nodes, one or more input connectors and output connectors on each respective block node, and each arc between the output connector of the first block node and the corresponding input connector of the second block node.
[0006] Each block node represents each operator within a predetermined set of operators. Each operator of the predetermined set of operators has each data identifier. Each operator of the predetermined set of operators further has one or more inputs and one output. Each input of each operator has each data identifier. The output of each operator has each data identifier.
[0007] For at least one block node, the output of each operator represented by the at least one block node is each set of one or more geometric objects. For the at least one block node, the output of the operator has a dynamic object cardinality, and at least one input of the operator has a dynamic object cardinality. Also, for the at least one block node, the output of the operator has an object type, and optionally the object type of the operator output is dynamic, in which case at least one input of each operator has a dynamic object type.
[0008] Each input connector represents each input of each operator represented by each block node. The output connector represents the output of each operator represented by each block node.
[0009] Each arc represents the data flow from the output connector of the first block node to the corresponding input connector of the second block node.
[0010] The 2D block representation is configured such that a 3D shape representation is output by the execution of the data flow represented by the arcs of the 2D block representation.
[0011] The design method also includes selecting one or more connectors from among at least one block node through graphical interaction with the user's 2D block representation.
[0012] The design method also includes using a pre-trained machine learning function by providing input data to the machine learning function for each selected connector, and outputting a prediction of one or more operators from a predetermined set of operators by the machine learning function. The input data includes at least the data identifier of each operator represented by the block node of each selected connector, the data identifier of each selected connector, and the object type of each selected connector.
[0013] The design method further includes the following: - displaying, by a computer system, a graphical representation of at least one operator of the prediction; - selecting, by a user, an operator from among at least one operator of the prediction; - by a computer system, adding a block node representing the selected operator to the 2D block representation; and updating the display of the 2D block representation by displaying at least the added block node; for each selected connector, adding each arc between each selected connector and each connector of the added block node to the 2D block representation, thereby obtaining an updated 2D block representation; - updating the display of the 2D block representation by displaying at least each added arc; and - executing a data flow represented by the arcs of the updated 2D block representation, thereby outputting an updated 3D shape representation; and - displaying the updated 3D shape representation.
[0014] Such a design method forms an improved solution for designing a 3D modeling object representing a product to be manufactured, which provides ergonomics of a software application that displays a 2D block representation and a 3D shape representation simultaneously, and all graphical user interaction functions provided by this type of application (such as functions where the user interacts graphically with the 2D block representation and selects and edits one or more of the displayed elements). Furthermore, by including pre-trained machine learning capabilities, the design method enables the selection and addition of operators in an auxiliary and thus fast way. And by executing the data flow, the design method enables an ergonomic update of the displayed 3D shape representation, which will ultimately potentially be fed as is into an automated manufacturing process.
[0015] The design method may include one or more of the following: - For each selection connector, the input data of the machine learning function further includes a value corresponding to the object cardinality of each selection connector; - The value corresponding to the object cardinality of each selection connector is a binary value indicating whether the cardinality is 1 or greater than 1; - One or more selected connectors are each composed of one input connector, one output connector, or a plurality of output connectors; - Using a pre-trained machine learning function includes selecting a respective specialized machine learning function according to whether one or more selected connectors are each composed of one input connector, one output connector, or a plurality of output connectors; - The machine learning function is a multi-layer perceptron; and / or - The prediction includes a plurality of operators ranked by probability.
[0016] Furthermore, a computer-implemented method for training a machine learning function usable in the above design method is provided. The training method includes obtaining a data set including training examples and training a machine learning function based on the data set. Each training example includes a prediction input and a prediction output. As the prediction input, for each connector of each set of one or more connectors of each block node representing each operator in a predetermined set of operators, the training example includes that the output of each operator is each set of one or more geometric objects, the data identifier of each operator represented by the block node of each connector, the data identifier of each connector, and the object type of each connector. As the prediction output, the training example includes an operator configured to be represented by a block node connectable via each arc to each connector of each set of one or more connectors.
[0017] The training method may include one or more of the following: - Obtaining the dataset includes obtaining the respective 2D block representations of each 3D modeled object representing each product to be manufactured, and determining training examples in the obtained 2D block representations from patterns, where each pattern includes each set of one or more connectors connected to the same block node via each arc; - For at least one pattern including each set of a plurality of output connectors respectively connected to each input connector of the same block node via each arc, the dataset includes a plurality of training examples respectively corresponding to each element of the power set of each set of the plurality of output connectors; - The machine learning function is configured such that input data is provided for a set of a plurality of output connectors, the input data is ordered according to the order between the output connectors, and the dataset includes a first training example corresponding to a first list of each set of a plurality of output connectors respectively connected to each input connector of the same block node via each arc, and at least one second training example corresponding to a second list of each set of a plurality of output connectors respectively connected to each input connector of the same block node via each arc; and / or - The dataset is normalized.
[0018] Furthermore, a machine learning process is provided that includes a training method and one or more instances of a design method that respectively use the machine learning function obtained by the training method thereafter. Optionally, the training method can be repeated, for example, based on one or more past instances of the design method, for example, by changing (including expanding) the dataset, thereby obtaining an updated machine learning function. The process can include one or more instances of the design method after each such update, and each instance of the design method can be executed using the updated machine learning function.
[0019] Furthermore, a computer program is provided that includes instructions for performing a design method and / or a training method. When executed by a processor, the instructions cause the processor to perform the design method and / or the training method.
[0020] Furthermore, a device is provided that includes a data storage medium on which a computer program is recorded.
[0021] The device can form or serve as a non-transitory computer-readable medium, for example, in SaaS (Software as a Service) or other servers, or cloud-based platforms. The device can alternatively include a processor coupled to the data storage medium. Thus, the device can form a computer system, in whole or in part (for example, the device is a subsystem of the entire system). The system can further include a graphical user interface coupled to the processor.
Brief Description of the Drawings
[0022] Next, non-limiting examples will be described with reference to the accompanying drawings.
[0023]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Mode for Carrying Out the Invention
[0024] Referring to the flowchart of FIG. 1, a computer-implemented method is proposed for designing a 3D modeled object representing a product scheduled for manufacture (i.e., a product being manufactured, or in other words, a product to be manufactured). In the design method of FIG. 1, it involves interacting with a 2D block representation of a 3D modeled object that is displayed by a computer system (e.g., on one or more screens of the computer system or another computer system provided by the computer system) in an improved manner from an ergonomics perspective. The interaction is executed within a software application that runs locally on the computer system or within a web application provided from a (e.g., remote / distributed) computer system to a local workstation. In particular in FIG. 1 of the present disclosure, when an action is shown to be executed by "that" computer system, it should be understood that these actions can actually be executed and / or triggered, at least in part, by such software or web application.
[0025] The design method includes, by a computer system, simultaneously displaying a 3D shape representation of a 3D modeled object and a 2D block representation of the 3D modeled object (S10). Thereby, the user can interact with the 2D block representation while viewing the 3D shape representation at the same time. As is well known, the 2D block representation provides an ergonomic interface for defining and editing parameters related to the shape of the product to be manufactured, while in the 3D shape representation, the user can directly view the final result and visually grasp the exact shape to be finally manufactured. In S10, the design method can display the 3D shape representation and the 2D block representation side by side on the same screen, such as in two separate windows or two separate scenes of the same window, or display them side by side on each of two different screens. Alternatively, in S10, the design method can overlay the 3D shape representation and the 2D block representation so that one is on top of the other, for example, the 2D block representation is on top of the 3D shape representation (e.g., in the foreground of the 3D shape representation) (see, for example, FIG. 3). Although represented by one box in the flowchart of FIG. 1, the simultaneous display in S10 can be performed throughout the rest of the design method, whereby, when an update of the 2D block representation and / or an update of the 3D shape representation is made by each user action of the design method, the content that the user sees on the screen(s) can also be updated. The update of the display in S10 can be performed automatically and / or in real time when the computer system determines an update of the 2D block representation and / or an update of the 3D shape representation (the expression "real time" can refer here, and / or in any other use of this expression in the rest of the present disclosure, to a delay of up to 10 seconds or even 1 second).
[0026] The 2D block representation displayed in S10 includes block nodes, one or more input connectors and output connectors on each block node, and each arc between the output connector of the first block node and the corresponding input connector of the second block node.
[0027] "Block node" means any 2D graphics, such as a block shape, for example, a rectangle or a square, or alternatively any other polygon such as a trapezoid, a circle or an ellipse, or any other type of block that a user can identify as a block. The 2D block representation can be displayed on a background, and different block nodes can be physically separated in the display, for example, with a non-zero gap between each pair of block nodes. A "block node" is a node of a virtual graph, and the virtual graph is composed of blocks as its graph nodes / vertices, and there is a graph arc / edge between two graph nodes if there is at least one arc line (within the 2D block representation) between two corresponding block nodes. This virtual graph can be referred to as "the graph corresponding to the 2D block representation".
[0028] One or more input connectors and output connectors of each block node can be respectively represented by each graphics displayed on each block node, for example, each symbol displayed on each block node. Each block node may include a boundary line, and at least one (for example, each) such graphics (for example, symbol) can be displayed on the boundary line. Each such graphics (for example, symbol) can be smaller than each block node, for example, at least 10 times smaller with respect to the occupied area of the 2D block representation (that is, the area occupied on the screen). Each such graphics (for example, symbol) can be a small and compact symbol, such as a dot, a bullet, or a square, or any other type of shape that the user can distinguish from the block node. Different connectors can be physically separated in terms of display, for example, the gap between each pair of connectors is not zero. One or more input connectors of each block node can all have respective graphics that are visually identical or of the same shape, and the respective graphics can optionally be visually identical or of the same shape with respect to each graphics of the output connector(s) of each block node. Optionally, one or more input connectors of all block nodes can all have respective graphics that are visually identical or of the same shape, and the respective graphics can optionally further be visually identical or of the same shape with the graphics of the output connector(s) of all block nodes. All connectors can be represented, for example, by the same dot symbol. Optionally, all block nodes can be oriented in the same way in the 2D block representation, all input connectors in the 2D block representation can be arranged on the same side of their respective block nodes, for example, on the left side of their respective block nodes, and / or all output connectors in the block representation can be arranged on the same side of their respective block nodes, for example, on the right side of their respective block nodes. For example, all block nodes can be respectively represented by each rectangle (or rectangular shape), and the sides of each rectangle can be oriented parallel to the sides of the screen.All input connectors of each block node may be represented by dots / symbols of the same or identical shape, all are arranged on the left side of the rectangle, and all output connectors may be represented by dots / symbols of the same or identical shape (e.g., the same dot shape / symbol as the input connector), and all are arranged on the right side of the rectangle of their respective block nodes (see, for example, FIG. 3).
[0029] Each arc line may be represented by a respective line that links the graphism / symbol (e.g., dot shape) of the output connector of the first block node and the graphism / symbol (e.g., dot shape) of the corresponding input connector of the second block node.
[0030] Block nodes, connectors, and arcs can each be selectable by a user, for example, by the user interacting graphically with a 2D block representation, specifically by the user interacting graphically with a selectable element to be selected, such as by using a haptic device such as a mouse, or a touchpad, or a touch screen. The system can be configured such that the user can perform such a selection, for example, by clicking a mouse or touching the screen on a block node, connector, or arc, and / or by the user drawing a selection area that includes at least a portion of a block node or arc, or an entire connector (e.g., a graphical selection box or rectangle), optionally, by a select-move-release function (e.g., clicking the mouse or touching the screen at a first position, moving the cursor or the touch on the screen to a second position while maintaining the click or touch, and releasing the click or touch at the second position). Each user selection of a block node, connector, or arc can be automatically tracked in real time by visual feedback such as a visual highlighting of the selected element (e.g., a change in color or a change in intensity or opacity) or a slight movement of the selected element (e.g., bounce feedback). Through such graphical interaction, the user can easily edit 3D modeled objects by operating the 2D block representation, and any selection mentioned in the present disclosure can also be executed accordingly.
[0031] Such a 2D block representation can thus be easily designed and / or edited by the user graphically interacting with the system to instantiate block nodes, move instantiated block nodes via drag-and-drop actions, and / or, for example, select two connectors one by one to instantiate an arc between the connectors and / or drag-and-drop one or more ends of the instantiated arc to clip each end to a connector. Selecting a block node and / or a connector can also trigger, for example, the display of a dialog box containing editable data fields, and the user can input or change values, for example, using a keyboard or a display scroll bar.
[0032] Each block node represents each operator in a predetermined set of operators. "Predetermined" means functional data (here, the set of operators), that is, a part of the computer program instructions forming the application, which is supported by software / applications being executed on or provided to the computer system. "Operator" means a set of computer data configured to obtain input data, process the input data, and provide output data as the result of the processing. Each operator in the predetermined set of operators thereby has one or more inputs and at least one output. Thus, in the block node referred to as being displayed at S10, each input connector represents each input of each operator represented by each block node, and the output connector represents the output of each operator represented by each block node. In addition to any input represented by each input connector, each operator may optionally include one or more internal parameters editable by the user, for example, by the user selecting the operator, the computer system displaying one or more editable value fields, or transitioning a value field already displayed from editable to non-editable (accompanied by visual feedback displayed to the user to notify the transition), and entering or changing at least one value of at least one internal parameter in at least one editable value field.
[0033] Here, the 2D block representation may optionally include non-standard additional block nodes without input connectors, either because the input data of the operator represented by such a block node is not displayed to the user and thus cannot be edited, or because the block node outputs static data rather than dynamic results of an operation. The latter option may apply, for example, to a "reference" block node that may provide a common reference frame 0xyz for the design, and / or to primitive block nodes (integers, floating-point numbers, lengths, etc.) (see, for example, the block node "Length.1" in FIG. 7). Alternatively, such references and primitives may be represented within the block nodes they supply.
[0034] For example, in the case of an operator that receives an integer value as input, this can be represented by a first block node representing the operator, a second block node that outputs an integer, and an arc from the output connector of the second block node to the corresponding input connector of the first block node. The second block node can be an instantiation of a general-purpose integer block node, and the user can parameterize the block node to define an integer value. This enables the reuse of the second block node. Alternatively, instead of such a second block node, the integer value can be directly defined within the first block node as an internal parameter (see, for example, the data field 400 in FIG. 4 where a length value can be directly input). Graphisms similar or identical or of the same shape as the graphisms of the input connector(s) can be displayed on the first block node, which are selectable by the user, and by selecting the graphism and entering or changing a value in the corresponding editable data field as described above, such parameterization can be performed.
[0035] Furthermore, or alternatively, the 2D block representation may optionally include one or more block nodes, each having one or more input connectors, any of which may optionally be connected via arcs to output connectors (for incoming data flow) or left unconnected and made selectable for the user to directly input data values at the input connectors. This provides flexibility to the user.
[0036] Furthermore, or alternatively, the 2D block representation may optionally include non-standard additional block nodes that do not have output connectors. This may apply, for example, in the case of a "watch" block node, where the 3D shape of a "partial result" can be monitored at a specific output connector of the 2D block representation. The output of such a block node is the said partial 3D shape and need only be displayed to the user, for example, upon selection of the block node and is not intended to be input to any other block node.
[0037] In addition, one or more (standard and / or non-standard) block nodes in the 2D block representation may each include a plurality of output connectors, rather than just one output connector. Each such output connector may be individually selectable by a user, for example, by graphically interacting with the output connector. Thus, in the present disclosure, when the expressions "output" or "output connector" are applied to a given operator or block node, if the given operator or block node includes a plurality of outputs or output connectors, it should be understood to refer to one of the outputs or one of the output connectors. The outputs of each such given operator or corresponding block node, and the corresponding output connectors, may follow a predetermined order, and at least one output or output connector is defined as the unique and primary output or output connector. In case of ambiguity, when the expressions "output" or "output connector" are applied to a given operator or block node, it refers to such primary output or primary output connector. According to some examples, the design method may include, for example, at S20, selecting one or more output connectors without focusing on the individual output connector(s) selected by graphically interacting with each of its block nodes. In such a case, the computer system may directly interpret the selection of each block node as the selection of its primary output connector.
[0038] In software / applications, each operator of a given set of operators has its own data identifier, i.e., it is referenced by a unique data index, name, or label that can be pointed to in order to instantiate the operator in one instance of a 2D block representation such as the 2D block representation shown in S10. Each input of each operator further has its own data identifier, and similarly, each output of each operator has its own data identifier. With such identifiers, in the 2D block representation instantiation shown in S10, data flow / circulation can be organized, data is marked / identified and input to the marked / identified operator, and marked / identified output data is generated, which can then flow to any other process such as another operator. The operator identifier, input identifier, and output identifier can form one or more indexes. For example, the software / application can manage three indexes including a first index for storing operator identifiers, a second index for storing input identifiers, and a third index for storing output identifiers. In other words, each identifier is an index value (e.g., an integer) from its respective index (e.g., optionally consecutive and / or a set of integers from 1 to N). Indexing the input (each output) connectors on the set of all input (each output) connectors across all operators of a given set rather than within each individual operator allows for a clear differentiation between the input (each output) connectors and also enhances the prediction S40.
[0039] Each arc is between each pair of connectors, specifically, from the (starting) output connector of the first (starting) block node to the (ending) input connector of the second (ending) block node. Each arc represents the data flow from the output connector of the first block node to the corresponding input connector of the second block node. Since each block node represents an operator (which may be static, i.e., only receiving internal parameters as inputs), each output connector of each block node represents the data value output by the operator. The arc originating from the connector represents the flow or circulation of the data value towards the input connector where the arc arrives. This is interpreted by the application as the intention that the output data value of the output connector is input as the input of the second block node at the input connector.
[0040] The same output connector can be the starting point of multiple arcs, which means that the data output at the output connector flows to multiple destinations (multiple input connectors of other block nodes). Each input connector can (for example, in most cases) be the end of at most one arc to avoid ambiguity. Alternatively, some input connectors can receive multiple incoming arcs under certain conditions in some cases, which is interpreted as the reception of a collection of objects. Optionally, as will be explained in more detail later, each input connector can receive a collection of objects via a single arc (see, for example, the arc marked "Size: 3" in Figure 3, indicating that a collection of three objects is incoming via a single arc). Further optionally, at least some input connectors can be made dynamically replicable to increase the potential data flow of objects of the same nature. Such replication may involve the addition of specific graphisms (see, for example, the input connector "pts" of the block node "Spline.1" in Figure 3, where a dotted line surrounds the connector to indicate such replication).
[0041] Therefore, the 2D block representation is configured to correspond to data processing in which the execution of the data flow represented by the arcs of the 2D block representation starts from one or more root block nodes (i.e., block nodes that do not have an input connector or arcs connecting any input connector of the node to an input connector), follows the data flow represented by the arcs in the direction of the arcs, and processes data sequentially and / or in parallel (depending on the structure of the 2D block representation) according to the operators represented by each encountered block node. The 2D block representation actually represents a global operation, which corresponds to a composite function of operators defined by the arrangement of the arcs connecting pairs of connectors of the block nodes. The execution of the data flow corresponds to the evaluation of the composite function.
[0042] The execution of the data flow can be performed by the data flow engine of the application. The execution of the data flow may particularly include compiling the data flow represented by the 2D block representation into a series of operations including operators, inputs, internal parameters, and outputs as defined by the 2D block representation. The compilation may simplify the calculation according to predetermined rules, whereby the series of operations yields the same result as the data flow itself but does not follow it step by step. This is standard in algorithm compilation technology. The 2D block representation displayed at S10 and the updated 2D block representation executed at S110 are each consistent (i.e., compilable), whereby the data flow engine effectively succeeds in compilation. This can be ensured by the logical consistency of each in the 2D block representation and / or by the data flow engine being configured to resolve any logical inconsistencies based on, for example, predetermined (e.g., arbitrary) rules.
[0043] In the example, the data processing / flow represented by the 2D block representation is finite, which is because, for example, the 2D block representation does not include cycles, that is, it does not include a path of arcs starting from one output connector and reaching the same output connector. Furthermore, the graph corresponding to the 2D block representation can be acyclic. While the user is designing a 3D modeling object by designing a 2D block representation, if the user tries to create such a cycle, the computer system may output an alert indicating a compilation error or even prohibit the creation of the cycle. Alternatively, such a cycle may be permitted, but specific rules apply regarding the interpretation of the implicit data flow, whereby it can be made finite. For example, a given set of operators includes a loop operator and can generate values according to some loop / iteration algorithm. A retroactive effect may be permitted for such an operator, which can thus result in an arc cycle. The loop operator may have a value controlling the number of iterations / generations as an input or internal parameter, whereby it is finite and thus stable.
[0044] Alternatively, or in addition, each input connector may be connected to the arc such that data effectively flows into the input connector, and / or each input connector may have a default value that is used if the arc does not reach the input connector. The default value may optionally be a null value, for example, if the input represented by the input connector is optional when evaluating the operator of the block node. Similarly, any operator that includes an internally editable parameter may have a default value for the parameter that is used to evaluate the operator if the user does not enter any specific value. When one or more null values are entered, the block node may evaluate the operator using the one or more null values or may ignore them (for example, a line operator may optionally have a support plane for the line as an optional input, but since the line can be drawn using only two points as inputs, this may be optional), or instead, replace them with the default value of the associated default connector(s) and / or internal parameter(s), or further instead, indicate an error and / or non-evaluation of the operator (for example, and / or output an "empty" value), for example, if the input is considered mandatory. For example, a given set of operators may include a point operator by coordinates, which consists of outputting a geometric point with coordinates (x, y, z) relative to a reference frame based on the input lengths x, y, and z. The default value for all length input connectors x, y, and z of the block node representing the point operator by coordinates may be 0 mm. If any of the input connectors x, y, z are not linked to any incoming arc supplying a data value to the input connector, or if a null value is supplied to the input connector, the point operator by coordinates may use the default 0 mm value.
[0045] If a logical inconsistency is introduced, or is to be introduced, in the 2D block representation, the data flow engine may automatically resolve it in a pre-determined manner, output an alert, and / or prevent the introduction of the inconsistency.
[0046] For at least one particular block node (hereinafter referred to as a "geometric" block node), for example, for all block nodes of a 2D block representation, the (main) output of each operator represented by such a block node is a respective set of one or more geometric objects, that is, a set of objects each representing geometry. A "geometric" block node can be essentially such, that is, because it is designed to systematically output geometry, or because of the nature of its input(s) in a 2D block representation. For example, such an input is geometric and the operator represented by the "geometric" block node does not change this geometric property. A given set of operators can in particular include a list creation operator for creating a list of input objects. If the input objects of an operator are geometric, the corresponding block node is considered geometric in the 2D block representation.
[0047] According to such geometric block nodes, the 2D block representation is configured such that, by execution of the data flow represented by the arcs of the 2D block representation, a 3D shape representation, particularly that displayed at S10 or S120, is output.
[0048] This disclosure provides an explanation focused on geometric block nodes (i.e., block nodes within at least one of the above - specified particular block nodes), but it can be equally applicable to other types of block nodes. In particular, selection S20 is presented as being within at least one geometric block node. Instead, the user can, at S20, perform selections not only within at least one geometric block node but also outside at least one geometric block node, and the remaining part of the method in FIG. 1, in particular, for example, since non - geometric operators are included within the dataset used in the pre - training of machine learning, the prediction output at S40 can still be executed. However, this discussion focuses on how the design method can be useful when a designer models 3D shapes that will ultimately be produced in the real world through manufacturing, and thus the emphasis is placed on the case of geometric block nodes.
[0049] Referring to object - oriented programming, an application manages a set of predetermined object types and one instance of an object type within the set of predetermined object types. Each object type can be identified by a unique label, marker, or index within the application. At least some of the object types are geometric object types. The 2D block representation instantiates objects within the set of predetermined object types. Each value entered by the user, for example, the internal parameter value of a given block node, is an instance of an object type. Each output value provided by the output connector of any block node and then input to an input connector is an object instance or a collection of object instances, and each object instance is one of the object types.
[0050] For each block node (at least) each geometric block node, i.e., each output of the operator represented by the block node is a set of one or more geometric objects, for each block node within at least one block node, the output of said operator (at each output connector) has a dynamic object cardinality. Optionally, the output of the operator of one or more non-geometric block nodes may also have such a dynamic object cardinality. In other words, the output provided at each output connector by such a block node may vary according to the value of one or more internal parameters of the operator provided by the block node and / or the value and / or cardinality of one or more inputs of the operator provided by the block node, and may include a number of object instances. Thus, the block node may output a unique object or a collection of multiple objects at each output connector depending on the situation.
[0051] For example, a given set of operators may include a sequence operator, which is designed to output a list of one or more integers depending on the input values of the sequence operator, and its input may include a lower bound "inf", an upper bound "sup", and a number of integers "nb" to be added to the list. The given set of operators may further or alternatively include a mesh - vertex operator, which consists of outputting all the vertices (i.e., geometric points) of the input mesh as a list. The given set of operators may further or alternatively include a list creation (or list construction) operator, which consists of creating a list from one or more inputs provided to the corresponding block node. Even in exceptional situations where, by a single input and / or parameter value, an operator can be made to output a unique (i.e., single) object rather than a collection (for example, when an integer value equal to 1 is input to the "nb" input connector at the block node of the sequence operator, which is "under - resourced" but can be a permitted use of the operator), such operators are designed and intended to output a collection of objects of variable number (i.e., the current instance of the 2D block representation, especially the dynamic number when it depends on its data flow at the position of the relevant block node).
[0052] Other examples of operators that a given set of operators may further or alternatively include, rather operators that are intended to output a collection of objects of dynamic cardinality, include the following known operators: rectangle - grid operator (places points on a plane in a rectangular pattern), grid - UV operator (places points on a surface), color - gradient operator, split - string operator, normal - rand operator, sampling operator (provides sampling of points in space), mesh - edge operator and / or mesh - face operator (outputs the edges and / or faces of a mesh), get - item operator, deepening operator, and / or flattening operator.
[0053] The associated output connectors of the above operator may be marked with a "collection" label indicating such an intended output that is a collection of objects rather than a unique object in a computer system (application). Conversely, output connectors primarily designed to output a single object may be marked with a "unique" label indicating such an intended output of a unique object. This marking can be performed in any way, such as by a database that associates output identifiers with each label, for example.
[0054] Furthermore, for at least each geometric block node, and optionally at least one (e.g., each) non - geometric block node, at least one (e.g., each) input of the operator may have a dynamic object cardinality. In other words, the corresponding input connector is configured to receive the number of object instances that can vary according to the starting point of the incoming arc. The operator may be configured to assume such a collection and thereby process the collection of input objects as a whole. Thus, each such input connector may be associated with a "collection" label or a "unique" label accordingly.
[0055] For example, a given set of operators may include a spline operator and / or a polyline operator, each of which is configured to receive a list of points as input and output a spline curve controlled by the list of points or a polyline that links the list of points. In such an example, the operator assumes a list of points as input and thereby processes the collection at once to provide one output geometric object.
[0056] However, an application can be configured to manage the data flow of a collection even if the connector is intended for a unique object. This can apply to all connectors of geometric (and optionally even non-geometric) block nodes. The connectors remain labeled as "unique", but depending on the data flow, they can be traversed by a collection of objects rather than a unique object. This behavior can also apply to connectors that assume a collection, whereby in this case, each connector checks that a collection among multiple collections is flowing through them.
[0057] In particular, an operator may be designed to process a single / unique object as input, and a computer system (e.g., a dataflow engine) may be configured to interpret the dataflow of a collection of input objects (instead of just one unique object) as multiple calls to the operator in order to ensure compilation. In other words, the operator may treat each object in the input collection as one single / unique input, compute each output, and thereby output a collection of corresponding output objects. A computer system (e.g., a dataflow engine) may be configured to accept only the presence of a collection of N objects at one input connector and each unique object at one or more other input connectors (e.g., at compile time), and then use each object of that collection of input connectors each time and each unique object of each other input connector each time to evaluate the operator N times, thereby outputting a collection of N output objects. Alternatively, a computer system (e.g., a dataflow engine) may be configured to accept the presence of a collection of N objects at one input connector (e.g., at compile time) and potentially accept the presence of a collection of objects at one or more other input connectors, in which case the collection must also necessarily have N cardinalities. The execution of the dataflow may still evaluate the operator N times in such a case, each time obtaining an input object from each collection using an index i from 1 to N and using each unique object for each of the remaining input connectors (which do not have a collection of inputs), thereby outputting a collection of N output objects. If the input cardinalities are different, the system may output an alert and fail compilation.
[0058] For example, a given set of operators may include point operators by coordinates as described above. Instead of a single value, a list of N length values x1, …, xN may be supplied to the input connector x, and a single value y1 and a single value z1 may be supplied to the other input connectors. In such a case, the operator outputs a collection of N points (x1, y1, z1), …, (xN, y1, z1). The same operator may be supplied with a list of N length values x1, …, xN for the x input connector, a list of N length values y1, …, yN for the y input connector, and a single value z1 for the z input connector. In such a case, the output of the block node may be the following collection of N points (since the data flow engine optionally supports this situation): (x1, y1, z1), …, (xN, yN, z1), where xi is always equal to yi. If the cardinalities of the two lists x1, …, xN and y1, …, yN are not the same, the system outputs an alert and compilation fails.
[0059] Next, such a collection of points may be input to an operator that expects a collection of points, such as the spline or polyline operator described above. In the example, an operator that expects a collection of objects, such as a spline or polyline operator, may receive as input a collection out of a plurality of collections of objects. The operator may be evaluated separately for each collection of objects. In the case of the spline operator, the block node receives a collection of lists of points. Each list of points generates a respective spline. Thus, the block node outputs a collection of splines.
[0060] Such dynamic object cardinality management provides high ergonomics for 2D block representations, as it allows for generating a collection of geometries using a small number of blocks. In particular, 2D block representations can be configured to be able to input data into each input connector of each geometric operator block node using dynamic object cardinality as needed. This provides the user with high flexibility for generating complex patterns that include a collection of objects.
[0061] Regarding the combination of object-oriented programming and the concept of "type" or "data type" in computer programming, an application manages typed objects, that is, each object flowing along the arc from the input connector to the output connector, that is, each object passing through or received at the input or output connector has a data / object type within a predetermined set of object types. Each operator assumes objects within one or more possible object types as inputs, and each operator outputs objects of one or more possible object types depending on the operator, the internal parameter values of the operator, and the object types of the input(s) of the operator. For example, the assumed object type of a point operator based on the coordinates of each input connector x, y, or z is a length object type. The assumed object type of the (main) input connector of a spline operator is a point object type, as it is assumed that the spline operator receives a collection of points and traces a curve passing through the points. As can be seen, the assumed types exist in addition to the assumed cardinality. Input connectors can assume the same object type as another input connector, but the two connectors can assume different cardinalities. Thus, all connectors can be marked with a label indicating their assumed object type.
[0062] Thus, all connectors (inputs or outputs) in a 2D block representation can have a static (i.e., pre-defined) cardinality value and a static (i.e., pre-defined) object type. The static cardinality and the static object type are information that already exists at the time of the initial creation of the 2D block representation and are stored (persistently throughout the design session, even if changes are made to the 2D block representation) in a database (e.g., non-volatile memory) that generally associates connector identifiers with such information.
[0063] The static cardinality value is a value that depends on the object cardinality intended for the connector. Optionally, it can be a binary value indicating whether the cardinality is 1 or greater than 1, i.e., information indicating whether the connector is intended for a unique / single object to pass through the connector or for a collection of (multiple) objects. Such a binary value improves the accuracy of prediction S40 because the prediction can depend significantly on whether the cardinality is 1 or greater than 1 rather than on the exact number of objects when the cardinality is greater than 1.
[0064] The static object type is information indicating the object type within a given set of object types that the connector intends. The given set of object types can include general object types to manage cases where the same operator may intend different possible specific object types.
[0065] Thus, the static cardinality value and the static object type do not depend on the specific use of the connector in the 2D block representation being designed.
[0066] Thus, in addition to such static values, all connectors (inputs or outputs) of the 2D block representation can have usage (e.g., dynamic) cardinality values, and usage (e.g., dynamic) object types, which are referred to as "internal" cardinality / types or "evaluated" cardinality / types as opposed to "pre-defined" (also referred to as "defined") cardinality / types. The usage or dynamic object cardinality and the usage or dynamic object type are information that depends on the current structure of the 2D block representation being designed, and they can be calculated, for example, from the 2D block representation as needed, or alternatively, they can be calculated in a volatile manner and stored in a volatile memory such as RAM (they can be read immediately as needed throughout the design session, but updated when changes to the 2D block representation that affect the values occur).
[0067] The usage or dynamic cardinality value is a value that depends on the effective object cardinality of the connector in the current 2D block representation when it is instantiated. The usage or dynamic cardinality value can correspond to the static cardinality value (i.e., is defined in the same domain). Thus, optionally, it can be a binary value indicating whether the usage or dynamic cardinality is 1 or greater than 1.
[0068] As described previously, connectors having static cardinality values indicating that the connector assumes a collection (e.g., the "points" input connector of a spline operator block node, or the integer list output connector of a sequence operator block node) can have different usage cardinality values. For example, an integer list output connector can output a single integer if the input / parameter of the sequence operator block node indicating the number of integers to be output is set to 1. In such a case, the sequence operator block node may be used "under capacity", which may be permitted by the data flow engine. Conversely, the data flow engine may prohibit (prevent and / or alert output) a spline operator with a unique point input at its point list input connector. Thus, when the cardinality value is a binary value, the usage cardinality value is not dynamic, because it is equal to the static cardinality value, i.e., a value indicating that the usage cardinality is greater than 1.
[0069] The usage or dynamic object type is information indicating the object type within a given set of object types through which the connector flows. For at least one output connector of a geometric block node, and optionally for at least one output connector of a non-geometric block node as well, the output of the operator has an object type that is dynamic, i.e., it is variable depending on the current instance of the 2D block representation. In particular, at least one input of each operator can have a dynamic object type, whereby different types of objects can be supplied to the corresponding input connectors of each block node. The object type at the output connector (i.e., the type of the object output at the connector) then depends on the input object type and can vary as a function thereof.
[0070] For example, a given set of operators may include one or more transformation operators, one or more extraction operators, and / or one or more list assembly operators. Such operators are operators that are directed to operate on them while preserving the type rather than affecting the type of their input. Since the operation of such operators does not depend on the type of the input object, they may be permitted to be input with different object types. A given set of operators may include, for example, any one or any combination of the following operators: a translation operator that translates a geometric object, a rotation operator that rotates a geometric object, a scale operator that scales a geometric object, an assembly operator that assembles geometric objects together, a sub-element operator that extracts sub-parts of an object, a boundary operator that extracts the boundary of a geometric object (for example, a boundary curve if the object is a surface, a boundary surface if the object is a volume), and / or a list construction (or list creation) operator that constructs a list from a plurality of input objects. Each such operator block node may have a dynamic input connector and, correspondingly, a dynamic output connector. The object type of the output connector may vary depending on the object type of the input connector that accepts different object types.
[0071] Conversely, a given set of operators may include one or more geometric operators that do not output any dynamic object type. For such operators, the usage / internal object type of the output connector will always be the same as the static / defined object type of the output connector. This is particularly true for geometric operators that generate geometry from scratch. A given set of operators may include, for example, any one or any combination of the following geometry generation operators: one or more point generation operators that always output points (such as point operators by coordinates), circle generation operators, one or more curve generation operators, line generation operators, sphere generation operators, plane generation operators, mesh generation operators, spline generation operators (as described above), and / or polyline generation operators (as described above). The output in such cases will always be something stationary within a given set of object types (e.g., geometric point object type, geometric line object type, or geometric plane object type).
[0072] Since the 2D block representation may include at least one input connector corresponding to an input having a dynamic object type, a given set of object types includes one or more first object types, each of which is compatible with one or more second object types. The fact that a first object type is compatible with a second object type means that an input connector having the second object type as its static object type can also accept the input data of the first object type. The compatibility relationship is not necessarily symmetric.
[0073] For example, a translation operator may be assumed to have an input in which an object of a general geometric object (or geometry) type is translated, but the operator may have an input of a more specific type of object, such as an object of a geometric curve type. The translation operator can actually translate the curve without problems. As another example, a point operator by coordinates may have a length type as the static object type of its x, y, and z input connectors, but each of these input connectors can accept an object of a real number type (i.e., a real number) or an object of an integer type (i.e., an integer), and such an input object can be interpreted as a length equal to an input value assigned a predetermined length unit such as meters or millimeters.
[0074] A set of predetermined object types can form an object type tree, and the tree has, for example, connections and / or has only a single root node. Thus, all object types are organized in a tree structure according to a parent-child relationship, and the child type is a specific subtype of its direct parent type. In other words, the parent type is more general and encompasses its child types. Thus, an object of a child type represents all the attributes of an object of the parent type, and thereby, an object of the child type can be used as is (i.e., without conversion) in an operation that assumes the parent type. In such a case, each non-leaf object type is dynamic, that is, a connector having the non-leaf object type as its static object type will have a dynamic object type. In particular, each descendant (such as a child or a grandchild, a child of a child) object type of the non-leaf object type is compatible with the non-leaf object type. This is the case, for example, for the translation operator described above, because the curve object type can be a descendant (e.g., a child) of the geometry object type. Due to such compatibility, an operator that accepts a general object type depending on the situation (e.g., a geometric operator that does not affect the types shown above) can be used.
[0075] In a tree, the parent node of a given node is the node from which an arc starts and reaches the given node (all arcs are directed). The descendant nodes of a given node are the nodes that can be reached from the given node by a continuous path of one or more arcs.
[0076] A given object type set (e.g., a tree) may include any one or any combination (e.g., all) of the following types of lists: - General or undefined (e.g., root) types (optionally, a given operator set may include one or more operators (e.g., a list creation operator) that have the general type as their static object type); - Literal types, geometry or geometric object types, and matrix types (e.g., when the root type is a parent or ancestor); - Real types, string types, and boolean types (e.g., when the literal type is a parent or ancestor); - Point types, curve types, surface types, and volume types (e.g., when the geometry type is a parent or ancestor); - Vector types (e.g., when the matrix type is a parent or ancestor); - Integer types and size types (the size type has a length type and an angle type as children) (e.g., when the real root type is a parent or ancestor); - Line types (e.g., when the curve type is a parent or ancestor), and - Plane types (e.g., when the surface type is a parent or ancestor).
[0077] Therefore, at least a part of the tree may be composed of the following object type structures, and the indentation represents the parent - child relationship: Undefined / root / general Literal Real Integer Size Length Angle String Boolean value Geometry / Geometric object Point Curve Line Surface Plane Volume Matrix Vector
[0078] The 2D block representation displayed in S10 may include at least one connector for each type of any one or any combination (e.g., all) of the list of types, where the static / defined type is each type.
[0079] Furthermore, or alternatively, if a set of predetermined types is a tree, the 2D block representation may include at least one connector for each leaf type of any one or any combination (e.g., all) of the list of types, where the usage / internal type is each type.
[0080] Furthermore, or alternatively, a given object type set (e.g., a tree) may include one or more first object types, each of which is convertible to one or more second object types. Each such first object type convertible to a second object type may be different from, and may not be a child or descendant of, each such second object type. However, a first object type may be an ancestor (i.e., a parent or forebear) of a second object type. "Convertible" means that the computer system / application / data flow engine includes each conversion algorithm configured to turn / convert each such first object type into each such second object type. Thus, the algorithm / conversion may be executed each time an object of a first object type is input into an input connector that assumes (has as a static object type) an object of a second object type. As a result, each first object type convertible to a second object type is thereby compatible with each such second object type. This is the case, for example, with an integer object type or a real number object type, both of which may be converted to a length object type. As described above, in such a case, a given algorithm may be configured to simply take the input integer or real number value and assign a given length unit to the value. Such compatibility provides the user with flexibility when creating arcs between connectors without requiring an exact type match or being restricted to descendants. This can prove to be very ergonomic since it becomes difficult for the user to always select the only permitted object type regardless of the situation when a pre-determined object type set may include more than 10, 50, or 100 different object types.
[0081] By convention, the dynamic object type of a collection of objects of different object types is the object type of the nearest ancestor in the tree common to all object types in the collection.
[0082] A system (e.g., a data flow engine) may support, for example, any one or any combination (e.g., all) of the following conversion rules: - A real number type is convertible to an integer type (e.g., using the floor or ceiling function), to a length type (e.g., by adding units that can systematically become metric units), and / or to an angle type (e.g., by adding radians). - An integer type is convertible to a length type (e.g., by adding units that can systematically become meter or millimeter units), and / or to an angle type (e.g., by adding radians). - A boolean type is convertible to an integer type (e.g., True is converted to 1 and False is converted to 0). - A point type is convertible to a vector type (e.g., the coordinates of the point simply become the coordinates of the vector). - A curve type is convertible to a plane type, optionally only if the curve is planar, and an error is output otherwise (e.g., by obtaining any plane containing the plane or the curve). - A line type is convertible to a vector type (e.g., by directly obtaining a unit vector along the line). - A plane type is convertible to a vector type (e.g., by obtaining a unit vector perpendicular to the plane), to a line type (e.g., by obtaining an infinite line perpendicular to the plane), and to a matrix type (e.g., by considering a 4x4 transformation matrix (the geometry containing the plane is oriented, the first column of the matrix represents the X direction of the plane, the second column represents the Y direction of the plane, the third column represents the Z direction of the plane, and the fourth column represents the position of the origin O of the plane, and such a transformation can be useful for easily representing a change of frame)), and / or - A volume type is convertible to a surface type (e.g., by obtaining the boundary surface of the volume).
[0083] The 2D block representation shown in S10 may include at least one occurrence of each convertibility of the list (i.e., at least once, the object is converted according to each rule at the input connector).
[0084] The system / application / engine may be configured such that the first object type is compatible with the second object type only if the first object type is a descendant of the second object type or the first object type is convertible to the second object type. Otherwise, and if the first object type is not identical to the second object type, the system may output an error indicating incompatibility. This imposes constraints on the design and avoids ambiguity.
[0085] Continuing to refer to FIG. 1, the design method may include, after and / or during the display S10, for example as described above, the user graphically interacting with the 2D block representation to perform a selection of one or more geometric connectors (each connector being an input or output connector of a geometric block node) (S20). Here, the case of a geometric design where the user shapes the product intended for final manufacture is described, but the same type of user interaction may also be supported for non-geometric designs.
[0086] The selection performed in S20 may include the user graphically manipulating one or more connectors, for example the user clicking or touching one or more connectors one after the other. Alternatively, the selection performed in S20 may include the user graphically manipulating one or more block nodes that are perhaps located elsewhere than at the connectors shown at the block nodes. The system may then interpret such an action as a selection of one corresponding connector (e.g., the (main) output connector) per selected block node. The system may optionally support both options. In the example, the design method is repeated including implementing the first alternative at least once and implementing the second alternative at least once.
[0087] The design method may include various actions using a pre-trained (i.e., already trained / learned) machine learning function, such as a pre-trained deep learning neural network. These actions may be automatically (i.e., immediately, as a direct result) triggered when the user performs a selection at S20, or alternatively may be automatically triggered when the user subsequently activates a specific function of the system.
[0088] The selection at S20 may be, for example, the selection of one or more output connectors of each block node by such one or more block nodes. The one or more block nodes may optionally each have only one output connector.
[0089] The design method particularly includes providing the input data necessary to evaluate the machine learning function to the machine learning function (S30). Thus, the machine learning function can then be evaluated using such input data.
[0090] The input data depends on the selections made in S20, and the input data includes, for each selected connector (i.e., for each selected connector), the data identifier (e.g., index) of each operator represented by the block nodes of the selected connector, the data identifier (e.g., index) of each selected connector, and at least the object type of each selected connector (e.g., the index in the indexing of a predetermined set of object types). With such data, the machine learning function can, in S40, output predictions for one or more operators from a predetermined set of operators. The prediction can be a system's speculation about one or more operators that the user may want to instantiate next at this stage of the design method. The prediction can output a single operator, such as the most likely operator among all operators in a predetermined set of operators, or a plurality of operators ranked (e.g., in descending order) according to the likelihood that the user wants to instantiate them. Thus, the machine learning function assists the user in the design method, particularly by proposing one or more operators at various stages of the design, thereby eliminating the need for the user to systematically search for operators that are conventionally instantiated in a completely manual and cumbersome manner. Since the predetermined set of operators can include various operators exceeding 50, 100, or 200, it can be seen that this is very ergonomic.
[0091] To improve the accuracy / usefulness of the prediction, the input data of the machine learning function provided in S30 can further include, for each selected connector, a value that depends on the object cardinality of each selected connector, for example, a binary value indicating whether the cardinality is 1 or greater than 1. In other words, the prediction can take into account, as input, the fact that the data flowing through the selected connector(s) is rather a unique object or a collection of objects for each connector. In 2D block programming applications that allow such collections, this can significantly affect, particularly dynamically, the nature of the operators that the user may want to instantiate next.
[0092] Among the input data provided at S30 for each respective connector selected at S20, the usage / internal (e.g., dynamic) object type and / or the usage / internal (e.g., dynamic) object cardinality (e.g., binary) value can be known for at least one each of the connectors, because each connector is an output connector of a block node from which data actually flows, i.e., it is being evaluated or can be evaluated. In such a case, the object type and / or the object cardinality value provided at S30 for each of said at least one connector can each be a usage / internal (e.g., dynamic) object type and / or a usage / internal (e.g., dynamic) object cardinality value.
[0093] In particular, for at least one output connector selected at S20, the output connector can support the dynamics of the object type and / or the object cardinality (e.g., binary) value. Thus the method can be repeated with the same 2D block representation or a different 2D block representation, and the input data provided at S30 is the same for each repetition, but the object type and / or the object cardinality of at least one selected connector are dynamic values. In such a case, the method can generate different predictions at S40.
[0094] For example, if the user selects only the outputs of translational operator block nodes that are correctly connected with their input connectors at S20 and are thus evaluated / evaluable, the input data provided to the machine learning function at S30 and thus the predictions output at S40 can vary depending on the dynamic values of the object type and the dynamic values of the object cardinality value of the selected output. If the translational operator block node outputs a unique point, a collection of points, a unique curve, or a collection of curves, the predictions can be particularly different. Depending on whether a unique point, a collection of points, a unique curve, or a collection of curves is input to the block node, four cases can definitely occur for the same translational operator. The data identifier of each operator and the data identifier of each selected connector are the same in all four cases (the identifier of the translational operator and the identifier of the output geometry (the only output) of the translational operator). However, the four cases can all generate different predictions, which is because it is unlikely that the user wants to perform the same operation on the outputs of the four cases. For example, if the output is a unique point, the user may want to use it to draw a line in combination with another point. In such a case, the line operator needs to be predicted as the operator the user will need next. If the output is a collection of points, the user may want to use the collection of points to draw a polyline or a spline. In such a case, such spline and polyline operators need to be predicted as the operators the user will need next.
[0095] At S20, the user may select one or more connectors with unknown usage / internal (e.g., dynamic) object type and / or usage / internal (e.g., dynamic) object cardinality (e.g., binary) values. Such one or more connectors may include, for example, one or more input connectors (not yet connected to anything via an arc as the user intends to use prediction to perform the next connection), and / or one or more output connectors for each block node that cannot yet be evaluated due to lack of data (the essential input connectors of the block node are not supplied with a data flow, e.g., a translation block node that has not yet received input geometry). In such a case, for each such connector, the object type and / or object cardinality (e.g., binary) value provided to the machine learning function at S30 can be the static / defined object type and / or static / defined object cardinality (e.g., binary) value of the connector. This enables predictions to be made for input connectors or unevaluated output connectors, thus assisting the user even in such situations.
[0096] One or more connectors selected at S20 can be composed of either one (only one) input connector (not connected to any arc), one (only one) output connector (connected to an arc or not connected to any arc), or multiple output connectors (e.g., each being of a different block node and / or with any potential combination of connection or non - connection to arcs, e.g., each connected to each arc, not connected to any arc, or some connected and some not connected). The system can support any of these three types of selections at S20, whereby the design method can be repeated such that a selection of each type of selection (e.g., each presented arc - connection modality) occurs at least once. In the design process of the 2D block representation, the user can actually select a single input connector in sequence and then create a new block node connected to the input connector, or select a single output connector and then create a new block node connected to the output connector, or further select multiple output connectors of different block nodes and then create a new block node connected to the multiple selections. The prediction at S40 can assist the user in any of these general design situations.
[0097] Optionally, the design method may include selecting respective specialized machine learning functions according to whether one or more selected connectors are composed of one input connector, one output connector, or a plurality of output connectors. In other words, the system may support three pre-trained machine learning functions specialized for each of the three types of selections. Subsequently, the machine learning functions specialized for each scenario are used. "Specialized" means that the pre-training of the machine learning function is basically performed on training examples corresponding to the situation in which the machine learning function is used. By distributing the prediction among such three specialized functions, the accuracy is improved (for a given size of the dataset and a given training power). This is because the training does not need to distinguish in which situation the machine learning function is used, and such distinguishing power is not useful when predicting the next operator to be instantiated.
[0098] Each machine learning function can be, for example, a deep learning neural network such as a multi-layer perceptron, or alternatively a transformer network, a graph neural network, or a long short-term memory (LSTM) network. Each machine learning function can include more than one million trainable parameters and / or less than ten million or five million trainable parameters. Each machine learning function can include more than two layers and / or less than twenty layers. Such values make the memory consumption reasonable, enable high-speed evaluation of the machine learning function, and at the same time achieve high accuracy. Therefore, the prediction S40 (and thus the display S50) can be executed in real time when the selection in S20 is executed. A given set of operators can actually include more than 50, 100, or 200 different operators and / or less than 1,000 different operators. Also, a given set of object types can include more than 10, 50, 100 different object types and / or less than 500 different object types.
[0099] When using machine learning to perform predictions at S40, based on the dataset of previous examples, it is possible to avoid calculating the statistics for each potential combination and then output a prediction based on such statistics. The number of potential combinations can be particularly large, especially when a given set of operations is large, such that calculating such statistics can be very time-consuming and require a lot of space to store their values. Also, evaluating the statistics takes a lot of time on the fly and hinders real-time behavior.
[0100] (For example, each) machine learning function can be obtained via a training method that includes obtaining (each) dataset containing training examples and training the machine learning function based on the dataset, for example, minimizing the loss of a part (e.g., 80%) of the dataset and verifying the performance of the remaining part (e.g., 20%) of the dataset. The training can be performed epoch by epoch and / or batch by batch according to any machine learning technique (e.g., multi-layer perceptron, transformer network, graph neural network, or LSTM network) adapted to the architecture of the machine learning function.
[0101] Each training example includes, as prediction inputs (i.e., inputs to the prediction at S40), for each connector of each set of one or more connectors of each geometric block node (similar to the connectors selected at S20), the data identifier of each operator, the data identifier of each connector, the object type of each connector, and optionally, a value according to the object cardinality of each connector (e.g., a binary value indicating whether the cardinality is 1 or greater than 1 if such an object cardinality (e.g., binary) value is input in the prediction at S40). The training example further includes an operator as the prediction output (ground truth output) associated with such a prediction input (ground truth input). As a result, such offline training can result in a machine learning function configured to be used online at S30 - S40.
[0102] The dataset can be obtained by acquiring the respective 2D block representations of each (e.g., completed) 3D modeled object representing each product to be manufactured, which has been previously designed by the user (e.g., using the same 2D block representation application) and may optionally have been further manufactured. Such 2D block representations can be obtained from an internal database and / or a catalog of previous designs that have been completed and verified.
[0103] From the 2D block representations thus obtained, the training method can determine a sequence of design operations in which the user selects (e.g., S20) one or more connectors from among at least one block node and then instantiates (e.g., S60) an operator that connects to the one or more connectors (e.g., S70). The training method can consider such sequences within a pattern, where each pattern includes each set of one or more connectors each connected to the same block node via respective arcs. Training examples can be determined as appropriate from such patterns. Optionally, all such patterns within each acquired 3D modeled object are considered and processed such that at least initially at least one training example can be created from each pattern (however, some of these examples may then be removed by normalization of the dataset).
[0104] The pattern may include, for example, one or more output connectors connected to an input connector. Obtaining a data set may include forming one training example that includes one or more output connectors as predictive inputs and an operator represented by a block node of the input connector as a predictive output. Obtaining a data set may further include forming at least one (e.g., each available) training example that includes an input connector as a predictive input and an operator of any one or more output connectors as a predictive output. In other words, since multiple design sequences may lead to the pattern, multiple training examples may be obtained from the same pattern.
[0105] In an example, for at least one pattern that includes each set of multiple output connectors each connected to each input connector of the same block node via each arc, the data set includes multiple training examples each corresponding to each element of the power set of each set of multiple output connectors. In other words, the data set includes different (e.g., all possible) combinations of operators of multiple output connectors as predictive inputs and input connectors as predictive outputs, and / or at least one (e.g., all) training examples including an input connector as a predictive input and an operator of (e.g., each) output connector as a predictive output are input to construct multiple (e.g., all) training examples. This increases the diversity of the data set, thus enabling accurate training.
[0106] Alternatively, or in addition, the machine learning function may be configured such that input data is provided for a set of multiple output connectors, and the input data may be ordered according to the order between the output connectors. In other words, the architecture of the machine learning function (e.g., neural network) may be naturally sensitive to the ordering between multiple output connectors. To remove such natural sensitivity by training, the data set includes a first training example corresponding to a first list of each set of multiple output connectors each connected via each arc to each input connector of the same block node, and at least one second training example corresponding to a second list of each set of multiple output connectors each connected via each arc to each input connector of the same block node. In other words, among the training examples including multiple output connectors as prediction inputs and an operator of the input connectors as prediction outputs, the data set may include multiple (e.g., all possible) training examples having each set of the same output connectors but presented in different orders.
[0107] Since the pattern is from the completed design, each connector of each pattern can be evaluated. Thus, the data set may include, for each respective output connector, as prediction inputs, usage / dynamic object type and / or usage / dynamic object cardinality (e.g., binary) values.
[0108] If the machine learning function may also be used to make predictions using the static values of the object type and / or the object cardinality of the output connector at S40, the data set may additionally include examples where the static object type and / or the static object cardinality of each output connector are used, so that such situations may occur during training. For example, the output connector of a translational block node is of geometric object type, and since such a geometric object type is general, it never occurs in the evaluated output node. The additional input ensures that the machine learning function makes correct predictions when the user selects an unevaluated output connector of a translational block node at S30.
[0109] This may also apply when the machine learning function is potentially used at S40 and makes predictions based on the selection of one input connector at S20. In such cases, the data set may include, as prediction inputs, the static object type and / or the static object cardinality (e.g., binary) values for each input connector of the pattern.
[0110] The data set may be normalized to avoid bias in training, as otherwise the bias may be amplified, especially in view of the above data augmentation.
[0111] Returning to the design method of FIG. 1, the design method starts from and includes, based on the prediction output at S40, at least one operator of the prediction, for example, at least the most likely operator according to the prediction, or the most likely operator according to the prediction, and then displays a graphical representation of a list of operators (for example, less than 10) optionally ranked in order of probability (for example, in descending order) (S50). The display S50 can be executed in the form of a dialog box and / or a display menu that displays a list of icons and / or text names for each of at least one predicted operator. The display S50 can be executed automatically and / or in real time when the output S40 is completed, and thus can be executed in real time after the selection at S20 or after the subsequent trigger of the function that started the prediction S30 - S40.
[0112] The design method then includes the user selecting an operator from the display of S50, for example, graphically, by clicking or touching the corresponding icon and / or text name (S60). The operator displayed in S50 can be replaced with a proposed new operator, for example, if the user decides to perform a conventional manual search. The search bar can be displayed within the same menu to reduce the number of user actions. However, FIG. 1 shows an example where the user selects an operator at S60 from the predictions output at S40.
[0113] Next, the design method includes instantiating the selected operator by adding a block node representing the selected operator to the 2D block representation (S70), and updating the display of the 2D block representation by displaying at least the additional block node (S80). The addition (S70) and update (S80) of the display can be executed automatically / seamlessly in real time when the user's selection (S60) is completed.
[0114] Next, the design method includes, for each connector selected in S20, adding (S90) each arc between each connector selected in S20 and each connector of the block nodes added in S70 to the 2D block representation, and obtaining (in S90) the updated 2D block representation thereby. Such addition of arcs can be performed automatically / real-time and seamlessly when the selection S60 is completed, or alternatively can be performed by the user using the aforementioned drag-and-drop arc creation and placement techniques.
[0115] Next, the design method includes updating (S100) the display of the 2D block representation by displaying at least each added arc. The display update S100 can be performed automatically / real-time and seamlessly when the addition S90 is completed. If the method is automatic from S70 to S90, the display update S100 can be confused with / simultaneous and seamless with the display update at S80.
[0116] Optionally, the design method can include, when the update S100 is completed, automatically / real-time and seamlessly executing (S110) the data flow represented by the arcs of the 2D block representation updated in S100, outputting the updated 3D shape representation, and displaying (S120) the updated 3D shape representation simultaneously with the displayed updated 2D block representation. Thus, the design method enables a final update of the 3D shape representation at S120 and provides the user with visual feedback of the editing performed via S20, S60, and optionally S90.
[0117] The design method is repeatedly executed in the design phase and can be interfaced with other design steps. For example, by enabling the user to add block nodes and arcs in other ways (e.g., according to the standard graphical interaction design functions of a 3D block representation application), the complete and accurate shape of the product to be manufactured can ultimately be obtained. Next, the 2D block representation and / or 3D shape representation can be input into the manufacturing process, which can output one or more physical instances of the product to be manufactured in exactly the same shape as that finally reached at the end of the design phase. Therefore, the design method and / or machine learning process can be included in the manufacturing process of the product to be manufactured (e.g., mechanical parts of an assembly of mechanical parts).
[0118] Therefore, the design method generally operates on modeled objects, particularly 2D block representations and 3D shape representations. A modeled object is any object defined, for example, by data stored in a database. In an extended sense, the expression "modeled object" refers to the data itself. Depending on the type of system, the modeled object can be defined by various types of data. The system can actually be any combination of CAD systems, CAE systems, CAM systems, PDM systems, and / or PLM systems. In these different systems, the modeled object is defined by the corresponding data. Therefore, there can be references to CAD objects, PLM objects, PDM objects, CAE objects, CAM objects, CAD data, PLM data, PDM data, CAM data, CAE data. However, these systems are not mutually exclusive, and the modeled object can be defined by the data corresponding to any combination of these systems. Therefore, the system can be any of CAD, CAE, PLM, and / or CAM systems, which is clear from the definitions of such systems shown below.
[0119] A CAD solution (e.g., a CAD system or CAD software) further means a system, software, or hardware that is adapted to design at least modeled objects based on a graphical representation of the modeled objects and / or based on its structured representation (such as a feature tree), such as CATIA. In this case, the data defining the modeled object includes data enabling the representation of the modeled object. A CAD system can provide a 3D shape representation of a CAD modeled object, for example, using edges or lines, and in certain cases, using faces or surfaces. Lines, edges, or faces can be represented in various ways, such as non-uniform rational B-splines (NURBS). Specifically, a CAD file contains specifications that can generate geometry, thereby enabling the generation of a representation. The specifications of the modeled object can be saved in a single CAD file or multiple CAD files. The typical size of a file representing a modeled object in a CAD system is in the range of 1 megabyte per part. Also, a modeled object can typically be an assembly of thousands of parts.
[0120] In the context of CAD, a modeled object can typically be a 3D modeled object representing a product, such as a part or an assembly of parts, or perhaps an assembly of products. A 3D modeled object can be a manufactured product, i.e., a product to be manufactured. A "3D modeled object" means any object modeled by data enabling a 3D shape representation. With a 3D shape representation, a part can be viewed from any angle. For example, a 3D modeled object, when represented in 3D, can be manipulated and rotated around any of its axes or around any axis within the screen on which the representation is displayed. This specifically does not include 2D icons that are not 3D modeled. The display of a 3D shape representation facilitates design (i.e., improves the speed at which a designer statistically achieves their task). Since the design of a product is part of the manufacturing process, this speeds up the manufacturing process in the industry.
[0121] 2D block representations and corresponding 3D shape representation modeling objects can represent the geometry of a product to be manufactured in the real world after the completion of its virtual design by, for example, a CAD / CAE software solution or a CAD / CAE system. This includes (for example, mechanical) parts or part assemblies (or equivalent part assemblies, because the part assembly can be regarded as a part itself from the perspective of the design method, or the design method can be applied independently to each part of the assembly), or more generally any rigid body assembly (such as a mobile mechanism). Using a CAD / CAE software solution, products can be designed in various unlimited industrial fields, such as aerospace, architecture, construction, consumer goods, high-tech devices, industrial equipment, transportation, marine, and / or offshore oil / gas production or transportation. Therefore, the 3D modeling objects designed by this design method can be parts of land vehicles (such as automobiles and small-type truck equipment, racing cars, motorcycles, trucks and motor equipment, trucks and buses, trains, etc.), parts of aircraft (such as airframe equipment, aerospace equipment, propulsion equipment, defense products, aircraft equipment, space equipment, etc.), parts of naval vehicles (such as naval equipment, merchant ships, offshore equipment, yachts and workboats, marine equipment, etc.), general mechanical parts (such as industrial manufacturing machinery, large mobile machinery or equipment, installed equipment, industrial equipment products, metal processing products, tire manufacturing products, etc.), electromechanical or electronic parts (such as consumer electronics equipment, security and / or control and / or measurement products, computing and communication equipment, semiconductors, medical equipment and devices, etc.), consumer goods (such as furniture, household items, gardening supplies, leisure supplies, fashion products, products of hard goods retailers, products of soft goods retailers, etc.), packages (such as food, beverages, tobacco, beauty and personal care, packages of household items, etc.), and can represent industrial products that can be any mechanical parts.
[0122] The 3D shape representation can be B-rep. The 3D shape of the parts displayed on the computer screen when the modeled object is represented can be B-rep (e.g., its tessellation).
[0123] A PLM system further means a system adapted to the management of modeled objects representing physically manufactured products (or products scheduled for manufacture). Thus, in a PLM system, the modeled objects are defined by data suitable for the manufacture of physical objects. These can typically be dimensional values and / or tolerance values. Such values are surely better to have for correct manufacture of the object.
[0124] A CAE solution refers to any solution suitable for analyzing the physical behavior of modeled objects, including software for hardware. A well-known and widely used CAE technology is the finite element model (FEM), which is hereinafter referred to synonymously with the CAE model. FEM typically involves dividing the modeled object into elements (i.e., finite element meshes), and its physical behavior can be calculated and simulated by equations. Such CAE solutions are provided by Dassault Systèmes under the trademark SIMULIA®. Another growing CAE technology is the modeling and analysis of complex systems composed of multiple components in various physical fields without CAD geometry data. Using CAE solutions enables simulation, and thus enables the optimization, improvement, and verification of products scheduled for manufacture. Such CAE solutions are provided by Dassault Systèmes under the trademark DYMOLA®. Using CAE, various structural requirements (but not limited to mass, stiffness, strength, durability, etc.) can be reliably achieved by a new CAD model. Some of these requirements may be referred to as key performance indicators (KPIs). In many industrial products (such as automobiles, airplanes, consumer goods, high-tech products, etc.), these KPIs are conflicting. For example, a small mass usually results in low stiffness. Therefore, optimization methods are often applied to find the optimal trade-off between KPIs.
[0125] A CAM solution refers to any solution, software or hardware, adapted to manage the manufacturing data of a product. Manufacturing data generally includes data related to the products to be manufactured, the manufacturing process, and the required resources. A CAM solution is used to plan and optimize the entire manufacturing process of a product. For example, it can provide the CAM user with information regarding the feasibility, duration of the manufacturing process, or the number of resources such as specific robots that can be used in a particular step of the manufacturing process, thus enabling decisions regarding management or required investments. CAM is a subsequent process after the CAD process and potential CAE processes. For example, a CAM solution can provide information regarding machining parameters or molding parameters consistent with the extrusion features provided in the CAD model. Such CAM solutions are provided by Dassault Systèmes under the trademarks of CATIA, Solidworks, or DELMIA (registered trademark).
[0126] Therefore, CAD solutions and CAM solutions are closely related. In fact, CAD solutions focus on the design of products or parts, while CAM solutions focus on their manufacturing methods. The design of a CAD model is the first step towards computer-aided manufacturing. In fact, CAD solutions provide important functions such as feature-based modeling and boundary representation (B-Rep), reducing the risk of errors and the decrease in accuracy during the manufacturing process to be processed by CAM solutions. In fact, the CAD model is intended to be manufactured. Therefore, the 3D modeled object is the virtual twin (also referred to as the digital twin) of the object to be manufactured and has the following two purposes: - To verify the correct behavior of the object to be manufactured in a specific environment; and - To ensure the manufacturability of the object to be manufactured.
[0127] PDM stands for Product Data Management. A PDM solution means any solution, software or hardware, adapted to manage all types of data related to a specific product. PDM solutions can be used by all stakeholders involved in the product life cycle, mainly engineers, but also project managers, finance staff, sales staff, buyers, etc. PDM solutions are generally based on product-oriented databases. Thereby, stakeholders can share consistent data regarding the product, and thus prevent stakeholders from using inconsistent data. Such PDM solutions are provided by Dassault Systèmes under the trademark ENOVIA (registered trademark).
[0128] The 3D modeled objects output by the design method can be CAD models that include or are composed of, for example, feature trees and / or B-rep. Such models can be derived from CAE models and can be generated, for example, from a 2D block representation conversion process from CAE to CAD that the design method may include at an initial stage.
[0129] The design method can be included in the manufacturing process, which may include manufacturing a physical product corresponding to the 3D modeled object by the design method after executing the design method. The manufacturing process may include the following steps: - Applying the design method to obtain the 3D modeled object (CAD model) output by the design method; - Manufacturing parts / products using the obtained CAD model.
[0130] Using the CAD model in manufacturing refers to any real-world action or series of actions related to / involved in manufacturing the product / parts represented by the CAD model. Using the CAD model in manufacturing may include, for example, the following steps: - Editing the obtained CAD model; - Performing simulations (multiple possible) based on a CAD model or a corresponding CAE model (e.g., the CAE model from which the CAD model is derived after the CAE-to-CAD conversion process), such as simulations for verifying mechanical, usage, and / or manufacturing characteristics and / or constraints (e.g., structural simulations, thermodynamic simulations, aerodynamic simulations); - Editing the CAD model based on the results of the simulation(s); - Optionally (i.e., depending on the manufacturing process used, the production of the manufactured product may or may not include this step), determining (e.g., automatically) manufacturing files / CAM files based on the (e.g., edited) CAD model for the production / manufacturing of the manufactured product; - Sending the CAD file and / or the manufacturing file / CAM file to the factory; and / or - Generating / manufacturing (e.g., automatically) the mechanical product originally represented by the model output by the design method based on the determined manufacturing file / CAM file or the CAD model. This may include supplying the manufacturing file / CAM file and / or the CAD file to the machine(s) (e.g., automatically) that perform the manufacturing process.
[0131] This final production / manufacturing step may be referred to as a manufacturing step or a production step. In this step, based on the CAD model and / or CAM file, for example, the CAD model and / or CAD file is supplied to a computer system(s) that controls one or more manufacturing machines or machines to manufacture / process the part / product. The manufacturing step may include performing known manufacturing processes or a series of manufacturing processes such as, for example, one or more additive manufacturing steps, one or more cutting steps (such as laser cutting or plasma cutting steps), one or more stamping steps, one or more forging steps, one or more bending steps, one or more deep drawing steps, one or more forming steps, one or more machining steps (such as milling steps) and / or one or more punching steps. Due to the improvement in the design of the model (CAE or CAD) representing the part / product by the design method, the manufacturing and its productivity are also improved.
[0132] Editing a CAD model can include a user (i.e., a designer) performing one or more edits of the CAD model, for example using a CAD solution. Changes to the CAD model can include one or more changes to each of the geometry and / or parameters of the CAD model. Changes can include any change or series of changes made to the feature tree of the model (e.g., changes to feature parameters and / or specifications) and / or changes made to the display representation (e.g., B-rep) of the CAD model. The changes are changes that maintain the technical function of the part / product, i.e., the user makes changes that can affect the geometry and / or parameters of the model, but the purpose is only to make the CAD model more technically compliant for downstream use and / or manufacturing of the part / product. Such changes can include any change or series of changes that make the CAD model technically compliant with the specifications of the machine(s) used in downstream manufacturing processes. Such changes can further or alternatively include any change or series of changes that make the CAD model technically compliant for further use of a previously manufactured product / part, such changes or series of changes being based, for example, on the results of simulation(s).
[0133] A CAM file can include a manufacturing step-up model obtained from a CAD model. The manufacturing step-up can include all the data necessary for manufacturing a machine product, whereby it can have the geometry and / or distribution of the material corresponding to that captured in the CAD model (possibly to manufacturing tolerances). Determining the manufacturing file can include applying any CAM (Computer Aided Manufacturing) or CAD-to-CAM solution (e.g., any automated CAD-to-CAM conversion algorithm) for determining the manufacturing file (e.g., automatically) from the CAD model. Such CAM or CAD-to-CAM solutions can include one or more of the following software solutions that can automatically generate manufacturing instructions and tool paths for a given manufacturing process based on the CAD model of the product to be manufactured: - Fusion 360, - FreeCAD, - CATIA, - SOLIDWORKS, - The Dassault Systèmes NC Shop Floor Programmer shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-shop-floor-programmer, - The Dassault Systèmes NC Mill-Turn Machine Programmer shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-mill-turn-machine-programmer, and / or - The Dassault Systèmes Powder Bed Machine Programmer shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / powder-bed-machine-programmer.
[0134] The product / part can be a part that can be additively manufactured, i.e., a part manufactured by additive manufacturing (i.e., 3D printing). In this case, the manufacturing process does not include the step of determining a CAM file and proceeds directly to the production / manufacturing step by directly (e.g., automatically) supplying the CAD model to the 3D printer. The 3D printer is configured to directly and automatically 3D print the machine product according to the CAD model when the CAD model representing the machine product is supplied (e.g., when 3D printing is started by a 3D printer operator). In other words, the 3D printer receives (e.g., automatically) the CAD model supplied to it, reads (e.g., automatically) the CAD model, and prints the part (e.g., automatically) by adding material, for example, layer by layer, to reproduce the geometry and / or distribution of the material captured by the CAD model. The 3D printer adds material so as to actually and accurately reproduce, up to the resolution of the 3D printer, the geometry and / or distribution of the material captured by the CAD model, optionally with or without tolerance and / or manufacturing corrections. The manufacturing may include determining such manufacturing corrections and / or tolerances, for example, by a user (e.g., a 3D printer operator) or automatically (by the 3D printer or a computer system controlling it), for example, by modifying the CAD file to match the specifications of the 3D printer. The manufacturing process may further or alternatively include determining, from the CAD model, (as described in European Patent No. 3327593, incorporated herein by reference) the printing direction (e.g., automatically by the 3D printer or a computer system controlling it) to minimize, for example, the amount of overhang, and layer slicing (determining the thickness of each layer, the path / trajectory for each layer, and other characteristics of the 3D printer head (e.g., for a laser beam, e.g., path, speed, intensity / temperature, other parameters, etc.)).
[0135] The product / part can alternatively be a machined part (i.e., a part manufactured by machining), such as a milled part (i.e., a part manufactured by milling). In such a case, the manufacturing process may include a step of determining a CAM file. This step can be automatically executed by any suitable CAM solution that automatically obtains the CAM file from the CAD model of the machined part. The determination of the CAM file can include (e.g., automatically) checking whether the CAD model has geometric peculiarities (such as errors or artifacts) that can affect the manufacturing process, and (e.g., automatically) correcting such peculiarities. For example, if the CAD model still contains sharp edges, machining or milling based on the CAD model may not be performed (since machining tools or milling tools cannot create sharp edges), and in such a case, the determination of the CAM file can include (e.g., automatically) rounding or filleting such sharp edges (e.g., with a rounding radius or fillet radius substantially equal to the radius of the cutting head of the machining tool, up to the tolerance), thereby enabling machining or milling based on the CAD model. More generally, the determination of the CAM file can automatically include rounding or filleting geometries in the CAD model that are incompatible with the radius of the machining tool or milling tool to enable machining / milling. This check and possible correction (e.g., rounding or filleting of geometries) can be automatically executed as described above, but a user (e.g., a machining engineer) can also manually perform the correction in, for example, CAD and / or the CAM solution. For example, this solution can force the user to make corrections that conform the CAD model to the specifications of the tools used in the machining process.
[0136] In addition to checking, the determination of the CAM file can include determining the machining path or milling path, i.e., the path that the machining tool follows to machine the product (e.g., automatically). The path can include a set of coordinates and / or a parameterized trajectory that the machining tool follows for machining, and the determination of the path can include calculating these coordinates and / or trajectory (e.g., automatically) based on the CAD model. This calculation can be based on the calculation of the boundary of the Minkowski subtraction of the CAD model by the CAD model representation of the machining tool, as described, for example, in European Patent Application No. EP21306754.9 filed by Dassault Systèmes on December 13, 2021, which is incorporated herein by reference. It should be understood that the path can be a single path, e.g., a path that the tool follows continuously without breaking contact with the material being cut. Alternatively, the path can be a concatenation of a sequence of sub-paths that the tool follows in a specific order, each of which is, for example, followed continuously without breaking contact with the material being cut. Optionally, the determination of the CAM file can then include setting (e.g., automatically) machine parameters such as cutting speed, cut / pierce height, and / or die opening stroke, based on, for example, the determined path and the specifications of the machine. Optionally, the determination of the CAM file can then include (e.g., automatically) configuring nesting in which the CAM solution determines the optimal orientation of the part to maximize machining efficiency.
[0137] In the case of machining or milling parts, the determination of the CAM file thus generates and outputs a CAM file that includes machining paths and, optionally, set machine parameters and / or configured nesting specifications. This output CAM file can then be sent (e.g., directly and automatically) to the machining tool, and / or the machining tool can then be programmed (e.g., directly and automatically) by reading the file, whereupon the production process includes production / manufacturing steps in which the machine performs the machining of the product by, for example, directly and automatically executing the production file in accordance with the production file. The machining process includes the machining tool cutting the actual material block in order to reproduce the geometry and / or distribution of the material captured by the CAD model, for example, to within a tolerance (e.g., dozens of microns in the case of milling).
[0138] The product / part can instead be a molded part, i.e., a part manufactured by molding (e.g., injection molding). In such a case, the manufacturing process may include a step of determining a CAM file. This step can be automatically performed by any suitable CAM solution that automatically retrieves the CAM file from the CAD model of the molded part. The determination of the CAM file may include (e.g., automatically) performing a series of molding checks based on the CAD model to check whether the geometry and / or distribution of the material captured by the CAD model is suitable for molding, and, if the CAD model is not suitable for molding, performing appropriate corrections (e.g., automatically). The execution of the checks and any appropriate corrections can be performed automatically or, alternatively, for example, enable a user (e.g., a molding technician) to perform appropriate corrections to the CAD model, but be performed by the user using a CAD and / or CAM solution that restricts the user to making corrections that conform the CAD model to the specifications of the molding tool(s). The checks may include verifying that the virtual product represented by the CAD model matches the mold dimensions and / or verifying that the CAD model includes all the draft angles necessary to remove the product from the mold, as is known per se. The determination of the CAM file then may further include determining, based on the CAD model, the amount of liquid material to be used for molding and / or the time to cure / solidify the liquid material in the mold, and outputting a CAM file that includes these parameters. The manufacturing process then includes (e.g., automatically) performing molding based on the output file, and the mold forms the liquid material into a shape corresponding to the geometry and / or distribution of the material captured by the CAD model (e.g., to the tolerance, e.g., incorporating or changing the draft angle for removal from the mold) during the determined curing time.
[0139] The product / part can alternatively be a stamped part, and may perhaps also be referred to as a "stamping part", that is, a part manufactured by a stamping process. In this case, the manufacturing process may include (e.g., automatically) determining a CAM file based on a CAD model. The CAD model represents the stamping part. For example, if the part includes flanges, it includes one or more flanges, and perhaps in the latter case, extra material may be removed from the stamping to form the developed state of one or more flanges of the part as is known per se. Thus, the CAD model is composed of a part (in some cases the whole part) representing the part without flanges and perhaps an outer additional patch part (if any) representing the flange (if any), and perhaps includes extra material (if any). This additional patch part may exhibit g2 continuity over a specific length and then g1 continuity over a specific length.
[0140] In the case of this stamping, the determination of the CAM file may include (e.g., automatically) determining parameters of the stamping machine, such as the size of the stamping die or punch and / or the stamping force, based on the geometry and / or distribution of the material of the virtual product captured by the CAD model. If the CAD model also includes the representation of the extra material removed to form the developed state of one or more flanges of the part, the extra material removed is cut, for example, by machining, and the determination of the CAM file may also include determining the corresponding machining CAM file, for example, as described above. If there are one or more flanges, the determination of the CAM file may include determining the geometric specifications of the g2 continuity part and the g1 continuity part that enable the flange to be folded towards the inner surface of the stamping part along the length of g2 continuity in a folding process after the stamping itself and the removal of the extra material. The CAM file thus determined may therefore include the parameters of the stamping tool, optionally the aforementioned specifications (if any) for folding the flange, and optionally the machining production file (if any) for removing the extra material.
[0141] The stamping production process can then, for example, directly and automatically output a CAM file and execute the stamping process (e.g., automatically) based on the file. The stamping process can include stamping (e.g., punching) a part of the material to form a product represented by a CAD file (possibly including a developed flange and extra material if any). Where appropriate, the stamping process can include cutting the extra material based on a machining production file and bending the flange based on the specification for bending the flange, whereby the flange is bent at its g2 continuous length and a smooth appearance is given to the outer boundary of the part. In this latter case, the shape of the previously manufactured part is different from its virtual counter - part represented in the CAD model in that the extra material has been removed and the flange has been folded, while in the CAD model, the part is represented with the extra material and the flange not folded.
[0142] The computer system can comprise a processor coupled to a memory and a graphical user interface (GUI), and the memory has recorded thereon a computer program including instructions for performing a training and / or design method. A database can also be stored in the memory. The memory is any hardware suitable for such storage and can potentially comprise a plurality of physically different parts (e.g., for the program and possibly for the database).
[0143] FIG. 2 shows an example of a system, which is a client computer system, e.g., a user's workstation.
[0144] The client computer in this example includes a central processing unit (CPU) 1010 connected to an internal communication bus 1000 and a random access memory (RAM) 1070 connected to the bus. The client computer is further provided with a graphics processing unit (GPU) 1110 associated with a video random access memory 1100 connected to the bus. The video RAM 1100 is also known as a frame buffer in the art. A mass storage controller 1020 manages access to a mass storage device such as a hard drive 1030. Mass storage devices suitable for tangibly embodying computer program instructions and data include any form of non-volatile memory such as semiconductor memory devices such as EPROM, EEPROM, flash memory devices, magnetic disks such as internal hard disks and removable disks, magneto-optical disks, etc. Any of the foregoing may be supplemented by, or incorporated in, a specially designed application specific integrated circuit (ASIC). A network adapter 1050 manages access to a network 1060. The client computer may also include tactile devices 1090 such as a cursor control device, a keyboard, etc. The cursor control device is used in the client computer to enable a user to selectively place a cursor at any desired location on a display 1080. Further, using the cursor control device, a user can select various commands and input control signals. The cursor control device includes several signal generation devices for inputting control signals to the system. Typically, the cursor control device can be a mouse, and the buttons of the mouse are used for signal generation. Alternatively, or in addition, the client computer system may include a sensing pad and / or a sensing screen.
[0145] A computer program may include instructions executable by a computer, and the instructions include means for causing the above system to execute a method. The program may be recordable on any data storage medium including the system's memory. The program may be implemented, for example, in digital electronic circuits, or in computer hardware, firmware, software, or combinations thereof. The program may be implemented as a product tangibly embodied in a machine-readable storage device, executed by an apparatus, e.g., a programmable processor. The steps of the method may be executed by a programmable processor executing a program of instructions that operate on input data to produce output, thereby performing the functions of the method. Accordingly, the processor may be programmable and coupled to receive data and instructions from a data storage system, at least one input device, and at least one output device, and to transmit data and instructions to them. An application program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language as appropriate. In any case, the language may be a compiled or interpreted language. The program may be a full-installation program or an update program. Applying the program to the system, in any case, generates instructions for executing the method. Alternatively, the computer program may be stored and executed on a server in a cloud computing environment, and the server communicates with one or more clients via a network. In such a case, the processing unit executes the instructions included in the program, thereby executing the method in the cloud computing environment.
[0146] Here, the implementation will be described with reference to FIGS. 3 to 24.
[0147] The implementation provides a solution for function proposal by intelligent artificial intelligence, especially in an application that represents the connection of operators in a graph-like format, i.e., a 2D block representation. Examples of such applications include xGenerative Design, which is part of the CATIA portfolio and is a web application that combines 3D and visual scripting modeling based on 2D block representations. However, this solution can be adapted to propose functions in feature-tree-based applications such as feature-tree-based CATIA.
[0148] Figure 3 shows a screenshot of the interface of such a 2D block programming application.
[0149] Such an application can simultaneously display a 3D shape representation 300 of a 3D modeling object representing a manufactured product (e.g., a folded alveolar sheet structure) and a 2D block representation 310 of the 3D modeling object. The 2D block representation 310 can optionally include block nodes 320 that can be rectangles all parallel to the screen, input connectors 322 that can be dot-shaped and are displayed on the left boundary side of each block node 320, output connectors 324 that can be dot-shaped and are displayed on the right boundary side of each block node 320, and arcs 326 that connect the output connector 324 of the first block node to one or more corresponding input connectors 322 of another second block node 320. The application can also display menus, menu buttons 330, and widgets 340.
[0150] The application enables generative 3D modeling via a library that can be instantiated or a predefined set of operators. The operators are configured to handle geometric operations (points, lines, curves, surfaces, extrusion, rotation, meshes, etc.), mathematical operations (addition, division, etc.), list management, and so on.
[0151] The library can propose over 500 operators, which may be increasing. As a result, it may be difficult for users to find the appropriate operator at a specific design stage. The proposed solution addresses the discoverability problem.
[0152] Referring to FIG. 4, an operator is a node within a virtual graph. The figure shows an instance of a point node by coordinates. On the left side of the figure, the node has not been selected by the user, and thus only its input connector 322 and its output connector 324 are displayed to the user. On the right side of the figure, the node has been selected, and as a result, additional data field 400, menu 410, and information 420 are displayed to the user. The right side portion of the figure shows the view of the node when the user selects the node (e.g., by mouse click) to perform operations such as changing input values or managing node status. An operator processes input data and provides an output result through internal operations (such as geometric transformation, mathematical formulas, data structure management, etc.). In the example of FIG. 4, the "Point By Coordinates" operator / node receives three lengths as coordinates and constructs a geometric point (here named "Point.1") therefrom.
[0153] Referring to FIG. 5, nodes can be connected via arcs 326 through input connectors and output connectors, thus forming a virtual graph. This figure shows the actual connection of the "pt" input connector of the "Coordinates" block node to the output of the point by coordinates operator. In this simple example, the user is connecting the previous point to the "Coordinates" node to obtain point coordinates. "Coordinates" forms an example of an operator with multiple outputs.
[0154] Referring to FIG. 6, the application can manage data types in detail: The data that moves / flows between the data in the input connector and the nodes is typed to define its nature and ensure compatibility (compliance) between the output connector and the input connector. This figure shows an example of the "Line 2 Points" operator, by which the user generates a line using two points (line segments). To enable this, each input connector has a specific static object type for specifying the type of data that can be connected to it: - pt1 and pt2 are of the "GeometricPoint" type, assuming geometric points; - st and end are the optional extension lengths of the line beyond the two points, and their type is "Length". - sup is the optional surface support of the line on which the line can be drawn. Its type is "GeometricSurface".
[0155] Referring to FIG. 7, if the connection is incorrect with respect to the type, the node may enter an error state and a visual alert may be displayed to the user. In this example, Length is connected as the second point of the Line. Since the types "Length" and "GeometricPoint" are incompatible, the node is in an "error" state and the generation of the Line is impossible.
[0156] FIGS. 8 - 9 show examples of the generated line having two points and two extension lengths, including the 2D block representation (or graph view) of FIG. 8 and the 3D shape representation (or 3D view) of FIG. 9.
[0157] Referring to FIG. 10, in the prior art, a user can select one node, and when the space is pressed, a search menu for further connection is displayed. Here, the node "Point.1" is selected. The present disclosure addresses the problem of the application proposing an appropriate set of operators for the user to connect the selections. Without intelligent processing, it may be difficult to calculate the number of proposals while maintaining the responsiveness of the application, which is very common in actual applications. However, if the type of the output connector is undefined, it may not function. Furthermore, selecting only one node or connector leads to a decrease in the accuracy of the proposals. For example, if the user selects the operator "Point By Coordinates" and the user wants to connect it to the operator "Line 2 Points", it is easier to do so from the selection of two "Point By Coordinates" operators rather than just one.
[0158] In such a context where there are many operators, the proposed solution and its implementation provide a method to help the user find the operator they are looking for as quickly as possible, select the correct function to use in the defined situation within the application, and perform it in the most optimized and efficient way possible using artificial intelligence (e.g., deep learning).
[0159] According to the proposed solution and its implementation, based on machine learning / deep learning techniques, an appropriate ranked list of operator proposals can be proposed in the 2D block representation designed by the user from a series of user selections. Using an operator, various types of data (geometric, mathematical, image, etc.) can be manipulated through the mathematical function that converts the input to the output. In the implementation, these proposals are made considering these data. This improves the discoverability and accessibility of the operators.
[0160] This implementation can create operator proposals based on multiple selections of operators by the user. The predictive operator then becomes more accurate when compared to potential solutions that make such proposals based on a unique operator selection. Further, this implementation avoids making predictions based on multiple user selections using a deterministic approach, which would involve manipulating large sets of raw probabilities and thus be very inefficient in terms of storage and computing.
[0161] Therefore, in this implementation, proposals are provided based on what the deep learning model saw during its training in various graph operator examples. This enables the proposal of proposals that take into account the user experience in previous operator creation in 2D block representations, which contributes to improving the accuracy of these proposals.
[0162] The implementation processes three types of user selections regarding operators: - A single input connector; - An operator (indirectly its output connector); - Multiple operators (indirectly multiple selections of each of their output connectors).
[0163] These three use cases can be quite different in terms of the input data. Therefore, the implementation uses three different neural networks (deep learning models) to process operator proposals. Selecting three separate neural networks allows for having specialized AI models for obtaining more accurate and appropriate results for their use cases.
[0164] Furthermore, these three models are independent and can be used in three separate scenarios, even if the final results are similar (proposing intelligent proposals). There may be no communication between the three models.
[0165] Each of the three specialized machine learning functions will be described one by one.
[0166] Figure 11 shows an example where a user selects multiple output connectors (outputs of two point operators in the figure). Here, the user selects two point operators, and the user can trigger a search to create a new operator that connects to the selected points. The underlying neural network can be configured to propose appropriate operators in the "Suggestions" list.
[0167] The input data here is as follows for each selected output connector / operator: - An identifier for the name of the selected operator (here, "Point By Coordinates"); - An identifier for the name of the selected output (format: here, "Point By Coordinates|Pt", where "Pt" is the internal name of the output connector); - The internal / dynamic (if available, otherwise static) data type of the output connector (here, "GeometricPoint"); - If the internal / dynamic data is a collection of elements / objects or a unique element / object (here, "Unique"), use the information if available, otherwise use the static object cardinality (alternatively, two cases can be used during training).
[0168] From this information, the neural network can obtain a list of appropriate operators ranked by probability.
[0169] Referring to Figure 12, the neural network model itself can be a multi-layer perceptron with the architecture shown in the figure. It can be configured to receive the maximum number of selected output connectors (e.g., 5).
[0170] Figure 13 shows the case where the user selects a single output connector. In this example, the user selected the Circle (by Center and Radius), which has only one operator. When there is only one selection, as in the case of multiple selections, only the data related to the single operator is input to the neural network: the identifier of the operator's name, the identifier of the output's name, the object type of the output data (dynamic / used value if available, static otherwise, or both cases can be used during training), and the uniqueness or non-uniqueness thereof (dynamic / used value if available, static otherwise).
[0171] Referring to Figure 14, the neural network model can also be a multi-layer perceptron with the architecture shown in the figure. Compared with the model in Figure 12 used in the case of multiple selections (which may already be able to extract a lot of information from a specific combination of selected operators), the model in Figure 14 has more layers and may have a different number of parameters.
[0172] Figure 15 shows the case where a single connected input is selected. In this case, the user selected the input "ang" of the Circle (the angle of the circle, 360° by default) and triggered a search to connect the input to the "previous" node output.
[0173] The input data in this case can be as follows: - The name of the input connector (here in the form of "Circle|ang by Center and Radius") - The defined data type of the connector (since the connector is not yet connected, the internal data type is not available online) - If the defined data is a collection of elements or a unique element (here "Unique"), the internal value can be used during training.
[0174] Referring to FIG. 16, the neural network model can also be a multi-layer perceptron having the architecture shown in the figure.
[0175] Next, the implementation of the created training dataset will be described.
[0176] To train the three aforementioned AI models, a dataset can be constructed using 3D designs (e.g., CATIA xGenerative Design) that have already been completed.
[0177] FIG. 17 shows the training dataset extraction obtained in this way, and each row corresponds to a training pattern for the case of a single output connector selection. The leftmost column in the figure shows the target / selection node (i.e., the ground truth operator, i.e., the predicted output), in other words, the result that the AI model should aim for. The other columns represent the predicted input data described in the previous section and simulate the selection from the user: for example, the first row is a single selection of a "Sequence" node with an output called "createdList" that contains a List of elements (creates a series of numbers). In this situation, the user has selected / connected a CurveEditor node.
[0178] FIG. 18 shows an example of the 2D block representation part that may correspond to the first row.
[0179] The dataset obtained from the existing design can be heterogeneous in terms of the number of examples and can affect the accuracy of prediction due to biased training. In the implementation test, more than 100 examples were obtained for one class, while less than 5 examples were obtained for another class. Ideally, the number of examples for each class should be the same in training. Considering this, data normalization can consist of aiming for a fixed number of initial examples (e.g., 40) for each class, first discarding examples of classes that have more than this fixed number, and duplicating examples of classes that have less than this fixed number to achieve the goal.
[0180] Through this process, in the implementation test, it was possible to somehow obtain a dataset suitable for all AI models that can be directly used, especially for those with "single output selection" and "input selection". In these two cases, only one selection / connection needs to be considered so that the dataset is not processed further. However, in the case of "multiple selections", the dataset can be appropriately "expanded" by considering all combinations of selections.
[0181] Figure 20 shows an example demonstrating the usefulness of such data expansion. Referring to the previous selection scheme, the target operator is "Line", and it is connected to two operators, namely "Point" and "Plane" (abbreviated names) ("point" and "plane"). Through the first data expansion, three selections instead of one can be obtained in creating the dataset: - Possible selection 1: "Point" operator and "Plane" operator; - Possible selection 2: "Point" operator only; - Possible selection 3: "Plane" operator only.
[0182] These three selections can be connected to the "Line" target operator.
[0183] Furthermore, it may be useful to consider the order of operators in multiple selections (here, "point, then plane" or "plane, then point"), and without considering this, the prediction may change depending on whether the neural network architecture is sensitive to this order (in the case of the architecture in Figure 12).
[0184] By doing so, the size of the dataset in the case of "multiple selections" has increased significantly in the dataset creation of the tested implementation, and the accuracy and robustness of the deep learning model have also been improved somewhat.
[0185] Therefore, when performing the second data expansion with the same example, the number of possible options becomes 4 (instead of 3): - Possible Option 1: "Point" operator and "Plane" operator. - Possible Option 1a: "Plane" operator and "Point" operator. - Possible Option 2: "Point" operator only. - Possible Option 3: "Plane" operator only.
[0186] The neural network can receive scalar values (numerical values) as input data. Therefore, dataset creation may involve converting the data into a format compatible with the model. This can be done by indexing. With individual indexes, dataset creation can associate operators and connectors (inputs and outputs) with the numerical values passed to the AI model.
[0187] Figure 21 shows the indexed extraction of the output connectors of the operators, with indexes in the left column and operator / connector names in the right column. For example, the index of the output "zx" of the operator "RefElements" (which gives the standard planes xy, yz, zx and the origin O in 3D space) is 1. "1" is given to the AI model and represents "RefElements|zx".
[0188] Once the design is processed and indexes are generated, etc., the training of the model can be started. For each model, in training, input data (appropriate for the model) can be provided to it, and the output predictions can be observed. Then, in training, this prediction can be compared with the desired result associated with this input, and the weights of the deep learning model can be changed using gradient descent and the softmax function to converge to the final correct result.
[0189] Figure 22 shows the training results of the "multiple selection" model. The loss score was 1.3811 and the accuracy score was 71.27%. The learning curve was very smooth and the results of loss and accuracy were accurate.
[0190] Considering that they are based on the number of times the model gave the desired operator exactly at the first position, these are very good results. However, in an actual application, the design method may rank and display the first (e.g., five) operators predicted by the model with the highest probability.
[0191] Figure 23 shows the updated results when the success criterion is changed considering that the prediction is considered successful when the desired operator is included in the first five proposals instead. With this approach, the following results were obtained (the desired operator was included in the first five proposals): - Number of predictions made: 6,028 predictions. - Number of successful predictions: 4,911 predictions. - Number of failed predictions: 1,117 predictions. - Proposal accuracy: 81.47%.
[0192] The API can integrate the model into the application by extracting information on user selection, using it to make predictions, and finally displaying the prediction proposals to the user.
[0193] Figure 24 shows such an example of 500 proposals for operators that can be predicted and displayed at S50 after multiple selections (of output connectors) of two point operators and one plane operator have been selected by the user.
Claims
1. 1. A computer-implemented method for designing a 3D modeled object representing a product to be manufactured, the method comprising: - displaying (S10) simultaneously, by a computer system, a 3D shape representation of said 3D modeled object and a 2D block representation of said 3D modeled object, said 2D block representation comprising: block nodes, each block node representing a respective operator in a predefined set of operators, each operator of the predefined set of operators having a respective data identifier, each operator of the predefined set of operators further having one or more inputs and outputs, each input of each operator having a respective data identifier, the output of each operator having a respective data identifier, and for at least one block node, the output of each operator represented by the at least one block node is a respective set of one or more geometric objects, the output of the operator has a dynamic object cardinality, at least one input of the operator has a dynamic object cardinality, and the output of the operator has an object type, optionally the object type of the output of the operator is dynamic, in which case at least one input of the each operator has a dynamic object type; one or more input and output connectors on each respective block node, each input connector representing a respective input of each of the operators represented by the respective block node, and each output connector representing the respective output of each of the operators represented by the respective block node; and each arc between the output connector of a first block node and a corresponding input connector of a second block node, each arc representing a data flow from the output connector of the first block node to the corresponding input connector of the second block node; Including, displaying the 2D block representation, the 2D block representation being configured such that execution of the data flows represented by the arcs in the 2D block representation outputs the 3D shape representation; - selecting (S20) one or more connectors from among said at least one block node through a user's graphical interaction with said 2D block representation; - using pre-trained machine learning functions by said computer system, Providing input data to the machine learning function, for each selected connector, including at least the data identifier of each operator represented by the block node of each selected connector, the data identifier of each selected connector, and an object type of each selected connector (S30); outputting predictions for one or more operators from the predetermined set of operators using the machine learning functionality (S40); - displaying (S50) by said computer system a graphical representation of at least one operator of said prediction; - selection (S60) by said user of an operator from among said at least one operator of said prediction; said computer system adding (S70) a block node representing the selected operator to the 2D block representation; updating (S80) the display of the 2D block representation by displaying at least the added block node; - for each respective selected connector, adding (S90) an arc between said selected connector and a respective connector of said added block node to said 2D block representation, thereby obtaining an updated 2D block representation; - updating the display of the 2D block representation by displaying at least each added arc line (S100); - executing (S110) the data flows represented by the arcs of the updated 2D block representation, thereby outputting an updated 3D shape representation; - displaying said updated 3D shape representation (S120); and (c) a design method;
2. The design method of claim 1 , wherein the input data for the machine learning function further includes, for each selection connector, a value corresponding to an object cardinality of the each selection connector.
3. The design method according to claim 2 , wherein the value according to the object cardinality of each of the selection connectors is a binary value indicating whether the cardinality is 1 or greater than 1.
4. The design method according to any one of claims 1 to 3, wherein the selected one or more connectors consist of either one input connector, one output connector, or multiple output connectors.
5. 5. The design method of claim 4, wherein using the pre-trained machine learning functions includes selecting a respective specialized machine learning function depending on whether the selected one or more connectors consist of an input connector, an output connector, or multiple output connectors.
6. The design method according to any one of claims 1 to 5, wherein the machine learning function is a multi-layer perceptron.
7. The design method according to any one of claims 1 to 6, wherein the prediction comprises a number of operators ranked by probability.
8. A computer-implemented method for training the machine learning function usable in the design method of any one of claims 1 to 7, the training method comprising: - obtaining a dataset comprising training examples, each of said training examples comprising: As expected input, for each connector of a respective set of one or more connectors of each block node representing a respective operator in the given operator set, the output of each operator is a respective set of one or more geometric objects: the data identifier for each of the operators represented by the block nodes of each of the connectors; the data identifier for each of the connectors; and the object type of each of said connectors; and an operator configured to represent as a predicted output by a block node connectable via a respective arc to each respective connector of said set of one or more connectors; and training said machine learning function based on said dataset; A training method including:
9. Obtaining the data set includes: - obtaining a respective 2D block representation of each 3D modeled object representing each product to be manufactured; - determining training examples in said 2D block representation taken from patterns, each pattern including a respective set of one or more connectors each connected to a same block node via a respective arc line; The training method of claim 8 , comprising:
10. 10. The training method of claim 9, wherein for at least one pattern including a respective set of multiple output connectors connected via respective arcs to respective input connectors of a same block node, the dataset includes a plurality of training examples corresponding respectively to respective elements of a power set of the respective set of multiple output connectors.
11. 11. The training method according to claim 8, wherein the machine learning function is configured to be provided with input data for a set of output connectors, the input data being ordered according to an order between the output connectors, and the dataset includes a first training example corresponding to a first list of each set of output connectors each connected via a respective arc to a respective input connector of the same block node, and at least one second training example corresponding to a second list of each set of output connectors each connected via a respective arc to a respective input connector of the same block node.
12. The training method according to any one of claims 8 to 10, wherein the dataset is normalized.
13. A computer program comprising instructions which, when executed by a processor, cause the processor to carry out the design method according to any one of claims 1 to 7 and / or the training method according to any one of claims 8 to 12.
14. A device comprising a data storage medium storing a computer program according to claim 13.
15. The device of claim 14 , further comprising a processor coupled to the data storage medium and configured to execute the computer program.