Operator connection in block representation

The method enhances the ergonomics of designing 3D modeled objects by automatically calculating and adding arcs in 2D block representations, simplifying the connection of block nodes and improving the ergonomic interaction with 3D shape representations, ultimately facilitating automated manufacturing processes.

JP2025087600APending Publication Date: 2025-06-10DASSAULT SYSTEMES SA
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024195312
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-11-07
Filing Date
2024-11-07
Publication Date
2025-06-10

AI Technical Summary

Technical Problem

The ergonomics of existing software solutions for designing 3D modeled objects representing products to be manufactured need improvement, particularly in the automatic calculation and addition of arcs in 2D block representations.

Method used

A computer-implemented method that simultaneously displays a 3D shape representation and a 2D block representation, allowing users to select block nodes, automatically determine arcs between output and input connectors, and update the display to reflect added block nodes and arcs, thereby simplifying the connection of block nodes and enhancing ergonomic interaction.

Benefits of technology

The method improves the ergonomics of designing 3D modeled objects by reducing user burden in adding arcs, enabling easy connection of block nodes, and providing ergonomic updates of the 3D shape representation, which can be directly fed into automated manufacturing processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025087600000001_ABST
    Figure 2025087600000001_ABST
Patent Text Reader

Abstract

To provide a computer-implemented method configured to improve ergonomics for designing a 3D modeled object representing a product to be manufactured.SOLUTION: A method comprises, by a computer system: displaying simultaneously a 3D shape representation of a 3D modeled object, and a 2D block representation of the 3D modeled object; by a user, interacting graphically with the 2D block representation, performing a selection of one or more block nodes from among at least one block node; upon user-action, adding, to the 2D block representation, a block node representing a respective operator of a subset; and automatically determining a respective arc between an output connector of each selected block node and an input connector of the added block node.SELECTED DRAWING: Figure 1
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 specifically, to methods, devices, and programs related to the automatic calculation and addition of one or more arcs in a block representation of a product to be manufactured.

Background Art

[0002] Numerous solutions, hardware, and software for object design, engineering, and manufacturing are available in the market. CAD is an acronym for Computer-Aided Design and, for example, it is related to software solutions for designing objects. CAE is an acronym for Computer-Aided Engineering and, for example, it is related to software solutions for analyzing and simulating the physical behavior of future products. CAM is an acronym for Computer-Aided Manufacturing and, for example, it is related to software solutions for defining the manufacturing processes and resources of products. In such computer-aided design solutions, graphical user interfaces play an important role with regard to the efficiency of the technology. These technologies can be incorporated into product lifecycle management (PLM) solutions. PLM refers to an engineering strategy that helps companies develop products across the entire concept of the extended enterprise, from concept to end-of-life, by sharing product data, applying common processes, and leveraging the company's knowledge. The PLM solutions offered by Dassault Systèmes (provided under the trademarks CATIA, SIMULIA, DELMIA, and ENOVIA) provide an engineering hub that organizes product engineering knowledge, a manufacturing hub that manages manufacturing engineering knowledge, and an enterprise hub that enables the integration and connection of the company to both the engineering hub and the manufacturing hub. These solutions all work together to provide a common model that links products, processes, and resources, enables dynamic knowledge-based product creation and decision-making support, and drives optimized product definition, manufacturing preparation, production, and service.

[0003] As part of the CATIA software suite, xGenerative Design is a known web application that enables the design of 3D modeled objects representing products to be manufactured, based on the 2D block representation of the 3D modeled objects. In the said 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 of the selected connectors, then manually create and add one or more respective arcs, and execute the said connection.

Summary of the Invention

Problems to be Solved by the Invention

[0004] The ergonomics of such a solution need to be improved.

Means for Solving the Problems

[0005] Accordingly, a computer-implemented method for designing a 3D modeled object representing a product to be manufactured is provided, and the design method includes: simultaneously displaying, by a computer system, a 3D shape representation of the 3D modeled object and a 2D block representation of the 3D modeled object; the 2D block representation includes block nodes, one or more input connectors and output connectors on each respective block node, and each arc between the output connector of the first block node and the corresponding input connector of the second block node.

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

[0007] Each input connector represents each input of each operator represented by its respective block node. The output connector represents the output of each operator represented by its respective block node.

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

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

[0010] The method also includes performing a selection of one or more block nodes from among at least one block node by a graphical interaction with the user's 2D block representation.

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

[0012] The method further includes executing the 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] Such a design method forms an improved solution for designing 3D modeled objects representing products to be manufactured, which is for the ergonomics of software applications that display 2D block representations simultaneously with 3D shape representations, and for all graphical user interaction functions provided by this type of application (such as functions where the user interacts graphically with the 2D block representation to select and edit one or more of the displayed elements). Further, by automatically calculating each arc between the output connector of each selected block node and the corresponding connector of the additional block node, the design method reduces the user burden of the task of adding arcs to the 2D block representation, thereby enabling the one or more selected block nodes to be easily connected to the additional block node. Next, by executing the data flow, the design method enables ergonomic updates of the displayed 3D shape representation, which can ultimately be fed directly into a manufacturing process that can be automated.

[0014] The design method may include one or more of the following: - Each object type is one of a predetermined object type tree, 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; - Automatic determination (S85) includes determining, among all arc combinations that (i) include each arc between the output connector of each selected block node and the corresponding input connector of the additional block node, and (ii) the object type of the output connector of each respective arc is the same as or compatible with the object type of the corresponding input connector of the additional block node, the arc combination having the minimum value of a predetermined non-conformance metric; - The non-conformance metric imposes a penalty on the tree distance between the object type of the output connector and the object type of the corresponding input connector for each given arc where the object type of the output connector of the given arc combination is a descendant of the object type of the corresponding input connector of the additional block node; - For a given arc combination, the non - conformity metric is equal to the sum of the number of one or more penalties equal to the cardinality of the combination; - Each arc of a given arc combination provides a total penalty 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 additional block node for the arc when either of the following two conditions is met: the object type of the output connector is the same as the object type of the corresponding input connector of the additional block node, or the object type of the output connector is a descendant of the object type of the corresponding input connector of the additional block node; - A given object type tree includes the following types: Root type, Literal type, geometry type, and matrix type having the root type as the parent, Real type, string type, and boolean type having the literal type as the parent, Point type, curve type, surface type, and volume type having the geometry type as the parent, Vector type having the matrix type as the parent, Integer type and size type (the size type has length type and angle type as children) having the real type as the parent, Line type having the curve type as the parent, and Plane type having the surface type as the parent; - A given object type tree includes one or more first object types each convertible to one or more second object types, each first object type convertible to a second object type is different from and not a descendant of the respective second object type, each first object type is convertible to the respective second object type according to a respective predetermined conversion algorithm, and each first object type convertible to a second object type is thereby compatible with the respective second object type; - For a given arc combination, the non - conformity metric imposes a penalty for each given arc where the object type of the output connector is convertible to the object type of the corresponding input connector of the additional block node; - The non - conformity metric imposes a penalty to a greater extent than the tree distance for the occurrence, and optionally, for one occurrence, a penalty of more than 100 times, 200 times, or 500 times the tree distance of 1, for example, about 1000 times; - For a given arc combination, the non - conformity metric is equal to the sum of the number of one or more penalties equal to the cardinality of the combination, and each arc of the given arc combination provides a penalty equal to a value greater than 100, 200, or 500, for example, about 1000, if the following condition is met: the object type of the output connector is convertible to the object type of the corresponding input connector; - The real number type is convertible to the integer type, length type, and angle type, - The integer type is convertible to the length type and angle type, - The boolean type is convertible to the integer type, - The point type is convertible to the vector type, - The curve type is convertible to the plane type, - The line type is convertible to the vector type. - The plane type is convertible to the vector type, line type, and matrix type, - The volume type is convertible to the surface type, - A first object type is compatible with a 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; - The user action includes navigating within a menu to select each operator of a subset; - The menu provides an automatic suggestion of a subset of multiple operators based on the minimum value of the non - conformity metric calculated for each operator; and / or - Each operator has a searchable name, and user actions include performing a semantic search in the menu, and the automatic suggestion is based on the minimum value of the non - conformity metric calculated for each operator that matches the semantic search.

[0015] Furthermore, a computer program including instructions for executing the design method is also provided. When executed by a processor, the instructions cause the processor to execute the design method.

[0016] Furthermore, a device comprising a data storage medium on which a computer program is recorded is also provided.

[0017] The device can form or serve as a non - transitory computer - readable medium, for example, in SaaS (Software as a Service) or other servers, or cloud - based platforms. The device can alternatively comprise a processor coupled to the data storage medium. Thus, the device can form a computer system, in whole or in part (e.g., the device is a subsystem of the whole system). The system can further comprise a graphical user interface coupled to the processor.

Brief Description of the Drawings

[0018] Next, non - limiting examples will be described with reference to the accompanying drawings.

[0019]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

Embodiments for Carrying Out the Invention

[0020] Referring to the flowchart of FIG. 1, a computer-implemented method is proposed for designing a 3D modeled object representing a product scheduled for manufacture (i.e., a product being manufactured, or in other words, a product to be manufactured). In the design method of FIG. 1, the method improved from the perspective of ergonomics includes interacting with the 2D block representation of the 3D modeled object displayed by a computer system (e.g., on one or more screens of the computer system or another computer system provided by the computer system). The interaction is executed within a software application executed locally on the computer system or within a web application provided from a (e.g., remote / remote) computer system to a local workstation. In particular in FIG. 1 of the present disclosure, when an action is shown to be executed by "that" computer system, it should be understood that these actions can actually be executed and / or triggered at least in part by such software or web application.

[0021] The design method includes, by a computer system, simultaneously displaying a 3D shape representation of a 3D modeled object and a 2D block representation of the 3D modeled object (S10). Thereby, the user can interact with the 2D block representation while viewing the 3D shape representation at the same time. As is well known, the 2D block representation provides an ergonomic interface for defining and editing parameters related to the shape of the product to be manufactured, while in the 3D shape representation, the user can directly view the final result and visually grasp the exact shape to be finally manufactured. In S10, the design method can display the 3D shape representation and the 2D block representation side by side on the same screen, such as in two separate windows or two separate scenes of the same window, or display them side by side on each of two different screens. Alternatively, in S10, the design method can overlay the 3D shape representation and the 2D block representation so that one is on top of the other, for example, the 2D block representation is on top of the 3D shape representation (e.g., in the foreground of the 3D shape representation) (see, for example, FIG. 3). Although represented by one box in the flowchart of FIG. 1, the simultaneous display in S10 can be executed throughout the rest of the design method, whereby, when an update of the 2D block representation and / or an update of the 3D shape representation is made by each user action of the design method, the content that the user sees on the screen(s) can also be updated. The update of the display in S10 can be executed automatically and / or in real time when the computer system determines an update of the 2D block representation and / or an update of the 3D shape representation (the expression "real time" can refer here and / or in any other use of this expression in the rest of the present disclosure to a delay of up to 10 seconds or even 1 second).

[0022] The 2D block representation displayed at S10 includes block nodes, one or more input connectors and output connectors on each block node, and each arc between the output connector of the first block node and the corresponding input connector of the second block node.

[0023] "Block node" means any 2D graphics, such as a block shape, for example, a rectangle or a square, or alternatively any other polygon such as a trapezoid, a circle or an ellipse, or any other type of block that a user can identify as a block. The 2D block representation can be displayed on a background, and different block nodes can be physically separated in the display, for example, the gap between each pair of block nodes is non-zero. A "block node" is a node of a virtual graph, and the virtual graph is composed of blocks as its graph nodes / vertices, and there is a graph arc / edge between two graph nodes if there is at least one arc (within the 2D block representation) between two corresponding block nodes. This virtual graph can be referred to as "the graph corresponding to the 2D block representation".

[0024] One or more input connectors and output connectors of each block node can be represented respectively by each graphics displayed on each block node, for example, each symbol displayed on each block node. Each block node may include a boundary line, and at least one (e.g., each) such graphics (e.g., symbol) can be displayed on the boundary line. Each such graphics (e.g., symbol) can be smaller than each block node, for example, at least 10 times smaller with respect to the occupied area of the 2D block representation (i.e., the area occupied on the screen). Each such graphics (e.g., symbol) can be a small compact symbol, such as a dot, a bullet, or a square, or any other type of shape that the user can distinguish from the block node. Different connectors can be physically separated in display, for example, the gap between each pair of connectors is not zero. One or more input connectors of each block node can all have respective graphics that are visually identical or of the same shape, and the respective graphics can optionally be visually identical or of the same shape with respect to each graphics of the output connector(s) of each block node. Optionally, one or more input connectors of all block nodes can all have respective graphics that are visually identical or of the same shape, and the respective graphics can optionally further be visually identical or of the same shape with respect to each graphics of the output connector(s) of all block nodes. All connectors can be represented, for example, by the same dot symbol. Optionally, all block nodes can be oriented in the same way in the 2D block representation, all input connectors in the 2D block representation can be arranged on the same side of their respective block nodes, for example, on the left side of their respective block nodes, and / or all output connectors in the block representation can be arranged on the same side of their respective block nodes, for example, on the right side of their respective block nodes. For example, all block nodes can be represented respectively by each rectangle (or rectangular shape), and the sides of each rectangle can be oriented to be parallel to the sides of the screen.All input connectors of each block node can be represented by dots / symbols of the same or identical shape, all are arranged on the left side of the rectangle, and all output connectors can be represented by dots / symbols of the same or identical shape (e.g., the same dot shape / symbol as the input connector), and all are arranged on the right side of the rectangle of their respective block nodes (see, for example, Figure 3).

