Operator connection in block representation

By simultaneously displaying 3D shapes and 2D block representations in 3D modeling objects and automatically adding arcs, the problem of ergonomics in the prior art is solved, design efficiency and accuracy are improved, and manufacturing process is supported.

CN119962009APending Publication Date: 2025-05-09DASSAULT SYSTEMES SA
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202411585301.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-11-07
Filing Date
2024-11-07
Publication Date
2025-05-09

AI Technical Summary

Technical Problem

The existing block representation method is insufficient in the design and manufacturing process, especially when adding arcs, which affects design efficiency.

Method used

Provide a computer-implemented design method, automatically determine and add arcs by simultaneously displaying the 3D shape representation and 2D block representation of 3D modeling objects, reducing user burden and improving human-computer interaction efficiency.

Benefits of technology

By automatically calculating and displaying arcs, users' operations in 2D block representations are simplified, design efficiency is improved, and data flow accuracy and 3D shape representation are ensured, supporting subsequent manufacturing processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119962009A_ABST
    Figure CN119962009A_ABST
Patent Text Reader

Abstract

The present disclosure particularly relates to a computer-implemented design method of a 3D modeled object representing a product to be manufactured. The method includes the computer system simultaneously displaying a 3D shape representation of the 3D modeled object and a 2D block representation of the 3D modeled object. The method further comprises graphically interacting with the 2D block representation by the user, after the user action, performing selecting one or more of the at least one block node, adding a block node representing a respective operator of the subset to the 2D block representation, and selecting one or more of the at least one block node to the 2D block representation. And automatically determining a respective arc between the output connector of each selected block node and the respective input connector of the added block node. The present disclosure improves ergonomics.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the field of computer programs and systems, and more particularly, to methods, devices and programs for automatically calculating and adding one or more arcs in a block representation of a product to be manufactured. Background Art

[0002] Many solutions, hardware and software for the design, engineering and manufacturing of objects are available on the market. CAD is the abbreviation of Computer-Aided Design, for example, it relates to software solutions for designing objects. CAE is the abbreviation of Computer-Aided Engineering, for example, it relates to software solutions for analyzing and simulating the physical behavior of future products. CAM is the abbreviation of Computer-Aided Manufacturing, for example, it relates to software solutions for defining product manufacturing processes and resources. In such computer-aided design solutions, graphical user interfaces play an important role in technical efficiency. These technologies can be embedded in product lifecycle management (PLM) solutions. PLM refers to an engineering strategy that can help companies share product data, apply common processes, and use corporate knowledge to develop products from concept to end of life in the entire concept of the extended enterprise. The PLM solutions provided by Dassault Systèmes (trademarks CATIA, SIMULIA, DELMIA and ENOVIA) provide an engineering center for organizing product engineering knowledge, a manufacturing center for managing manufacturing engineering knowledge, and an enterprise center that integrates and connects the enterprise to the engineering center and the manufacturing center. Together, these solutions provide a common model that connects products, processes and resources to achieve knowledge-based dynamic product creation and decision support, thereby driving optimized product definition, manufacturing preparation, production and service.

[0003] As part of the CATIA software suite, xGenerative Design is a well-known web application that allows designing 3D modeled objects representing products to be manufactured based on their 2D (two-dimensional) block representations. In the application, the user can select one or more block nodes of the 2D block representation, then add new block nodes to be connected to one or more selected connectors, then manually create and add one or more corresponding arcs to perform the connection.

[0004] The ergonomics of this solution could be improved. Summary of the invention

[0005] Therefore, a computer-implemented design method for a 3D modeled object representing a product to be manufactured is provided herein. The design method includes a computer system simultaneously displaying 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, an output connector and one or more input connectors on each corresponding block node, and arcs between an output connector of a first block node and a corresponding input connector of a second block node.

[0006] Each block node represents a corresponding operator in a predetermined set of operators, each operator in the predetermined set of operators having an output and one or more inputs. For at least a subset of operators in the predetermined set of operators, the output of each corresponding operator of the subset is a corresponding set of one or more geometric objects. At least one block node represents an operator of the subset, and each input of each operator of the subset and the output of each operator of the subset have a corresponding object type.

[0007] Each input connector represents a corresponding input of a corresponding operator represented by a corresponding block node. An output connector represents an output of a corresponding operator represented by a corresponding block node.

[0008] Each arc represents the flow of data from an output connector of the first block node to a corresponding input connector of the second block node.

[0009] The 2D block representation is configured such that execution of the data flow represented by the arcs of the 2D block representation outputs the 3D shape representation.

[0010] The method also includes a user graphically interacting with the 2D block representation to perform selection of one or more block nodes among the at least one block node.

[0011] The method further comprises, upon a user action, adding block nodes representing corresponding operators of the subset to the 2D block representation, automatically determining corresponding arcs between an output connector of each selected block node and a corresponding input connector of the added block node; adding each determined arc to the 2D block representation; and updating a display of the 2D block representation by at least displaying the added block nodes and each added arc.

[0012] The method further includes executing 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.

[0013] This design method forms an improved solution for designing 3D modeled objects representing products to be manufactured, as it provides ergonomics of a software application that displays a 2D block representation simultaneously with a 3D shape representation, and has all the graphical user interaction capabilities provided by such applications, such as the ability for a user to graphically interact with the 2D block representation in order to select one or more displayed elements and edit them. In addition, the design method relieves the user of the task of adding arcs to the 2D block representation by automatically calculating the corresponding arcs between the output connector of each selected block node and the corresponding connector of the added block node, thereby allowing the selected one or more block nodes to be connected to the added block node in a convenient manner. The design method then allows ergonomic updating of the displayed 3D shape representation by executing the data flow, which may ultimately be fed into a manufacturing process that may be automated.

[0014] The design method may include one or more of the following:

[0015] - each respective object type is an object type in a predetermined tree of object types, wherein each non-leaf object type is dynamic and each descendant object type of the non-leaf object type is compatible with the non-leaf object type,

[0016] - the automatic determination (S85) includes determining an arc combination having a lowest value of a predetermined incompatibility metric among all arc combinations, the arc combinations: (1) including corresponding arcs between an output connector of each selected block node and a corresponding input connector of the added block node; (2) for which an object type of the output connector of each corresponding arc is the same as or compatible with an object type of the corresponding input connector of the added block node;

[0017] - for a given arc combination, for each given arc whose output connector's object type is a descendant of the object type of the corresponding input connector of the added block node, the incompatibility metric penalizes the tree distance between the object type of the output connector and the object type of the corresponding input connector;

[0018] - for a given combination of arcs, the incompatibility measure is equal to the sum of one or more penalties, the sum of the one or more penalties being equal to the cardinality of the combination,

[0019] - when one of the following two conditions is met: when the object type of the output connector is the same as the object type of the corresponding input connector of the added block node, or when the object type of the output connector is a descendant of the object type of the corresponding input connector of the added block node, the sum of the penalties provided by each arc in the given arc combination is equal to the tree distance between the object type of the output connector of the arc and the object type of the corresponding input connector of the added block node of the arc;

[0020] - The tree of the predetermined object types includes the following types:

[0021] oRoot type,

[0022] oRoot types as supertypes, literal types, geometry types, and matrix types,

[0023] o Literal types as supertypes, real types, string types, and Boolean types,

[0024] oGeometry types as parent types, point types, curve types, surface types and volume types,

[0025] oMatrix type as parent type, vector type,

[0026] oReal number type as supertype, integer type and magnitude type, magnitude type has length type and angle type as subtypes,

[0027] oCurve type as parent type, Line type, and

[0028] oSurface type as parent type, plane type;

[0029] - a tree of predetermined object types comprises one or more first object types, each first object type is convertible to one or more corresponding second object types, each first object type convertible to a corresponding second object type is different from and not a descendant of the corresponding second object type, each first object type is convertible to the corresponding second object type according to a corresponding predetermined conversion algorithm, such that each first object type convertible to the corresponding second object type is compatible with the corresponding second object type,

[0030] - for a given arc combination, for each given arc whose output connector's object type is convertible to the object type of the corresponding input connector of the added block node, the incompatibility metric penalizes the occurrence of the given arc;

[0031] - the incompatibility metric penalizes the occurrence more than the tree distance, wherein optionally an occurrence is penalized by a tree distance of 1 or more, for example about 1000 times;

[0032] -For a given arc combination, the incompatibility metric is equal to the sum of one or more penalties, the sum of the one or more penalties being equal to the cardinality of the combination, when the following conditions are met: the object type of the output connector can be converted to the object type of the corresponding input connector, and the sum of the penalties provided by each arc in the given arc combination is equal to a value greater than 100, 200 or 500, for example equal to approximately 1000.

[0033] -Real number types can be converted to integer types, length types, and angle types,

[0034] - Integer types can be converted to length types and angle types,

[0035] - Boolean types can be converted to integer types,

[0036] -Point type can be converted to vector type,

[0037] -Curve type can be converted to plane type,

[0038] - Line type can be converted to vector type,

[0039] - Plane type can be converted to vector type, line type and matrix type,

[0040] -Volume type can be converted to surface type;

[0041] - 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;

[0042] - said user action comprises navigating in a menu to select a corresponding operator of said subset;

[0043] - the menu provides automatic suggestion of several operators of the subset based on the lowest value of the calculated incompatibility measure for each operator; and / or

[0044] - Each operator has a searchable name, the user action comprises performing a semantic search in the menu, the automatic suggestion is based on the lowest value of the calculated incompatibility measure for each operator matching the semantic search.

[0045] A computer program comprising instructions for executing the design method is also provided. When executed by a processor, the instructions cause the processor to perform the design method.

[0046] There is also provided an apparatus comprising a data storage medium having recorded thereon the computer program.

[0047] The device may form or be a non-transitory computer-readable medium, for example on a Software as a Service (SaaS) or other server, or on a cloud platform, etc. Alternatively, the device may include a processor coupled to a data storage medium. Thus, the device may constitute the entire or part of a computer system (e.g., the device is a subsystem of the entire system). The system may also include a graphical user interface coupled to the processor. BRIEF DESCRIPTION OF THE DRAWINGS

[0048] Non-limiting examples will now be described with reference to the accompanying drawings, in which:

[0049] - Figure 1 a flowchart showing an example of a design method;

[0050] - Figure 2 An example of the device being a computer system is shown;

[0051] - Figures 3 to 18 Embodiments of the method, program, and apparatus of the present disclosure are described. DETAILED DESCRIPTION

[0052] refer to Figure 1 A flowchart of a computer-implemented method for designing a 3D modeled object representing a product to be manufactured (ie, a manufactured product, in other words, a manufactured product) is presented. Figure 1 The design method involves a user interacting with a 2D block representation of a 3D modeled object displayed by a computer system (e.g., on one or more screens of the computer system, or on a screen of another computer system served by the computer system), such interaction being performed in a manner that is improved from an ergonomic point of view. The interaction is performed in a software application running locally on the computer system, or in a network application provided by the (e.g., distant / remote) computer system to a local workstation. In the present disclosure, in particular Figure 1 When operations are indicated as being performed by "the" computer system, it must be understood that these operations are actually at least partially performed and / or triggered by such software or network applications.

[0053] The design method includes: S10, the computer system simultaneously displays a 3D shape representation of the 3D modeled object and a 2D block representation of the 3D modeled object. In this way, the user can interact with the 2D block representation while viewing the 3D shape representation. 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 the 3D shape representation allows the user to directly view the final result and thus see the exact shape of the final manufacture. The design method may display the 3D shape representation and the 2D block representation side by side with each other in S10, for example, in two separate windows or two separate scenes in the same window, side by side on the same screen or each on a corresponding screen in two different screens. Alternatively, the design method may display the 3D shape representation and the 2D block representation in a superimposed manner in S10, for example, the 2D block representation is superimposed on the 3D shape representation (for example, in its foreground) (for example, see Figure 3 ). Although Figure 1 The flowchart of the invention is represented by a single box, but S10 may be performed while the rest of the design method is displayed, so that each user interaction of the design method that results in an update of the 2D block representation and / or an update of the 3D shape representation may result in an update of what the user sees on the screen. The update displayed in S10 may be performed automatically and / or in real time after the computer system determines the update of the 2D block representation and / or the update of the 3D shape representation (the expression "real time" herein may refer to a delay of up to 10 seconds or even 1 second when the expression is used in this document and / or in the rest of the disclosure).

[0054] The 2D block representation displayed in S10 includes block nodes, output connectors and one or more input connectors on each corresponding block node, and arcs between output connectors of a first block node and corresponding input connectors of a second block node.

[0055] "Block node" refers to any block-like 2D graphic, such as a rectangle or square, or any other polygon such as a trapezoid, circle or ellipse, or alternatively, any other type of block-like shape that a user can distinguish as a block. The 2D block representation can be displayed on a background, and different block nodes can be physically separated on the display screen, for example, the gap between each pair of block nodes is non-zero. "Block node" is a node of a virtual graph, where the virtual graph consists of blocks as graph nodes / vertices, and if there is at least one arc between two corresponding block nodes (in the 2D block representation), then there is a graph arc / edge between two graph nodes. Such a virtual graph may be referred to as a "graph corresponding to a 2D block representation."

[0056] The output connector and one or more input connectors of each corresponding block node may be represented by corresponding graphics displayed on the corresponding block node, for example, by corresponding symbols displayed on the corresponding block node. The corresponding block node may include a boundary line, and at least one (for example, each) such corresponding graphic (for example, symbol) may be displayed on the boundary line. Each such corresponding graphic (for example, symbol) may be smaller than the corresponding block node, for example, at least ten times smaller than the area occupied by the 2D block representation (i.e., the area occupied on the screen). Each such corresponding graphic (for example, symbol) may be a small 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 on the display, for example, the gap between each pair of connectors is not zero. One or more input connectors of each corresponding block node can have corresponding graphics that are visually identical or have the same shape, and optionally, the corresponding graphics can be visually identical or have the same shape as the corresponding graphics of the output connector of the corresponding block node. Optionally, one or more input connectors of all block nodes may have corresponding graphics that are visually identical or have the same shape, and optionally, the corresponding graphics may also be visually identical or have the same shape as the corresponding graphics of the output connectors of all block nodes. For example, all connectors may be represented by the same dot symbol. Optionally, in a 2D block representation, all block nodes may be oriented in the same manner, all input connectors in the 2D block representation may be set on the same side of their corresponding block nodes, for example, to the left of their corresponding block nodes, and / or all output connectors in the block representation may be set on the same side of their corresponding block nodes, for example, to the right of their corresponding block nodes. For example, each of all block nodes may be represented by a corresponding rectangle (or rectangular shape), and each rectangle may be oriented with its sides parallel to the sides of the screen. All input connectors of each block node may be represented by the same or the same shape of dot shapes / symbols, and are all located on the left side of the rectangle; all output connectors may be represented by the same or the same shape of dot shapes / symbols (e.g., the same dot shapes / symbols as the input connectors), and are all located on the right side of the rectangle of their corresponding block node (e.g., see Figure 3 ).