[0025] Each arc can be represented by a respective line that links the graphics / symbol (e.g., dot shape) of the output connector of the first block node with the graphics / symbol (e.g., dot shape) of the corresponding input connector of the second block node.

[0026] Block nodes, connectors, and arcs can each be selectable by a user, for example, by the user graphically interacting with a 2D block representation, specifically by the user graphically interacting with a selectable element, such as by the user using a haptic device such as a mouse, or a touchpad, or a touch screen. The system can be configured such that the user can perform such a selection, for example, by clicking a mouse or touching the screen on a block node, connector, or arc, and / or by the user drawing a selection area that includes at least a portion of a block node or arc, or the entire 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 position, moving the cursor or touch on the screen to a second position while maintaining the click or touch, and releasing the click or touch at the second position). Each user selection of a block node, connector, or arc can be automatically tracked in real time by visual feedback such as a visual highlighting of the selected element (e.g., a change in color or a change in intensity or opacity) or a slight movement of the selected element (e.g., bounce feedback). Through such graphical interaction, the user can easily edit a 3D modeled object by operating the 2D block representation, and any selection mentioned in the present disclosure can also be executed accordingly.

[0027] Such a 2D block representation can thus be easily designed and / or edited by the user graphically interacting with the system to instantiate block nodes, moving the instantiated block nodes via drag-and-drop actions, and / or instantiating an arc between connectors by selecting two connectors one by one, and / or clipping each end of the instantiated arc to a connector by drag-and-dropping one or more ends of the instantiated arc. Selecting a block node and / or a connector can also trigger, for example, the display of a dialog box including editable data fields, and the user can input or change values using, for example, a keyboard or a display scroll bar.

[0028] Each block node represents each operator in a predetermined set of operators. "Predetermined" means functional data (here, the set of operators) supported by software / applications being executed on or provided to a computer system, that is, a part of the computer program instructions forming the application. "Operator" means a set of computer data configured to obtain input data, process the input data, and provide output data as the result of the processing. Each operator in the predetermined set of operators thereby has one or more inputs and at least one output. Thus, in the block node referred to as being displayed in S10, each input connector represents each input of each operator represented by each block node, and the output connector represents the output of each operator represented by each block node. In addition to any input represented by each input connector, each operator may optionally include one or more editable internal parameters that can be selected by the user, for example, by the user selecting the operator, by the computer system displaying one or more editable value fields, or by transitioning an already displayed value field from editable to non-editable (accompanied by visual feedback displayed to the user to notify the transition), and by entering or changing at least one value of at least one internal parameter in at least one editable value field.

[0029] Here, the 2D block representation may optionally include non-standard additional block nodes without input connectors, either because the input data of the operator represented by such block nodes is not displayed to the user and thus cannot be edited, or because the block node outputs static data rather than the dynamic results of an operation. The latter option may apply, for example, to a "reference" block node that may provide a common reference frame 0xyz for the design and / or primitive block nodes (integers, floating points, lengths, etc.) (see, for example, the block node "Length.1" in FIG. 7). Alternatively, such references and primitives may be represented within the block nodes they supply.

[0030] For example, in the case of an operator that receives an integer value as input, this may be represented by a first block node representing the operator, a second block node that outputs an integer, and an arc from the output connector of the second block node to the corresponding input connector of the first block node. The second block node may be an instantiation of a general-purpose integer block node, and the user may parameterize the block node to define an integer value. This enables the reuse of the second block node. Alternatively, instead of such a second block node, the integer value may be directly defined within the first block node as an internal parameter (see, for example, the data field 400 in FIG. 4 where a length value can be directly input). A graphical representation similar or identical or of the same shape as the graphical representation of the input connector(s) may be displayed on the first block node, which the user can select, and by selecting the graphical representation and entering or changing a value in the corresponding editable data field as described above, such parameterization may be performed.

[0031] Furthermore, or alternatively, the 2D block representation may optionally include one or more block nodes, each having one or more input connectors, any of which may optionally be connected via an arc to an output connector (for incoming data flow) or left unconnected to allow the user to optionally directly input data values at the input connectors. This provides flexibility to the user.

[0032] Furthermore, or alternatively, the 2D block representation may optionally include non-standard additional block nodes that do not have output connectors. This may be the case, for example, for a "watch" block node, which can monitor the 3D shape of a "partial result" at a particular output connector of the 2D block representation. The output of such a block node is the said partial 3D shape and need only be displayed to the user, for example, upon selection of the block node, and is not intended to be input to any other block node.

[0033] In addition, one or more (standard and / or non-standard) block nodes in the 2D block representation may each include a plurality of output connectors, rather than just one output connector. Each such output connector may be individually selectable by the user, for example, by graphically interacting with the output connector. Thus, in the present disclosure, when the expression "output" or "output connector" is applied to a given operator or block node, if the given operator or block node includes a plurality of outputs or output connectors, it should be understood to refer to one of the outputs or one of the output connectors. The outputs of each such given operator or corresponding block node, and the corresponding output connectors, may follow a predetermined order, and at least one output or output connector is defined as the unique and primary output or output connector. In case of ambiguity, when the expression "output" or "output connector" is applied to a given operator or block node, it refers to such a primary output or primary output connector. According to some examples, the design method may include, for example, at S20, selecting one or more output connectors without focusing on the individual output connector(s) selected by graphically interacting with each of its block nodes. In such a case, the computer system may directly interpret the selection of each block node as the selection of its primary output connector.

[0034] In software / applications, each operator of a given set of operators can have its own data identifier, i.e., it can be referenced by a unique data index, name, or label that points to instantiate the operator in one 2D block representation instantiation such as the 2D block representation shown in S10. Each input of each operator can further have its own data identifier, and similarly, each output of each operator can have its own data identifier. With such identifiers, in the 2D block representation instantiation shown in S10, data flow / circulation can be organized, data is marked / identified and input to the marked / identified operator, and marked / identified output data is generated, which can then flow to any other process such as other operators. The operator identifier, input identifier, and output identifier can form one or more indexes. For example, the software / application can manage three indexes including a first index storing the operator identifier, a second index storing the input identifier, and a third index storing the output identifier. In other words, each identifier is an index value (e.g., an integer) from its respective index (e.g., optionally consecutive and / or a set of integers from 1 to N). Indexing the input (each output) connectors on the set of all input (each output) connectors across all operators of a given set rather than within each individual operator allows for a clear differentiation between input (each output) connectors and enhances any optional prediction.

[0035] Each arc is between each pair of connectors, specifically, from the (starting) output connector of the first (starting) block node to the (ending) input connector of the second (ending) block node. Each arc represents the data flow from the output connector of the first block node to the corresponding input connector of the second block node. Since each block node represents an operator (which may be static, i.e., only receiving internal parameters as inputs), each output connector of each block node represents the data value output by the operator. The arc originating from the connector represents the flow or circulation of the data value towards the input connector where the arc arrives. This is interpreted by the application as the intention that the output data value of the output connector is input as the input of the second block node at the input connector.

[0036] The same output connector can be the starting point of multiple arcs, which means that the data output at the output connector flows to multiple destinations (multiple input connectors of other block nodes). Each input connector can (for example, in most cases) be the end of at most one arc to avoid ambiguity. Alternatively, some input connectors can receive multiple incoming arcs under certain conditions in some cases, which is interpreted as the reception of a collection of objects. Optionally, as will be explained in more detail later, each input connector can receive a collection of objects via a single arc (see, for example, the arc marked "Size: 3" in Figure 3, indicating that a collection of three objects is incoming via a single arc). Further optionally, at least some input connectors can be made dynamically replicable to increase the potential data flow of objects of the same nature. Such replication may involve the addition of specific graphisms (see, for example, the input connector "pts" of the block node "Spline.1" in Figure 3, where a dotted line surrounds the connector to indicate such replication).

[0037] Accordingly, the 2D block representation is configured to correspond to data processing in which the execution of the data flow represented by the arcs of the 2D block representation starts from one or more root block nodes (i.e., block nodes that do not have input connectors or arcs connected to any input connectors of the node), follows the data flow represented by the arcs in the direction of the arcs, and processes data sequentially and / or in parallel (depending on the structure of the 2D block representation) according to the operators represented by each encountered block node. The 2D block representation actually represents a global operation, which corresponds to a composite function of operators defined by the arrangement of the arcs connecting pairs of connectors of the block nodes. The execution of the data flow corresponds to the evaluation of the composite function.

[0038] The execution of the data flow can be performed by the data flow engine of the application. The execution of the data flow can in particular include compiling the data flow represented by the 2D block representation into a series of operations including operators, inputs, internal parameters, outputs, as defined by the 2D block representation. The compilation can simplify the calculation according to predetermined rules, whereby the series of operations yields the same result as the data flow itself, but does not follow it step by step. This is standard in algorithm compilation techniques. The 2D block representation displayed at S10 and the updated 2D block representation executed at S110 are each consistent (i.e., compilable), whereby the data flow engine effectively succeeds in compilation. This can be ensured by the fact that they are each logically consistent in the 2D block representation and / or that the data flow engine is configured to resolve any logical inconsistencies based on, for example, predetermined (e.g., arbitrary) rules.

[0039] In the example, the data processing / flow represented by the 2D block representation is finite. This is because, for example, the 2D block representation does not include cycles, that is, it does not include an arc path that starts from one output connector and reaches the same output connector. Further, the graph corresponding to the 2D block representation can be acyclic. While the user is designing a 3D modeling object by designing a 2D block representation, if the user attempts to create such a cycle, the computer system may output an alert indicating a compilation error or even prohibit the creation of the cycle. Alternatively, such a cycle may be permitted, but specific rules are applied regarding the interpretation of the implicit data flow, whereby it can be made finite. For example, a given set of operators includes a loop operator and can generate values according to some loop / iteration algorithm. A retroactive effect may be permitted for such an operator, which can thus result in an arc cycle. The loop operator may have a value controlling the number of iterations / generations as an input or internal parameter, whereby it is finite and thus stable.

[0040] Alternatively, or in addition, each input connector may be connected to the arc such that data effectively flows into the input connector, and / or each input connector may have a default value that is used if the arc does not reach the input connector. The default value may optionally be a null value, for example, if the input represented by the input connector is optional when evaluating the operator of the block node. Similarly, any operator that includes an internally editable parameter may have a default value for the parameter that is used to evaluate the operator if the user does not enter any specific value. When one or more null values are input, the block node may evaluate the operator using the one or more null values or ignore them (for example, a line operator may optionally have a support plane for the line as an optional input, but since the line can be drawn using only two points as inputs, this may be optional), or instead, replace them with the default value of the associated default connector(s) and / or internal parameter(s), or further instead, indicate an error and / or non-evaluation of the operator (for example, and / or output an "empty" value), for example, if the input is considered mandatory. For example, a given set of operators may include a point operator by coordinates, which consists of outputting a geometric point with coordinates (x, y, z) relative to a reference frame based on the input lengths x, y, and z. The default value for all length input connectors x, y, and z of the block node representing the point operator by coordinates may be 0 mm. If any of the input connectors x, y, z are not linked to any incoming arc supplying a data value to the input connector, or if a null value is supplied to the input connector, the point operator by coordinates may use the default 0 mm value.

[0041] If a logical inconsistency is introduced, or is to be introduced, in the 2D block representation, the data flow engine may automatically resolve it in a pre-determined manner, output an alert, and / or prevent the introduction of the inconsistency.

[0042] For at least one specific block node (hereinafter referred to as a "geometric" block node), for example, for all block nodes in a 2D block representation, the (main) output of each operator represented by such a block node is a respective set of one or more geometric objects, that is, a set of objects each representing geometry. A "geometric" block node can essentially be such, that is, because it is designed to systematically output geometry, or because of the nature of its input(s) in a 2D block representation. For example, such an input is geometric and the operator represented by the "geometric" block node does not change this geometric property. A given set of operators can in particular include a list-making operator that creates a list of input objects. If the input object of an operator is geometric, the corresponding block node is considered geometric in the 2D block representation.

[0043] At least one operator subset of a given set of operators is such that the output of each operator of the subset is a respective set of one or more geometric objects (at least potentially, for example, depending on how it is instantiated in a 2D block representation). At least one specific block node represents the operators of the subset (for example, it is instantiated to substantially output one or more geometric objects).

[0044] According to such a geometric block node, the 2D block representation is configured such that, by execution of the data flow represented by the arcs of the 2D block representation, a 3D shape representation, particularly that shown in S10 or S120, is output.

[0045] This disclosure provides an explanation focused on geometric block nodes (i.e., block nodes within at least one of the above - specified particular block nodes), but it can be similarly applied to other types of block nodes. In particular, selection S20 is presented as being within at least one geometric block node, and so is additional S70. Instead, however, the user can, at S20, make selections not only within at least one geometric block node but also outside at least one geometric block node, and / or execute additional S70 that is not within at least one geometric block node and still execute the remainder of the method of FIG. 1. In particular, automatic calculation S85 can still be executed because, for example, 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). Also, for example, an optional prediction output can still be executed because a non - geometric operator is included within the dataset used in the pre - training of machine learning. However, this discussion focuses on how the design method can be useful when a designer models 3D shapes that will ultimately be produced in the real world through manufacturing, and thus the emphasis is placed on the case of geometric block nodes.

[0046] Referring to object-oriented programming, an application manages a set of predetermined object types and one instance of an object type within the set of predetermined object types. Each object type can be identified by a unique label, marker, or index within the application. At least some of the object types are geometric object types. The 2D block representation instantiates objects within a set of predetermined object types. Each value entered by the user, such as the internal parameter value of a given block node, is an instance of one of the object types. Each output value provided by an output connector of any block node and then input to an input connector is an object instance or a collection of object instances, and each object instance is one of the object types.

[0047] Optionally, for each (at least) geometric block node, i.e., each block node within at least one block node where the output of each operator represented by the block node is a set of one or more geometric objects, the output of the operator (at each output connector) has a dynamic object cardinality. Optionally, the output of the operator of one or more non-geometric block nodes may also have such a dynamic object cardinality. In other words, the output provided at each output connector by such a block node can include a number of object instances that can vary depending on the value of one or more internal parameters of the operator provided by the block node and / or the value and / or cardinality of one or more inputs of the operator provided by the block node. Thus, the block node can output a unique object or a collection of multiple objects at each output connector depending on the situation.

[0048] For example, a given set of operators may include a sequence operator, which is designed to output a list of one or more integers depending on the input values of the sequence operator, and the input may include a lower bound "inf", an upper bound "sup", and a number of integers "nb" to be added to the list. The given set of operators may further or alternatively include a mesh-vertex operator, which consists of outputting all vertices (i.e., geometric points) of the input mesh as a list. The given set of operators may further or alternatively include a list creation (or list construction) operator, which consists of creating a list from one or more inputs provided to the corresponding block node. Even in exceptional situations where an operator can be made to output a unique (i.e., single) object rather than a collection by a single input and / or parameter value (e.g., when an integer value equal to 1 is input to the "nb" input connector at the block node of the sequence operator, which is "under capacity" but can be a permitted use of the operator), such operators are designed and intended to output a collection of variable objects (i.e., the current instance of the 2D block representation, especially the dynamic number when it depends on its data flow at the position of the relevant block node).

[0049] Other examples of operators that a given set of operators may further or alternatively include, rather, operators intended to output a collection of objects of dynamic cardinality, include the following known operators: rectangle-grid operator (arranging points on a plane in a rectangular pattern), grid-UV operator (arranging points on a surface), color-gradient operator, split-string operator, normal-rand operator, sampling operator (providing sampling of points in space), mesh-edge operator and / or mesh-face operator (outputting the edges and / or faces of a mesh), get-item operator, deepening operator, and / or flattening operator.

[0050] The associated output connectors of the above operator may be marked with a "collection" label indicating such an intended output that is a collection of objects rather than a unique object in a computer system (application). Conversely, output connectors mainly designed to output a single object may be marked with a "unique" label indicating such an intended output of a unique object. This marking can be performed in any way, such as by a database associating output identifiers with their respective labels.

[0051] Furthermore, for each geometric block node, and optionally for at least one (e.g., each) non-geometric block node, at least one (e.g., each) input of the operator may have a dynamic object cardinality. In other words, the corresponding input connector is configured to receive the number of object instances that can vary according to the origin of the incoming arc. The operator may assume such a collection and thereby be configured to process the collection of input objects as a whole. Thus, each such input connector may be associated with a "collection" label or a "unique" label accordingly.

[0052] For example, a given set of operators may include a spline operator and / or a polyline operator, each of which is configured to receive a list of points as input and output a spline curve controlled by the list of points, or a polyline linking the list of points. In such an example, the operator assumes a list of points as input and thereby processes the collection at once to provide one output geometric object.

[0053] However, an application can be configured to manage the data flow of a collection even if the connector is intended for a unique object. This can apply to all connectors of geometric (and optionally even non-geometric) block nodes. The connectors remain labeled as "unique", but depending on the data flow, they can be traversed by a collection of objects rather than a unique object. This behavior can also apply to connectors that assume a collection, whereby in this case the connectors each verify that a collection among multiple collections is flowing through them.

[0054] In particular, an operator may be designed to process a single / unique object as an input, and a computer system (e.g., a data flow engine) may be configured to interpret the data flow of a collection of objects (instead of just one unique object) as multiple calls to the operator in order to ensure compilation. In other words, the operator may treat each object in the input collection as one single / unique input, calculate each output, and thereby output a collection of corresponding output objects. A computer system (e.g., a data flow engine) may be configured to accept only the presence of a collection of N objects at one input connector and each unique object at one or more other input connectors (e.g., at compile time), and then use each object of the collection of input connectors each time and each unique object of each other input connector each time to evaluate the operator N times, thereby outputting a collection of N output objects. Alternatively, a computer system (e.g., a data flow engine) may be configured to accept the presence of a collection of N objects at one input connector (e.g., at compile time) and potentially accept the presence of a collection of objects at one or more other input connectors, in which case the collection must also necessarily have N cardinalities. The execution of the data flow may still evaluate the operator N times in such a case, each time obtaining an input object from each collection using an index i from 1 to N and using each unique object for each of the remaining input connectors (without an input collection) each time, thereby outputting a collection of N output objects. If the input cardinalities are different, the system may output an alert and fail compilation.

[0055] For example, a given set of operators may include a point operator based on coordinates as described above. Instead of a single value, a list of N length values x1, …, xN may be supplied to the input connector x, and a single value y1 and a single value z1 may be supplied to the other input connectors. In such a case, the operator outputs a collection of N points (x1, y1, z1), …, (xN, y1, z1). The same operator may be supplied with a list of N length values x1, …, xN for the x input connector, a list of N length values y1, …, yN for the y input connector, and a single value z1 for the z input connector. In such a case, the output of the block node may be the following collection of N points (since the data flow engine optionally supports this situation): (x1, y1, z1), …, (xN, yN, z1), where xi is always equal to yi. If the cardinalities of the two lists x1, …, xN and y1, …, yN are not the same, the system outputs an alert and compilation fails.

[0056] Next, such a collection of points may be input to an operator that expects a collection of points, such as the spline or polyline operator described above. In the example, an operator that expects a collection of objects, such as a spline or polyline operator, may receive as input a collection out of a plurality of collections of objects. The operator may be evaluated separately for each collection of objects. In the case of a spline operator, the block node receives a collection of lists of points. Each list of points generates a respective spline. Thus, the block node outputs a collection of splines.

[0057] Such dynamic object cardinality management provides high ergonomics to the 2D block representation, as it is possible to generate a collection of geometries using a small number of blocks. In particular, the 2D block representation can be configured to be able to input data to each input connector of each geometric operator block node using dynamic object cardinality as needed. This provides the user with high flexibility for generating complex patterns including collections of objects.

[0058] Regarding the combination of object-oriented programming and the concept of "type" or "data type" in computer programming, an application manages typed objects, that is, each object flowing on the arc from an input connector to an output connector, that is, each object passing through or received at an input connector or output connector has a data / object type within a predetermined set of object types. Each operator assumes objects within one or more possible object types as inputs, and each operator outputs objects of one or more possible object types depending on the operator, the internal parameter values of the operator, and the object types of the input(s) of the operator. For example, the assumed object type of a point operator by the coordinates of each input connector x, y, or z is a length object type. The assumed object type of the (main) input connector of a spline operator is a point object type, because it is assumed that the spline operator receives a collection of points and traces a curve passing through the points. As can be seen, the assumed type exists in addition to the assumed cardinality. An input connector can assume the same object type as another input connector, but the two connectors can assume different cardinalities. Thus, all connectors can be marked with a label indicating their assumed object type.

[0059] Therefore, all connectors (inputs or outputs) in a 2D block representation can have static (i.e., pre-defined) cardinality values and static (i.e., pre-defined) object types. The static cardinality and the static object type are information that already exists at the first creation of the 2D block representation and are stored (permanently throughout the design session, even if changes are made to the 2D block representation) in a database (e.g., non-volatile memory) that generally associates connector identifiers with such information.

[0060] The static cardinality value is a value that depends on the object cardinality intended for the connector. Optionally, it can be a binary value indicating whether the cardinality is 1 or greater than 1, i.e., information indicating whether the connector is intended for a unique / single object to pass through the connector or for a collection of (multiple) objects. Such a binary value improves the accuracy of optional prediction because the prediction can depend significantly on whether the cardinality is 1 or greater than 1 rather than on the exact number of objects when the cardinality is greater than 1.

[0061] The static object type is information indicating the object type within a given set of object types that the connector intends. The given set of object types can include general object types to manage cases where the same operator may intend different possible specific object types.

[0062] 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 being designed.

[0063] Thus, in addition to such static values, all connectors (inputs or outputs) of the 2D block representation may have usage (e.g., dynamic) cardinality values, and usage (e.g., dynamic) object types, which are referred to as "internal" cardinality / types or "evaluated" cardinality / types as opposed to "pre-defined" (also referred to as "defined") cardinality / types. Usage or dynamic object cardinality and usage or dynamic object type are information that depends on the current structure of the 2D block representation being designed, and they can be calculated, for example, from the 2D block representation as needed, or alternatively, they can be calculated in a volatile manner and stored in a volatile memory such as RAM (they can be read immediately as needed throughout the design session, but updated when changes to the 2D block representation that affect the values occur).

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

[0065] As described previously, connectors that have static cardinality values indicating that the connector assumes a collection (e.g., the "points" input connector of a spline operator block node or the integer list output connector of a sequence operator block node) can have different usage cardinality values. For example, an integer list output connector can output a single integer if the input / parameter of the sequence operator block node indicating the number of integers to be output is set to 1. In such a case, the sequence operator block node may be used "under capacity," which may be permitted by the data flow engine. Conversely, the data flow engine may prohibit (prevent and / or alert output) a spline operator where a unique point is input at its point list input connector. Thus, when the cardinality value is a binary value, the usage cardinality value is not dynamic, because it is always equal to the static cardinality value, i.e., a value indicating that the usage cardinality is greater than 1.

[0066] The usage or dynamic object type is information indicating the object type within a given set of object types through which the connector flows. For at least one output connector of a geometric block node, and optionally for at least one output connector of a non-geometric block node as well, the output of the operator has an object type that is dynamic, i.e., it is variable depending on the current instance of the 2D block representation. In particular, at least one input of each operator can have a dynamic object type, whereby different types of objects can be supplied to the corresponding input connectors of each block node. The object type at the output connector (i.e., the type of the object output at the connector) then depends on the input object type and can vary as a function thereof.

[0067] For example, a given set of operators may include one or more transformation operators, one or more extraction operators, and / or one or more list assembly operators. Such operators are operators that are directed to operate on them while preserving the type rather than affecting the type of their input. Since the operation of such operators does not depend on the type of the input object, they may be permitted to be input with different object types. The given set of operators may include, for example, any one or any combination of the following operators: a translation operator that translates a geometric object, a rotation operator that rotates a geometric object, a scale operator that scales a geometric object, an assembly operator that assembles geometric objects together, a sub-element operator that extracts sub-parts of an object, a boundary operator that extracts the boundary of a geometric object (for example, a boundary curve if the object is a surface, a boundary surface if the object is a volume), and / or a list construction (or list creation) operator that constructs a list from a plurality of input objects. Each such operator block node may have a dynamic input connector and a corresponding dynamic output connector. The object type of the output connector may vary depending on the object type of the input connector that accepts different object types.

[0068] Conversely, a given set of operators may include one or more geometric operators that do not output any dynamic object type. For such operators, the usage / internal object type of the output connector will always be the same as the static / defined object type of the output connector. This is particularly true for geometric operators that generate geometry from scratch. A given set of operators may include, for example, any one or any combination of the following geometry generation operators: one or more point generation operators that always output points (such as point operators by coordinates), circle generation operators, one or more curve generation operators, line generation operators, sphere generation operators, plane generation operators, mesh generation operators, spline generation operators (as described above), and / or polyline generation operators (as described above). The output in such cases will always be something stationary within a given set of object types (e.g., geometric point object type, geometric line object type, or geometric plane object type).

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

[0070] For example, a translation operator may be assumed to take as input an object of a general geometric object (or geometry) type that is translated, but the operator may take as input an object of a more specific type, such as an object of a geometric curve type. The translation operator can actually translate a curve without problems. As another example, a point operator by coordinates may have a length type as the static object type of its x, y, and z input connectors, but each of these input connectors can accept an object of a real number type (i.e., a real number) or an object of an integer type (i.e., an integer), and such input objects can be interpreted as having a length equal to the input value to which a predetermined length unit, such as meters or millimeters, is assigned.

[0071] A set of predetermined object types can form an object type tree, and the tree has, for example, connections and / or has only a single root node. Thus, all object types are organized in a tree structure according to a parent-child relationship, and a child type is a specific subtype of its direct parent type. In other words, the parent type is more general and encompasses its child types. Thus, an object of a child type represents all the attributes of an object of the parent type, and thereby, an object of the child type can be used as is (i.e., without conversion) in an operation that assumes the parent type. In such a case, each non-leaf object type is dynamic, that is, a connector having the non-leaf object type as its static object type will have a dynamic object type. In particular, each descendant (such as a child or grandchild, etc.) object type of the non-leaf object type is compatible with the non-leaf object type. This is the case, for example, for the translation operator described above, because a curve object type can be a descendant (e.g., a child) of a geometry object type. Due to such compatibility, an operator that accepts a general object type depending on the situation (e.g., a geometric operator that does not affect the types shown above) can be used.

[0072] In a tree, the parent node of a given node is the node from which an arc starts and reaches the given node (all arcs are directed). The descendant nodes (e.g., children) of a given node are the nodes that are reached from the given node by a continuous path of one or more arcs.