[0057] Each arc may be represented by a corresponding line connecting a graphic / symbol (eg, a dot shape) of an output connector of a first block node and a graphic / symbol (eg, a dot shape) of a corresponding input connector of a second block node.

[0058] Block nodes, connectors and arcs can all be selected by the user, for example, the user graphically interacts with the 2D block representation, in particular the user graphically interacts with the elements to be selected, for example, using a tactile device such as a mouse, touchpad or touch screen. The system can be configured so that the user can perform such selections, for example, by clicking a block node, connector or arc with a mouse or touching the screen, and / or by the user drawing a selection area, which includes at least a portion of the block node or arc, or the entirety of the connector (e.g., a graphical selection box or rectangle), optionally, by a select-move-release function (e.g., by clicking a mouse or touching the screen at a first location, moving the cursor or touching the screen to a second location, while maintaining the click or touch, and releasing the click or touch at the second location). Each time the user selects a block node, connector or arc, visual feedback is automatically obtained in real time, such as visual highlighting of the selected element (e.g., color change or intensity or opacity change), or slight movement of the selected element (e.g., bounce feedback). This graphical interaction allows the user to easily edit the 3D modeled object by operating the 2D block representation, and any selection mentioned in the present disclosure can be performed accordingly.

[0059] Thus, a user can graphically interact with the system to easily design and / or edit such a 2D block representation to instantiate block nodes, move instantiated block nodes by dragging and dropping, and / or instantiate arcs between connectors, such as by selecting two connectors in turn, and / or by dragging and dropping one or more ends of an instantiated arc to secure each end to a connector. Selecting a block node and / or connector may also trigger the display of a dialog box, for example, including editable data fields for the user to enter or modify a value, for example, using a keyboard or displayed scroll bars.

[0060] Each block node represents a corresponding operator in a predetermined set of operators. "Predetermined" refers to functional data (here a set of operators) supported by software / applications running on or provided to a computer system, i.e., a part of the computer program instructions constituting an application. "Operator" refers to a computer data set configured to obtain input data, process the input data, and provide processed output data. Therefore, each operator in a predetermined set of operators has one or more inputs and at least one output. Therefore, in the block nodes displayed in S10, each input connector represents the corresponding input of the corresponding operator represented by the corresponding block node, and the output connector represents the output of the corresponding operator represented by the corresponding block node. In addition to any input represented by the corresponding input connector, optionally, any corresponding operator may also include one or more user-editable internal parameters, for example, by selecting an operator by the user, the computer system displays one or more editable value fields, or converts the displayed value field from editable to non-editable, and displays visual feedback to the user to notify the conversion, and enters or modifies at least one numerical value of the internal parameter in at least one editable value field.