[0073] A given object type set (e.g., a tree) may include any one or any combination (e.g., all) of the following types of lists: - A general or undefined (e.g., root) type (optionally, a given operator set may include one or more operators (e.g., a list creation operator) that have the general type as their static object type); - A literal type, a geometry or geometric object type, and a matrix type (e.g., when the root type is a parent or ancestor); - A real type, a string type, and a boolean type (e.g., when the literal type is a parent or ancestor); - A point type, a curve type, a surface type, and a volume type (e.g., when the geometry type is a parent or ancestor); - A vector type (e.g., when the matrix type is a parent or ancestor); - An integer type and a size type (the size type has a length type and an angle type as children) (e.g., when the real root type is a parent or ancestor); - A line type (e.g., when the curve type is a parent or ancestor), and - A plane type (e.g., when the surface type is a parent or ancestor).

[0074] Thus, at least a part of the tree may be composed of the following object type structure, and the indentation represents the parent - child relationship: Undefined / root / general Literal Real Integer Size Length Angle String Boolean Geometry / Geometric Object Point Curve Line Surface Plane Volume Matrix Vector

[0075] The 2D block representation displayed in S10 may include at least one connector for each type of any one or any combination (e.g., all) of the list of types, where the static / defined type is each type.

[0076] Furthermore, or alternatively, if a set of predetermined types is a tree, the 2D block representation may include at least one connector for each leaf type of any one or any combination (e.g., all) of the list of types, where the usage / internal type is each type.

[0077] Further, 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 second object types. Each such first object type convertible to a second object type may be different from each such second object type and may not be its child or descendant. However, the first object type may be an ancestor (i.e., a parent or an ancestor) of the second object type. "Convertible" means that the computer system / application / data flow engine includes each conversion algorithm configured to turn / convert each such first object type into each such second object type. Thus, the algorithm / conversion may be executed each time an object of the first object type is input into an input connector that assumes (has as a static object type) an object of the second object type. As a result, each first object type convertible to a second object type is thereby compatible with each such second object type. This is the case, for example, with an integer object type or a real number object type, both of which can be converted to a length object type. As described above, in such a case, a predetermined algorithm may be configured to simply take the input integer value or real number value and assign a predetermined length unit to the value. Such compatibility provides flexibility to the user when creating arcs between connectors without requiring an exact type match or being bound by descendants. This can prove to be very ergonomic since it becomes difficult for the user to always select the only permitted object type regardless of the situation when a pre-determined object type set may include more than 10, 50, or 100 different object types.

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

[0079] A system (e.g., a data flow engine) may support any one or any combination (e.g., all) of the following conversion rules: - A real number type is convertible to an integer type (e.g., using the floor or ceiling function), convertible to a length type (e.g., by adding units that can systematically become metric units), and / or convertible to an angle type (e.g., by adding radians). - An integer type is convertible to a length type (e.g., by adding units that can systematically become meter or millimeter units), and / or convertible to an angle type (e.g., by adding radians). - A boolean type is convertible to an integer type (e.g., True is converted to 1 and False is converted to 0). - A point type is convertible to a vector type (e.g., the coordinates of the point become the coordinates of the vector as is). - A curve type is convertible to a plane type, optionally only if the curve is planar, otherwise an error is output (e.g., by obtaining any plane containing the plane or the curve). - A line type is convertible to a vector type (e.g., by directly obtaining a unit vector along the line). - A plane type is convertible to a vector type (e.g., by obtaining a unit vector perpendicular to the plane), convertible to a line type (e.g., by obtaining an infinite line perpendicular to the plane), and convertible to a matrix type (e.g., considering a 4x4 transformation matrix (the geometry containing the plane is oriented, the first column of the matrix represents the X direction of the plane, the second column represents the Y direction of the plane, the third column represents the Z direction of the plane, and the fourth column represents the position of the origin O of the plane, such a transformation can be useful for easily representing a change of frame)), and / or - A volume type is convertible to a surface type (e.g., by obtaining the boundary surface of the volume).

[0080] The 2D block representation shown in S10 may include at least one occurrence of each convertibility of the list (i.e., at least once, the object is converted according to each rule at the input connector).

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

[0082] Continuing to refer to FIG. 1, the design method includes, after and / or during the display of S10, for example as described above, the user graphically interacting with the 2D block representation to perform a selection of one or more block nodes from among at least one geometric block node (S20). Here, the case of a geometric design in which the user shapes the final product to be manufactured is discussed, but the same type of user interaction may be supported in non-geometric designs.

[0083] The selection performed at S20 may include the user graphically manipulating one or more block nodes, perhaps at locations other than the connectors shown on the block nodes, thereby directly selecting one or more block nodes. Alternatively, the selection performed at S20 may include the user graphically manipulating the respective output connectors of one or more block nodes, for example, the user clicking or touching one or more output connectors one after another. The system may then interpret such actions as the selection of each block node for each selected output connector. The system may optionally support both options. The example also includes cases where the design method is repeated and the first option is implemented at least once and the second option is implemented at least once.

[0084] Next, the design method mainly includes not only adding new block nodes (i.e., geometric block nodes) representing each operator of the subset, but also user action S60 for automatically connecting the new block nodes to one or more block nodes already existing in the 2D block representation and selected at S20.

[0085] Specifically, the design method includes adding (S70) block nodes representing each geometric operator of the subset to the 2D block representation based on user action S60, including instantiating the selected operators.

[0086] The design method also automatically determines (S85) each arc between the output connector of each selected block node and the corresponding input connector of the added block node, adds (S90) each determined arc to the 2D block representation, 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.

[0087] One or more block nodes selected in S20 may optionally each have one and only one output connector. However, if a given block node selected in S20 has multiple output connectors, the design method may connect only one output connector of the given block node via the functionality of FIG. 1. The expression "output connector" used for the connected output connector may refer to any (predetermined or variable) output connector of a given block node (e.g., as part of an automatic determination S85, e.g., as described below, one (e.g., that) of the output connectors of the block node that realizes arc combination compatibility and / or minimizes a given non - conformity metric and is automatically determined from among the multiple output connectors of the block node), or alternatively a (predetermined) selected output connector (e.g., if a given block is indirectly selected by selecting the output connector selected in S20), or yet alternatively, the (predetermined) main output connector of a given block node. The design method may implement any option.

[0088] Accordingly, the design method automatically determines in S85 the arc combination to connect the output connector of each block node selected in S20 to the corresponding input connector of a new block node. Accordingly, the design method instantiates in S85 data representing such an arc combination without the user defining the arcs.

[0089] The automatic determination S85 may include calculating such arc combinations or, alternatively, obtaining pre-calculated arc combinations. In particular, each arc 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 when the additional S70 is executed. For example, as soon as the user makes a selection at S20, the system may automatically browse, for example, a predetermined set of operators and execute an arc combination calculation algorithm for each operator of the predetermined set of operators or a browsed subset thereof to automatically calculate the arc combinations. In such a case, at least one arc combination including each arc between the output connector of each block node selected at S20 and the corresponding input connector of the block node added at S70 is effectively output for at least one operator (the arc combination calculation algorithm may be optionally configured, depending on the operator and the selection S20, not to output an arc combination or to output another type of arc combination, as will be described later). Such pre-calculation improves the real-time behavior at S85. Also, as will be described later, navigation between different results becomes possible.