[0061] Now, optionally, the 2D block representation may include additional block nodes that are non-standard in that they have no input connectors, either because the input data of the operators represented by these block nodes is hidden from the user and therefore not editable, or because the output of these block nodes is static data rather than the dynamic result of the operation. The latter option may be the case, for example, for "reference" block nodes, which can provide a common reference frame 0xyz for the design, and / or for primitive block nodes (integer, float, length, etc.) (see, for example, Figure 7 Alternatively, such reference block nodes and original block nodes may be represented within the block nodes to which they are supplied.

[0062] For example, an operator that takes an integer value as input can be represented by a first block node representing the operator and a second block node that outputs the 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 integer block node, and the user can parameterize the block node to define the integer value. This allows the second block node to be reused. Alternatively, the integer value can be defined directly at the first block node as an internal parameter without using a second block node (for example, see Figure 4 A data field 400 on the first block node allows for direct input of a length value). A graphic similar to, the same as, or of the same shape as the graphic of the input connector may be displayed on the first block node and may be selected by the user. The user may perform the above parameter settings by selecting the graphic and entering or modifying a value in the corresponding editable data field.

[0063] Additionally or alternatively, optionally, the 2D block representation may include one or more block nodes, each block node having one or more input connectors, which may be selectively connected to output connectors (for input data flow) via arcs, or may not be connected, but the user may choose to enter data values ​​directly on the input connector. This provides flexibility to the user.

[0064] Additionally or alternatively, the 2D block representation may optionally include additional block nodes that are non-standard in that they have no output connectors. This may be the case, for example, for a "view" block node, which may allow viewing of a "local result" 3D shape at a specific output connector of the 2D block representation. The output of such a block node is a local 3D shape that need only be displayed to the user, e.g., when the block node is selected, without requiring input to any other block node.

[0065] In addition, each of the one or more (standard and / or non-standard) block nodes represented by the 2D block may include several output connectors, rather than just one output connector. Each such output connector may be selected individually by the user, for example, by interacting with the output connector graphically. Therefore, when the expression "output" or "output connector" is used in the present disclosure for a given operator or block node, it must be understood that when a given operator or block node includes several outputs or output connectors, it refers 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 be sorted in a predetermined order, with at least one output or output connector being defined as a unique main output or main output connector. If there is any ambiguity, when the expression "output" or "output connector" is used for a given operator or block node, it refers to such a main output or main output connector. According to some examples, the design method may include selecting one or more output connectors, for example, at S20, each output connector is selected by graphically interacting with its corresponding block node, without paying attention to the individual output connectors to be selected. In this case, the computer system may directly interpret the selection of each corresponding block node as the selection of its main output connector.

[0066] In the software / application, each operator in the predetermined set of operators may have a corresponding data identifier, which means that it is referenced by a unique data index, name or label that can be pointed to to instantiate the operator in a 2D block representation instantiation, such as the 2D block representation shown at S10. Each input of each operator may have a corresponding data identifier, and similarly, each output of each operator may have a corresponding data identifier. In the 2D block representation instantiation shown at S10, these identifiers allow the organization of data flows / loops, wherein data may be marked / identified so as to be input into the marked / identified operator, thereby generating marked / identified output data, which in turn may flow to any other process, such as other operators. The operator identifier, input identifier and output identifier may constitute one or more indexes. For example, the software / application may manage three indexes, including a first index storing an operator identifier, a second index storing an input identifier and a third index storing an output identifier. In other words, each identifier is a corresponding index value (e.g., an integer) from a corresponding index (e.g., a set of (optionally, continuous and / or from 1 to N) integers). Indexing the input (respectively, output) connectors in the set of all input (respectively, output) connectors in all operators in a predetermined set, rather than indexing within each corresponding operator, can provide strong differentiation between the input (respectively, output) connectors, thereby enhancing any optional predictions.

[0067] Each arc is located between a corresponding pair of connectors, specifically from the (starting point) output connector of the first (starting point) block node to the (end point) input connector of the second (end point) 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 a corresponding operator (sometimes static, that is, only internal parameters are used as input), each output connector of each block node represents the data value output by the operator. The arc starting from the connector represents the flow or circulation of the data value to the input connector reached by the arc. The application interprets this as an intention to input the output data value of the output connector as the input of the second block node at the input connector.

[0068] The same output connector may be the origin of multiple arcs, which means that the data output from this output connector will flow to several destinations (several input connectors of other block nodes). Each input connector can (e.g., in most cases) be the end point of at most one arc to avoid ambiguity. Alternatively, some input connectors may only accept multiple input arcs under certain conditions, which are interpreted as receiving a collection of objects. Alternatively, and as described in further detail later, each input connector may accept a collection of objects through a single arc (e.g., see Figure 3 3” in the example above, indicating a set of three objects input via a single arc). Further optionally, at least some of the input connectors may be dynamically repeated to multiply the potential data flows of objects of the same nature. Such repetition may be accompanied by the addition of specific graphs (e.g., see Figure 3 Input connector "pts" of block node "Spline.1" in the middle block, with the dashed line surrounding the connector to indicate this duplication).

[0069] Thus, the 2D block representation is configured such that the execution of the data flow represented by the arcs of the 2D block representation corresponds to the processing of the data, starting from one or more root block nodes (i.e., block nodes with no input connectors or arcs connected to any input connectors of that node), and following the data flow represented by the arcs in the direction of the arcs, processing the 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 does represent a global operation, corresponding to a composite function of operators defined by the set of arcs connecting pairs of connectors of the block nodes. The execution of the data flow is equivalent to the evaluation of the composite function.

[0070] The execution of the data flow can be completed by the data flow engine of the application. The execution of the data flow includes, in particular, compiling the data flow represented by the 2D block representation into a series of operations, which involve operators, inputs, internal parameters, and outputs defined by the 2D block representation. Compilation can simplify the calculation according to predetermined rules so that a series of operations produce the same results as the exact data flow, but not step by step. This is the standard of algorithm compilation technology. The 2D block representation displayed at S10 is consistent (i.e., compilable) with the updated 2D block representation to be executed at S110, so that the data flow engine can effectively compile successfully. To ensure this, the 2D block representation is logically consistent, and / or the data flow engine is configured to resolve any logical inconsistencies, for example, based on predetermined (e.g., arbitrary) rules.

[0071] In the example, the data processing / flow represented by the 2D block representation is limited, for example, because the 2D block representation does not include a loop, that is, does not include an arc path starting from one output connector and reaching the same output connector. What's more, the graphics corresponding to the 2D block representation may be non-cyclic. In the process of designing a 3D modeling object by designing a 2D block representation, when the user tries to create such a loop, the computer system may output an alarm, prompt a compilation error, or even prohibit the creation of a loop. Alternatively, such a loop may be approved, but there are specific rules in interpreting the implicit data flow to make it limited. For example, the predetermined set of operators may include a loop operator that can generate values ​​according to a certain loop / iterative algorithm. Such operators may be allowed to operate in reverse, thereby generating arc loops. The loop operator can take the value controlling the number of iterations / generations as input or internal parameters to make it limited and stable.

[0072] Alternatively or additionally, each input connector may be connected to an arc so that data effectively flows into the input connector, and / or each input connector may have a default value that is used in the event that no arc reaches the input connector. Optionally, the default value may be a null value, for example, if the input represented by the input connector is optional when evaluating an operator of a block node. Similarly, any operator that includes internal editable parameters may have default values ​​for the parameters used to evaluate the operator in case the user does not enter any specific numerical values. When one or more null values ​​are entered, the block node may evaluate the operator using one or more null values, or may ignore them (for example, a line operator may include the supporting surface of the line as an optional input, which may be optional because a line can be drawn using only two points as input), or, alternatively, replace them with the default values ​​of the relevant default connectors and / or internal parameters, or, alternatively, for example, if the input is considered mandatory, indicate an error and / or do not evaluate the operator (for example, and / or output a "null" value). For example, the set of predetermined operators may include a point-by-coordinates operator that outputs a geometric point based on input lengths x, y, and z, with coordinates (x, y, z) relative to a reference frame. The default values ​​of all length input connectors x, y, and z for a block node representing the point-by-coordinates operator are 0 mm. The point-by-coordinates operator may use a default value of 0 mm if one of the input connectors x, y, and z is not linked to any input arc that feeds a data value to the input connector, or a null value is fed to the input connector.

[0073] If a logical inconsistency occurs or is about to occur in the 2D block representation, the data flow engine may automatically resolve, output an alert, and / or prevent the inconsistency from occurring in any predetermined manner.

[0074] For at least one specific block node (hereinafter referred to as a "geometry" block node), e.g. all block nodes of the 2D block representation, the (primary) output of the corresponding operator represented by each such block node is a corresponding set of one or more geometric objects, i.e. a set of objects representing geometric shapes. The "geometry" block node may be such in nature, because it is designed to systematically output geometric shapes, or because of the nature of its input in the 2D block representation, e.g. because such input is geometric and the operator represented by the "geometry" block node does not change this geometric nature. The predetermined set of operators may in particular include a create list operator, which may create a list of input objects. If the input objects of an operator are geometric, then in the 2D block representation the corresponding block node is also considered to be geometric.

[0075] At least a subset of operators in the predetermined set of operators is such that the output of each corresponding operator of the subset is a corresponding set of one or more geometric objects (at least possibly, e.g., possibly depending on how it is instantiated in the 2D block representation). At least one concrete block node is a block node representing an operator of the subset (e.g., and has been instantiated such that it actually outputs one or more geometric objects).

[0076] With such a geometry block node, the 2D block representation is configured such that execution of the data flow represented by the arcs of the 2D block representation outputs a 3D shape representation, in particular the 3D shape representation shown at S10 or S120 .

[0077] The present disclosure focuses on the geometry block nodes (i.e., the block nodes in the at least one specific block node mentioned above), but it is also applicable to other types of block nodes. In particular, the selection at S20 is performed in the at least one geometry block node, and the addition at S70 is also performed, but the user may also select not only in the at least one geometry block node at S20, or even only outside the at least one geometry block node, and / or the addition at S70 is not in the at least one geometry block node, and Figure 1 The rest of the method can still be executed. In particular, the automatic calculation at S85 can still be performed, for example, because its rules can be applied to non-geometric block nodes (the rules can actually be independent of the geometric or non-geometric nature of the block nodes). In addition, the optional prediction output can still be performed, for example, because non-geometric operators are included in the dataset used in the pre-training of machine learning. However, since the discussion focuses on describing how the design method helps designers model 3D shapes and ultimately produce them in reality through manufacturing processes, the emphasis is placed on the case of geometric block nodes.

[0078] With reference to object-oriented programming, an application manages a set of predetermined object types and an object instance of each type in the set of predetermined object types. In the application, each object type can be identified by a unique label, tag, or index. At least a portion of the object types are geometric object types. A 2D block representation instantiates an object in a set of predetermined object types. Each value entered by the user (for example, as an internal parameter value of a given block node) is an instance of one of the object types. Each output value provided by the output connector of any block node and input to the input connector is an object instance or a collection of object instances, each object instance having one of the object types.

[0079] Optionally, for (at least) each geometry block node, i.e., each block node of at least one block node (for which the output of the corresponding operator represented by the block node is a corresponding set of one or more geometry objects), the output of the corresponding operator (at the corresponding output connector) has a dynamic object cardinality. Optionally, the output of the operator of one or more non-geometry block nodes may also have such a dynamic object cardinality. In other words, the output provided by such a block node on the corresponding output connector may include a number of object instances, and the number of these object instances may vary depending on the value of one or more internal parameters of the operator provided on the block node and / or the value and / or cardinality of one or more inputs of the operator provided on the block node. Therefore, the block node may output a unique object or a set of several objects on the corresponding output connector, depending on the situation.

[0080] For example, the predetermined set of operators may include a sequence operator designed to output a list of one or more integers based on the input values ​​of the sequence operator, the input values ​​may include a lower bound "inf", an upper bound "sup" and the number of integers to be added to the list "nb". Additionally or alternatively, the predetermined set of operators may include a mesh-vertex operator, which includes outputting all vertices (i.e., geometric points) of the input mesh as a list. Additionally or alternatively, the predetermined set of operators may include a create list (or build list) operator, whose function is to create a list based on one or more inputs provided to the corresponding block node. Such operators are designed and intended to output a collection of a variable number of objects per operator (i.e., a dynamic number, because it depends on the current instance of the 2D block representation, in particular its data flow at the relevant block node location), even though a single input and / or parameter value may cause the operator to output a unique (i.e., single) object instead of a collection in special cases (e.g., if in the block node of the sequence operator, an integer value equal to 1 is fed to the "nb" input connector, this may be "insufficient capacity" of the operator but authorized for use).

[0081] Additionally or alternatively, other examples of operators that the predetermined set of operators may include and are intended to output a set of objects of dynamic cardinality include the following known operators: a rectangular grid operator (locating points on a plane in a rectangular pattern), a grid-UV operator (locating points on a curved surface), a color gradient operator, a split string operator, a normal-rand operator, a sampling operator (providing a sampling of points in space), a grid-edge operator and / or a grid-face operator (outputting edges and / or faces of a grid), a get item operator, a deepening operator and / or a flattening operator.

[0082] The output connectors associated with the above operators may be marked in the computer system (application) with the label "collection" to indicate that the expected output is a collection of objects, rather than a unique object. Conversely, output connectors that are primarily designed to output a single object may be marked with the label "unique" to indicate that the expected output is a unique object. Such marking may be performed in any manner, for example, by associating output identifiers with their corresponding labels via a database.

[0083] Furthermore, for each cell node, and optionally for at least one (e.g., each) non-cell 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 a number of object instances that may vary depending on the starting point of the input arc. The operator may be configured to expect such a collection, thereby processing the collection of input objects as a whole. Therefore, each such input connector may be associated with a "collection" tag or a "unique" tag, respectively.

[0084] For example, the predetermined operator set may include a spline operator and / or a polyline operator, which are configured to receive a list of points as input and output a spline curve controlled by the list of points or a polyline linking the list of points, respectively. In such an example, the operator expects a list of points as input, thereby processing the set immediately to provide a single output geometric object.

[0085] However, even on connectors for unique objects, it is possible to configure the application to manage the data flow of collections. This may apply to all connectors for geometric (optionally, even non-geometric) block nodes. Connectors are still marked as "unique", but depending on the data flow, they may be traversed by collections of objects instead of unique objects. This behavior also applies to connectors that expect collections, so that in this case, the connectors all see a collection of collections flowing through them.

[0086] In particular, an operator may be designed to process a single / unique object as input, and a computer system (e.g., a data flow engine) may be configured to ensure compilation to interpret a data flow of a collection of input objects (rather than just one unique object) as multiple invocations of the operator. In other words, the operator may treat each object of the input collection as a single / unique input, compute the corresponding output, and thereby output a corresponding collection of output objects. The computer system (e.g., a data flow engine) may be configured (e.g., at compile time) to accept only a collection of N objects on one input connector, and a corresponding unique object on one or more other input connectors, and then evaluate the operator N times, each time using the corresponding object in the collection for the input connector, and each time using the corresponding unique object for each other input connector, thereby outputting a collection of N output objects. Alternatively, the computer system (e.g., a data flow engine) may be configured (e.g., at compile time) to accept a collection of N objects on one input connector, and may accept a collection of objects on one or more other input connectors, but in this case, the cardinality of the collection must also be N. In this case, the execution of the dataflow may still evaluate the operator N times, each time retrieving the input object from each collection using index i from 1 to N, and each time using the corresponding unique object for each remaining input connector (without input collection), thus outputting a collection of N output objects. If the cardinality of the inputs is different, the system may output an alert and fail compilation.

[0087] For example, the predetermined set of operators may include the aforementioned point determination by coordinates operator, where the x input connector may be fed a list of N length values ​​x1, ...xN instead of a single value, and other input connectors may be fed a single value y1 and a single value z1. In this case, the operator outputs a set of N points: (x1, y1, z1), ...(xN, y1, z1). For the x input connector, the same operator may be fed a list of N length values ​​x1, ...xN; for the y input connector, a list of N length values ​​y1, ...yN may be fed; and for the z input connector, a single value z1 may be fed. In this case, the output of the block node may be the following set of N points (optionally, since the data flow engine supports this case): (x1, y1, z1), ...(xN, yN, z1), where xi is always equal to yi. If the cardinality of the two lists x1, ...xN and y1, ...yN is inconsistent, the system will output an alarm and compilation will fail.

[0088] Such a point set can be input to an operator that expects a point set, such as the spline operator or polyline operator described above. In an example, an operator that expects a set of objects (such as a spline operator or polyline operator) can receive a set of object sets as input. The operator can be evaluated separately for each object set. In the example of a spline operator, the block node will receive a set of point lists. Each point list produces a corresponding spline. Therefore, the block node outputs a set of splines.

[0089] This dynamic object cardinality management provides a high level of ergonomics for the 2D block representation, since a reduced number of blocks can be used to generate a collection of geometries. In particular, the 2D block representation can be configured such that data can be input to each input connector of each geometry operator block node using a dynamic object cardinality (if required). This provides a high flexibility for the user to generate complex patterns involving collections of objects.

[0090] With reference to object-oriented programming and in conjunction with the concept of "type" or "data type" in computer programming, the application manages typed objects, which means that each object that flows on the arc from the input connector to the output connector, in other words, each object that passes through or is received at the input connector or output connector has a data / object type in a predetermined set of object types. Each operator expects an object from one or more possible object types as input, and each operator outputs an object of one or more possible object types, depending on the operator, the operator's internal parameter values, and the object type of the operator input. For example, for each input connector x, y or z, the expected object type of the coordinate determination point operator is the length object type. The expected object type of the (main) input connector of the spline operator is the point object type, because the spline operator expects to receive a set of points to draw a curve through these points. It can be seen that in addition to the expected cardinality, there is also an expected type. An input connector may expect the same object type as another input connector, but the two connectors may expect to use different cardinality. Therefore, each connector can be marked with a label to indicate its expected object type.

[0091] Thus, each connector (input or output) of a 2D block representation may have a static (i.e., predefined) cardinality value and a static (i.e., predefined) object type. The static cardinality and static object type are information that is present when the 2D block representation is initially created, e.g., stored in a database (e.g., in non-volatile memory) of generic connector identifiers associated with such information (and persists throughout the design process regardless of modifications to the 2D block representation).

[0092] A static cardinality value is a value that depends on the object cardinality of the connector. Optionally, it can be a binary value indicating whether the cardinality is 1 or greater than 1, i.e. a piece of information indicating whether the connector is for a unique / single object passing through the connector, or a collection of (several) objects. Such a binary value improves the accuracy of the optional prediction, as the prediction may depend mainly on whether the cardinality is 1 or greater than 1, rather than on the exact number of objects in case the cardinality is greater than 1.

[0093] The static object type is a piece of information indicating an object type in a set of predetermined object types that the connector targets. The set of predetermined object types may include a generic object type to manage situations where the same operator targets different possible specific object types.

[0094] Therefore, the static cardinality value and the static object type do not depend on the specific use of the connector in the 2D block representation in the design.

[0095] Thus, in addition to these static values, each connector (input or output) of the 2D block representation may have a used (e.g., dynamic) cardinality value and a used (e.g., dynamic) object type, also referred to as an "internal" cardinality / type or an "evaluated" cardinality / type, as opposed to a "predefined" (also referred to as a "defined") cardinality / type. The used or dynamic object cardinality and the used or dynamic object type are information that depends on the current structure of the 2D block representation in the design, e.g., they may be calculated from the 2D block representation as needed, or, alternatively, they may be calculated and stored in a volatile manner, e.g., in a volatile memory such as RAM (so that they may be read at any time as needed throughout the design process, but they are updated when modifications to the 2D block representation affect these values).

[0096] The Used or Dynamic Cardinality value is a value that depends on the effective object cardinality of the connector in the current 2D block representation instantiated. The Used or Dynamic Cardinality value may correspond to the Static Cardinality value (i.e., defined in the same domain). Thus, optionally, it may be a binary value indicating whether the Used or Dynamic Cardinality is 1 or greater than 1.

[0097] As mentioned previously, a connector with a static cardinality value indicates that the connector expects a collection (e.g., a "point" input connector of a Spline Operator Block node, or an Integer List output connector of a Sequence Operator Block node) to have different Use Cardinality values. For example, if the input / parameter of a Sequence Operator Block node that represents the number of integers to be output is set to 1, then the Integer List output connector may output a single integer. In this case, the Sequence Operator Block node may be used in an "out of capacity" situation, but this may be allowed by the dataflow engine. Conversely, the dataflow engine may prohibit (block and / or output an alert) the Spline Operator from inputting a unique point in its Point List input connector. Therefore, when the Cardinality value is a binary value, the Use Cardinality value is not dynamic because it is always equal to the static Cardinality value, i.e., it indicates a Use Cardinality greater than 1.

[0098] A use or dynamic object type is a piece of information indicating the type of object from a predetermined set of object types through which a connector flows. For the output connector of at least one geometry block node and optionally for the output connector of at least one non-geometry block node, the output of an operator has a dynamic object type, which means that it changes according to the current instance of the 2D block representation. In particular, at least one input of the respective operator may have a dynamic object type, so that the corresponding input connector of the respective block node may be fed with different types of objects. The object type at the output connector (i.e. the type of object output at said connector) may then depend on and change according to said input object type.

[0099] For example, the predetermined operator set may include one or more transformation operators, one or more extraction operators, and / or one or more list combination operators. Such operators do not affect the type of the input, but operate on it in a type-preserving manner. Such operators can be approved for input of different object types because their operation does not depend on the object type of the input. For example, the predetermined operator set may include any one or any combination of the following operators: a translation operator for translating a geometric object; a rotation operator for rotating a geometric object; a scaling operator for scaling a geometric object; a combination operator for, for example, combining geometric objects together; a subelement operator for extracting a sub-part of an object; a boundary operator for extracting the boundary of a geometric object (e.g., if the object is a surface, extracting a boundary curve; if the object is a volume, extracting a boundary surface); and / or a build list (or create list) operator for building a list from multiple input objects. These operator block nodes may each have a dynamic input connector and a corresponding dynamic output connector. The object type of the output connector may differ from the object type of the input connector, and the input connector accepts different object types.

[0100] Conversely, the predetermined operator set may include one or more geometric operators that do not output any dynamic object types. For such operators, the use / internal object type of the output connector must 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. For example, the predetermined operator set may include any one or any combination of the following geometry generation operators: one or more point generation operators (such as the point by coordinates operator), which must output a point; a circle generation operator; one or more curve generation operators; a line generation operator; a sphere generation operator; a plane generation operator; a mesh generation operator; a spline generation operator (as described above) and / or a polyline generation operator (as described above). In this case, the output must be a constant object type from the predetermined object type set, for example, a geometry point object type, a geometry line object type, or a geometry plane object type.

[0101] Since the 2D block representation may include at least one input connector corresponding to an input having a dynamic object type, the predetermined object type set includes one or more first object types that are respectively compatible with one or more second object types. The compatibility of a first object type with a second object type means that an input connector having the second object type as its static object type can also accept input data of the first object type. The compatibility relationship is not necessarily symmetrical.

[0102] For example, a translation operator may expect an object of type General GeometryObject (or Geometry) as input to be translated, but the operator may also take as input an object of a more specific type, such as an object of type GeometryCurve. The translation operator can indeed translate curves without any problems. As another example, a Point by Coordinates operator may have a Length type as a static Object type for its x, y, and z input connectors, but each of these input connectors may accept an object of type Real (i.e., Real Number) or an object of type Integer (i.e., Integer), and such input objects may be interpreted as lengths, equal to the input value assigned with predetermined length units (e.g., meters or millimeters).

[0103] The predetermined object type set can form an object type tree, which is, for example, connected and / or has only one root node. Therefore, object types are all organized in a tree structure according to the parent-child relationship, and subtypes are the specific subtypes of their direct parent types. In other words, the parent type is more general / contains its subtypes. Therefore, the object of the subtype presents all the properties of the object of the parent type, so that the object of the subtype can be used as is (i.e., without conversion) in the operation of the expected parent type. In this case, each non-leaf object type is dynamic, that is to say, the connector with the non-leaf object type as the static object type has a dynamic object type. In particular, each offspring (offspring of the offspring or offspring, such as grandchild) object type of the non-leaf object type is compatible with the non-leaf object type. For example, the translation operator as described above is exactly this case, because the curve object type may be the offspring (such as offspring) of the geometric object type. This compatibility allows the operator of the general object type to be used according to the specific circumstances, for example, those geometric operators that do not affect the type introduced above.

[0104] In a tree, the parent of a given node is the node from which arcs to the given node originate (all arcs are directed). The descendant nodes (eg, child nodes) of a given node are the nodes from which a continuous path of one or more arcs to the descendant node originates.

[0105] The predetermined set of object types (e.g., tree) may include any one or any combination (e.g., all) of the following list of types:

[0106] - a generic or undefined (e.g., root) type, optionally, the set of predetermined operators may include one or more operators that have the generic type as their static object type, e.g., a create list operator;

[0107] - (i.e., if it has a root type, it has a parent or ancestor type) literal types, geometry or geometry object types, and matrix types,

[0108] - (e.g., if it has a literal type, it has a parent or ancestor type) real number type, string type, and Boolean type

[0109] - (e.g., if it has a geometry type, it has a parent or ancestor type) point type, curve type, surface type, and volume type,

[0110] - (e.g., if it has a matrix type, then it has a parent or ancestor type) vector type

[0111] - (e.g., having a real root type has a parent or ancestor type) an integer type and a magnitude type, the magnitude type has a length type and an angle type as subtypes,

[0112] - (e.g., if it has a curve type, then it has a parent or ancestor type) a line type, and

[0113] - (For example, if it has a surface type, it has a parent or ancestor type) a plane type.

[0114] Thus, at least part of the tree may consist of the following object type structure, where indentation indicates parent-child relationships:

[0115] ●Undefined / Root / Generic

[0116] ○ Literal

[0117] ■Real numbers

[0118] Integer

[0119] Size

[0120] ○Length

[0121] ○Angle

[0122] ■String

[0123] ■Boolean

[0124] ○Geometry / geometric objects

[0125] ■Point

[0126] ■Curve

[0127] Straight line

[0128] ■Curved surface

[0129] ●Plane

[0130] ■ Volume

[0131] ○Matrix

[0132] Vector

[0133] The 2D block representation displayed at S10 may include, for each corresponding type of any one or any combination (eg, all) of the list of types, at least one connector whose static / defined type is the corresponding type.

[0134] Additionally or alternatively, when the predetermined set of types is a tree, the 2D block representation may include, for each corresponding leaf type of any one or any combination (eg, all) of the list of types, at least one connector whose use / internal type is the corresponding type.

[0135] In addition or alternatively, a predetermined object type set (e.g., a tree) may include one or more first object types, each of which is convertible to one or more corresponding second object types. Each first object type convertible to a corresponding second object type may be different from the corresponding second object type and is not its child type or descendant type. However, the first object type may be the ancestor type (i.e., parent type or prototype type) of the second object type. "Convertible" means that the computer system / application / data flow engine includes a corresponding conversion algorithm configured to convert / convert each such first object type to such corresponding second object type. Therefore, each time an object of the first object type is input to an input connector where an object of the second object type (having a static object type) is expected, the algorithm / conversion can be performed. Therefore, each first object type convertible to a corresponding second object type is compatible with the corresponding second object type. For example, an integer object type or a real number object type can be converted to a length object type. As described above, in this case, the predetermined algorithm can include obtaining an integer or real value as input, and assigning a predetermined length unit to the value. This compatibility provides flexibility for the user, and when creating arcs between connectors, it is not necessary to have an exact type match or descendant type. This may prove to be extremely ergonomic, since the set of predetermined object types may include more than 10, 50 or 100 different object types, making it difficult for the user to always select only approved object types in any case.

[0136] By convention, the dynamic object type of a collection of objects of different object types is the closest ancestor object type in the tree that is common to all object types in the collection.

[0137] For example, a system (e.g., a data flow engine) may support any one or any combination (e.g., all) of the following list of transformable rules:

[0138] - can convert real number types to integer types (e.g., by using floor or ceiling functions), length types (e.g., by adding units, which can systematically be meters), and / or angle types (e.g., by adding radians),

[0139] - integer types can be converted to length types (e.g. by adding units, which can be systematically meters or millimeters), and / or angle types (e.g. by adding radians),

[0140] - Boolean types can be converted to integer types (for example, "true" is converted to "1" and "false" is converted to "0"),

[0141] - can convert point type to vector type (for example, the coordinates of a point become the coordinates of a vector),

[0142] - can convert a curve type to a plane type, optionally only if the curve is a plane, otherwise it will output an error (e.g. take a plane or any plane that contains the curve),

[0143] - can convert line types to vector types (for example, directly taking the unit vector along the line),

[0144] - plane types can be converted to vector types (e.g., by taking a unit vector perpendicular to the plane), line types (e.g., by taking an infinite line perpendicular to the plane), and matrix types (e.g., by considering a 4x4 transformation matrix, the geometric figures (including the plane) are 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 plane origin O; this conversion can be used to express changes in the system in a convenient way), and / or

[0145] - Volume types can be converted to surface types (e.g., by extracting the bounding surfaces of the volume).

[0146] The 2D block representation displayed at S10 may include at least one occurrence of each transformability in the list (ie, at least once, the object is transformed according to each rule on the input connector).

[0147] The system / application / engine may be configured so that a first object type is compatible with a second object type only if the first object type is a descendant type of the second object type or the first object type is convertible to the second object type. Otherwise, if the first object type is not the same as the second object type, the system may output an error indicating incompatibility. This imposes constraints on the design to avoid ambiguity.

[0148] Still refer to Figure 1 The design method includes, after and / or simultaneously with the display of S10, the user graphically interacting with the 2D block representation (e.g., as described above), performing at S20 the selection of one or more block nodes in at least one geometric block node. Discussed here is the case of geometric design, where the user is shaping the final product to be manufactured, although non-geometric design may also support the same type of user interaction.

[0149] The selection performed at S20 may include a user acting graphically on one or more block nodes, possibly at a position other than a connector displayed on a block node, thereby directly selecting one or more block nodes. Alternatively, the selection performed at S20 may include a user acting graphically on an output connector of each block node in one or more block nodes, such as a user clicking or touching one or more output connectors, such as one by one. The system may then interpret this action as selecting a corresponding block node for each selected output connector. The system may optionally support these two alternatives. In the example, the design method is repeated, including at least one implementation of the first alternative and at least one implementation of the second alternative.

[0150] The design method then includes user actions at S60 in sequence, mainly to not only add new block nodes (i.e., geometry block nodes) representing corresponding operators of the subset, but also automatically connect the new block nodes to one or more block nodes that already exist in the 2D block representation and are selected in S20.

[0151] Specifically, the design method includes, after a user action at S60 , adding a block node representing a corresponding geometric operator of the subset to the 2D block representation at S70 , thereby instantiating the selected operator.

[0152] The design method also includes automatically determining corresponding arcs between the output connector of each selected block node and the corresponding input connector of the added block node in S85, and adding each determined arc to the 2D block representation in S90, thereby connecting the output connector of each block node selected at S20 to the automatically determined corresponding input connector of the new block node added at S70.

[0153] The one or more block nodes selected at S20 may optionally each have one and only one output connector. However, in the case where a given block node selected at S20 has several output connectors, the design method may be implemented via Figure 1 The function connects only one output connector of a given block node. The expression "output connector" for the connected output connector can specify any (predetermined or variable) output connector of the given block node (for example, automatically determined among several output connectors of the block node as part of the automatic determination at S85, for example, as one (for example, the output connector) that achieves arc combination compatibility and / or minimizes a predetermined incompatibility metric as described later), or alternatively, specifies a (predetermined) selected output connector (for example, in the case where a given block is indirectly selected in S20 by selecting the selected output connector), or alternatively specifies a (predetermined) main output connector of the given block node. The design method can implement any option.

[0154] Therefore, the design method automatically determines the arc combination at S85 so as to connect the output connector of each block node selected at S20 to the corresponding input connector of the new block node. Therefore, the design method instantiates the data representing such arc combination at S85 without the user defining the arc.

[0155] Automatically determining in S85 may include calculating such arc combinations, or alternatively retrieving pre-calculated arc combinations. In particular, when performing the addition at S70, the corresponding arcs between the output connector of each block node selected at S20 and the corresponding input connector of the block node added at S70 may be pre-calculated information. For example, once the user performs a selection at S20, the system can automatically calculate the arc combination, such as by automatically browsing a predetermined set of operators, and executing an arc combination calculation algorithm for each operator of the predetermined set of operators or a browsed subset thereof. In this case, for at least one operator, at least one arc combination is effectively output, which includes the corresponding arcs between the output connector of each block node selected at S20 and the corresponding input connector of the block node added at S70 (the arc combination calculation algorithm is optionally configured to not output any arc combination, or output other types of arc combinations according to the operator and the selection at S20, as discussed below). This pre-calculation allows for higher real-time behavior at S85. As explained below, it also allows navigation between different results.

[0156] Then, the design method includes adding each calculated arc to the 2D block representation at S90, thereby instantiating the corresponding arc between the (e.g., any, main or selected) output connector of each block node selected at S20 and the corresponding input connector of the block node added at S70, thereby obtaining an updated 2D block representation at S90. After adding the block nodes at S70 and / or calculating at S85, such arc addition at S90 can be performed automatically / real-time and seamlessly.

[0157] After the addition at 70, the determination at S85 and / or the addition at S90 may be performed, for example, automatically / real-time and seamlessly after the addition at S70 is completed or triggered. The determination at S85 and / or the addition at S90 may be intermixed / simultaneous and seamlessly performed with the addition at S70.

[0158] Then, the design method includes updating the display of the 2D block representation in S100 by at least displaying the block node added at S70 and each arc added at S90. After completing the addition at S70 and / or the calculation at S85 and / or the addition at S90, the updating of the display at S100 can be performed automatically / in real time and seamlessly. Therefore, the updating of the display at S100 can be mixed / simultaneously and seamlessly with the addition at S70 and / or the calculation at S85 and / or the addition at S90.

[0159] The design method may include, optionally, automatically / real-time and seamlessly executing S110 the data flow represented by the arc of the 2D block representation updated at S100 after the update at S100 is completed, thereby outputting an updated 3D shape representation, and displaying S120 the updated 3D shape representation while displaying the updated 2D block representation. Thus, the design method allows the 3D shape representation to be finally updated at S120, which provides visual feedback for the user's edits made through S20 and S60.

[0160] The arc combination determined at S85 may be a compatible arc combination, which means that for each arc in the arc combination, where the arc connects the corresponding output connector of the block node selected at S20 to the corresponding input connector of the block node added at S70, the object type of the corresponding output connector is the same as or compatible with the object type of the input connector. In this sameness / compatibility evaluation, the considered object type of the corresponding output connector is the object type set by the current state of the 2D block representation (as shown at S10), that is, if applicable, the use / dynamic object type of the corresponding output connector (i.e., the output connector is evaluated, for example, because its block node is receiving the input of the evaluation), otherwise it is the definition / static object type of the corresponding output connector. In other words, if an object or set of objects effectively flows out of the output connector, the (e.g., dynamic) object type of the object or set of objects is considered, otherwise the static object type is considered. This may have an impact on the dynamic object type (i.e., the use object type may be different from the static object type). In turn, the object type of the corresponding input connector under consideration is the definition / static object type of the corresponding input connector, since its block node was added at S70 and is not yet connected and therefore not evaluated.

[0161] The calculation of the arc combination performed at S85 or the pre-calculation performed before S70 (the result of which is retrieved at S85) may in an example include determining a set of one or more (e.g., all or a predetermined number) compatible arc combinations, which include corresponding arcs between the output connector of each selected block node and the corresponding input connector of the block node added at S70 or to be added at 70, the arc combination determined at S85 being an arc combination in the set of one or more compatible arc combinations.

[0162] At S100, the design method may include displaying a widget next to the added block node to navigate between different arc combinations, such as changing the currently displayed arc combination via a single click. The user may use the widget to re-execute the determination at S85, the addition at S90, and the update at S100, with the arc combination being different from the arc combination initially determined by the method, such as sequentially browsing (e.g., forward or backward, the system optionally supports both directions) a list of possible arc combinations (provided to the user). The list of possible arc combinations may be in a set of one or more compatible arc combinations, such as being equal to the set, wherein the set may optionally be a set of all compatible arc combinations, including the corresponding arcs between the output connector of each selected block node and the corresponding input connector of the block node added at S70 or to be added at 70.

[0163] The method may compute or retrieve a list of such possible arc combinations at S85 (eg, because a list of possible arc combinations may optionally be pre-computed, such as when performing the selection at S20 ).

[0164] The method may also include displaying a visual cue indicating the position in the navigation / list, including the total number of possibilities (i.e., the size of the list of possible arc combinations). The visual cue may be "k / K" or any equivalent form, where k and K appear in any form (such as "k belongs to K"), where K is an integer representing the total number of arc combinations in the list and k is an integer from 1 to K representing the current selection in the list. K may therefore optionally be equal to the number of elements (i.e., size / cardinality) in the set of all compatible arc combinations, the set of compatible arc combinations including the corresponding arcs between the output connector of each selected block node and the corresponding input connector of the block node added at S70 or to be added at S70.

[0165] This visual tool allows the user to effectively interact with the automation provided by the design method to ergonomically correct automatic suggestions, thereby re-executing the update at S100, the data flow execution / compilation at S110, and the display at S120 to provide visual feedback to the user.

[0166] The arc combination determined at S85 can be determined in an example based on a predetermined incompatibility metric that measures the incompatibility level / degree of the arc combination, or conversely measures the compatibility level / degree of the arc combination. The arc combination determined at S85 can specifically be one (e.g., the arc combination) for which the predetermined incompatibility metric has the lowest value among all arc combinations (e.g., in the case where there are several such arc combinations, the arc combination determined at S85 can be selected from them in any manner). By extension, when there is at least one such arc combination, the value of the predetermined incompatibility metric between a set of one or more block nodes and an operator is the lowest value of the predetermined incompatibility metric among all arc combinations that connect the output connector of each block node of the set to the corresponding input connector of the block node representing the operator.

[0167] The list of possible arc combinations may include a number (e.g., all) of the sets of all compatible arc combinations, which may be sorted in the list in descending order from the lowest value to the highest value of the incompatibility metric. The number may be the number of arc combinations with a predetermined lowest value of the incompatibility metric. The number may be predetermined and / or higher than 2 or 3, and / or lower than 10 or 8, such as equal to 4, 5, 6, or 7.

[0168] In an example where the system automatically calculates arc combinations once the user performs a selection at S20, for example by automatically browsing a predetermined set of operators and executing an arc combination calculation algorithm for each operator of the predetermined set of operators or a browsed subset thereof, the system can construct a mapping (e.g., including executing an arc combination calculation algorithm on one or more operators), and the system can also store the mapping in a volatile manner, such as on a volatile memory such as RAM, for read access.

[0169] The mapping may include all operators for which there are compatible arc combinations (and each operator may be referred to as a "compatible operator" because it is compatible with the selection at S20), and associated with each such operator, a set of one or more (e.g., all or a predetermined number) compatible arc combinations includes the corresponding arcs between the output connector of each selected block node and the corresponding input connector of the operator. The set may be sorted according to the above list, i.e., in descending order from the lowest value to the highest value of the incompatibility metric.

[0170] The mapping may also optionally include at least some (e.g., all) other operators (operators for which there are no compatible arc combinations), so that the mapping actually includes more than the compatible operators in the predetermined set of operators (e.g., all operators). Associated with each such other operator, the mapping may include one or more (e.g., all or a predetermined number) sets of compatible arc combinations, which include corresponding arcs between output connectors of each subset of the highest cardinality subset of operators (the corresponding operators may be referred to as "pseudo-compatible" operators), or if there is no such set at all, a null value (because the output connector selected at S20 is neither the same as nor compatible with any input connector of the operator, for example, the operator is referred to as a "completely incompatible" operator).

[0171] "Highest cardinality" means that, in the case where multiple block nodes are selected in S20, the arc combination calculation algorithm may include recursively considering a subset of the block node selections performed at S20, thereby deleting only one of the selected block nodes in each recursion, considering all potential deletions of the subset, and attempting to find compatible arc combinations at each recursion. For example, assume that five block nodes are selected at S20 (e.g., each block node has one and only one output connector), and for a given operator, no compatible arc combination exists. Then, a compatible arc combination between a subset of four block nodes and a given operator may be searched. If found, the recursion may stop and output one or more (e.g., all or a predetermined number) of such compatible arc combinations. Otherwise, the arc combination calculation algorithm may continue and consider a subset of three block nodes. And so on. Due to the stopping condition, the highest possible cardinality is achieved.

[0172] The one or more block nodes selected at S20, their output connectors considered at S85, and the block nodes added at S70 can be such that there is at least one compatible arc combination, which includes the corresponding arcs between the considered output connectors of each selected block node and the corresponding input connectors of the block nodes added at S70 or to be added at 70, so that the determination can be made at S85. However, the method can optionally perform the arc combination calculation algorithm as described above, which can be configured to handle another situation, that is, when the starting multiple block nodes cannot be connected to a new block node with a compatible arc combination. Therefore, operators that are only compatible with the subset selected at S20 can also be identified in the predetermined set of operators, each time looking for the highest cardinality, and their compatible arc combinations can be prepared and / or their incompatibility measures can be calculated so that this information is ready for later use.

[0173] The user action at S60 may include any user action that triggers the automatic addition and connection of new block nodes. The example now discussed greatly improves the ergonomics of selecting and adding block nodes for users, which is particularly beneficial because the set of predetermined operators may include more than 50, 100 or 200 operators.

[0174] In one example, after the selection at S20, the user action at S60 may include triggering the display of a menu that allows selection of a corresponding operator of the block node added at S70. The addition at S70 may then include the user graphically selecting a graphical representation of the corresponding operator in the menu, for example by clicking or touching thereon, optionally selecting from a (e.g., scrollable) collection or list of graphical representations of several operators. This triggers the instantiation of the corresponding operator, and the automatic and seamless instantiation of the arc combination determined at S85.

[0175] In one example, when the user selects the corresponding operator, the system can calculate the arc combination to be added at S90 at S85. Alternatively, the calculation of the arc combination has been performed so that when the user selects the corresponding operator, the system only retrieves the arc combination to be added at S90, such as the arc combination that is ranked first in the mapping, such as the arc combination with the lowest value of the predetermined incompatibility measure (the value is finite and / or the cardinality of the arc combination is equal to the cardinality selected at S20).

[0176] Additionally or alternatively, the menu may provide automatic suggestions for a subset of several operators based on the lowest value of the calculated incompatibility metric for each operator. For example, this may be applicable to the case where arc combinations are pre-computed. In this case, when the user action at S60 triggers the display of the menu, the operators may be automatically suggested to be sorted according to their degree of compatibility with the selection at S20 (the degree of compatibility being represented by the lowest value of the calculated incompatibility metric for each operator among all arc combinations). In particular, the automatic suggestions may sort the operators from most compatible to least compatible and present them to the user in this order. The automatic suggestions may include a subset of a predetermined set of operators, such as one or more (e.g., all) operators that are compatible with the entire selection at S20 (i.e., there is an arc combination that is compatible with the arc from each output connector of the selection at S20 to the corresponding input connector of the operator).

[0177] Optionally, several operators automatically suggested may also include pseudo-compatible operators. To handle this situation, sorting may be performed according to a lexicographic order, where the cardinality of potential compatible arc combinations is first sorted from operators that are compatible with the entire selection at S20 that is sorted first (e.g., where there is at least one such operator), and then reduced as the cardinality of the subsets of the selection at S20 decreases one by one, and then the values ​​of the incompatibility measure are sorted in increasing order. In other words, whenever possible, the system automatically suggests operators that can be connected to all selected block nodes, followed by those with the highest compatibility level. This sorting can handle selection situations other than the selection at S20, for which there are no compatible operators at all in the predetermined set of operators, so that only pseudo-compatible operators are suggested.

[0178] Optionally, the menu may include a search bar for performing a semantic search, and the user may enter text to search for the name of the operator to be added at S90. As the user enters text, hits may be calculated and displayed in real time (e.g., via a graphical representation of the corresponding operator). A hit may be displayed if the name of the operator contains the text being entered (e.g., with or without a close match).

[0179] This option can be combined with the auto-suggest option so that the text search is performed within the order in which the auto-suggest is performed, or the auto-suggest is performed between the current hits of the name search. In other words, the auto-suggest is based on the lowest value of the calculated incompatibility measure for each operator that matches the semantic search. The semantic search can result in filtering the results that match the searched text in the auto-suggest.

[0180] In another example, the user action at S60 may include triggering a function of automatically selecting an operator and adding a block node at S70 .

[0181] This can be an operator predicted by the design method according to European patent application No. 23306920.2 filed on November 7, 2023 on behalf of the same applicant and the same inventors, which is incorporated herein by reference, in particular by the machine learning functions taught in that document.

[0182] Therefore, as taught in said European patent application, after selecting one or more block nodes and corresponding output connectors in S20, and referring to said document Figure 1 , the design method may include:

[0183] -Computer systems use pre-trained machine learning functions:

[0184] ■ In S30, for each selected corresponding output connector (the output connector of the block node selected at S20), input data is provided to the machine learning function, the input data comprising at least:

[0185] ○ the data identifier of the corresponding operator represented by the block node of the corresponding connector selected,

[0186] ○ the data identifier of the corresponding connector selected,

[0187] ○ The object type of the corresponding connector selected,

[0188] ■ In S40, the machine learning function outputs a prediction of one or more operators in a predetermined set of operators;

[0189] - In S50, the computer system displays, for example in a displayed menu, a graphical representation of at least one operator of the prediction;

[0190] - In S60, the user selects an operator of the predicted at least one operator, thereby adding a block node to the 2D block representation in S70 (the user action at S60 of the present disclosure therefore includes the user selection at S60 in this document).

[0191] As taught in said European patent application:

[0192] - for each selected corresponding connector, the input data for the machine learning function may further include a value that depends on the object cardinality of the selected corresponding connector;

[0193] - the value of the object cardinality depending on the selected corresponding connector may be a binary value indicating whether the cardinality is 1 or higher than 1;

[0194] - the one or more connectors selected at S20 may include one output connector or several output connectors;

[0195] - using the pre-trained machine learning function may include selecting a corresponding dedicated machine learning function based on whether the selected one or more connectors include one output connector or several output connectors;

[0196] -The machine learning function can be a multi-layer perceptron;

[0197] - the prediction may include several operators ordered by probability, and optionally, the several operators may be displayed in a menu instead of automatically instantiating the most likely operator at S70; and / or

[0198] -Pre-trained machine learning functions can be obtained through a training method, which can form a machine learning process with the design method.

[0199] Examples of incompatibility measures observed to obtain accurate results are now discussed.

[0200] If the set of object types is a tree where descendant types are compatible with ancestor types, then for a given arc combination, for each given arc, the object type of the output connector at S20 is a descendant of the object type of the corresponding input connector of the added block node at S70, and the incompatibility metric (which is any function) penalizes the tree distance between the object type of the output connector and the object type of the corresponding input connector. In other words, the farther the two object types are on the tree, the more the arc is penalized. This is because when a match is available, connecting a concrete type to a generic type should be avoided as much as possible. This saves the generic type for other concrete types that do not have such a match, thereby optimizing the assistance of genericity and ensuring compatibility from a global perspective.

[0201] If the system supports conversion of one or more first object types to one or more corresponding second object types, then for a given arc combination, for each given arc's output connector's object type to be convertible to the object type of the corresponding input connector of the added block node, the incompatibility metric may penalize the presence of the given arc. In other words, the presence of conversions is penalized. This is because conversions are design shortcuts that are not typically used, so that when a new block node needs to be added, the input block node is specially prepared for this purpose and thus may present an object type that does not require such conversions.

[0202] In particular, the degree of penalty for the occurrence of the incompatibility metric may be higher than the tree distance penalty. For example, an occurrence may be penalized by a tree distance of 100 times, 200 times, or more than 500 times, such as about 1000 times. "About a certain value" refers to a value of + / -10%. In other words, the occurrence of the penalty attributed to the conversion is a penalty attributed to a tree distance of 100 times, 200 times, or more than 500 times, such as about 1000 times. Optionally, the tree distance can be penalized linearly (e.g., proportionally). For example, the penalty for tree distance may be equal to the tree distance. Therefore, the automatic determination at S85 avoids conversion as much as possible, but supports ancestral compatibility. Conversion is only used as a last resort to achieve arc combination compatibility. However, arc combination involves conversion, and high cardinality is better than low cardinality, because it can be safely assumed that the user is unlikely to make a mistake at S20 and S70, so that the user adds the correct block node.

[0203] In particular, for a given arc combination, the incompatibility measure can be equal to the sum of one or more penalties, the sum of which is equal to the cardinality of the combination (i.e., the number of arcs in the arc combination, i.e., the number of block nodes selected at S20, unless no compatible arc combination exists and a subset needs to be considered). In this case, each arc in the given arc combination contributes a sum of penalties. This summing balances the penalties, thereby providing accurate results.

[0204] If the two connected objects are of the same type, the penalty for each arc can be equal to zero. This is because this is the ideal situation.

[0205] When each arc makes the object type of the output connector at S20 the same as or a descendant of the object type of the corresponding input connector of the added block node at S70, the penalty of each arc may be equal to the tree distance between the object type of the output connector of the arc and the object type of the corresponding input connector of the added block node of the arc. The upper limit of the tree distance may be lower than 50, or 20 or 10 (i.e., the tree of the predetermined object type has a depth equal to the upper limit value).

[0206] For conversion arcs (i.e., the object type of the output connector can be converted to the object type of the corresponding input connector), the penalty for each arc can be equal to a value higher than 100, 200 or 500, for example equal to about 1000. In other words, the penalty for a conversion is much higher than the penalty for the maximum possible tree distance.

[0207] During the design phase, the design method can be repeated and interleaved with other design steps, for example, a user can add block nodes and arcs in other ways based on the standard graphical interactive design capabilities of the 3D block representation application to ultimately obtain the complete and exact shape of the product to be manufactured. The 2D block representation and / or the 3D shape representation can then be input into a manufacturing process, which can output one or more physical instances of the product to be manufactured, whose shapes are exactly the same as the shapes finally achieved 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., a mechanical part of a mechanical part assembly).