[0090] Next, the design method includes adding each calculated arc to the 2D block representation at S90 and thus instantiating each arc between the (e.g., any, primary, 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 a 2D block representation updated at S90. Such addition of arcs at S90 may be executed automatically / real-time and seamlessly during the addition of block nodes at S70 and / or during the calculation S85.

[0091] The determination of S85 and / or the addition of S90 can be executed automatically / realtime and seamlessly after the additional S70, for example, when the additional S70 is completed or triggered. The determination of S85 and / or the addition of S90 can be carried out confusedly / simultaneously with and seamlessly to the additional S70.

[0092] Next, the design method includes updating the display of the 2D block representation (S100) by displaying at least the block nodes added in S70 and each arc added in S90. The update of the display (S100) can be executed automatically / realtime and seamlessly when the addition (S70) and / or calculation (S85) and / or addition (S90) are completed. Therefore, the update of the display (S100) can be carried out confusedly / simultaneously with the addition (S70) and / or calculation (S85) and / or addition (S90) and seamlessly.

[0093] When the update (S100) is completed, the design method can optionally execute automatically / realtime and seamlessly the data flow represented by the arcs of the 2D block representation updated in S100 (S110), output the updated 3D shape representation thereby, and include displaying the updated 3D shape representation simultaneously with the displayed and updated 2D block representation (S120). Therefore, the final update of the 3D shape representation in S120 becomes possible by the present design method, and the visual feedback of the editing executed via S20 and S60 is provided to the user.

[0094] The arc combination determined at S85 can be a compatible arc combination, which means that for each arc of the arc combination, the arc connects each output connector of the block node selected at S20 to each input connector of the block node added at S70, and the object type of each output connector is the same as or compatible with the object type of the input connector. In such an identity / compatibility evaluation, the considered object type of each output connector is the object type set by the current state of the 2D block representation (displayed at S10), that is, the use / dynamic object type of each output connector if available (that is, for example, since the block node has received the evaluated input, the output connector is being evaluated), otherwise the defined / static object type of each output connector. In other words, when an object or a collection of objects effectively flows out from an output connector, the (e.g., dynamic) object type of the said object or collection of objects is considered, and otherwise the static object type is considered. This can result in a difference for dynamic object types (that is, the used object type can be different from the static object type). Next, the considered object type of each input connector is the defined / static object type of each input connector, because the block node was added at S70, has not yet been connected, and thus has not been evaluated.

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

[0096] In S100, the design method may include, for example, displaying a widget for navigating between different arc combinations next to the additional block node in order to change the currently displayed arc combination by simply clicking on it once. The user may use the widget to re - execute the determination S85, addition S90, and update S100 with an arc combination different from what was initially determined by the method. For example, the user can browse (e.g., forward or backward, and the system may optionally support both directions) through a list of possible arc combinations (provided to the user) in sequence. The list of possible arc combinations may be within one or more sets of compatible arc combinations (e.g., equal to the set), and this set may optionally be the set of all compatible arc combinations including each arc between the output connector of each selection block node and the corresponding input connector of the block node added at S70 or to be added at 70.

[0097] The method may calculate or obtain such a list of possible arc combinations at S85 (e.g., the list of possible arc combinations may optionally be pre - calculated immediately upon performing the selection at S20).

[0098] The method may further include displaying a visual cue indicating the position within the navigation / list, which includes the total number of possibilities (i.e., the size of the list of possible arc combinations). The visual cue may be in the form of "k / K" or any equivalent format (where k and K are displayed in any form such as "k out of K"), where K is an integer indicating the total number of arc combinations in the list, and k is an integer from 1 to K indicating the current selection in the list. Thus, K may optionally be equal to the number of elements (i.e., its size / cardinality) within the set of all compatible arc combinations including each arc between the output connector of each selection block node and the corresponding input connector of the block node added at S70 or to be added at 70.

[0099] With such a visual tool, the user can effectively interact with the automation provided by the design method to ergonomically modify the automatic proposal, whereby visual feedback is provided to the user by re-executing the updated S100, executing / compiling the data flow S110, and displaying S120.

[0100] The combination of arcs determined at S85 can be determined based on a predetermined non-conformance metric that, in the example, measures the level / degree of non-conformance of the arc combination or, conversely, measures the level / degree of conformance of the arc combination. The combination of arcs determined at S85 can in particular be one (e.g., the) arc combination among all arc combinations that has the minimum value of the predetermined non-conformance metric (e.g., if there are multiple such arc combinations, the arc combination determined at S85 can be selected in any way from among them). By extension, the value of the predetermined non-conformance metric between a set of one or more block nodes and an operator is the minimum value of the predetermined non-conformance metric among all combinations of arcs that connect the output connectors of each block node of the set to the corresponding input connectors of the block node representing the operator, if there is at least one such combination of arcs.

[0101] The list of possible arc combinations can include the number of all sets of conforming arc combinations (e.g., all), which can be ordered in descending order in the list from the minimum value to the maximum value of the non-conformance metric. The number can be the number of those having the minimum value of the predetermined non-conformance metric. The number can be pre-determined and / or greater than 2 or 3 and / or less than 10 or 8, and can be, for example, 4, 5, 6, or 7.

[0102] In an example where the system automatically browses a predetermined set of operators and executes an arc combination calculation algorithm for each operator in the predetermined set of operators or a browsed subset thereof, such that the arc combination is automatically calculated as soon as the user executes a selection at S20, the system may construct a map (including, for example, executing an arc combination calculation algorithm for one or more operators), and the system may further save the map in a volatile manner in a volatile memory such as RAM, for example, for read access.

[0103] The map may include all operators for which there are compatible arc combinations (each of which may be referred to as a "compatible operator" because it is compatible with selection S20), and associated with each such operator, a set of one or more (e.g., all or a predetermined number) of compatible arc combinations includes each arc between the output connector of each selection block node and the corresponding input connector of the operator. The set may be ordered in descending order from the minimum value to the maximum value of the non - compatibility metric, as in the above list.

[0104] Optionally, the map may further include at least some (e.g., all) other operators (operators for which there are no compatible arc combinations), whereby the map actually includes more than the compatible operators (e.g., all operators) of a predetermined set of operators. Associated with each such other operator, the map may include a set of one or more (e.g., all, or a predetermined number) of compatible arc combinations that includes each arc between the output connectors of each subset of the operator's maximum cardinality (corresponding to operators that may be referred to as "pseudo - compatible" operators), or, if no such set exists, a null value (since the output connector selected at S20 is not identical and not compatible with any input connector of the operator, the operator is, for example, referred to as a "completely non - compatible" operator).

[0105] "Maximum cardinality" means that when multiple block nodes are selected in S20, the arc combination calculation algorithm may recursively consider a subset of the selection of block nodes executed in S20, whereby only one block node of the selection is deleted in each recursion, all potential deletions are considered for the subset, and an attempt is made to find a compatible arc combination for each recursion. For example, if 5 block nodes are selected in S20 (e.g., each having one and only one output connector), and there is no compatible arc combination for a given operator. Then, a compatible arc combination between a subset of 4 block nodes and the given operator can be searched for. If found, the recursion stops and one or more (e.g., all or a predetermined number) such compatible arc combinations can be output. Otherwise, the arc combination calculation algorithm continues and may consider a subset of 3 block nodes. And so on. Due to the stop condition, the maximum cardinality possible is achieved.

[0106] One or more block nodes selected in S20, their output connectors considered in S85, and the block nodes added in S70 may be such that there is at least one compatible arc combination including each arc between the considered output connectors of each selected block node and the corresponding input connectors of the block nodes added in S70 or to be added in S70, whereby this can be determined in S85. However, the method may optionally execute the above-described arc combination calculation algorithm configured to handle alternative scenarios, i.e., cases where multiple block nodes at the start cannot be connected to new block nodes with compatible arc combinations. Thus, an operator that is compatible with only a subset of the selection S20 can also be identified within a given set of operators, each time the maximum cardinality is sought, their compatible arc combinations can be prepared, and / or the values of their non-compatibility metrics can be calculated, whereby this information is prepared to be used later.

[0107] User action S60 may include any user action that triggers the automatic addition and connection of new block nodes. Here, an example is described that significantly improves ergonomics for the selection and addition of block nodes by the user, and such improvements are particularly beneficial because a given set of operators may include more than 50, 100, or 200 operators.

[0108] In the example, after selection S20, user action S60 may include triggering the display of a menu that allows the user to select each operator to which a block node was added at S70. Thereafter, addition S70 may optionally (e.g., scrollable) include the user graphically selecting the graphical representation of each operator within a set or list of graphical representations of a plurality of operators, e.g., by clicking or touching it. This may trigger the instantiation of each operator and the automatic and seamless instantiation of the arc combination determined at S85.

[0109] In the example, when the user selects each operator, the system may calculate at S85 the arc combination to be added at S90. Alternatively, the calculation of the arc combination may already have been performed, such that when the user selects each operator, the system obtains the arc combination to be added at S90, e.g., the arc combination ranked first within the map, e.g., the arc combination having the minimum value of a given non - conformity metric (the value being finite and / or the cardinality of the arc combination being equal to the cardinality of selection S20).

[0110] Further, or instead, the menu may automatically propose some operators of the subset based on the minimum value of the non - conformity metric calculated for each operator. This may apply, for example, when the arc combinations have been pre - calculated. In such a case, when the display of the menu is triggered by the user action S60, the operators can be automatically proposed and ranked according to their level of conformity with the selection S20 (the conformity level being represented by the minimum value of the non - conformity metric calculated for each operator across all arc combinations). In particular, the automatic proposal can rank the operators from the most conforming to the least conforming and present them to the user in that order. The automatic proposal may include a subset of a predetermined set of operators, for example, one or more (e.g., all) operators that are compatible with the entire selection S20 (i.e., there is a compatible arc combination with an arc from each output connector of the selection S20 to each input connector of the operator).

[0111] Optionally, the plurality of automatically proposed operators may further include quasi - conforming operators. To handle such cases, ranking can be performed according to lexicographical order, first by the cardinality of the potentially compatible arc combinations, ranked first from the operators that are compatible with the entire selection S20 (e.g., if there is at least one such operator), then decreasing as the cardinality of the subset of S20 decreases by one, and then by the value of the non - conformity metric ranked in ascending order. In other words, the system automatically proposes up to this possible operator that can connect to all the selected block nodes and first proposes the operator with the highest level of conformity. Such ranking allows handling cases where there are no operators compatible with a given set of operators instead of the selection at S20, whereby only quasi - conforming operators are proposed.

[0112] Optionally, the menu may include a search bar for performing semantic search, and the user may enter text to search for the name of the operator added at S90. While the user is entering text, hits may be calculated and displayed in real time (e.g., via a graphical representation of each operator). If the text being entered is included in the name of the operator (e.g., regardless of the presence of approximate matches), the hits may be displayed.

[0113] Such an option may be combined with an auto-suggest option, whereby the text search is performed within the ranking executed by the auto-suggest, or the auto-suggest is performed among the current hits of the name search. In other words, the auto-suggest is based on the minimum value of the non-conformity metric calculated for each operator that matches the semantic search. As a result of the semantic search, results that match the text searched from among the auto-suggests may be filtered.

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

[0115] This may be the operator predicted by the machine learning function taught in the design method of European Patent Application No. 23306920.2 filed on November 7, 2023 by the same applicant and the same inventor, and incorporated herein by reference, particularly as taught in that document.

[0116] Thus, the design method, as taught in the said European Patent Application, after selecting one or more block nodes and each output connector(s) at S20, referring to Figure 1 of the said document, may include the following: - The computer system uses a pre-trained machine learning function to perform the following operations: For each selected output connector (the output connector of the block node selected at S20), provide input data including at least the following items to the machine learning function (S30): The data identifier of each operator represented by the block node of each selected connector, The data identifier of each selected connector, The object type of each selected connector, Output a prediction of one or more operators from a predetermined set of operators by a machine learning function (S40); - A computer system displays a graphical representation of at least one operator of the prediction, for example, in a displayed menu (S50), - An operator is selected by the user from among at least one operator of the prediction (S60), whereby a block node is added to the 2D block representation (S70) (therefore, the user action S60 of the present disclosure is composed of the user selection S60 in that document).

[0117] As taught in the European patent application: - The input data of the machine learning function may further include a value corresponding to the object cardinality of each selected connector for each selected connector; - The value corresponding to the object cardinality of each selected connector may be a binary value indicating whether the cardinality is 1 or greater than 1; - One or more connectors selected in S20 may be composed of either one output connector or a plurality of output connectors; - The use of a pre-trained machine learning function may include the selection of a respective special machine learning function depending on whether one or more selected connectors are composed of one output connector or a plurality of output connectors; - The machine learning function may be a multi-layer perceptron; - The prediction may include a plurality of operators ranked by probability, and optionally, instead of the most likely operator being automatically instantiated in S70, the plurality of operators may be displayed in a menu; and / or, - A machine learning function pre-trained can be obtained by a training method that can form a machine learning process together with a design method.

[0118] Examples of non-conformance metrics observed to obtain accurate results are described here.

[0119] When the set of object types is a tree and the descendant types are compatible with their ancestor types, the non-conformance metric (which is an arbitrary function) for a given set of arcs penalizes the tree distance between the object type of the output connector of S20 and the object type of the corresponding input connector of the additional block node of S70 for each given arc where the object type of the output connector is a descendant of the object type of the corresponding input connector. In other words, the farther apart the two object types are on the tree, the greater the penalty for the arc. This is because when a match is available, connecting a specific type to a general type should be avoided as much as possible. This way, the general type is reserved for other specific types without such a match, thus optimizing the assistance of generality and globally guaranteeing compatibility.

[0120] When the system supports that one or more first object types can be converted to one or more each of the second object types, the non-conformance metric can penalize the occurrence of a given arc for a given set of arcs where the object type of the output connector is convertible to the object type of the corresponding input connector of the additional block node. In other words, a penalty is imposed on the occurrence of the conversion. This is because the conversion is a design shortcut that is not usually used, and thus, when wanting to add a new block node, the input block node is specially prepared for such a purpose, and thus, it is likely to present object types that do not require such a conversion.

[0121] In particular, the non - conformity metric can impose a penalty on the occurrence to a greater extent than imposing a penalty on the tree distance. For example, for one occurrence, a penalty of 100 times, 200 times, or more than 500 times the tree distance 1, for example, about 1000 times, can be imposed. "Approximately a specific value" means a value of + / - 10%. In other words, the penalty caused by the occurrence of the conversion is more than 100 times, 200 times, or 500 times, for example, about 1000 times the penalty caused by the tree distance 1. Optionally, a penalty can be imposed linearly, for example, proportionally, on the tree distance. For example, the penalty for the tree distance can be equal to the tree distance. Therefore, the automatic decision S85 avoids conversions as much as possible and rather prioritizes higher conformity. Conversions are only used as a last resort to achieve the conformity of the arc combination. However, an arc combination with a higher cardinality that includes a conversion is preferred over a lower cardinality, because it is less likely that the user made a mistake in S20 and S70, and thus it is acceptable to consider that the correct block node(s) were added by the user.

[0122] In particular, for a given arc combination, the non - conformity metric can be equal to the sum of one or more penalties equal to the cardinality of the combination (i.e., the number of arcs in the arc combination, that is, the number of block node(s) selected in S20, except when there is no conforming arc combination and a subset needs to be considered). In such a case, each arc of the given arc combination provides a penalty in total. Such a total balances the penalties, thereby obtaining an accurate result.

[0123] When two connected object types are the same, the penalty per arc can be equal to zero. This is because it is an ideal situation.

[0124] If the arc is such that the object type of the output connector of S20 is the same as or a descendant of the object type of the corresponding input connector of the additional block node of S70, the penalty per arc can 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 additional block node for the arc. The upper limit of the tree distance can be lower than 50, 20, or 10 (i.e., the depth of a given tree of object types is equal to such upper limit value).

[0125] The penalty per arc can be equal to a value greater than 100, 200, or 500 for a conversion arc (i.e., the object type of the output connector is convertible to the object type of the corresponding input connector), for example, equal to about 1000. In other words, the penalty imposition for one conversion is much higher than the penalty imposition for the maximum possible tree distance.

[0126] The design method is repeatedly executed in the design phase and can be interfaced with other design steps, for example, by enabling the user to add block nodes and arcs in other ways (e.g., according to the standard graphical interaction design functions of a 3D block representation application), so that the complete and accurate shape of the product to be manufactured is finally obtained. Next, the 2D block representation and / or 3D shape representation can be input into the manufacturing process, which can output one or more physical instances of the product to be manufactured in exactly the same shape as that finally reached at the end of the design phase. Therefore, the design method and / or machine learning process can be included in the manufacturing process of the product to be manufactured (e.g., mechanical parts of an assembly of mechanical parts).

[0127] Accordingly, design methods generally operate on modeled objects, particularly 2D block representations and 3D shape representations. A modeled object is any object defined, for example, by data stored in a database. By extension, the expression "modeled object" refers to the data itself. Depending on the type of system, the modeled object can be defined by various kinds of data. The system can in fact be any combination of CAD systems, CAE systems, CAM systems, PDM systems, and / or PLM systems. In these different systems, the modeled object is defined by the corresponding data. Accordingly, reference can be made to CAD objects, PLM objects, PDM objects, CAE objects, CAM objects, CAD data, PLM data, PDM data, CAM data, CAE data. However, these systems are not mutually exclusive, and the modeled object can be defined by the data corresponding to any combination of these systems. Thus, the system can be any of CAD, CAE, PLM, and / or CAM systems, as is clear from the definitions of such systems shown below.

[0128] A CAD solution (such as a CAD system or CAD software) further means a system, software, or hardware that is adapted to design at least modeled objects based on the graphical representation of the modeled objects and / or based on its structured representation (such as a feature tree), such as CATIA. In this case, the data defining the modeled object includes data enabling the representation of the modeled object. A CAD system can provide a 3D shape representation of a CAD modeled object, for example, using edges or lines, and in certain cases, using faces or surfaces. Lines, edges, or faces can be represented in various ways, such as by non-uniform rational B-splines (NURBS). Specifically, a CAD file contains specifications that can generate geometry, thereby enabling the generation of a representation. The specifications of the modeled object can be saved in a single CAD file or multiple CAD files. The typical size of a file representing a modeled object in a CAD system is in the range of 1 megabyte per part. Also, a modeled object can typically be an assembly of thousands of parts.

[0129] In the context of CAD, a modeled object can typically be a 3D modeled object representing a product, such as a part or an assembly of parts, or perhaps an assembly of products. A 3D modeled object can be a manufactured product, i.e., a product intended for manufacture. "3D modeled object" means any object modeled by data enabling a 3D shape representation. With a 3D shape representation, a part can be viewed from any angle. For example, a 3D modeled object, when represented in 3D, can be manipulated and rotated around any of its axes or around any axis within the screen on which the representation is displayed. This specifically does not include 2D icons that are not 3D modeled. The display of a 3D shape representation facilitates design (i.e., improves the speed at which a designer statistically achieves their task). Since the design of a product is part of the manufacturing process, this speeds up the manufacturing process in the industry.

[0130] 2D block representations and corresponding 3D shape representation modeling objects can represent the geometry of a product to be manufactured in the real world after the completion of its virtual design by, for example, a CAD / CAE software solution or a CAD / CAE system. This includes (mechanical) parts or part assemblies (or equivalent part assemblies, since the part assembly can be regarded as a part itself from the perspective of the design method, or the design method can be applied independently to each part of the assembly), or more generally any rigid body assembly (such as a mobile mechanism). Using a CAD / CAE software solution, products can be designed in various unlimited industrial fields, such as aerospace, architecture, construction, consumer goods, high-tech devices, industrial equipment, transportation, marine, and / or offshore oil / gas production or transportation. Therefore, the 3D modeling objects designed by this design method can be parts of land vehicles (such as automobiles and small-type truck equipment, racing cars, motorcycles, trucks and motor equipment, trucks and buses, trains, etc.), parts of aircraft (such as airframe equipment, aerospace equipment, propulsion equipment, defense products, aircraft equipment, space equipment, etc.), parts of naval vehicles (such as naval equipment, merchant ships, offshore equipment, yachts and workboats, marine equipment, etc.), general mechanical parts (such as industrial manufacturing machinery, large mobile machinery or equipment, installed equipment, industrial equipment products, metal processing products, tire manufacturing products, etc.), electromechanical or electronic parts (such as consumer electronics equipment, security and / or control and / or measurement products, computing and communication equipment, semiconductors, medical equipment and devices, etc.), consumer goods (such as furniture, household items, gardening supplies, leisure supplies, fashion products, products of hard goods retailers, products of soft goods retailers, etc.), packages (such as food, beverages, tobacco, beauty and personal care, packages of household items, etc.), and can represent industrial products that can be any mechanical parts.

[0131] The 3D shape representation can be a B-rep. The 3D shape of the parts displayed on the computer screen when the modeled object is represented can be a B-rep (e.g., its tessellation).

[0132] A PLM system further means a system adapted to the management of modeled objects representing physically manufactured products (or products scheduled for manufacture). Thus, in a PLM system, the modeled objects are defined by data suitable for the manufacture of physical objects. These can typically be dimensional values and / or tolerance values. Such values are surely better to have for correct manufacture of the object.

[0133] A CAE solution refers to any solution suitable for analyzing the physical behavior of modeled objects, including software for hardware. A well-known and widely used CAE technology is the finite element model (FEM), which is hereinafter referred to synonymously with the CAE model. FEM typically involves dividing the modeled object into elements (i.e., finite element meshes), and its physical behavior can be calculated and simulated by equations. Such CAE solutions are provided by Dassault Systèmes under the trademark SIMULIA (registered trademark). Another growing CAE technology is the modeling and analysis of complex systems composed of multiple components in various physical fields without CAD geometry data. Using CAE solutions enables simulation, and thus enables the optimization, improvement, and verification of products scheduled for manufacture. Such CAE solutions are provided by Dassault Systèmes under the trademark DYMOLA (registered trademark). Using CAE, various structural requirements (but not limited to mass, stiffness, strength, durability, etc.) can be reliably achieved by a new CAD model. Some of these requirements can be called key performance indicators (KPIs). In many industrial products (such as automobiles, airplanes, consumer goods, high-tech products, etc.), these KPIs are contradictory. For example, a small mass usually results in low stiffness. Therefore, optimization methods are often applied to find the optimal trade-off between KPIs.

[0134] A CAM solution refers to any solution, software of hardware, adapted to manage the manufacturing data of a product. Manufacturing data generally includes data related to the products to be manufactured, the manufacturing process, and the required resources. A CAM solution is used to plan and optimize the entire manufacturing process of a product. For example, it can provide information to CAM users regarding the feasibility, duration of the manufacturing process, or the number of resources such as specific robots that can be used in a specific step of the manufacturing process, thus enabling decisions regarding management or required investments. CAM is a subsequent process after the CAD process and potential CAE processes. For example, a CAM solution can provide information regarding machining parameters or molding parameters consistent with the extrusion features provided in the CAD model. Such CAM solutions are provided by Dassault Systèmes under the trademarks of CATIA, Solidworks, or DELMIA (registered trademark).

[0135] Therefore, CAD solutions and CAM solutions are closely related. In fact, CAD solutions focus on the design of products or parts, while CAM solutions focus on their manufacturing methods. The design of a CAD model is the first step towards computer-aided manufacturing. In fact, CAD solutions provide important functions such as feature-based modeling and boundary representation (B-Rep), reducing the risk of errors and accuracy degradation during the manufacturing process processed by CAM solutions. In fact, the CAD model is intended to be manufactured. Therefore, the 3D modeled object is the virtual twin (also called digital twin) of the object to be manufactured and has the following two purposes: - To verify the correct behavior of the object to be manufactured in a specific environment; and - To ensure the manufacturability of the object to be manufactured.

[0136] PDM stands for Product Data Management. A PDM solution means any solution, software or hardware, adapted to manage all types of data related to a specific product. PDM solutions can be used by all stakeholders involved in the product life cycle, mainly engineers, but also project managers, finance staff, sales staff, buyers, etc. PDM solutions are generally based on product-oriented databases. Thereby, stakeholders can share consistent data about the product and thus prevent stakeholders from using inconsistent data. Such PDM solutions are provided by Dassault Systèmes under the trademark ENOVIA (registered trademark).

[0137] The 3D modeled objects output by the design method can be CAD models that include or are composed of, for example, feature trees and / or B-reps. Such models can be derived from CAE models and can be generated, for example, from a 2D block representation conversion process from CAE to CAD that the design method may include at an initial stage.

[0138] The design method can be included in the manufacturing process, which, after executing the design method, can include manufacturing a physical product corresponding to the 3D modeled object by the design method. The manufacturing process can include the following steps: - Applying the design method to obtain the 3D modeled object (CAD model) output by the design method; - Using the obtained CAD model to manufacture parts / products.

[0139] Using the CAD model in manufacturing refers to any real-world action or series of actions related to / involved in manufacturing the product / parts represented by the CAD model. Using the CAD model in manufacturing can include, for example, the following steps: - Editing the obtained CAD model; - Performing simulations (multiple possible) based on a CAD model or a corresponding CAE model (e.g., the CAE model that is the basis of the CAD model after the CAE-to-CAD conversion process), such as simulations for verifying mechanical, usage, and / or manufacturing characteristics and / or constraints (e.g., structural simulations, thermodynamic simulations, aerodynamic simulations); - Editing the CAD model based on the results of the simulation(s); - Optionally (i.e., depending on the manufacturing process used, the production of the manufactured product may or may not include this step), determining (e.g., automatically) a manufacturing file / CAM file based on the (e.g., edited) CAD model for the production / manufacturing of the manufactured product; - Transmitting the CAD file and / or the manufacturing file / CAM file to the factory; and / or - Generating / manufacturing (e.g., automatically) the mechanical product originally represented by the model output by the design method based on the determined manufacturing file / CAM file or the CAD model. This may include supplying the manufacturing file / CAM file and / or the CAD file to the machine(s) performing the manufacturing process (e.g., automatically).

[0140] This final production / manufacturing step may be referred to as a manufacturing step or a production step. In this step, based on the CAD model and / or CAM file, for example, the CAD model and / or CAD file is supplied to a computer system(s) that controls one or more manufacturing machines or machines to manufacture / process the part / product. The manufacturing step may include performing known manufacturing processes or a series of manufacturing processes such as, for example, one or more additive manufacturing steps, one or more cutting steps (e.g., laser cutting or plasma cutting steps), one or more stamping steps, one or more forging steps, one or more bending steps, one or more deep drawing steps, one or more forming steps, one or more machining steps (e.g., milling steps) and / or one or more punching steps. Due to the improvement in the design of the model (CAE or CAD) representing the part / product by the design method, the manufacturing and its productivity are also improved.

[0141] Editing a CAD model may include a user (i.e., a designer) performing one or more edits to the CAD model, for example, using a CAD solution. Changes to the CAD model may include one or more changes to each of the geometry and / or parameters of the CAD model. Changes may include any change or series of changes made to the feature tree of the model (e.g., changes to feature parameters and / or specifications) and / or changes made to the display representation of the CAD model (e.g., B-rep). The changes are changes that maintain the technical function of the part / product, i.e., the user makes changes that may affect the geometry and / or parameters of the model, but the purpose is only to make the CAD model more technically compliant for downstream use and / or manufacturing of the part / product. Such changes may include any change or series of changes that make the CAD model technically compliant with the specifications of the machine(s) used in the downstream manufacturing process. Such changes may further or alternatively include any change or series of changes that make the CAD model technically compliant for further use of the previously manufactured product / part, such changes or series of changes being based, for example, on the results of simulation(s).

[0142] A CAM file may include a manufacturing step-up model obtained from a CAD model. The manufacturing step-up may include all the data necessary for manufacturing a machine product, such that it may have the geometry and / or distribution of the material corresponding to that captured in the CAD model (perhaps up to manufacturing tolerances). Determining the manufacturing file may include applying any CAM (Computer-Aided Manufacturing) or CAD-to-CAM solution (e.g., any automated CAD-to-CAM conversion algorithm) for determining the manufacturing file from the CAD model (e.g., automatically). Such CAM or CAD-to-CAM solutions may include one or more of the following software solutions that can automatically generate manufacturing instructions and tool paths for a given manufacturing process based on the CAD model of the product to be manufactured: - Fusion 360, - FreeCAD, - CATIA, - SOLIDWORKS, - Dassault Systèmes' NC Shop Floor Programmer shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-shop-floor-programmer, - Dassault Systèmes' NC Mill-Turn Machine Programmer shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-mill-turn-machine-programmer, and / or - Dassault Systèmes' Powder Bed Machine Programmer shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / powder-bed-machine-programmer.

[0143] The product / part can be a part that can be additively manufactured, i.e., a part manufactured by additive manufacturing (i.e., 3D printing). In this case, the manufacturing process does not include the step of determining a CAM file and proceeds directly to the production / manufacturing step by supplying the CAD model directly (e.g., automatically) to the 3D printer. The 3D printer is configured to directly and automatically 3D print the machine product according to the CAD model when a CAD model representing the machine product is supplied (e.g., when 3D printing is initiated by a 3D printer operator). In other words, the 3D printer receives the CAD model supplied to it (e.g., automatically), reads the CAD model (e.g., automatically), and prints the part (e.g., automatically) by adding material, for example, layer by layer, to reproduce the geometry and / or distribution of the material captured by the CAD model. The 3D printer adds material so as to actually and accurately reproduce, up to the resolution of the 3D printer, the geometry and / or distribution of the material captured by the CAD model, optionally with or without tolerances and / or manufacturing corrections. The manufacturing may include determining such manufacturing corrections and / or tolerances, for example, by a user (e.g., a 3D printer operator) or automatically (by the 3D printer or a computer system controlling it), for example, by modifying the CAD file to conform to the specifications of the 3D printer. The manufacturing process may further or alternatively include determining, from the CAD model, the printing direction (e.g., automatically by the 3D printer or a computer system controlling it) to minimize, for example, the amount of overhang, as described in European Patent No. 3327593, which is incorporated herein by reference, and layer slicing (determining the thickness of each layer, the path / trajectory for each layer, and other characteristics of the 3D printer head (e.g., for a laser beam, e.g., path, speed, intensity / temperature, other parameters, etc.)).

[0144] The product / part can alternatively be a machined part (i.e., a part manufactured by machining), such as a milled part (i.e., a part manufactured by milling). In such a case, the manufacturing process may include a step of determining a CAM file. This step can be automatically executed by any suitable CAM solution that automatically retrieves the CAM file from the CAD model of the machined part. The determination of the CAM file can include (e.g., automatically) checking whether the CAD model has geometric peculiarities (e.g., errors or artifacts) that can affect the manufacturing process, and (e.g., automatically) correcting such peculiarities. For example, if the CAD model still contains sharp edges, machining or milling based on the CAD model may not be performed (since machining tools or milling tools cannot create sharp edges), and in such a case, the determination of the CAM file may include (e.g., automatically) rounding or filleting such sharp edges (e.g., with a rounding radius or fillet radius substantially equal to the radius of the cutting head of the machining tool, e.g., up to the tolerance), thereby enabling machining or milling based on the CAD model. More generally, the determination of the CAM file can automatically include rounding or filleting geometries in the CAD model that are not compatible with the radius of the machining tool or milling tool to enable machining / milling. This check and possible correction (e.g., rounding or filleting of geometries) can be automatically executed as described above, but the user (e.g., a machining engineer) can also manually perform the correction in, for example, CAD and / or the CAM solution, e.g., the solution can force the user to make corrections that conform the CAD model to the specifications of the tools used in the machining process.

[0145] In addition to the check, the determination of the CAM file may include determining (e.g., automatically) a machining path or a milling path, i.e., the path that a machining tool follows to machine a product. The path may include a set of coordinates and / or a parameterized trajectory that the machining tool follows for machining, and the determination of the path may include (e.g., automatically) calculating these coordinates and / or trajectories based on the CAD model. This calculation may be based on the calculation of the boundary of the Minkowski subtraction of the CAD model by the CAD model representation of the machining tool, as described, for example, in European Patent Application No. EP21306754.9 filed by Dassault Systèmes on December 13, 2021, which is incorporated herein by reference. It should be understood that the path may be a single path, e.g., a path that the tool follows continuously without breaking contact with the material being cut. Alternatively, the path may be a concatenation of a sequence of sub-paths that the tool follows in a particular order, each of which is, for example, followed continuously without breaking contact with the material being cut. Optionally, the determination of the CAM file may then include (e.g., automatically) setting machine parameters such as cutting speed, cut / pierce height, and / or die opening stroke, based on, for example, the determined path and the specifications of the machine. Optionally, the determination of the CAM file may then include (e.g., automatically) configuring nesting in which the CAM solution determines the optimal orientation of the part to maximize machining efficiency.

[0146] In the case of machining or milling parts, the determination of the CAM file thus generates and outputs a CAM file that includes machining paths and, optionally, set machine parameters and / or configured nesting specifications. This output CAM file can then be sent (e.g., directly and automatically) to the machining tool, and / or the machining tool can then be programmed (e.g., directly and automatically) by reading the file, whereupon the production process includes a production / manufacturing step of machining the product by the machine executing according to the production file, e.g., directly and automatically executing the production file. The machining process includes the machining tool cutting the actual material block in order to reproduce the geometry and / or distribution of the material captured by the CAD model, e.g., to within a tolerance (e.g., dozens of microns in the case of milling).

[0147] The product / part can instead be a molded part, i.e., a part manufactured by molding (e.g., injection molding). In such a case, the manufacturing process may include the step of determining a CAM file. This step can be automatically executed by any suitable CAM solution that automatically retrieves the CAM file from the CAD model of the molded part. The determination of the CAM file may include (e.g., automatically) performing a series of molding checks based on the CAD model to check whether the geometry and / or distribution of the material captured by the CAD model is suitable for molding, and, if the CAD model is not suitable for molding, performing appropriate corrections (e.g., automatically). The execution of the checks and any appropriate corrections (if any) can be performed automatically or, alternatively, for example, enable a user (e.g., a molding technician) to perform appropriate corrections to the CAD model, but be performed by the user using a CAD and / or CAM solution that restricts the user to making corrections that conform the CAD model to the specifications of the molding tool(s). The checks may include verifying that the virtual product represented by the CAD model matches the mold dimensions and / or verifying that the CAD model includes all the draft angles necessary to remove the product from the mold, as is known per se. The determination of the CAM file may then further include determining, based on the CAD model, the amount of liquid material to be used for molding and / or the time to cure / solidify the liquid material in the mold, and outputting a CAM file that includes these parameters. The manufacturing process then includes (e.g., automatically) performing molding based on the output file, and the mold forms the liquid material into a shape corresponding to the geometry and / or distribution of the material captured by the CAD model during the determined curing time (e.g., to within the tolerance (e.g., incorporating or varying the draft angle for removal from the mold)).

[0148] The product / part can alternatively be a stamped part, and may perhaps also be referred to as a "stamping part", that is, a part manufactured by a stamping process. In this case, the manufacturing process may include (e.g., automatically) determining a CAM file based on a CAD model. The CAD model represents the stamping part. For example, if the part includes flanges, it includes one or more flanges, and perhaps in the latter case, extra material may be removed from the stamping to form the developed state of one or more flanges of the part as is known per se. Thus, the CAD model is composed of a part (possibly the whole part) representing the part without flanges and perhaps an outer additional patch part (if any) representing the flange (if any), and perhaps includes extra material (if any). This additional patch part may exhibit g2 continuity over a specific length and then g1 continuity over a specific length.

[0149] In the case of this stamping, the determination of the CAM file may include (e.g., automatically) determining the parameters of the stamping machine, such as the size of the stamping die or punch and / or the stamping force, based on the geometry and / or distribution of the material of the virtual product captured by the CAD model. If the CAD model also includes the representation of the extra material removed to form the developed state of one or more flanges of the part, the extra material removed is cut, for example, by machining, and the determination of the CAM file may also include, for example, as described above, determining the corresponding machining CAM file. If there are one or more flanges, the determination of the CAM file may include determining the geometric specifications of the g2 continuity part and the g1 continuity part that enable the flange to be folded towards the inner surface of the stamping part along the length of g2 continuity in a folding process after the stamping itself and the removal of the extra material. The CAM file thus determined may therefore include the parameters of the stamping tool, optionally the above-mentioned specifications (if any) for folding the flange, and optionally the machining production file (if any) for removing the extra material.

[0150] The stamping production process may then, for example, directly and automatically output a CAM file and execute the stamping process (automatically, for example) based on the file. The stamping process may include stamping (e.g., punching) a portion of the material to form a product represented by a CAD file (possibly including a developed flange and any excess material, if any). Where appropriate, the stamping process may include cutting excess material based on a machining production file and bending the flange based on the specification for bending the flange, whereby the flange is bent at its g2 continuous length and a smooth appearance is given to the outer boundary of the part. In this latter case, the shape of the previously manufactured part differs from its virtual counter - part represented in the CAD model in that excess material has been removed and the flange has been folded, whereas in the CAD model the part is represented with the excess material and the flange not folded.

[0151] The computer system may comprise a processor coupled to a memory and a graphical user interface (GUI), and the memory may record a computer program including instructions for performing a training and / or design method. A database may also be stored in the memory. The memory is any hardware suitable for such storage and may comprise a plurality of physically different parts (e.g., for the program and possibly for the database).

[0152] Figure 2 shows an example of a system, which is a client computer system, for example, a user's workstation.

[0153] 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 connected to the bus. The client computer is further provided with a graphics processing unit (GPU) 1110 associated with a video random access memory 1100 connected to the bus. The video RAM 1100 is also known as a frame buffer in the art. A mass storage controller 1020 manages access to mass storage devices such as a hard drive 1030. Mass storage devices suitable for tangibly embodying computer program instructions and data include, for example, semiconductor memory devices such as EPROM, EEPROM, flash memory devices, magnetic disks such as internal hard disks and removable disks, magneto-optical disks, and any form of non-volatile memory. Any of the foregoing may be supplemented or incorporated by a specially designed application specific integrated circuit (ASIC). A network adapter 1050 manages access to a network 1060. The client computer may also include tactile devices 1090 such as a cursor control device, a keyboard, etc. The cursor control device is used in the client computer to enable a user to selectively place a cursor at any desired location on a display 1080. Further, using the cursor control device, the user can select various commands and input control signals. The cursor control device includes some signal generation devices for inputting control signals to the system. Typically, the cursor control device can be a mouse, and the buttons of the mouse are used for signal generation. Alternatively, or additionally, the client computer system may include a sensing pad and / or a sensing screen.

[0154] A computer program may include instructions executable by a computer, and the instructions include means for causing the above system to execute a method. The program may be recordable on any data storage medium including the system's memory. The program may be implemented, for example, in digital electronic circuitry, or in computer hardware, firmware, software, or combinations thereof. The program may be implemented as a product tangibly embodied in a machine-readable storage device, executed by an apparatus, e.g., a programmable processor. The steps of the method may be executed by a programmable processor executing a program of instructions that operate on input data to produce output, thereby performing the functions of the method. Accordingly, the processor is programmable and coupled to receive data and instructions from a data storage system, at least one input device, and at least one output device, and to transmit data and instructions to them. An application program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language as required. In any case, the language may be a compiled or interpreted language. The program may be a full-installation program or an update program. Applying the program to the system, in any case, generates instructions for executing the method. Alternatively, the computer program may be stored and executed on a server in a cloud computing environment, and the server communicates with one or more clients via a network. In such a case, the processing unit executes the instructions included in the program, thereby executing the method in the cloud computing environment.

[0155] Here, the implementation will be described with reference to FIGS. 3 to 24.

[0156] The implementation provides, in particular, an application that represents the connection of operators in a graph-like form, i.e., a solution that intelligently proposes arc connections in a 2D block representation. An example of such an application is xGenerative Design, a web application that is part of the CATIA portfolio and combines 3D and visual scripting modeling based on a 2D block representation.

[0157] Figure 3 shows a screenshot of the interface of such a 2D block programming application.

[0158] Such an application can simultaneously display a 3D shape representation 300 of a 3D modeling object representing a manufactured product (e.g., a folded alveolar sheet structure) and a 2D block representation 310 of the 3D modeling object. The 2D block representation 310 optionally includes block nodes 320 that can be rectangles all parallel to the screen, input connectors 322 that can be dot-shaped and are displayed on the left boundary side of each block node 320, output connectors 324 that can be dot-shaped and are displayed on the right boundary side of each block node 320, and arcs 326 that connect the output connector 324 of a first block node to one or more corresponding input connectors 322 of another second block node 320. The application can also display a menu, menu buttons 330, and widgets 340.

[0159] The application enables generative 3D modeling via a library that can be instantiated or a predefined set of operators. The operators are configured to process geometric operations (points, lines, curves, surfaces, extrusions, rotations, meshes, etc.), mathematical operations (addition, division, etc.), list management, etc.

[0160] The library can propose over 500 operators, which may be increasing. As a result, it may be difficult for the user to find the appropriate operator at a particular design stage. The proposed solution optionally addresses the discoverability problem. Further, connecting a new operator to the selection of existing operators can be cumbersome, especially considering the numerous input connectors that a new operator may have. The proposed solution addresses this connectivity problem.

[0161] Referring to FIG. 4, an operator is a node within a virtual graph. The figure shows an instance of a point node by coordinates. On the left side of the figure, the node has not been selected by the user, and thus only its input connector 322 and its output connector 324 are displayed to the user. On the right side of the figure, the node has been selected, and as a result, additional data field 400, menu 410, and information 420 are displayed to the user. The right side portion of the figure shows the view of the node when the user selects the node (e.g., by mouse click) to perform operations such as changing input values or managing node status. An operator processes input data and provides an output result through internal operations (such as geometric transformation, mathematical formula, data structure management, etc.). In the example of FIG. 4, the "Point By Coordinates" operator / node receives three lengths as coordinates and constructs a geometric point (here named "Point.1") therefrom.

[0162] Referring to FIG. 5, nodes can be connected via arcs 326 through input and output connectors, thus forming a virtual graph. This figure shows the actual connection of the "pt" input connector of the "Coordinates" block node to the output of the point-by-coordinates operator. In this simple example, the user is connecting a previous point to the "Coordinates" node to obtain point coordinates. "Coordinates" forms an example of an operator having multiple outputs.

[0163] Referring to FIG. 6, the application can manage data types in detail: The data that moves / flows between the data in the input connector and the nodes is typed to define its nature and ensure compatibility (compliance) between the output connector and the input connector. This figure shows an example of the "Line 2 Points" operator, by which the user generates a line using two points (line segments). To enable this, each input connector has a specific static object type for specifying the type of data that can be connected to it: - pt1 and pt2 are of the "GeometricPoint" type, assuming geometric points; - st and end are the optional extension lengths of the line beyond the two points, and their type is "Length". - sup is the optional surface support of the line on which the line can be drawn. Its type is "GeometricSurface".

[0164] Referring to FIG. 7, if the connection is incorrect with respect to the type, the node may enter an error state, and a visual alert may be displayed to the user. In this example, Length is connected as the second point of the Line. Since the types "Length" and "GeometricPoint" are not compatible, the node is in an "error" state and the generation of the Line is not possible.

[0165] FIGS. 8 - 9 show examples of the generated line having two points and two extension lengths, which include the 2D block representation (or graph view) in FIG. 8 and the 3D shape representation (or 3D view) in FIG. 9.

[0166] Referring to FIG. 10, the user may select one or more block nodes 1520 (operators) at S20 and then search for a new operator to connect to the selected output connector 1524. In the illustrated example, three block nodes, Length.1, Angle.1, and Point.1, are selected, each having one (only one) output connector 1524, and the user is searching at S70 for a Circle block node to add to the 2D block representation and connect to the selected block nodes. The user may trigger the display of menu 1570 at S60 and navigate to and select each operator to add at S70. Menu 1570 may include a search bar 1575 for performing semantic search in the menu. Here, for example, after clicking on the search bar, the user has entered the text "circle cen" using the keyboard. When the user enters text, results / hits may be displayed in the menu in real time, here being "circle center point" and "circle center radius". When the user edits the semantic search, the suggestions may be updated in real time.

[0167] The auto-suggestions may optionally be based on the minimum value of a non-conformance metric calculated for each operator that matches the semantic search (i.e., the text entered by the user). For example, only operators that are compliant or only operators that are seemingly compliant may be suggested. Additionally or alternatively, the suggested operators may be ranked in order of decreasing level of compliance (i.e., increasing value of the non-conformance metric).

[0168] As shown in FIG. 11, the block node Circle.4 is added at S70. If the user manually connects the (Length.1, Angle.1, and Point.1) and the selected output connector in an inconsistent manner as shown in the figure, an error will be displayed on the interface. This can occur particularly frequently when the user simply follows the order of the input connectors of the selected block node and the Circle block node (e.g., the vertical order from top to bottom, and / or the order within the application (e.g., the natural order of the input connectors and the time series of the instantiation of the selected block node)). By doing so, the compatibility of the connector types is ignored, potentially leading to errors. In the example of this figure, the "Point.1" node is connected to Circle via the "sup" input connector, but the said "sup" input connector assumes a plane rather than a point. Therefore, the node is in an error state.

[0169] At S85, by automatically determining each arc between the output connector of each selected block node and the corresponding input connector of the added block node, the proposed solution prevents this type of manual connection error, which further addresses the fact that multiple appropriate connection patterns may exist. In the context of a 2D block representation application where there can be many operators, the proposed solution can determine which operators are compatible with the user selection at S20, which connections are valid between the user selection and all the operators of the application, and which is the most likely connection among all possible connections.

[0170] Based on the data type compatibility between pairs of connectors, the proposed solution can propose connection patterns between operators (block nodes) from the set of block nodes selected by the user or from the output connectors of the block nodes within the 2D block representation designed by the user. Such information is considered for the proposal of automatic connections. Therefore, the proposed solution accelerates the entire design process.

[0171] In an implementation, connections are automatically calculated and added initially in the most suitable combination. Subsequently, the user may optionally select another connection pattern from the ranked list of connection patterns by navigating through them (e.g., forward or backward) via an appropriate user interface, which is efficient and time-saving.

[0172] The implementation is based on the concept of type penalties (e.g., the asymmetric distance from one object type to another), which functions as a metric for establishing the distance between two object types A and B (note that the penalty is not a distance, as the penalty from A to B is not the same as the penalty from B to A). Next, such a "penalty from A to B" intervenes in each arc that may be calculated at S85, connecting the output connector of object type A to the input connector of object type B. In such a case, the object type can become a used / internal / dynamic object type if available (i.e., if the object type can be evaluated), or a defined / static object type otherwise.

[0173] In an implementation, data / object types are hierarchical and can be organized as a tree, and convertibility is supported. In particular, a given set of object types can be a tree containing any one or any combination (e.g., all) of the aforementioned type lists. For example, at least a part of the tree is composed of the structure of the aforementioned object types. Furthermore, the implementation can support any one or any combination (e.g., all) of the aforementioned convertibility rule lists.

[0174] When mapping the type hierarchy, the implementation may define the penalty from type A to type B by the following rules: - If A is the same object type as B, the penalty is 0 (zero). - If B is the parent of A (there is only one branch between two types in the tree), the penalty is 1. - If B is an ancestor of A, the penalty is the tree distance D between A and B (i.e., the number D of branches forming the path between the two types). - If A can be converted to B (jump to another branch), the penalty between type A and B is, for example, 1000. The conversion between types is explicitly declared in the application. - If type B cannot be reached from A by tree traversal and conversion, the penalty is infinite.

[0175] In this definition, for the implementation, if the penalty AB is finite, the two types A and B are considered to be compatible. If the penalty is infinite, A and B are considered to be non - compatible. A child type is always compatible with its parent type, but the parent type is generally not compatible with the child type unless there is a conversion from the parent to the child.

[0176] Referring to the above - mentioned object type structure and the list of the above - mentioned conversion rules, some examples of penalty calculation are as follows: - From "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. - From "Boolean" to "Literal": "Boolean" can be converted to "Integer" (0 or 1). Therefore, it becomes Integer > Real > Literal. The penalty here is 1000 (conversion)+2 (parent - child relationship)=1002. - From "GeometricPlane" to "Vector": "GeometricPlane" can be converted to "Vector" by considering the normal of the plane at its center. The penalty here is 1000. - From "Vector" to "GeometricPlane": Since the solution is considered infinite by implementation, converting a vector to a unique plane is not supported in the implementation. Therefore, there is no path from Vector to GeometricPlane, and the penalty is thus infinite.

[0177] The penalty between two types is asymmetric / unidirectional: In a data type set, penalty AB is different from penalty BA. Compatibility is also asymmetric: A may be compatible with B, while B may be incompatible with A.

[0178] Type penalties AB and AC can be used to establish 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), type C is considered "closer" / more compatible with A than B.

[0179] Referring to Figure 12, the user selects one or more operators (e.g., Point.1 and Plane.1) at S20 and, as shown in this example, may decide to search for something new to connect the selection to Line.1. The user is selecting points and planes to create a line.

[0180] In this example, the user selected Point and Plane and created a Line node from this selection. The purpose of the implementation is to connect the selection to a new block node as appropriately as possible considering the degree of type compatibility (penalty).

[0181] In this example, out of all the arcs 326, only two arcs 1126 are associated with a finite penalty, so only one combination of arcs has a finite incompatibility metric.

[0182] When the user selects an operator, the implementation may initialize a map that includes all the operators of the application. For each operator, the implementation may test whether a connection pattern is possible between the user selection and the previous one. Next, the implementation may store in the map the resulting possible connections, for each operator, that include the name of the operator associated with a vector of all possible combinations of arcs.

[0183] For example, consider a user selection that includes output connectors o1, o2, o3, and an operator that has input connectors i1, i2, i3.

[0184] If o1 is compatible with i1 and i3 (finite distance of data types), this means that the following process is implemented so that for the combination, it is stored in the map as a possible combination. Initialization: - Combination 1: [i1] - Combination 2: [i3] Next, if o2 is compatible with i2: - Combination 1: [i1, i2] - Combination 2: [i3, i2] Here, if o3 is only compatible with i3: - Combination 1: [i1, i2, i3] - Combination 2: [i3, i2, i3]