[0208] Therefore, the design method generally operates on modeling objects, in particular 2D block representations and 3D shape representations. A modeling object is any object defined by data stored in, for example, a database. By extension, the expression "modeling object" represents the data itself. Depending on the type of system, the modeling object can be defined by different kinds of data. The system can indeed be any combination of a CAD system, a CAE system, a CAM system, a PDM system and / or a PLM system. In these different systems, the modeling object is defined by the corresponding data. Therefore, CAD objects, PLM objects, PDM objects, CAE objects, CAM objects, CAD data, PLM data, PDM data, CAM data, CAE data can be mentioned. However, these systems are not mutually exclusive, because the modeling object can be defined by data corresponding to any combination of these systems. It will be apparent from the definitions of these systems provided below that the system can therefore be a CAD, CAE, PLM and / or CAM system very well.

[0209] CAD solutions (e.g., CAD systems or CAD software) also refer to any system, software or hardware, such as CATIA, that is suitable for designing modeled objects based on at least a graphical representation of the modeled object and / or its structured representation (e.g., a feature tree). In such cases, the data defining the modeled object includes data that allows the representation of the modeled object. For example, a CAD system can use edges or lines (in some cases, using faces or surfaces) to provide a 3D shape representation of a CAD modeled object. Lines, edges or surfaces can be represented in various ways, such as using non-uniform rational B-splines (NURBS). Specifically, a CAD file contains specifications from which geometric figures can be generated, thereby allowing the generation of a representation. The specifications of a modeled object can be stored in a single CAD file or in multiple CAD files. The typical size of a modeled object in a representation CAD system is in the range of 1M bytes per component. A modeled object can typically be a combination of thousands of components.

[0210] In the context of CAD, a modeled object may typically be a 3D modeled object, for example representing a product such as a component or a combination of components, or may be a combination of products. A 3D modeled object may be a manufactured product, i.e. a product to be manufactured. A "3D modeled object" refers to any object modeled by data that allows its 3D shape representation. The 3D shape representation allows the component to be viewed from all angles. For example, when represented in 3D, 3D modeled objects can be manipulated and rotated around any of their axes or around any axis in the screen on which their representation is displayed. It is worth noting that this does not include 2D icons that are not modeled in 3D. The display of a 3D shape representation facilitates design (i.e., increases the speed at which designers complete their tasks in a statistical sense). Since the design of a product is part of the manufacturing process, the industrial manufacturing process can be accelerated.

[0211] The 2D block representation and the corresponding 3D shape representation modeled objects may represent the geometry of a product to be manufactured in the real world after virtual design has been completed using, for example, a CAD / CAE software solution or a CAD / CAE system, for example, a (e.g., mechanical) part or combination of parts (or equivalently an assembly of parts, since from the point of view of the design method, an assembly of parts can be considered as a part itself, or the design method can be applied independently to each part in the assembly), or more generally, any rigid body component (e.g., a mobile device). CAD / CAE software solutions allow the design of products in a wide variety of unlimited industrial fields including: aerospace, architecture, construction, consumer products, high-tech equipment, industrial equipment, transportation, ships and / or offshore oil and gas production or transportation. Therefore, the 3D modeled object designed by the design method can represent an industrial product, which can be any mechanical part, such as a part of a land vehicle (including automobile and light truck equipment, racing cars, motorcycles, trucks and automobile equipment, trucks and buses, trains), a part of an air vehicle (for example, it includes fuselage equipment, aerospace equipment, propulsion equipment, defense products, aviation equipment, space equipment), a part of a naval vehicle (including naval equipment, commercial ships, offshore equipment, yachts and workboats, marine equipment), a general mechanical component (for example, it includes industrial manufacturing machinery, heavy mobile machinery or equipment, installed equipment, industrial equipment products, metal products, tire manufacturing products), electromechanical or electronic components (for example, it includes consumer electronics, safety and / or control and / or instrumentation products, computing and communication equipment, semiconductors, medical equipment or instruments), consumer products (for example, it includes furniture, home and garden products, leisure products, fashion products, products of hard goods retailers, products of soft goods retailers), packaging (for example, it includes food and beverages and tobacco, beauty and personal care, household product packaging).