[0185] In this case, it can be seen that i3 exists twice in combination 2, and thus, since i3 is already connected to o1 (which can be verified from its position in the list), this combination is not possible. Therefore, the process deletes combination 2 and is left with the following: - Combination 1: [i1, i2, i3]

[0186] Considering the fact that there is at least one possible connection pattern, the process can consider the operator to be compatible with the user selection.

[0187] Conversely, when o3 is only compatible with i2: - Combination 1: [i1, i2, i2] - Combination 2: [i3, i2, i2]

[0188] This means that two combinations are not possible, and thus the process may be regarded as having no selection and compatibility for the operator itself (the combination of connections is impossible).

[0189] Similarly, when o3 is not compatible with any of the operator inputs, this means that no new connection can be created, and thus this output cannot be connected, which may mean that the operator is not compatible with the user selection.

[0190] Alternatively, the process may consider pseudo-compatibility and return to the previous step, thereby storing in the map: - Combination 1: [i1, i2] - Combination 2: [i3, i2]

[0191] In other words, the map may store a set of compatible arc combinations between a subset of output connectors with a maximum cardinality (2 in the example, e.g., [o1, o2]) and input connectors.

[0192] In such an alternative, the process may further search for a set of compatible arc combinations of other subsets of output connectors with a maximum cardinality (in this example, [o1, o3] and [o2, o3]) and store the arc combinations in the map.