[0212] The 3D shape representation may be a boundary representation. When a modeled object is represented, the 3D shape of the part displayed on a computer screen may be a boundary representation (eg, tessellation).

[0213] A PLM system further refers to any system suitable for managing modeling objects that represent physical manufactured products (or products to be manufactured). Thus, in a PLM system, modeling objects are defined by data suitable for manufacturing physical objects. These data can typically be dimensional values ​​and / or tolerance values. Having such values ​​is indeed better for the correct manufacturing of the object.

[0214] CAE solution also means any solution, hardware or software suitable for analyzing the physical behavior of the modeled object. A well-known and widely used CAE technology is the Finite Element Model (FEM), which is equivalently referred to as CAE model in the following. FEM usually involves dividing the modeled object into cells, i.e. a finite element mesh, whose physical behavior can be calculated and simulated by equations. This CAE solution is produced by Dassault Systèmes under the trademark Another evolving CAE technology involves modeling and analyzing complex systems consisting of multiple components from different physical domains, but for which no CAD geometry data is available. CAE solutions allow simulations to be performed, thereby allowing the optimization, improvement and validation of the product to be manufactured. This CAE solution is manufactured by Dassault Systèmes under the trademark To provide. CAE can be used to ensure that new CAD models meet various structural requirements (such as but not limited to mass, stiffness, strength, and durability). Some of these requirements can be called Key Performance Indicators (KPIs). For many industrial products (e.g., automobiles, aircraft, packaged consumer goods, high-tech products), these KPIs are conflicting, for example, lower mass usually leads to lower stiffness. Therefore, optimization methods are often used to find the best trade-off between KPIs.

[0215] CAM solution means any solution, hardware software, suitable for managing the manufacturing data of a product. Manufacturing data generally includes data about the product to be manufactured, the manufacturing process and the resources required. CAM solutions are used to plan and optimize the entire manufacturing process of a product. For example, it can provide the CAM user with information about the feasibility, the duration of the manufacturing process or the number of resources (e.g. a specific robot) that can be used at a specific step of the manufacturing process; thus allowing decisions to be made on management or the required investments. CAM is a subsequent process after the CAD process and potentially the CAE process. For example, a CAM solution can provide information about machining parameters, or molding parameters that are consistent with the extruded features provided in the CAD model. Such CAM solutions are sold by Dassault Systèmes under the trademarks CATIA, Solidworks or the trademark CAD. To provide.

[0216] Therefore, CAD and CAM solutions are closely related. In fact, CAD solutions focus on the design of a product or component, while CAM solutions focus on how to manufacture it. Designing a CAD model is the first step towards computer-aided manufacturing. In fact, CAD solutions provide key functions such as feature-based modeling and boundary representation (B-Rep) to reduce the risk of errors and loss of precision in the manufacturing process handled by CAM solutions. In fact, CAD models are intended for manufacturing. Therefore, a 3D modeled object is a virtual twin of the object to be manufactured, also called a digital twin, with two goals:

[0217] - Check the correct behavior of the object to be manufactured in a specific environment; and

[0218] - Ensure the manufacturability of the object to be manufactured.

[0219] PDM stands for Product Data Management. A PDM solution means any solution, hardware or software, suitable for managing all types of data related to a specific product. All participants in the product life cycle can use a PDM solution: mainly engineers, but also project managers, finance personnel, sales personnel and purchasing personnel. PDM solutions are usually based on a product-oriented database. It allows participants to share consistent data about their products, thus preventing participants from using different data. This type of PDM solution is produced by Dassault Systèmes under the trademark To provide.

[0220] The 3D modeled object output by the design method may be a CAD model, for example including or consisting of a feature tree and / or a boundary representation. Such a model may originate from a CAE model or from a conversion process from CAE to CAD and 2D block representation, such as the conversion process that the design method may include in its initial stages.

[0221] The design method may be included in a production process, which may include, after executing the design method, producing a physical product corresponding to the 3D modeled object by the design method. The production process may include the following steps:

[0222] - applying the design method, thereby obtaining a 3D modeled object (CAD model) output by the design method; and

[0223] -Use the obtained CAD model to manufacture the part / product.

[0224] Manufacturing using a CAD model refers to any real-world action or series of actions that involves / involves the manufacturing of a component / product represented by the CAD model. Manufacturing using a CAD model may, for example, include the following steps:

[0225] -Edit the acquired CAD model;

[0226] - performing simulations based on the CAD model or a corresponding CAE model (e.g., the CAE model from which the CAD model is derived after a CAE to CAD conversion process), such as simulations for verifying mechanical, usage and / or manufacturing properties and / or constraints (e.g., structural simulations, thermodynamic simulations, aerodynamic simulations);

[0227] -Edit the CAD model based on the simulation results;

[0228] - optionally (i.e. the production of the mechanical product may or may not include this step, depending on the manufacturing process used), determining (e.g. automatically) a manufacturing file / CAM file based on the (e.g. edited) CAD model for the production / manufacturing of the manufactured product;

[0229] - Send CAD files and / or manufacturing files / CAM files to the factory; and / or

[0230] - (e.g. automatically) producing / manufacturing the mechanical product represented by the model originally output by the design method based on the determined manufacturing file / CAM file or CAD model. This may include feeding the manufacturing file / CAM file and / or CAD file (e.g. automatically) to a machine that performs the manufacturing process.

[0231] This final production / manufacturing step may be referred to as a manufacturing step or a production step. This step manufactures / produces the component / product based on the CAD model and / or CAM file, for example, when the CAD model and / or CAD file is fed to one or more manufacturing machines or one or more computer systems that control the machine. The manufacturing step may include performing any known manufacturing process or a series of manufacturing processes, such as one or more additive manufacturing steps, one or more cutting steps (e.g., laser cutting or plasma cutting steps), one or more stamping steps, one or more forging steps, one or more forming steps, one or more deep drawing steps, one or more molding steps, one or more machining steps (e.g., milling steps) and / or one or more forging steps. Because the design method improves the design of the model (CAE or CAD) representing the component / product, manufacturing and its productivity are also improved.

[0232] Editing a CAD model may include a user (i.e., a designer) performing one or more edits of the CAD model, for example, by using a CAD solution. Modifications of a CAD model may include one or more modifications of the geometry and / or parameters of the CAD model. Modifications may include any modification or a series of modifications performed on the feature tree of the model (e.g., modifying feature parameters and / or specifications) and / or modifications performed on the display representation of the CAD model (e.g., boundary representation). Modifications are modifications that maintain the technical functionality of the component / product, i.e., the user performs modifications that may affect the geometry and / or parameters of the model, but the purpose is only to make the CAD model more technically compatible with the downstream use and / or manufacture of the component / product. Such modifications may include any modification or a series of modifications that make the CAD model technically compatible with the specifications of the machine used in the downstream manufacturing process. Such modifications may additionally or alternatively include any modification or a series of modifications that make the CAD model technically compatible with the further use of the product / component once manufactured, such modifications or a series of modifications being based on the results of a simulation, for example.

[0233] The CAM file may include a manufacturing upgrade model obtained from a CAD model. The manufacturing upgrade may include all the data required to manufacture the mechanical product so that it has the geometry and / or distribution of the corresponding material captured by the CAD model, possibly up to the manufacturing tolerance error. Determining the production file may include applying any Computer-Aided Manufacturing (CAM) or CAD-CAM solution for (e.g., automatically) determining the production file from the CAD model (e.g., any automatic CAD-CAM conversion algorithm). Such a CAM or CAD-CAM solution may include one or more of the following software solutions, which are capable of automatically generating manufacturing instructions and tool paths for a given manufacturing process based on the CAD model of the product to be manufactured:

[0234] -Fusion 360,

[0235] - FreeCAD,

[0236] -CATIA,

[0237] -SOLIDWORKS,

[0238] -exist

[0239] Dassault Systèmes’ NC Shop Floor Programmer shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-shop-floor-programmer.

[0240] -exist

[0241] Dassault Systèmes’ NC Milling Machine Programmer as shown on https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-mill-turn-machine-programmer, and / or

[0242] -exist

[0243] Dassault Systèmes’ Powder Bed Machine Programmer as shown on https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / powder-bed-machine-programmer

[0244] The product / component may be an additively manufacturable component, i.e. a component manufactured by additive manufacturing (i.e. 3D printing). In this case, by feeding the CAD model directly (e.g., and automatically) to the 3D printer, the production process does not include a step of determining a CAM file, and the production / manufacturing step is performed directly. The 3D printer is configured to 3D print the mechanical product directly and automatically according to the CAD model when it is fed with a CAD model representing the mechanical product (e.g., and when 3D printing is initiated by a 3D printer operator). In other words, the 3D printer receives a CAD model fed to it (e.g., automatically), reads the CAD model (e.g., automatically), and prints the component (e.g., automatically) by adding materials together (e.g., layer by layer) to reproduce the geometry and / or distribution of the material captured by the CAD model. The 3D printer adds material, thereby exactly reproducing the geometry and / or distribution of the material captured by the CAD model in reality, up to the resolution of the 3D printer, and optionally with or without tolerance errors and / or manufacturing corrections. Manufacturing can include, for example, determining such manufacturing corrections and / or tolerance errors by a user (e.g., an operator of a 3D printer) or automatically (by the 3D printer or a computer system controlling it), for example by modifying a CAD file to match the specifications of the 3D printer. Additionally or alternatively, the production process can include determining (e.g., automatically by the 3D printer or a computer system controlling it) a printing direction based on the CAD model, for example to minimize overhang volume (as described in European Patent No. 3327593, which is incorporated herein by reference), layer slicing (i.e., determining the thickness of each layer, as well as the layer-by-layer path / trajectory and other characteristics for the 3D print head (e.g., for a laser beam, such as path, speed, intensity / temperature and other parameters)).

[0245] Alternatively, the product / component may be a machined component (i.e., a component manufactured by machining), such as a milled component (i.e., a component manufactured by milling). In this case, the production process may include a step of determining a CAM file. This step may be automatically performed by any suitable CAM solution to automatically obtain a CAM file from a CAD model of the machined component. Determining the CAM file may include (e.g., automatically) checking whether the CAD model has any geometric peculiarities (e.g., errors or artifacts) that may affect the production process and (e.g., automatically) correcting these peculiarities. For example, if the CAD model still includes sharp edges (because the machining or milling tool cannot produce sharp edges), machining or milling based on the CAD model may not be performed, and in this case, determining the CAM file may include (e.g., automatically) rounding or chamfering such sharp edges (e.g., with a corresponding fillet radius or chamfer radius, e.g., substantially equal to the tolerance error, the radius of the cutting head of the machining tool), so that machining or milling based on the CAD model may be performed. More generally, determining that the CAM file may automatically include rounding or chamfering of geometry within the CAD model that is incompatible with the radius of the machining or milling tool to enable machining / milling. This check and possible correction (e.g., rounding or chamfering of geometry) may be performed automatically as previously discussed, but may also be performed by a user (e.g., a machining engineer) who manually performs corrections on a CAD and / or CAM solution (e.g., a solution that constrains the user to perform corrections) that bring the CAD model into compliance with the specifications of the tool used in the machining process.

[0246] In addition to the inspection, determining the CAM file may include (e.g., automatically) determining a machining or milling path, i.e., a path used by a machining tool to machine a product. The path may include a set of coordinates and / or parameterized trajectories that will be followed by a machining tool for machining, and determining the path may include (e.g., automatically) calculating these coordinates and / or trajectories based on a CAD model. Such calculations may be based on calculations of the boundaries of a Minkowski subtraction of a CAD model represented by a CAD model of the machining tool, such as discussed in European patent application EP21306754.9 filed by Dassault Systemes on December 13, 2021, and the patent application is incorporated herein by reference. It should be understood that the path may be a single path, for example, that the tool follows continuously without breaking contact with the material to be cut. Alternatively, the path may be a cascade of sequential sub-paths to be followed by the tool in a certain order, for example, each sub-path is followed continuously by the tool without breaking contact with the material to be cut. Optionally, determining the CAM file may then include (e.g., automatically) setting machine parameters (including cutting speed, cutting / piercing height, and / or mold opening travel), e.g., based on the determined path and based on the machine's specifications. Optionally, determining the CAM file may then include (e.g., automatically) configuring the nesting, wherein the CAM solution determines the optimal orientation of the part to maximize machining efficiency.

[0247] In the case of a machined or milled component, determining a CAM file thus results in and outputs a CAM file comprising the machining paths, and optionally the set machine parameters and / or the configured nesting specifications. This output CAM file can then be fed (e.g. directly and automatically) to a machining tool and / or the machining tool can then be programmed (e.g. directly and automatically) by reading this file, on which the production process comprises a production / manufacturing step in which the machine performs machining of the product according to the production file (e.g. by directly and automatically executing the production file). The machining process comprises the machining tool cutting a real-world block of material to reproduce the geometry and / or distribution of the material captured by the CAD model, e.g. up to tolerance errors (e.g. tens of microns for milling).

[0248] Alternatively, the product / component may be a molded component, i.e. a component manufactured by molding (e.g. injection molding). In this case, the production process may include a step of determining a CAM file. This step may be automatically performed by any suitable CAM solution to automatically obtain a CAM file from a CAD model of the molded component. Determining the CAM file may include (e.g. automatically) performing a molding check sequence 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, then (e.g. automatically) performing appropriate corrections. Performing the check and appropriate corrections (if any) may be performed automatically, or alternatively, by a user (e.g. a molding engineer), for example using a CAD and / or CAM solution that allows the user to perform appropriate corrections to the CAD model, but limits his / her corrections so that the CAD model complies with the specifications of the molding tool(s). The check may include verifying that the virtual product represented by the CAD model is consistent with the dimensions of the mold and / or verifying that the CAD model includes all draft angles required for demolding the product, which is known from the molding itself. Then, determining the CAM file may further include determining the amount of liquid material for molding, and / or the time for hardening / solidifying the liquid material in the mold based on the CAD model, and outputting a CAM file including these parameters. Then, the production process includes performing molding based on the output file (e.g., automatically), wherein the mold forms the liquid material into a shape corresponding to the geometry and / or distribution of the material captured by the CAD model within the determined hardening time, for example, up to a tolerance error (e.g., up to a combination of draft angles or a modification of draft angles for demolding).

[0249] Alternatively, the product / component may be a stamped component, which may also be referred to as a "stamped component", i.e., a component manufactured in a stamping process. In this case, the production process may include determining a CAM file based on the CAD model (e.g., automatically). The CAD model represents a stamped component, for example, if the component includes some flanges, the stamped component may have one or more flanges, and in the latter case, may have additional material to be removed, thereby forming an expanded state of one or more flanges of the component, which is known from the stamping itself. Therefore, the CAD model includes a portion representing a component without flanges (in some cases, it is the entire component), and may include an external additional patch portion representing the flange (if any), and may have additional material (if any). The additional patch portion may present g2 continuity over a specific length, and then present g1 continuity over a specific length.

[0250] In the case of stamping, determining the CAM file may include determining (e.g., automatically) the parameters of the stamping machine, such as the size and / or punching force of the stamping die or punching hole, 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 a representation of the additional material to be removed so as to form the unfolded state of one or more flanges of the component, the additional material to be removed may be cut, for example, by machining, and determining the CAM file may also include determining the corresponding machining CAM file, for example, as discussed previously. If there are one or more flanges, determining the CAM file may include determining the geometric specifications of the g2 continuous and g1 continuous parts, which allow the flange to be folded toward the inner surface of the stamped component and along the g2 continuous length during the folding process after the stamping itself and the removal of the additional material. The CAM file thus determined may therefore include: the parameters of the stamping tool, optionally including the specification for folding the flange (if any), and optionally including the machining production file for removing the additional material (if any).

[0251] The stamping production process can then, for example, directly and automatically output a CAM file and perform a stamping process based on the file (e.g., automatically). The stamping process can include stamping (e.g., forging) a portion of the material to form a product represented by the CAD file, which may have an unfolded flange and additional material (if any). Where appropriate, the stamping process can then include cutting additional material based on the machining production file and folding the flange based on the specification for folding the flange, thereby folding the flange over a continuous length of g2 of the flange and providing a smooth appearance to the outer boundary of the part. In the latter case, the shape of the part once manufactured differs from its virtual counterpart represented by the CAD model because additional material is removed and the flange is folded, while the CAD model represents the part with the additional material and the flange in an unfolded state.

[0252] The computer system may include a processor coupled to a memory and a graphical user interface (GUI), the memory having recorded thereon a computer program, the computer program including instructions for executing the training method and / or the design method. The memory may also store a database. The memory is any hardware suitable for such storage and may include several different physical parts (e.g., one for the program and another for the database).

[0253] Figure 2 An example of a system is shown, where the system is a client computer system, such as a user's workstation.

[0254] The client computer of this example includes a central processing unit (CPU) 1010 connected to an internal communication bus 1000, and a random access memory (RAM) 1070 also connected to the bus. The client computer is also provided with a graphical processing unit (GPU) 1110, which is associated with a video random access memory 1100 connected to the bus. The video RAM 1100 is also referred to as a frame buffer in the art. The mass storage device controller 1020 manages access to a mass storage device (e.g., a hard disk drive 1030). Mass storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, for example, including: semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks. Any of the above can be supplemented by a specially designed application-specific integrated circuit (ASIC) or incorporated into the ASIC. The network adapter 1050 manages access to the network 1060. The client computer may also include a tactile device 1090, such as a cursor control device, a keyboard, and the like. The cursor control device is used in the client computer to allow the user to selectively position the cursor at any desired location on the display 1080. In addition, the cursor control device also allows the user to select various commands and input control signals. The cursor control device includes a plurality of signal generating devices for inputting control signals to the system. Typically, the cursor control device may be a mouse, the buttons of which are used to generate signals. Alternatively or additionally, the client computer system may include a sensitive pad and / or a sensitive screen.

[0255] The computer program may include instructions executable by a computer, the instructions including a unit for causing the above-mentioned system to perform the method. The program may be recorded on any data storage medium (including the memory of the system). For example, the program may be implemented in digital electronic circuits or computer hardware, firmware, software or a combination thereof. The program may be implemented as a device, for example, a product tangibly embodied in a machine-readable storage device to be executed by a programmable processor. The execution of the method steps may be performed by executing an instruction program by a programmable processor to perform the function of the method by operating on input data and generating output. Therefore, 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 send data and instructions to a data storage system, at least one input device and at least one output device. If necessary, the application may be implemented in a high-level procedural or object-oriented programming language or in an assembly or machine language. In any case, the language may be a compiled language or an interpreted language. The program may be a complete installer or updater. In any case, the application of the program on the system results in the execution of the instructions of the method. Alternatively, the computer program may be stored and executed on a server in a cloud computing environment, which communicates with one or more clients via a network. In this case, the processing unit executes the instructions included by the program, so that the method is performed on the cloud computing environment.

[0256] Reference now Figures 3 to 18 Implementation methods are discussed.

[0257] The embodiment provides an arc connection intelligent suggestion solution in an application, which is characterized by representing the connection between operators in the form of a graph or the like (2D block representation). An example of such an application is xGenerative Design, which is part of the CATIA product portfolio and is a web application that combines 3D and visual script modeling based on 2D block representation.

[0258] Figure 3 A screenshot of the interface of such a 2D block programming application is shown.

[0259] Such an application can simultaneously display a 3D shape representation 300 of a 3D modeled object representing a manufactured product (e.g., a folded alveolar sheet structure here) and a 2D block representation 310 of the 3D modeled object. The 2D block representation 310 includes block nodes 320 (optionally, all rectangular parallel to the screen), input connectors 322 (which can be dot shapes displayed on the left border side of the corresponding block node 320), output connectors 324 (which can be dot shapes displayed on the right border side of the corresponding block node 320), and arcs 326 connecting the output connector 324 of a first block node to one or more input connectors 322 of another second block node 320. The application can also display menus, menu buttons 330, and widgets 340.

[0260] Applications can perform generative 3D modeling through instantiable operator libraries or predefined operator sets. Operators are used to handle geometric operations (points, lines, curves, surfaces, stretching, rotation, meshes, etc.), mathematical operations (addition, division, etc.), list management, etc.

[0261] The library may propose more than 500 operators and may keep growing. Therefore, finding the right operator at the concrete design stage may be challenging for the user. The proposed solution optionally solves the discoverability problem. Moreover, connecting a new operator with a selection of existing operators may be cumbersome, especially considering that the new operator may have numerous input connectors. The solution solves the connection problem.

[0262] Reference Figure 4 , operators are nodes in a virtual graph. The figure shows an example of a node that determines a point by coordinates. In the left part of the figure, the user has not selected a node, so the user can only see its input connector 322 and output connector 324. In the right part of the figure, the node has been selected, so additional data fields 400, menus 410 and information 420 are displayed to the user. The right part of the figure shows the view when the user selects (for example, by clicking on the mouse) a node in order to modify input values, manage node status, etc. Operators process input data through internal operations (geometric transformations, mathematical formulas, data structure management, etc.) and provide output results. In Figure 4 In the example in Figure 1, the Point by Coordinates operator / node takes the three lengths as coordinates and constructs a geometric point from them (here named "Point.1").

[0263] Reference Figure 5, nodes can be connected by input connectors and output connectors via arcs 326 to form a virtual graph. The figure does show how the "pt" input connector of the "Coordinates" block node is connected to the output of the "Point by Coordinates" operator. In this simple example, the user connects the previous point to the "Coordinates" node to obtain the point coordinates. "Coordinates" is an example of an operator with several outputs.

[0264] Reference Figure 6 , applications can manage data types in a fine-grained manner: data in input connectors and data transmitted / flowing between nodes are typed to determine their properties and ensure compatibility (consistency) between output connectors and input connectors. The figure shows an example of the "Two Points to Line" operator, which the user uses to generate a straight line (line segment) using two points. To do this, each input connector has a specific static object type that specifies the type of data that can be connected:

[0265] - pt1 and pt2 are of type "geometry point", geometry points are expected;

[0266] -st and end (end point) are optional extensions of the line beyond the two points; their type is "length";

[0267] -sup is an optional surface support for the line, to be drawn on. Its type is "geometry surface".

[0268] Reference Figure 7 , if the connection type is incorrect, the node can be in an Error state and a visual alert is displayed to the user. In this example, the length is connected as the second point of the line. The Length type and the Geometry Point type are not compatible, the node is in Error and the line cannot be generated.

[0269] Figures 8 to 9 An example of a generated straight line with two points and two extension lengths is shown, including Figure 8 2D block representation (or graphics view) on the Fig. 9 A 3D shape representation (or 3D view) on a

[0270] refer to Fig.10, the user can select one or several block nodes 1520 (operators) at S20, and then search for new operators to connect to the selected output connector 1524. In the example shown, three block nodes, length.1, angle.1 and point.1, are selected, each of which has one and only one output connector 1524, and the user is searching for a block node circle to be added to the 2D block representation and connected to the selected block node at S70. The user can trigger the display of menu 1570 at S60 to navigate to and select the corresponding operator to be added at S70. Menu 1570 may include a search bar 1575 for performing a semantic search in the menu. In this article, the user is entering the test "circle in...", for example, using a keyboard input after clicking the search bar. After the user enters text, the menu can display the results / hits in real time, here are "circle center point" and "circle center radius". As the user edits the semantic search, the suggestions can be updated in real time.

[0271] The automatic suggestion may optionally be based on the lowest value of the calculated incompatibility measure for each operator that matches the semantic search (i.e. the text entered by the user). For example, only compatible operators may be suggested or only compatible or pseudo-compatible operators may be suggested. Additionally or alternatively, the suggested operators may be sorted according to decreasing levels of compatibility (i.e. increasing values ​​of the incompatibility measure).

[0272] like Fig.11 As shown, block node circle.4 has been added at S70. If the user manually connects the selected output connectors (length.1, angle.1, and point.1) in an inconsistent manner, the interface will display an error as shown. This situation may be very common if the user only sorts the selected block nodes and the input connectors of the block node circle in the order of the selected block nodes (e.g., vertical sorting from top to bottom, and / or sorting in the application, such as based on the natural sorting of the input connectors, and the instantiation schedule of the selected block nodes). Doing so ignores the compatibility of the connector types, which may lead to errors. In this example shown, the "point.1" node is connected to the circle via the "sup" input connector, even though the "sup" input connector requires a plane rather than a point. Therefore, the node is in an error state.

[0273] The proposed solution prevents this type of manual connection errors by automatically determining at S85 the corresponding arcs between the output connectors of each selected block node and the corresponding input connectors of the added block node, and it also handles the fact that there may be multiple appropriate connection patterns. In the context of 2D block representation applications, where there may be many operators, the proposed solution allows determining which operators are compatible with the user selection at S20, which connections are enabled between the user selection and all operators of the application, and what is the most likely connection between all possible connections.

[0274] In a 2D block representation designed by a user, the proposed solution allows suggesting connection patterns between operators (block nodes) based on the data type compatibility between pairs of connectors, according to the set of block nodes or output connectors of the block nodes selected by the user. This information is taken into account to make suggestions for automatic connections. Therefore, the proposed solution speeds up the design process overall.

[0275] In an embodiment, the connections are first automatically calculated and the most compatible combinations are added. The user can then optionally have the possibility to navigate the connection modes through an appropriate user interface (e.g., previous or next) to select another connection mode from the sorted list of connection modes, which is both efficient and time-saving.

[0276] This embodiment is based on the concept of type penalty (e.g., asymmetric distance from one object type to another object type) as a metric to establish the distance between two object types A and B (note that the penalty is not a distance, because the penalty from A to B is not equal to the penalty from B to A). This "from A to B" penalty is then interposed on each corresponding arc that may be calculated in S85, which connects the output connector of object type A to the input connector of object type B. In this case, the object type can be a use / internal / dynamic object type if available (i.e., if the object type can be evaluated), otherwise it can be a definition / static object type.

[0277] In an embodiment, data / object types are hierarchical, can be organized into a tree, and support convertibility. In particular, the predetermined set of object types can be a tree, which includes any one or any combination (e.g., all) of the types listed above, for example, at least a portion of the tree is composed of the object type structure mentioned above. In addition, the embodiment can support any one or any combination (e.g., all) of the convertible rule list mentioned above.

[0278] Mapping a hierarchy of types, the implementation may define the penalty from type A to type B using the following rule:

[0279] - When A and B are of the same object type, the penalty is 0 (zero).

[0280] - When B is a parent of A (there is only one branch between the two types in the tree), the penalty is 1.