[0193] When multiple connection combinations are possible, the implementation may be at S85 to compare the sum of all distances (the "degree of compatibility") of each combination and automatically select the most compatible combination. However, the map may be available on RAM for user navigation within the stored combinations.

[0194] Figures 13 to 14 show examples.

[0195] In this example, the user selects two points and the "Mesh Vertices" node, providing the vertices of the input mesh. For "Mesh Vertices", the output is of type "MeshVertex", which can be directly converted to "GeometricPoint".

[0196] The selected operator is "Translate 2 Points": - "in" is the geometry of the translation, and the type is "GeometricObject" (any type of geometry). - "pt1" and "pt2" are of type "GeometricPoint".

[0197] The connection shown in Figure 13 takes precedence over the connection shown in Figure 14. Next, the reason for calculating the type penalty is explained.

[0198] Regarding the connection in Figure 13: - MeshVertices.1 is connected to "in": The "MeshVertex" type is a subtype of "GeometricObject", and the penalty is 3 (MeshVertex>MeshElement>MeshBase>GeometricObject) - "Point.1" and "Point.2" are connected to "pt1" and "pt2" of type GeometricPoint: They are of the same type, and the penalties for both are 0.

[0199] The total non - compliance metric A is 3 + 0 + 0 = 3.

[0200] Regarding the connection in Figure 14: - MeshVertices.1 is connected to "pt1": The "MeshVertex" type is convertible to "GeometricPoint", and the penalty becomes 1000. - "Point.1" is connected to "pt2": The distance here is 0 (same type "GeometricPoint"). - "Point.2" is connected to "in": "GeometricPoint" is a direct child of "GeometricObject", and the penalty is 1.

[0201] The total of non - conformity metric B is 1000 + 0+1 = 1001.

[0202] Non - conformity metric A is worse than non - conformity metric B (3 < 1001), and the connection in Figure 13 is displayed before the connection in Figure 14.

[0203] However, in the implementation, a widget 1302 for navigating between various possible combinations may be displayed. Visual cue 1304 may further indicate the location within the navigation, including the total number of possibilities (the number 6 in this case).

[0204] The implementation may also be extended to explicit operator search as described here.

[0205] When the user starts typing a word in the search field, the implementation may calculate the total of the data - type penalties of the arc combinations (between the selected output and the operator input) as a non - conformity metric and rank the operators in ascending order of the metric to propose the "closest" operator to the user's selection.

[0206] Figure 15 shows, for example, the search results after selecting the output connector of the Sphere block node in the prior art. Since a sphere is a surface, "DivideSurface" becomes the operator proposed first (the distance between the two operators is 0). A sphere is not compatible with "Divide Curve" which assumes a curve (infinite distance).

[0207] Figure 16 shows the results of the same search in the implementation, that is, penalty calculation is performed, and accordingly, the automatic proposals are filtered and / or reordered based on the metric. Here, the efficiency of this approach can be confirmed.

[0208] Figures 17 - 18 show another example of searching for the same term "thick" in the implementation, but with different previous selections.

[0209] Figure 17 shows the results from the sphere. Since the sphere is a surface, "thick surface" is proposed first.

[0210] Figure 18 shows the results from the "Mesher" node that generates mesh geometry. In the case of the Mesher that outputs a mesh, the "Thicken Mesh" operator is more suitable than "Thick Surface".

[0211] It can be seen that the proposed operator fits well with the current user selection.

Claims

1. 1. A computer-implemented method for designing a 3D modeled object representing a product to be manufactured, the method comprising: - displaying (S10) simultaneously, by a computer system, a 3D shape representation of said 3D modeled object and a 2D block representation of said 3D modeled object, said 2D block representation comprising: block nodes, each block node representing a respective operator in a predefined set of operators, each operator of the predefined set having one or more inputs and an output, and for at least a subset of operators in the predefined set of operators, the output of each operator of each of the subsets is a respective set of one or more geometric objects, and at least one block node representing operators of the subset, each input of each operator of the subset and each output of each operator of the subset having a respective object type; one or more input and output connectors on each respective block node, each input connector representing a respective input of each of the operators represented by the respective block node, and each output connector representing the respective output of each of the operators represented by the respective block node; and arcs, each arc between the output connector of a first block node and a corresponding input connector of a second block node, each arc representing a data flow from the output connector of the first block node to the corresponding input connector of the second block node, and the 2D block representation is configured such that execution of the data flows represented by the arcs in the 2D block representation outputs the 3D shape representation. Displaying, including; - selecting one or more block nodes from among said at least one block node by a user's graphical interaction with said 2D block representation (S20); - By user action (S60), adding a block node representing each operator of the subset to the 2D block representation (S70); automatically determining each arc between the output connector of each selected block node and the corresponding input connector of the added block node (S85); adding each determined arc line to the 2D block representation (S90); updating the display of the 2D block representation by displaying at least the added block nodes and each added arc line (S100); - executing the data flows represented by the arcs of the updated 2D block representation, thereby outputting an updated 3D shape representation (S110); and - Displaying the updated 3D shape representation (S120). (c) a design method;

2. each object type is one of a predefined object type tree, each non-leaf object type is dynamic, and each descendant object type of said non-leaf object type is compatible with said non-leaf object type; The automatically determining (S85) each arc between the output connector of each selected block node and a corresponding input connector of the added block node; the object type of the output connector of each arc is the same as or compatible with the object type of the corresponding input connector of the added block node; determining, among all the arcline combinations, the arcline combination having a minimum value for a predefined non-conformity metric; - the incompatibility metric penalizes, for a given arc combination, the tree distance between the object type of the output connector and the object type of the corresponding input connector for each given arc where 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 design method according to claim 1 .

3. The non-conformance metric is equal to the sum of one or more penalties for a given arcline combination equal to the cardinality of the combination, and each arcline of the given arcline combination has - if 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 if the object type of the output connector is a descendant of the object type of the corresponding input connector of the added block node, providing a penalty in total 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 for the arc; The design method according to claim 2 .

4. The predetermined object type tree is - Route type, - literal types, geometry types, and matrix types that have the root type as a parent; - real, string and boolean types, which have the literal type as a parent; - point types, curve types, surface types and volume types that have said geometry types as parents; - a vector type having said matrix type as a parent, - an integer type and a magnitude type having said real number type as a parent, the magnitude type having a length type and an angle type as children; - a line type that has said curve type as a parent, and - a plane type, which has said face type as a parent The design method according to claim 2 or 3, comprising:

5. said predefined object type tree comprises one or more first object types each convertible into one or more respective second object types, each first object type convertible into a respective second object type being distinct from and not a descendant of said respective second object type, each first object type being convertible into a respective second object type according to a respective predefined conversion algorithm, each first object type convertible into a respective second object type thereby being compatible with said respective second object type; - the incompatibility metric penalizes the occurrence of a given arc for which, for a given arc combination, the object type of the output connector is convertible to the object type of the corresponding input connector of the added block node; The design method according to claim 2, 3 or 4.

6. 6. The design method of claim 5, wherein the unfitness metric penalizes the occurrences to a greater extent than the tree distance, optionally penalizing an occurrence by more than 100 times, more than 200 times, or more than 500 times, e.g., about 1000 times, of a tree distance of 1.

7. The non-conformance metric is equal to the sum of one or more penalties for a given arcline combination equal to the cardinality of the combination, and each arcline of the given arcline combination has if the object type of the output connector is convertible to the object type of the corresponding input connector, giving penalties totaling more than 100, 200, or 500, e.g., equal to about 1000; The design method according to claim 5 or 6.

8. - said real type is convertible to said integer type, said length type and said angle type; - the integer type is convertible to the length type and to the angle type; - said boolean type is convertible to said integer type; - said point type is convertible to said vector type; - said curve type is convertible into said plane type, - said line type is convertible into said vector type; - the plane type is convertible to the vector type, the line type and the matrix type; - the volume type is convertible to the surface type, The design method according to claim 5, 6 or 7.

9. 9. A design method according to claim 5, wherein a first object type is compatible with a second object type if and 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.

10. A design method according to any one of claims 1 to 9, wherein said user actions (S60) comprise navigating in a menu to select said respective operator of said subset.

11. The method of claim 10 , wherein the menu automatically suggests the subset of operators based on a minimum of a non-conformance metric calculated for each operator.

12. 12. The method of claim 11, wherein each operator has a searchable name, the user action (S60) includes performing a semantic search within the menu, and the automatically suggesting is based on a minimum of a non-compatibility metric calculated for each operator that matches the semantic search.

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

14. A data carrier having stored thereon a computer program according to claim 13.

15. 14. A computer system comprising a memory having stored thereon a computer program as claimed in claim 13, and a processor coupled to said memory and configured to execute said computer program.