[0281] - When B is an ancestor / prototype of A, the penalty is the tree distance D between A and B (i.e., the number of branches D that form a path between the two types).

[0282] - When A can be converted to B (jumping to another branch), the penalty between types A and B is, for example, 1000. The conversion between types is explicitly declared in the application.

[0283] - If type B cannot be reached from A through tree ascending and conversion, the penalty is infinite.

[0284] According to this definition, if the penalty AB is finite, this implementation considers types A and B to be compatible. If the penalty is infinite, A and B are incompatible. Although a subtype is always compatible with its supertype, a supertype is generally incompatible with its subtype, unless there is a conversion from the supertype to the subtype.

[0285] Referring to the object type structure mentioned above and the list of convertible rules mentioned above, some examples of penalty calculation are as follows:

[0286] - "Length" to "Literal": The path from "Length" to "Literal" is, through the parent-child relationship: Length > Magnitude > Real > Literal. Therefore, the penalty here is 3.

[0287] - "Boolean" to "Literal": "Boolean" can be converted to "Integer" (0 or 1). Then, let Integer > Real > Literal. The penalty here is: 1000 (conversion) + 2 (parent-child relationship) = 1002.

[0288] - "Geometric Plane" to "Vector": By considering the normal of the center of the plane, "Geometric Plane" can be converted to "Vector". The penalty here is 1000.

[0289] - "Vector" to "Geometric Plane": This implementation does not support converting a vector to a unique plane because this implementation considers the solution to be infinite. Therefore, there is no path from vector to geometric plane, so the penalty is infinite.

[0290] The penalty between two types is asymmetric / one-way: in the set of data types, the penalty AB is different from the penalty BA. Then, compatibility is also asymmetric: A may be compatible with B, but B may be incompatible with A.

[0291] The type penalties AB and AC can be used to determine the "degree of compatibility" between two types (here B and C) with respect to a reference type (A): If AC < AB (in terms of distance), then type C will be considered closer to A / more compatible with A than B.

[0292] Reference Fig.12, the user may select one or several operators at S20, for example, point.1 and plane.1, and decide to search for a new operator to connect the selection to line.1, as shown in this example, where the user is selecting points and planes to create a line.

[0293] In this example, the user has selected a point and a plane, and a line node is created based on this selection. The goal of the implementation is to connect the selection to the new block node as appropriately as possible, while taking into account the degree of type compatibility (penalty).

[0294] In this example, among all arcs 326, only two arcs 1126 are associated with a finite penalty, such that only one arc combination has a finite incompatibility metric.

[0295] When the user selects an operator, the embodiment may initialize a map containing each operator of the application. For each operator, the embodiment may test whether there is a connection pattern between the user selection and the former. The embodiment may then store the resulting possible connections in a map, including, for each operator, the name of the operator associated with a vector of all possible arc combinations.

[0296] For example, if we consider a user selection containing output connectors o1, o2 and o3, and an operator with input connectors i1, i2 and i3.

[0297] If o1 is compatible with i1 and i3 (finite distance of data types), this means that to store the combination as a possible combination in the map, the following process is performed:

[0298] initialization:

[0299] - Combination 1: [i1]

[0300] - Combination 2: [i3]

[0301] Then, if o2 is compatible with i2:

[0302] - Combination 1: [i1, i2]

[0303] - Combination 2: [i3, i2]

[0304] Now, if o3 is only compatible with i3:

[0305] - Combination 1: [i1, i2, i3]

[0306] - Combination 2: [i3, i2, i3]

[0307] In this case, we can see that i3 appears twice in combination 2, so this combination is not possible because i3 is already connected to o1 (as seen by its position in the list). Therefore, the process removes combination 2, leaving:

[0308] - Combination 1: [i1, i2, i3]

[0309] The process can consider an operator to be compatible with the user selection given that there is at least one possible connection pattern.

[0310] If, instead, o3 is only compatible with i2:

[0311] - Combination 1: [i1, i2, i2]

[0312] - Combination 2: [i3, i2, i2]

[0313] This means that these two combinations are impossible, and therefore the process may consider the operator itself to be incompatible with the selection (join combinations are not possible).

[0314] Likewise, if o3 is incompatible with any operator input, this means that no new connection can be created, and thus no output can be connected, which may mean that the operator is incompatible with the user's selection.

[0315] Alternatively, the process can consider pseudo-compatibility and return to the previous step to store in the map:

[0316] - Combination 1: [i1, i2]

[0317] - Combination 2: [i3, i2]

[0318] In other words, the map stores compatible arc combinations between a subset of output connectors (in this example, [o1, o2]) and a subset of input connectors with the highest cardinality (in this example, 2).

[0319] In this alternative, the process may also search for compatible arc combinations for other subsets of the highest cardinality output connectors (in this example, [o1, o3] and [o2, o3]) and store them in a map.

[0320] If multiple connection combinations are possible, the embodiment may automatically select the most compatible one at S85 by comparing the sum of all distances in each combination ("compatibility") However, the map may be available on RAM to allow the user to navigate among the stored combinations.

[0321] Figure 13 to Figure 14 An example is shown.

[0322] In this example, the user has selected the Mesh Vertices node and two points, providing the vertices of the input mesh. For Mesh Vertices, the output type is Mesh Vertex and can be directly converted to Geometry Point.

[0323] The operator selected is "Translate 2 points":

[0324] - "in" is the geometry to be translated, of type "geometry object" (any type of geometry).

[0325] - "pt1" and "pt2" are of type "geometry point"

[0326] Fig.13 The connections shown have Fig.14 The connection shown has higher priority. Now to explain why, calculate the type penalty.

[0327] for Fig.13 Connections:

[0328] - MeshVertex.1 connected to "in": "MeshVertex" type is a subtype of "GeometryObject" with penalty 3 (MeshVertex > MeshElement > MeshBase > GeometryObject);

[0329] - "point.1" and "point.2" are connected to "pt1" and "pt2" geometry point types: since they are of the same type, both penalties are 0.

[0330] The total incompatibility metric A is 3+0+0=3.

[0331] for Fig.14 Connections:

[0332] - MeshVertex.1 connected to "pt1": "MeshVertex" type is convertible to "GeometryPoint", then the penalty is 1000.

[0333] - "point.1" is connected to "pt2": distance here is 0 (same "geometry point" type)

[0334] - "Point.2" is connected to "in": "GeometryPoint" is a direct child of "GeometryObject", then the penalty is 1.

[0335] The total incompatibility metric B is 1000+0+1=1001.

[0336] Incompatibility metric A is not as good as incompatibility metric B (3 < 1001), Fig.13 The connection is shown in Fig.14 before the connection.

[0337] However, this embodiment may display a widget 1302 to navigate between different possible combinations. Visual cues 1304 may also indicate the location in the navigation, including the total number of possibilities (here, the number 6).

[0338] As now discussed, this embodiment can also be extended to explicit operator searches.

[0339] When the user begins typing a word in the search field, this embodiment can suggest operators that are "closest" to the user's selection by computing the sum of the data type penalties for arc combinations (between the selected outputs and the operator inputs) as an incompatibility metric, and sorting the operators in ascending order of the metric, as described above.

[0340] For example, Fig.15 The search results after selecting the output connector of the sphere block node in the prior art are shown. A sphere is a surface and "Split Surface" should be the first operator proposed (the distance between the two operators is 0). A sphere is not compatible with "Split Curve" which is expected to be a curve (infinite distance).

[0341] Fig.16 The results of the same search in an embodiment are shown, i.e., with the penalty calculated and the automatic suggestions filtered and / or re-ranked accordingly based on the metric. The efficiency of this approach can be seen here.

[0342] Figure 17 to Figure 18 Another example of this embodiment searching for the same term "thick" but with a different prior selection is shown.

[0343] Fig.17 Results for a sphere are shown. A sphere is a curved surface, and the "thick surface" was first proposed.

[0344] Fig.18 The result of a Mesh node producing mesh geometry is shown. When meshing the output mesh, the Thicken Mesh operator is more appropriate than the Thick Surface operator.

[0345] It can be seen that the proposed operators adapt well to the current user selection.

Claims

1. A computer-implemented method for designing a 3D modeled object representing a product to be manufactured, the method comprising: -The computer system simultaneously displays (S10): ■ a 3D shape representation of the 3D modeled object, and ■ A 2D block representation of the 3D modeled object, the 2D block representation comprising: ○ Block nodes, where: Each block node represents a corresponding operator in a predetermined set of operators, each operator in the predetermined set of operators having an output and one or more inputs, and For at least a subset of operators in the predetermined set of operators, an output of each respective operator of the subset is a respective set of one or more geometric objects, and: at least one block node represents an operator of said subset, and each input of each operator of the subset and each output of each operator of the subset has a corresponding object type, ○ One or more input connectors and output connectors on each corresponding block node, where: each input connector represents a respective input of the respective operator represented by the respective block node, and The output connector represents the output of the corresponding operator represented by the corresponding block node, and ○ arcs between the output connector of the first block node and the corresponding input connector of the second block node, respectively, wherein: Each arc represents the flow of data from an output connector of the first block node to a corresponding input connector of the second block node, The 2D block representation is configured such that a data flow represented by an arc of the 2D block representation is executed to output the 3D shape representation; - a user interacts with the 2D block representation in a graphical manner, performing (S20) selecting one or more block nodes among the at least one block node; -After the user action (S60): ■ adding (S70) block nodes representing corresponding operators of said subset to said 2D block representation; ■ automatically determining ( S85 ) corresponding arcs between the output connector of each selected block node and the corresponding input connector of the added block node; ■ adding (S90) each determined arc to the 2D block representation; ■ updating (S100) the display of the 2D block representation by at least displaying the added block node and each added arc; - executing (S110) updating the data flow represented by the arcs of the 2D block representation, thereby outputting an updated 3D shape representation; and - displaying (S120) said updated 3D shape representation.

2. The design method according to claim 1, wherein: - each respective object type is an object type in a predetermined tree of object types, wherein each non-leaf object type is dynamic and each descendant object type of the non-leaf object type is compatible with the non-leaf object type, - The automatic determination (S85) includes determining in all arc combinations o all arc combinations including the corresponding arcs between the output connectors of each selected block node and the corresponding input connectors of the added block nodes, o For all arc combinations, the object type of each corresponding arc's output connector is the same as or compatible with the object type of the corresponding input connector of the added block node, - the arc combination having the lowest value of a predetermined incompatibility measure, - For a given arc combination, for each given arc whose output connector's object type is a descendant of the object type of the corresponding input connector of the added block node, the incompatibility metric penalizes the tree distance between the object type of the output connector and the object type of the corresponding input connector.

3. The design method according to claim 2, wherein: For a given arc combination, the incompatibility metric is equal to the sum of one or more penalties, the sum of the one or more penalties being equal to the cardinality of the combination, the sum of the penalties provided by each arc in the given arc combination being equal to the tree distance between the object type of the output connector of the arc and the object type of the corresponding input connector of the added block node of the arc, provided that: - when the object type of the output connector is the same as the object type of the corresponding input connector of the added block node, or - When the object type of the output connector is a descendant of the object type of the corresponding input connector of the added block node.

4. The design method according to claim 2 or 3, wherein: The tree of the predetermined object types includes the following types: - Root type, - the root type as parent type, literal type, geometry type and matrix type, - the literal type is a parent type, a real number type, a string type, and a Boolean type, - the geometry types as parent types, point types, curve types, surface types and volume types, - the matrix type as parent type, vector type, - the real number type as a supertype, an integer type and a magnitude type, the magnitude type having a length type and an angle type as subtypes, - the curve type as a parent type, the line type, and -The surface type is used as the parent type, the plane type.

5. The design method according to claim 2, 3 or 4, wherein: - the tree of predetermined object types comprises one or more first object types, each first object type is convertible to one or more corresponding second object types, each first object type convertible to a corresponding second object type is different from and not a descendant of the corresponding second object type, each first object type is convertible to the corresponding second object type according to a corresponding predetermined conversion algorithm, so that each first object type convertible to the corresponding second object type is compatible with the corresponding second object type, - For a given arc combination, the incompatibility metric penalizes the presence of each given arc for which the object type of the output connector of the given arc can be converted to the object type of the corresponding input connector of the added block node.

6. The design method according to claim 5, wherein: The incompatibility metric penalizes the occurrence more than the tree distance, wherein optionally, an occurrence is penalized by a tree distance of more than 100, 200 or 500 times 1, such as about 1000 times.

7. The design method according to claim 5 or 6, wherein: For a given arc combination, the incompatibility metric is equal to a sum of one or more penalties, the sum of the one or more penalties being equal to the cardinality of the combination, the sum of the penalties provided by each arc in the given arc combination being equal to a value greater than 100, 200, or 500, such as equal to about 1000, if: - When the object type of the output connector can be converted to the object type of the corresponding input connector.

8. The design method according to claim 5, 6 or 7, wherein: -Real number types can be converted to integer types, length types, and angle types, -Integer types can be converted to length types and angle types, -Boolean types can be converted to integer types, -Point type can be converted to vector type, -Curve types can be converted to plane types, - Line type can be converted to vector type, - Plane types can be converted to vector types, line types, and matrix types, and -Volume types can be converted to surface types.

9. The design method according to any one of claims 5 to 8, wherein: 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 can be converted to the second object type.

10. The design method according to any one of claims 1 to 9, wherein: The user action (S60) includes navigating in a menu to select a corresponding operator of the subset.

11. The method according to claim 10, wherein: The menu provides automatic suggestions of several operators of the subset based on a lowest value of the calculated incompatibility metric for each operator.

12. The method according to claim 11, wherein: Each operator has a searchable name, the user action (S60) comprises performing a semantic search in the menu, the automatic suggestion being based on the lowest value of the calculated incompatibility measure for each operator matching the semantic search.

13. A computer program product comprising computer instructions which, when executed by a processor, cause the processor to perform the design method according to any one of claims 1 to 12.

14. A data storage medium having computer instructions in the computer program product of claim 13 stored thereon.

15. A computer system comprising: A memory having computer instructions in the computer program product of claim 13 stored therein; and a processor coupled to the memory and configured to execute the computer instructions.

Citation Information

Patent Citations

  • Orientation of a real object for 3D printing

    EP3327593A1

  • 3D axis machining design

    EP4195088A1