Shell or offset feature detection in 3D model representing mechanical part

The method subdivides 3D models to detect shell or offset features by segment offset analysis, enhancing detection robustness and reducing computational load, addressing the challenge of incomplete CAD feature trees in machined part models.

JP2025168262APending Publication Date: 2025-11-07DASSAULT SYSTEMES SA
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025062444
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-04-25
Filing Date
2025-04-04
Publication Date
2025-11-07

AI Technical Summary

Technical Problem

Existing technologies lack effective methods for detecting shell or offset features in 3D models representing machined parts, particularly in scenarios where the CAD feature tree is missing or incomplete.

Method used

A computer-implemented method that subdivides the 3D model into segments and detects pairs of segments offset from one another by an offset value, using centroid and normal comparisons, followed by clustering and merging steps to identify shell or offset features.

Benefits of technology

This method improves the robustness and reduces computational requirements for detecting shell or offset features, enabling accurate reconstruction of CAD features even in noisy or incomplete 3D models, facilitating reverse engineering and manufacturing processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025168262000001_ABST
    Figure 2025168262000001_ABST
Patent Text Reader

Abstract

To provide a computer-implemented method for shell or offset feature detection in a 3D model representing a mechanical part.SOLUTION: This method includes acquiring a segmentation of a 3D model into segments. The method further includes the following: namely, referring to all possible pairs of segments; and for each pair of segments, detecting whether the segments of the pair are offset from each other by an offset value. This constitutes an improved solution for shell or offset feature detection in a 3D model representing a mechanical part.SELECTED DRAWING: Figure 11
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to the field of computer programs and systems, and more particularly to methods, systems, and programs for the detection of shell or offset features in 3D models representing machined parts. [Background technology]

[0002] Numerous hardware and software solutions are available on the market for designing, engineering, and manufacturing objects. CAD is an abbreviation for Computer-Aided Design, which refers to software solutions for designing objects. CAE is an abbreviation for Computer-Aided Engineering, which refers to software solutions for analyzing and simulating the physical behavior of future products. CAM is an abbreviation for Computer-Aided Manufacturing, which refers to software solutions for defining product manufacturing processes and resources. In such computer-aided design solutions, the graphical user interface plays a key role in the efficiency of the techniques. These techniques can be incorporated into product lifecycle management (PLM) solutions. PLM refers to an engineering strategy that helps companies share product data, apply common processes, and leverage enterprise knowledge for product development from conception to end of life across the extended enterprise. PLM solutions offered by Dassault Systèmes (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 enterprise integration and connectivity to both the Engineering and Manufacturing Hubs. Together, these solutions provide a common model that links products, processes, and resources to enable dynamic, knowledge-based product creation and decision support that drives optimized product definition, manufacturing preparation, production, and service.

[0003] In machining design, also known as "manufacturing CAD," which refers to software solutions for the design and / or manufacture of machined parts, CAD features are used to define the CAD model that represents the machined part. As is well known in the field, these features enable the definition of a complete mathematical, parameterized model, which then makes the model usable for manufacturing, for example, through pre-translation in a CAM file. Examples of such CAD features include shell features and offset features.

[0004] The shell feature (also called the "shell operation") in CAD systems typically generates offset surfaces for all surfaces of an input geometry, excluding so-called "removal faces," which can be user-defined or user-selected. The latter are used to generate so-called "thin" faces connecting the inner and outer portions of the resulting shell (the inner and outer portions are offset from each other). Figure 1 shows a screenshot of an example of applying a shell feature in CAD software. Faces 10 and 12 are removal faces, and 14 specifies the widgets for entering / selecting values ​​for various parameters of the shell feature. Figure 2 shows the result of applying a shell feature, with a thin face 20, an inner face 22, and an outer face 24. CAD shell features are primarily used to automatically generate offset geometries for machined parts.

[0005] The Offset feature in CAD systems offsets input surfaces, similar to what the Shell feature does, but does not perform face deletion to create thin surfaces. Figure 3A illustrates an example of an offset operation. The Thick Surface feature in CAD (particularly in solutions provided by Dassault Systèmes) also generates offset surfaces from input surfaces. However, it generates a "thin" surface that is laterally orthogonal to two offset surfaces (possibly only one, using the input as the second "zero" offset surface) to create a closed surface that defines a volume and thus contributes to the part. In Figure 3B, when the center surface is the input, the back surface is obtained using the "Offset Surface" feature, and the front volume is obtained using the "Thick Surface" feature.

[0006] However, in this context, there is a need for improved solutions for the detection of shell or offset features in 3D models representing machined parts. Summary of the Invention

[0007] Thus, a computer-implemented method for detecting shell or offset features in a 3D model representing a machined part is provided, the method comprising obtaining a subdivision of the 3D model into segments, and further comprising: determining, for each pair of segments, whether the segments of the pair are offset from one another by an offset value.

[0008] The method comprises one or more of the following: For each pair of segments, the segments include a first segment and a second segment, and the step of detecting whether the segments of the pair are offset from each other includes: - determining, for each element of the first segment, that there exists an element of the second segment that is offset relative to the element of the first segment if the centers of gravity of the two elements and their normals are offset from each other; The step of determining that there is an element of the second segment that is offset relative to an element of the first segment when the centers of gravity of the two elements and their normals are offset from one another comprises: Calculating the distance between an element of the first segment and the closest element of the second segment. Comparing the calculated distance against the average distance between the two segments. A step of comparing the normals at the centroid of each element and making sure that they are collinear up to a tolerance and in opposite directions up to a tolerance. o If the difference between the calculated distance and the average distance between the two segments is less than a tolerance value, and if their normals are collinear up to the tolerance value and in opposite directions up to the tolerance value, determining that the element of the first segment is offset relative to the nearest element. If the first segment and the second segment have the same canonicality, the average distance between the two segments is the distance between the canonical surfaces corresponding to the two segments. - If an element corresponds to a noisy part of a 3D model, the normal at the element's centroid is the normal of the projection of the centroid onto the fitting surface for the corresponding segment. Furthermore, the method comprises a step of merging pairs of symmetrically detected segments. Furthermore, the method comprises a step of clustering pairs of detected segments based on their offset values. Furthermore, the method comprises a step of removing, in at least some clusters, pairs of detected segments that are located on the same side of the shell geometry defined by the outer shell corresponding to the cluster. The method further comprises, for each cluster, merging pairs of adjacent offset segments within the cluster, whereby the merging produces pairs of sets of segments that are offset from one another. Furthermore, the method comprises a step of removing pairs of sets of segments that contain a single segment and / or pairs of sets of segments that have a segment in common and / or pairs of sets of segments that provide insufficient coverage of the 3D model. Furthermore, the method comprises the step of detecting, for each pair of sets, a segment not included in the pair that is adjacent to both sets of the pair; and / or Furthermore, the method comprises: For each set of pairs, calculate the bounding sphere of the surface covered by that set; and If the calculated bounding spheres have different radii, determining that the set corresponding to the smaller radius is the inner set and the set corresponding to the larger radius is the outer set.

[0009] Additionally, a computer program comprising instructions for carrying out the method is also provided.

[0010] Additionally, a computer readable storage medium having a computer program recorded thereon is provided.

[0011] Additionally, a system is provided that includes a processor coupled to a memory, the memory having a computer program stored thereon. [Brief explanation of the drawings]

[0012] Non-limiting examples will now be described with reference to the accompanying drawings.

[0013] [Figure 1] FIG. [Figure 2]FIG. [Figure 3A] FIG. [Figure 3B] FIG. [Figure 4] FIG. [Figure 5] FIG. [Figure 6] FIG. [Figure 7] FIG. [Figure 8] FIG. [Figure 9] FIG. [Figure 10] FIG. [Figure 11] FIG. [Figure 12] FIG. [Figure 13] FIG. [Figure 14] FIG. [Figure 15] FIG. [Figure 16] FIG. [Figure 17] FIG. [Figure 18] FIG. [Figure 19] FIG. [Figure 20] FIG. [Figure 21] FIG. [Figure 22] FIG. [Figure 23] FIG. [Figure 24] FIG. [Figure 25] FIG. 1 illustrates an example of a system. DETAILED DESCRIPTION OF THE INVENTION

[0014] A computer-implemented method for detecting shell or offset features in a 3D model representing a machined part is proposed. The method includes obtaining a subdivision of the 3D model into segments. The method further includes determining whether the segments of the pair are offset from one another by an offset value.

[0015] This constitutes an improved solution for the detection of shell or offset features in 3D models representing machined parts.

[0016] In particular, the method starts with a subdivision of the 3D model and performs shell or offset feature detection. Specifically, the method references segments of the subdivision and detects pairs of segments that are offset from one another by an offset value (which the method may similarly calculate for each pair). The detection of these pairs of segments forms the basis for determining shell or offset features that create corresponding geometry within the model. By starting with the subdivision (which is the macroscopic level of the 3D model) rather than the raw form of the 3D model (e.g., a raw mesh or point cloud), the method eliminates the need for arbitrary sampling of the 3D model to perform detection. Furthermore, the method eliminates the need for clustering and region growing, at least on a large number of sampled data points. This improves the robustness of detection and reduces computational requirements.

[0017] Additionally, detecting shell or offset features has many applications.

[0018] In particular, the method can be used to detect shell or offset features in a 3D model derived from a 3D scan of a machined part. In this case, the 3D model considered in the method is obtained from a 3D scan of the machined part. The method can comprise performing this 3D scan (as a first step) or simply obtaining the resulting 3D model from this scan (e.g., by downloading the model). Such a 3D model is typically a 3D point cloud resulting from the 3D scan, or a 3D mesh inferred from such a point cloud through a mesh reconstruction process. Depending on the quality of the scan, such a model may be characterized by noise. Therefore, the method processes the scanned 3D model to detect offset or shell features in the scanned 3D model and thereby infer which geometries correspond to (i.e., can be obtained by) applying shell or offset CAD features.

[0019] Alternatively, the 3D model may be obtained by a process other than scanning. For example, the 3D model may result from a previous design process, and the method may be used when the CAD feature tree of the model is missing or simply does not exist, and there is a need to infer the CAD features of the model, including shell features and offset features, within a CAD feature tree construction or reconstruction step.

[0020] In both cases where the 3D model results from a 3D scan and where the model results from a previous design process but has lost its CAD feature tree, the detection of shell or offset features in the model performed by the method may be part of a reverse engineering process that reverse engineers the model by finding its CAD features, in which case the method constitutes a step of finding shell and offset CAD features.

[0021] The method can be integrated into the design and manufacturing processes of machined parts. Here, the method is part of a step of inferring / reconstructing a CAD feature tree for the machined part. Once the CAD feature tree is constructed, the model becomes a CAD model, fully defined / parameterized by the CAD features. These processes can further include a step of converting such a CAD model into a CAM file (or any similar data) containing control instructions for manufacturing a machined part having a geometry defined by the CAD features of the model. Such a step can be performed by any known method. For a particular shell feature or offset feature resulting from the method, this conversion step can infer a machining path for producing the corresponding shell feature or offset feature by machining, as known in the art. Alternatively, the geometry defined by the shell feature can be produced by casting (in which case they may be referred to as a "thin cast part"). This conversion step can include inferring the dimensions of a corresponding mold for manufacturing the mold (e.g., by machining).

[0022] The method is for detecting shell or offset features in a 3D model representing a machined part. This means that the method provides results that allow for inferring shell or offset features that can be used to create corresponding geometry in the model. Specifically, the method outputs at least detected pairs of segments of a subdivision of the model that are offset from one another by an offset value (and possibly calculates / outputs this offset value for each segment). These pairs can be used to determine the complete shell or offset feature to which they correspond. This may be included in the method or may be performed later, particularly with an additional step of integrating the detected offset zones to determine the complete shell or offset feature of the model. In the example, the method detects only shell features because the model only features geometry corresponding to shells and not geometry corresponding to offsets.

[0023] A 3D model represents the geometry of a product (i.e., a machined part, etc.) that will be manufactured in the real world after completing its virtual design using, for example, a CAD software solution or CAD system. The machined part may be an assembly of parts. The assembly of parts may be considered the part itself from the perspective of the method, or the method may be applied to each part of the assembly individually, or more generally to any rigid assembly (e.g., a mobile mechanism, etc.). CAD software solutions enable the design of products in a variety of industries, including, but not limited to, aerospace, architecture, construction, consumer goods, high-tech equipment, industrial equipment, transportation, marine, and / or offshore oil and gas production or transportation. As such, the 3D models may be parts of land vehicles (including, for example, automobile and light truck equipment, racing cars, motorcycles, truck and motor equipment, trucks and buses, trains, etc.), parts of aircraft (including, for example, airframe equipment, aerospace equipment, propulsion equipment, defense products, aviation equipment, space equipment, etc.), parts of naval vehicles (including, for example, naval equipment, commercial vessels, offshore equipment, yachts and workboats, marine equipment, etc.), general machined parts (including, for example, industrial manufacturing machinery, large mobile machines or equipment, installation equipment, industrial equipment products, metal fabrication products, tire manufacturing products, etc.). It may represent an industrial product, which may be any machined part, such as an electromechanical or electronic component (including, for example, consumer electronics, security and / or control and / or measurement products, computing and communication devices, semiconductors, medical devices and equipment, etc.), consumer goods (including, for example, furniture, home and garden products, leisure products, fashion products, durable goods retailer products, non-durable goods retailer products, etc.), packaging (including, for example, food and beverage and tobacco, beauty and personal care, household goods packaging, etc.).

[0024] The 3D model may form a discrete geometric representation of the machined part. As used herein, a discrete geometric representation is a data structure that includes a discrete set of portions of data. Each portion of data represents a respective geometric entity located in 3D space. Each geometric entity represents a respective location of the machined part (or, in other words, a respective portion of material that makes up the solid represented by the 3D model). The aggregation (i.e., combination or juxtaposition) of the geometric entities represents the entire machined part. A discrete geometric representation as used herein may include, by way of example, 100, 1000, or more than 10,000 such portions of data.

[0025] The discrete geometric representation may be, for example, a 3D point cloud, where each geometric entity is a point. Alternatively, the discrete geometric representation may be a 3D mesh, where each geometric entity is a mesh tile or a mesh face. The 3D mesh may be regular or irregular (i.e., composed of faces of the same type or not). The 3D mesh may be a polygonal mesh, such as a triangular mesh. The 3D mesh may be obtained from a 3D point cloud, for example, by triangulating the 3D point cloud (e.g., using Delaunay triangulation). The 3D point cloud herein may be determined, for example, from physical measurements of a machined part within a 3D reconstruction process. The 3D reconstruction process may include providing a machined part, providing one or more physical sensors configured to acquire respective physical signals, and acquiring the one or more respective physical signals by operating the one or more physical sensors on the machined part (i.e., scanning the machined part with the respective sensors). The 3D reconstruction may then automatically determine a 3D point cloud and / or a 3D mesh based on the measurements according to known techniques. The one or more sensors may consist of multiple cameras (e.g., RGB, and / or image or video, etc.), and the determination may consist of structure-to-motion analysis. Alternatively or additionally, the one or more sensors may consist of one or more depth sensors (e.g., RGB depth cameras, etc.), and the determination may consist of 3D reconstruction from depth data. The one or more depth sensors may, for example, consist of lasers (e.g., lidar, etc.) or ultrasonic emitter-receivers.

[0026] The method may include, for example, as a first step, providing a 3D model. Providing the 3D model may include, for example, obtaining the 3D model from a (e.g., remote) database, server, or memory where the 3D model is stored following its creation, acquisition, or acquisition (e.g., via a reconstruction process as described above). For example, the obtaining step may include accessing a database or memory and downloading the 3D model. Alternatively, providing the 3D model may include performing physical measurements (e.g., 3D scanning, etc.) on the machined part and determining the 3D model from the physical measurements, e.g., through a 3D reconstruction process as described above. Alternatively, providing the 3D modeled object may include, for example, creating the 3D model by a user, e.g., by designing it using a dedicated software solution.

[0027] The method comprises obtaining a subdivision of the 3D model into segments.

[0028] As is known in the art, given a 3D model (e.g., a discrete 3D model such as a 3D mesh or a 3D point cloud), performing subdivision of the model consists of dividing / partitioning the surfaces of the 3D model into several connected clusters called segments, where each segment minimizes its similarity to other segments while maximizing its internal coherence, and the clusters / segments are the result of the subdivision, sometimes also referred to as "the segmentation." The subdivision obtained by this method can be any subdivision of the 3D model. The subdivision obtained by this method can be, for example, a subdivision resulting from the method for subdivision of a 3D modeled object disclosed in European Patent Application EP 21305195.6, which is incorporated herein by reference. Alternatively, the subdivision obtained by the method may be a subdivision resulting from the method for subdivision of discrete 3D models disclosed in European patent application EP 23306186.0, which is incorporated herein by reference, or alternatively, a subdivision obtained by applying a neural network trained according to a machine learning method disclosed in European patent application EP 21305293.9.

[0029] Obtaining the subdivision may comprise performing a subdivision of the 3D model, for example by applying one of the methods or neural networks disclosed in the three European patent applications. Alternatively, obtaining the subdivision may comprise obtaining (for example by downloading or opening in suitable software) an already obtained subdivision (for example the result of applying one of the methods or neural networks disclosed in the three European patent applications) from a memory, database or server where the subdivision was stored before being obtained.

[0030] Figure 4 shows an example of a 3D model, where the 3D model is a 3D mesh, and Figure 5 shows an example of subdivision of the 3D model.

[0031] The method comprises a step of looking up all possible pairs of segments. This means that the method accesses a list of all possible segments (e.g., the segments may be labeled / indexed for this purpose) and considers (e.g., one by one) all possible pairs formed with these segments. For each pair of segments, the method comprises a step of detecting whether the segments of the pair are offset from each other by an offset value. This can be performed by any method for detecting an offset between two surfaces (a segment is a surface).

[0032] Each pair of segments consists of a first segment and a second segment. For each pair of segments, detecting whether the pair of segments are offset from each other may include determining, for each element of the first segment, that an element of the second segment exists that is offset from the element of the first segment if the centroids of the two elements and their normals are offset from each other (i.e., if this last condition regarding the centroid is determined to be satisfied, it is determined that such a second element exists). "Element of a segment" means the following: if the 3D model is a 3D mesh, each element of the segment is a face of the mesh (e.g., a triangle in the case of a triangular mesh) that belongs to the segment. If the 3D model is a 3D point cloud, each element of the segment is defined by a point (of the point cloud), its normal vector, and its nearest neighbor (e.g., searched according to any nearest neighbor search method). The method may determine whether an element of a first segment is offset from an element of a second segment by determining, for every element of a first segment, whether there exists an offset transformation that transforms the centroid of the element of the first segment to the centroid of the element of the second segment and also transforms a normal at the centroid of the element of the first segment to the normal at the centroid of the element of the second segment. If such an offset exists, the method determines that the two elements are offset from each other.

[0033] If the centroids of the two elements and their normals are offset from one another, determining that there is an element of the second segment that is offset relative to an element of the first segment may include: - Calculating the distance (e.g., Euclidean distance) between the element of the first segment and the closest element of the second segment (e.g., the element of the second segment that has the smallest distance to the element of the first segment among all elements of the second segment). - Comparing the calculated distance against the average distance between the two segments. - comparing the normals at the centroid of each element (i.e. comparing the two normals of two elements at their centroids) and verifying that the normals are collinear up to a tolerance (e.g. a collinearity tolerance for verifying collinearity) and opposite directions up to a tolerance (e.g. an opposite direction tolerance for verifying opposite directions of two elements). - determining that an element of the first segment is offset relative to the closest element if the difference between the calculated distance and the average distance between the two segments is less than a tolerance value (e.g., a distance tolerance value for verifying discrepancy between the calculated distance and the average distance) and if the normals are collinear up to a tolerance value (i.e., a collinearity tolerance value) and in opposite directions up to a tolerance value (i.e., an opposite direction tolerance value).

[0034] Any tolerance or threshold value herein may be predetermined (i.e., set in advance as an initial step of the method), set by a user, or may be a fixed value. For example, the tolerance value, distance tolerance for canonical offset, distance tolerance for non-canonical offset, dot product tolerance, offset clustering tolerance, and node coverage rate tolerance, which will be described below, may all be predefined in this manner. (Note: In this specification, the word "node" may refer to "segment," because in the subdivision method described above, a segment corresponds to a node of a particular graph.) Both the distance tolerance and the offset clustering tolerance are defined as a percentage of the radius of the bounding sphere of the input geometry, which will be described below. This provides robustness to changes in the scale of the input geometry.

[0035] If a first segment and a second segment have the same canonicality, the average distance between the two segments is the distance between the canonical surfaces corresponding to the two segments. Two segments have the same canonicality if they can be fitted by the same type of canonical primitive, i.e., they belong to the set of common canonical geometric primitives. Such a set may include or consist of the following primitives: plane, cylinder, cone, sphere, and torus. In this case, each segment defines a canonical surface of the aforementioned type of canonical primitive, and the average distance is the distance between these canonical surfaces. For segments of different canonicality, the average distance may be the average of all distances between elements of the first segment and the nearest elements in the second segment.

[0036] If an element corresponds to a noisy portion of a 3D model, the normal at the element's centroid is the normal of the projection of the centroid on the fitting surface for the corresponding segment. The fitting surface can be any surface that fits the corresponding segment (as determined by any suitable surface fitting method, which the method may perform, for example, in the first step of the method). The corresponding segment is the segment that contains the element that corresponds to the noisy portion. A noisy portion of a 3D model is a portion of the model that is characterized by noise, such as noise resulting from the scanning process used to acquire the model, as described above.

[0037] We now turn to possible pairs of segments and describe, for each pair, the implementation of the step of detecting whether the segments of the pair are offset from one another.

[0038] These implementations only find offset pairs with segments that have locally opposite normal vectors, because these segments must represent opposite sides of a locally thin volume (e.g., offset pair (A,B1) in Figure 6 is not found, but offset pair (B1,B2) is found). These implementations find all pairs of segments with the same canonicality type, pairs of segments that are both non-canonical, and pairs of segments where one is canonical and the other is non-canonical. However, these implementations only keep pairs that share segments with the smallest offset value (i.e., even if both offset pairs (A,C2) and (C1,C2) are found, only (C1,C2) is kept because it has the smallest offset value of the two).

[0039] Using any one of the subdivision methods of the three European patent applications mentioned above for subdivision of 3D models results in a subdivision of high quality. The inventors have discovered that with such high quality subdivision it is not necessary to detect pairs of canonical segments with different canonical types (e.g., cylinders and cones that are nearly cylindrical, i.e., cones with very small angles), although implementations of the method can be easily extended to detect such cases as well.

[0040] As mentioned above, if a first segment and a second segment have the same canonicality, the average distance between the two segments is the distance between the canonical surfaces corresponding to the two segments. In these implementations, this condition can be verified by using the following condition:

[0041] Two plane segments are considered an offset pair if their normal vectors are collinear and the dot product of their normal vectors is negative. In this case, the reference offset value d is the distance between the two planes, i.e.,

[0042]

number

[0043] where the dot product tolerance is the dot product tolerance. This is illustrated by Figure 7.

[0044] Two cylindrical segments are aligned such that their axes are aligned (using a tolerance, i.e.

[0045]

number

[0046] ) are collinear and the distance between their axes is less than a tolerance called the distance tolerance for the canonical offset. The canonical offset value d is the absolute value of the difference between the two radii. This is illustrated in Figure 8.

[0047] The two cone segments are spaced apart by their axes (using a tolerance, i.e.

[0048]

number

[0049] ) are collinear, the distance between the axes is less than a tolerance called the distance tolerance for the canonical offset, and their angle is (using the tolerance, i.e.

[0050]

number

[0051] ,and,

[0052]

number

[0053] where,

[0054]

number

[0055] ) are the same, they are considered to be an offset pair. The reference offset value d is the distance between the two cones, i.e.

[0056]

number

[0057] This is

[0058]

number

[0059] , or any other angle value close to both angles. This is illustrated by FIG.

[0060] Two spherical segments are considered an offset pair if the distance between their centers is less than a tolerance value called the distance tolerance for the canonical offset. The canonical offset value d is the difference between the two radii. This is illustrated by Figure 10.

[0061] Two torus segments are considered to be an offset pair if the difference between their center-to-center distance and their semimajor axis is both less than a tolerance called the distance tolerance for the canonical offset. The canonical offset value d is the difference between the two semimajor axes.

[0062] In all the different primitive cases above, the reference offset value d is the distance between the canonical surfaces corresponding to the two segments as described above. The distance tolerance for the canonical offset is the aforementioned distance tolerance as described above.

[0063] The implementation then uses the following algorithm to find which subelements (e.g., triangles in a 3D mesh) of the two segments are at a sufficiently similar distance (up to the distance tolerance to check for discrepancies between the calculated distance and the average distance, as described above) to the reference offset value: For each pair of canonical segments, For each subelement of the first segment: o Get the subelement of the second segment that is closest to its centroid. Calculate the distance Δ between the two sub-elements. 〇

[0064]

number

[0065] , and the normal vectors of the two subelements are collinear and their dot product is negative (

[0066]

number

[0067] , the two identified sub-elements are stored in a pair of subsets of two segments that are offset from each other.

[0068] The algorithm illustrates why the method may detect that only part of a segment is in offset relative to part of another segment (as illustrated in Figure 11). To avoid false positives, i.e., segments that have offset surfaces but are incorrectly oriented (as illustrated in Figure 12), the implementation only retains pairs of subelements with oppositely pointing surface normal vectors.

[0069] In these implementations, the same approach is used to find all possible offsets between non-canonical segments and any other segments (canonical and non-canonical), with the notable difference that in these cases no reference offset value is calculated.

[0070] To do so, the implementation iterates over the elements (e.g., triangles of a mesh) and identifies whether a subset of a segment is an offset of a subset of another segment. This is done using the following algorithm: For each pair of segments, For each subelement S1 of the first segment, • S1 has a center of gravity B1 and a normal vector n1. ●Get the subelement S2 of the second segment that is closest to B1. • S2 has a center of gravity B2 and a normal vector n2. ●If the following conditions are met, 〇

[0071]

number

[0072]

[0073]

number

[0074] The elements are considered to be "in front of" each other (as illustrated by FIG. 13), and the implementation calculates the distance Δ between the two sub-elements. ●

[0075]

number

[0076] is the average distance value of the already calculated distances (obtained for the same pair of segments). ●

[0077]

number

[0078] If 〇

[0079]

number

[0080] Update. Store pairs of elements in pairs of subsets of two segments that are offset from each other.

[0081] For noise-free meshes, implementations use the normal vectors of the elements (e.g., polygons, etc.). For noisy meshes, implementations use the local normal vectors of the fitted surface (i.e., the surface where noise has been reduced). This simply requires the projection of the centroid onto each fitted surface (as illustrated by FIG. 14). Furthermore, fine-tuning of the set of tolerance parameters can be performed to perform in an improved manner on noisy data.

[0082] The implementation may consider the special case of a pair of segments where both are extruded or both are rotated surfaces. The method may detect these segments by any extrusion or rotation detection method, such as the extrusion detection method disclosed in European Patent Application EP21305673.2 and the rotation detection method disclosed in European Patent Application EP21305763.1, both of which are incorporated herein by reference. The implementation of the method may use the adapted extrusion or rotation profiles provided by these methods to simplify and speed up the calculations.

[0083] Two extrusion segments are an offset pair if their profile curves lie in parallel planes (i.e., their extrusion directions are parallel) and if the profile curves are offset from each other, i.e., the implementation applies the same calculations to planar profile curves (i.e., 2D instead of 3D) as to general non-canonical surfaces. Comparing the extrusion limits of both surfaces (with respect to the positions of the two profile planes) indicates whether the two extrusion surface segments are at least partially "in front" of each other. In the latter case, the two segments are not an offset pair. This is illustrated by Figure 15.

[0084] Two revolution surfaces are in an offset pair if their axes are identical and the planar profile curves are a planar offset pair. Again, the implementation applies 2D calculations to see if two profile curves are offset from each other. Finally, comparing the angular constraints (with respect to the two profile planes) indicates whether the two curves are "in front" of each other. This is illustrated by Figure 16.

[0085] The method may then use the offset pairs of the detected segments to determine large offset pairs between the set of segments. To this end, the following steps may also be performed to filter out unwanted offset pairs and, if possible, generate one or more large offsets. These steps are now described. In an implementation, these steps are performed in the order described below, with the output of one step becoming the input of the next step. In variations of the method, the order of these steps may be changed.

[0086] The method may further comprise a step of merging symmetrically detected pairs of segments. In other words, the method performs an exhaustive asymmetric search of possible offset pairs of segments, so that the method determines both an offset pair of segment X with segment Y and another offset pair of segment X with segment X. The merging step includes identifying all such symmetric offset pairs and merging them, i.e., merging subelements of the offset pairs, which frequently increases the number of subelements covered by the resulting symmetric offset pairs of the segments. This is illustrated by FIG. 17.

[0087] The method may further comprise a step of clustering the detected pairs of segments based on their offset values. This may be performed before or after the step of merging symmetric pairs. In other words, for each pair of detected segments, the method also detects (calculates) their offset values. The clustering step is a clustering based on these values. For this purpose, any clustering method may be used, such as the mean-shift clustering method described in NJ Mitra, L. Guibas, M. Pauly, “Partial and approximation symmetry detection for 3d geometry”, ACM Transactions on Graphics, pages 560-568, 2006, and M. Pauly, NJ Mitra, J. Wallner, H. Pottmann, L. Guibas, “Discovering structural regularity in 3d geometry”, ACM Transactions on Graphics, pages 1-11, 2008. Both of these documents are incorporated herein by reference. Given the relatively small number of offset values ​​calculated by the present method (i.e., compared to these references, since the present method processes already segmented objects), the clustering phase actually has little impact on the overall computational performance. The inventors have found that simply merging all offset values ​​that are closer to their common mean value than an offset clustering tolerance parameter provides robust results. This tolerance parameter can be tuned to the noise level of the input.It should be noted that clustering may not remove some or all outliers, either those consisting of a fully covered single-node pair (as illustrated in the zooms in the top left and top center of Figure 18) or those consisting of only a few triangles (as illustrated in the zooms in both the bottom left and bottom right of Figure 18).

[0088] Furthermore, the method may include a step of removing pairs of detected segments located on the same side of the shell geometry defined by the outer shell corresponding to at least some clusters. In other words, at least some (e.g., all) clusters each define a shell geometry formed by the outer shell (i.e., they correspond to shell features). The method detects all pairs of segments located on the same side of the shell geometry for these clusters. This makes it possible to avoid combining detected offsets that correspond to the internal geometry of the shell (e.g., a region of the geometry that serves the purpose of increasing the stiffness of the machined part, as illustrated in FIG. 19), i.e., that are located on the same side of the shell geometry defined by the outer shell.

[0089] In an implementation (which can be combined with the implementation described above), the method may use the following algorithm for this purpose: For each cluster C of offset pairs, For each offset pair 0 in C, For each segment S in O (S' is the other or opposite segment in O), For any adjacent segment N adjacent to S, If C has an offset pair O' containing N, and N is adjacent to S', then O is an internal offset pair and is removed. For every adjacent segment N adjacent to S, 〇 Search C for all offset pairs O' that contain N and the opposite segment Σ. If none of these segments Σ are adjacent to any other segment S′ in O, then O is an internal offset pair and is removed. repeat For each offset pair O in C, If O is completely adjacent to an already defined interior offset pair, it is also an interior offset pair and is removed. Until no more internal offset pairs are found.

[0090] In the above algorithm, two offset pairs are said to be completely adjacent if and only if they have adjacent nodes on both sides or the same node. For example, in Figure 20, the offset pairs (A,B) and (D,C) are completely adjacent, but (A,B) and (E,F) are not adjacent, and (A,B) and (F,G) are not adjacent either.

[0091] This removal step is performed after the clustering step. However, in a variation of the method, the removal step may be performed before the clustering step and / or before the merging step of symmetric pairs. Performing the removal step before the clustering step does not require any adaptation of the method (it simply requires searching for offsets to remove among all offset pairs). This has the advantage of detecting and removing intra-offset pairs (indicated, for example, by reference numeral 210 in the example shown in FIG. 21 ). These would not be identified as intra-offset pairs by the method with the current step order, but would be removed only because their coverage is too weak (which is, in practice, usually the case). This may improve the reliability of the method. Performing the removal step before the merging step would require the following adaptation: if the pair (A,B) is an intra-offset, then also label the symmetric pair (B,A) as an intra-offset.

[0092] Furthermore, the method may comprise, for each cluster, a step of merging offset pairs of adjacent segments within the cluster. This merging step results in pairs of sets of segments that are offset from one another. Two offset pairs of segments are considered adjacent if at least one segment covered by one offset pair is adjacent to a segment covered by the other offset pair, or if they have a common segment. The method detects and merges such pairs. Merging two adjacent offset pairs results in an offset pair between the two sets of segments that includes the segments of the first two pairs. There are four simple cases (illustrated by Figure 22) in which offset pairs are adjacent and can be merged: The offset pair (B,C) is combined with the offset pair (D,E) because B is adjacent to D and C is adjacent to E. The result is a combined offset between the sets {B,D} and {C,E}. Offset (A,B) is combined with offset (B,C) because A and C are adjacent, resulting in a combined offset between the sets {B} and {A,C}. ● The offset pair (F,G) is combined with the offset pair (G,H) because they share a common segment. As a result, combined offsets between the sets {F,H} and {G} are generated. Note: If there are one or more internal offset pairs (e.g., (I,J)) between segments F and H in the same cluster, they are removed in the previous step. ● The offset pair (A,B) is combined with the offset pair (F,G) because segments A and F are adjacent. As a result, combined offsets are generated between the sets {A,F} and {B,G}. Note: If there are one or more internal offset pairs (e.g., (K,L)) between segments B and G in the same cluster, they are removed in the previous step.

[0093] In the second and third cases, the first offset pair covers only a portion of the common segment (B and G, respectively), and the resulting combined offset covers the union of both previously covered portions of the common segment.

[0094] The purpose of this step is both to separate the truncated offset cluster into individual offsets and to identify two sets of adjacent segments for each individual offset (e.g., the offset pairs (A,B), (C,D), and (E,F) of the same cluster in Figure 23 result in offsets between the two sets {A,D,E} and {B,C,F}).

[0095] For each cluster of offset pairs of a segment, the method merges all adjacent offset pairs into a single offset pair (for the set of segments) until only non-adjacent offset pairs remain.

[0096] This step of merging adjacent pairs is performed after the steps of clustering and removing pairs that are on the same side of the clustering.

[0097] In addition to merging adjacent pairs, the method may further include removing pairs of segment sets that contain a single segment, have a common segment between both sides, and / or provide insufficient coverage of the 3D model. This allows for the removal of false positives. Removing any remaining offset pairs with a single segment allows for the avoidance of shell features that are too simple and add little value. Removing offsets between sets of segments that are adjacent to each other (i.e., because they share a segment) allows for the removal of shell features on simple cubes, or more generally, the removal of extrusions or revolves of square, hexagonal, or octagonal profiles. Finally, after removing pairs of sets with insufficient coverage, a coverage tolerance may be used to verify whether all segments in the offset are sufficiently covered by the corresponding set. If a segment is not sufficiently covered, the offset is also considered a false positive. This final elimination may additionally or alternatively be performed by selecting the set that provides the maximum coverage of the input geometry in any suitable way (e.g., the two offsets on the right side of Figure 24 are selected).

[0098] Further, the method may include, for each pair of sets, detecting segments not included in the pair that are adjacent to both sets of the pair, where these segments correspond to thin segments of the shell feature represented by the pair.

[0099] Further, the method may comprise calculating, for each set of pairs, a bounding sphere of the surface covered by the set. Then, the method may comprise determining that if the calculated bounding spheres (i.e., the bounding spheres for the two sets of pairs) have different radii, the set corresponding to the smaller radius is the inner set and the set corresponding to the larger radius is the outer set. A "thin" segment is a segment that is not within the offset and that is adjacent to both the inner and outer sets of segments.

[0100] The output of the method can be a list of datasets of detected shell features, where each shell dataset contains pairs of subsets of the input geometry that are offset from one another, the corresponding offset values, and the subsets of geometry that correspond to the "thin" surfaces generated by the shell features.

[0101] The advantages of this method can be summarized as follows:

[0102] This method allows for the detection of whether any part of a provided 3D mesh or point cloud may have been generated by applying a shell feature (i.e., by creating an offset surface). It also allows for the calculation of offset values ​​and the identification of "thin" surfaces resulting from "removal faces" without offset. Using this information, the input geometry can be generated and a CAD feature tree, including the inferred shell feature, can be manually or automatically generated. This captures the design intent and facilitates the editing and manufacturing of parts corresponding to the initial geometry (including potential modifications). The presence of the shell feature greatly simplifies the precise description of the geometry (rather than, for example, a redundant feature list that generates the resulting inner surface of the shell). In the case of point clouds, the method may require both a normal vector and the nearest neighbor for each point (thus providing minimal topological information).

[0103] The present invention detects a subset of the input geometry that is invariant to corresponding offset operations. The method allows for the reconstruction of a CAD feature tree using shell features (over other features, such as pads, pockets, shafts, grooves, fillets, etc.). This is an improvement over similar methods that generate only a feature tree without shell features. This makes the part much easier to edit and manufacture (simply by changing the shell feature parameters). It also more fully captures the intent and ensures a more robust parametric design (e.g., changing other features does not affect the "thickness" of a machined part, because this is controlled by the shell feature parameters that set the offset values). The presence of shell features greatly simplifies the precise description of the geometry (e.g., rather than a duplicated feature list that generates the resulting internal surface of the shell).

[0104] Our method can also be used to detect other local symmetries and patterns. However, by utilizing the results of subdivision, our method significantly simplifies the algorithm and improves its performance and robustness. For example, the pairing phase based on signatures calculated at sampling points seems to produce particularly poor results. Our method, on the other hand, avoids such probabilistic uncertainty by comparing only corresponding large-scale geometries identified by the subdivision process. Furthermore, the long computational time required to detect clusters in transformation space by mean-shift clustering can be significantly reduced by our approach (since it generates a small number of transformations).

[0105] As noted above, the method may be part of a machined part design and manufacturing process. "Design of manufactured product / machined part / machined product" refers to any action or series of actions that is at least part of a process for creating a modeled object (3D or 2D) of a manufactured product / machined part / machined product. As noted above, the method may be part of a CAD feature tree inference step, and thus the method may form, or at least part of, such a process.

[0106] As such, the methods generally manipulate modeled objects, such as 3D models processed by the methods. A modeled object is any object defined by data stored, for example, in a database. By extension, the term "modeled object" refers to the data itself. Depending on the type of system, a modeled object may be defined by various types of data. Indeed, a system may be any combination of a CAD system, a CAE system, a CAM system, a PDM system, and / or a PLM system. In these different systems, a modeled object is defined by corresponding data. Thus, one may speak of CAD objects, PLM objects, PDM objects, CAE objects, CAM objects, CAD data, PLM data, PDM data, CAM data, and CAE data. However, these systems are not mutually exclusive, since a modeled object may be defined by data corresponding to any combination of these systems. Thus, a system may be both a CAD, CAE, PLM, and / or CAM system, as will be apparent from the definitions of such systems provided below.

[0107] A CAD solution (e.g., CAD system or CAD software) additionally refers to any system, software, or hardware adapted to at least design a modeled object based on a graphical representation of the modeled object, such as CATIA, and / or its structured representation (e.g., a feature tree). In this case, the data defining the modeled object consists of data enabling the representation of the modeled object. A CAD system may provide a representation of the CAD modeled object using, for example, edges or lines, and possibly faces or surfaces. Lines, edges, or surfaces may be represented in various ways, such as non-uniform rational B-splines (NURBS). Specifically, a CAD file contains specifications from which geometry can be generated, which may enable the generation of a representation. The specifications of the modeled object may be stored in a single CAD file or multiple CAD files. Typical sizes of files representing modeled objects in CAD systems are in the range of one megabyte per part. Furthermore, the modeled object may typically be an assembly of thousands of parts.

[0108] In the context of CAD, a modeled object may typically be a 2D modeled object or a 3D modeled object, and may represent a product, such as a part or assembly of parts, or perhaps an assembly of a product. The 2D or 3D modeled object may be a manufactured product, i.e., a product to be manufactured. A "3D modeled object" means any object that has been modeled by data that allows for its 3D representation. The 3D representation allows the part to 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 does not include 2D icons that are not specifically 3D modeled. Displaying 3D representations facilitates design (i.e., statistically increases the speed at which designers accomplish their tasks). Because product design is part of the manufacturing process, this speeds up the manufacturing process in industry.

[0109] The 3D modeled object may represent the geometry of a product to be manufactured in the real world after its virtual design, such as by a CAD / CAE software solution or system, is completed. This may include a (e.g., machined) part or part assembly (or equivalently, a part assembly, since a part assembly may be considered a part itself from the perspective of the present method, or the method may be applied to each part of the assembly independently), or more generally, any rigid body assembly (e.g., a mobile mechanism). CAD / CAE software solutions enable the design of products in a variety of unlimited industries, including aerospace, architecture, construction, consumer goods, high-tech equipment, industrial equipment, transportation, marine, and / or offshore oil and gas production or transportation. As such, the 3D modeled objects designed by the present method may be parts of land vehicles (including, for example, automobile and light truck equipment, racing cars, motorcycles, truck and motor equipment, trucks and buses, trains, etc.), parts of aircraft (including, for example, airframe equipment, aerospace equipment, propulsion equipment, defense products, aviation equipment, space equipment, etc.), parts of naval vehicles (including, for example, naval equipment, merchant ships, offshore equipment, yachts and work boats, marine equipment, etc.), general machined parts (including, for example, industrial manufacturing machinery, large mobile machines or equipment, installation equipment, industrial equipment products, metal fabrication products, tie "represents an industrial product, which may be any machined part, such as an electronic component (including, for example, consumer electronics, security and / or control and / or measurement products, computing and communication devices, semiconductors, medical devices, etc.), an electromechanical or electronic component (including, for example, consumer electronics, security and / or control and / or measurement products, computing and communication devices, semiconductors, medical devices, etc.), a consumer product (including, for example, furniture, home and garden products, leisure products, fashion products, durable goods retailer products, non-durable goods retailer products, etc.), packaging (including, for example, food and beverage and tobacco, beauty and personal care, household goods packaging, etc.)" possible.

[0110] CAD systems can be history-based. In this case, the modeled object is further defined by data containing the history of its geometric features. The modeled object may actually be designed by a human (i.e., a designer / user) using standard modeling functions (e.g., extrude, revolve, cut, and / or round) and / or canonical surfacing functions (e.g., sweep, blend, loft, fill, deform, and / or smooth). Many CAD systems that support such modeling functions are history-based. This means that the creation history of design features is preserved through acyclic data flows that link the aforementioned geometric features, typically via input and output links. The history-based modeling paradigm has been well-known since the early 1980s. The modeled object is described by two persistent data representations: history and B-rep (i.e., boundary representation). B-rep is the result of the calculations defined in the history. When the modeled object is represented, the shape of the part displayed on the computer screen is the B-rep (e.g., tessellation). The part's history is the design intent. Essentially, history collects information about operations that a modeled object has performed. B-reps can be saved with history to allow for easy viewing of complex parts. History can be saved with B-reps to allow for changes to the design of a part according to design intent.

[0111] A PLM system also means any system suitable for managing modeled objects that represent physically manufactured products (or products to be manufactured). In a PLM system, modeled objects are therefore defined by data suitable for manufacturing physical objects. These can typically be dimensional values ​​and / or tolerances. It is certainly better to have such values ​​to manufacture the object correctly.

[0112] A CAE solution also refers to any hardware or software solution suitable for analyzing the physical behavior of a modeled object. A well-known and widely used CAE technique is finite element modeling (FEM), which will be referred to hereinafter synonymously as a CAE model. FEM typically involves dividing a modeled object into elements, or finite element meshes, so that its physical behavior can be calculated and simulated through equations. Such CAE solutions are offered by Dassault Systèmes under the SIMULIA® brand. Another growing CAE technique involves modeling and analyzing complex systems composed of multiple components from different physical disciplines without using CAD geometry data. CAE solutions enable the simulation, optimization, improvement, and validation of products to be manufactured. Such CAE solutions are offered by Dassault Systèmes under the DYMOLA® brand. CAE can be used to verify that various structural requirements (such as, but not limited to, mass, stiffness, strength, and durability) are achieved by a new CAD model. Some of these requirements are sometimes referred to as key performance indicators (KPIs). For many industrial products (e.g., automobiles, aircraft, consumer packaged goods, high-tech products, etc.), these KPIs are in conflict: for example, low mass usually means low stiffness, so optimization methods are often applied to find the best trade-off between the KPIs.

[0113] CAM solution refers to any hardware or software solution adapted to manage a product's manufacturing data. Manufacturing data typically includes data related to the product being manufactured, the manufacturing process, and the resources required. CAM solutions are used to plan and optimize the entire manufacturing process of a product. For example, a CAM solution may provide CAM users with information about the feasibility of the manufacturing process, the required time, or the number of resources, such as specific robots, that can be used for a particular step in the manufacturing process, thereby enabling decisions regarding management or necessary investments. CAM is a subsequent process that follows the CAD process and potentially the CAE process. For example, a CAM solution may provide information about consistent machining or molding parameters for an extrusion feature provided in a CAD model. Such CAM solutions are offered by Dassault Systèmes under the CATIA, Solidworks, or DELMIA® brands.

[0114] Therefore, CAD and CAM solutions are closely related. In fact, CAD solutions focus on the design of products or parts, while CAM solutions focus on how to manufacture them. Designing a CAD model is the first step towards computer-aided manufacturing. In fact, CAD solutions offer important functions such as feature-based modeling and boundary representation (B-rep) to reduce the risk of errors and inaccuracies during the manufacturing process handled with CAM solutions. In fact, CAD models are intended to be manufactured. Therefore, a CAD model is a virtual twin (also called a digital twin) of the object to be manufactured, with two purposes: -Ensuring the correct behavior of the object being manufactured in a specific environment. -Ensuring the manufacturability of the object being manufactured.

[0115] PDM stands for Product Data Management. A PDM solution refers to any hardware or software solution adapted to manage all types of data related to a specific product. PDM solutions can be used by all stakeholders involved in the product's lifecycle: primarily engineers, but also project managers, finance personnel, sales personnel, and buyers. PDM solutions are typically based on a product-oriented database, which allows stakeholders to share consistent data about their products and thus avoids them using inconsistent data. One such PDM solution is offered by Dassault Systèmes under the ENOVIA® brand.

[0116] The modeled object output / designed / obtained as input by the method can be a 3D discrete geometric representation of a manufactured product / machined product / machined part, as described above. A discrete geometric representation is a data structure that includes a discrete set of portions of data. Each portion of data specifies an element of the product / machined part and is sometimes referred to as a discrete element. The discrete geometric representation can be 3D. Alternatively, the discrete geometric representation can be both 3D and 2D, i.e., include 3D portions that are 3D discrete geometric representations and 2D portions that are discrete geometric representations such as a hybrid 3D-2D mesh (e.g., to model a product that includes both thin parts modeled with 2D portions and thick parts modeled with 3D portions). The discrete geometric representation can include, in examples, 100, 1000, or more than 10,000 such portions of data.

[0117] In the case of a 3D discrete geometric representation, the 3D discrete geometric representation may be a solid / volumetric 3D discrete geometric representation of the product / machined part, such as a solid 3D finite element model (FEM) or a 3D volume mesh (e.g., a 3D tetrahedral mesh). In such cases, each portion of data may represent a respective geometric entity located in 3D space, thereby forming a solid representation of the machined part / product (i.e., a "solid 3D discrete geometric representation"). Each geometric entity may represent a respective location (i.e., material point) of the 3D object (i.e., each portion of material that constitutes the solid represented by the 3D object). The aggregation (i.e., combination or juxtaposition) of the geometric entities represents the entire 3D object as a solid / volumetric representation. Alternatively, the 3D discrete geometric representation may be a skinned 3D discrete geometric representation that represents the skin of the product / machined part, such as a 3D surface mesh (e.g., a triangular surface mesh) or tessellation. In such cases, each portion of the data may represent a respective geometric entity located in 3D space, whereby the portions of the data form a representation of the skin of the machined product (i.e., a "skin 3D discrete geometric representation"). In such cases, each geometric entity represents a respective location (i.e., material point) on the exterior surface of the 3D object (in other words, a respective portion of the exterior surface of the volume occupied by the material that makes up the solid represented by the object). The aggregation (i.e., combination or juxtaposition) of the geometric entities as a whole represents at least a portion of the exterior surface of the object.

[0118] The discrete geometric representation may be a CAE model, also called a "finite element model (FEM)," or may be converted by the method into a CAE model. The CAE model may be derived from a CAD model representing the machined part / product; for example, the method may initially comprise obtaining the CAE model from the CAD model using, for example, a meshing (e.g., triangulation, etc.) process. Conversely, the CAE model may be converted into a CAD model. The method designs / outputs a CAE model, which may then be converted into a corresponding CAD model. The method may comprise, or may be included in a broader process comprising, or form a solution to, converting (e.g., automatically) the CAE model designed / output by the method into a CAD model by using any known (e.g., automatic) CAE-to-CAD conversion process that converts the CAE model into a CAD model.

[0119] As mentioned above, the method may be part of a step of converting the input 3D model into a CAD model, for example, including or consisting of a feature tree and / or B-rep. Such a model may be derived from a CAE model and may result from a CAE-to-CAD conversion process, which the method may include, for example, at an earlier stage.

[0120] The CAD model can be feature-based (e.g., the CAD model includes a feature tree and, optionally, a corresponding B-rep obtained by executing the feature tree). Feature-based 3D models allow for the detection and automatic resolution of geometric errors in the CAD model, such as collisions, that would affect the manufacturing process (e.g., during the determination of manufacturing or CAM files, as described below). A collision is, for example, the interpenetration of two parts of a 3D model due to their relative motion. Furthermore, this collision may only be detected by a finite element analysis based on the CAD feature-based model. Therefore, collision resolution can be performed with or automatically by the CAD solution by iteratively changing feature parameters and running finite element analysis.

[0121] As another example, the use of feature-based 3D models (e.g., during the determination of manufacturing or CAM files, as described below) allows for the automatic creation of machine tool paths via computer numerical control (CNC). With CNC, each object to be manufactured receives a custom computer program that is stored in and executed by a machine control unit, i.e., a microcomputer connected to the machine. The program contains instructions and parameters that the machine tool will follow. Mills, lathes, routers, grinders, and lasers are examples of common machine tools whose operations can be automated using CNC.

[0122] A key feature of CAD models is that they can be precisely and unambiguously designed by chaining together a small number of high-level, parameterized design operations (including, but not limited to, sketching, extruding, chamfering, etc.), and then edited by modifying those high-level parameters. This is their main difference from polyhedral representations, such as triangular surface meshes, which can represent arbitrary 3D shapes but do not offer the modification or parameterization capabilities needed in the context of industrial design.

[0123] Because CAD models are parameterized models of parts / products, they are lighter in terms of memory footprint than other models, such as CAE models. Indeed, instead of storing a collection of discrete geometric elements, such as finite elements, CAD models allow for the storage of lists of features and parameters, which are lighter in terms of storage and memory footprint. Therefore, working on a CAD model, compared to, for example, a CAE model, reduces memory requirements for the underlying system in addition to facilitating the editability of the model. This means that the CAE-to-CAD conversion process not only converts the CAE model into a more easily editable CAD model, but also actually compresses the CAE model into a CAD model that is lighter in terms of memory requirements (e.g., footprint, etc.).

[0124] The generation of custom computer programs from CAD files can be automated. Therefore, such generation can be error-proof, ensuring perfect reproduction of the CAD model in the manufactured product. CNC is believed to offer greater precision, complexity, and repeatability than is possible with manual machining. Other advantages include greater accuracy, speed, and flexibility, as well as features such as contouring, which allows for milling of contoured shapes, including those created in 3D designs.

[0125] A B-rep (i.e., boundary representation) is a 3D representation of a machined part. Specifically, a B-rep is a persistent data representation that describes a 3D modeled object that represents the machined part. A B-rep can be the result of a calculation and / or a series of operations performed during the design phase of the 3D modeled object that represents the machined part. When the modeled object is represented, the shape of the machined part that is displayed on a computer screen is a B-rep (e.g., a tessellation of the B-rep). In an example, a B-rep represents a portion of the modeled object.

[0126] B-reps contain topological and geometric entities. Topological entities are faces, edges, and vertices. Geometric entities are 3D objects: surfaces, planes, curves, lines, and points. By definition, a face is the boundary of a surface and is called a support surface. An edge is the boundary of a curve and is called a support curve. A vertex is a point in 3D space. They are interrelated as follows: The boundary of a curve is defined by two points (vertices) on the curve. The boundary of a surface is defined by its boundary, which is the set of edges on the surface. The boundaries of face edges are connected by sharing vertices. Faces are connected by sharing edges. Two faces are adjacent if they share an edge. Similarly, two edges are adjacent if they share a vertex. In a CAD system, B-reps collect the "bounding" relationship, the relationship between topological entities and support geometry, and the mathematical description of the support geometry in an appropriate data structure. An internal edge in a B-rep is exactly the edge shared by two faces. By definition, a boundary edge is not shared and bounds only one face. By definition, a boundary face is bounded by at least one boundary edge. A B-rep is said to be closed if all edges of the B-rep are interior edges. A B-rep is said to be open if it contains at least one boundary edge. Closed B-reps are used to model thick 3D volumes, since they define the interior portion of the space that (virtually) surrounds the material. Open B-reps are used to model 3D skins, which represent 3D objects with a thickness that is thin enough to be negligible.

[0127] The primary advantage of B-rep over other representation types used in CAD modeling is its ability to accurately represent arbitrary shapes. All other representations used, such as point clouds, distance fields, and meshes, use discretization to approximate the shape they represent. B-rep, on the other hand, contains surface equations that represent the exact design and thus constitute a true "master model" for subsequent manufacturing, whether that be generating tool paths for CNC or discretizing to the correct sample density for a given 3D printer technology. In other words, by using B-rep, the 3D model can be an accurate representation of the manufactured object. B-rep is also advantageous for simulating the behavior of 3D models. For stress, thermal, electromagnetic, or other analyses, B-rep supports local refinement of the simulation mesh to capture physical phenomena. For kinematics, B-rep supports true contact modeling between curved surfaces. Finally, B-rep allows for a smaller memory and / or file footprint. First, because the representation contains surfaces based solely on parameters. In other representations, such as meshes, the equivalent surface consists of up to several thousand triangles. Second, B-rep does not contain any history-based information.

[0128] The method may be included in a manufacturing process, which, after carrying out the method, may comprise the step of manufacturing a physical product corresponding to the modeled object whose design the method contributes to. The production process may include the following steps: - applying the method (e.g. automatically) to thereby obtain a CAD model of the machined part. - Using the obtained CAD model to manufacture the part / product.

[0129] Using a CAD model for manufacturing refers to any real-world action or series of actions that involve or participate in the manufacturing of the product / part represented by the CAD model. Using a CAD model for manufacturing may include, for example, one or more of the following steps: - Editing the obtained CAD model. - performing simulations based on the CAD model or the corresponding CAE model (e.g., the CAE model from which the CAD model is derived, after a CAE-to-CAD conversion process), such as simulations for validation of mechanical, usage, and / or manufacturing properties and / or constraints (e.g., structural simulations, thermodynamic simulations, aerodynamic simulations, etc.); - Editing the CAD model based on the results of the simulation. Optionally (i.e., depending on the manufacturing process used, the manufacturing of the machined product may or may not include this step), determining (e.g., automatically) a manufacturing file / CAM file (e.g., including manufacturing instructions for manufacturing the product represented by the CAD model and / or control instructions for the manufacturing process and / or control instructions for instructing the manufacturing process or its manufacturing tools) for the generation / manufacture of the manufactured product based on the (e.g., edited) CAD model (e.g., the control instructions are derived from the CAD model and / or a CAD file storing specifications of the CAD model). - sending the CAD and / or manufacturing / CAM files to a factory for the purpose of manufacturing the product represented by the CAD model; and / or - generating / manufacturing (e.g., automatically) the machined product originally represented by the model output by the method based on the determined manufacturing file / CAM file or CAD model, which may include (e.g., automatically) feeding the manufacturing file / CAM file and / or CAD file to a machine that performs the manufacturing process.

[0130] This final generation / manufacturing step is sometimes referred to as the manufacturing or production step. In this step, the part / product is manufactured / processed based on the CAD model and / or CAM file, for example, when the CAD model and / or CAD file is fed to one or more manufacturing machines or computer systems controlling the machines. The manufacturing step can include performing any known manufacturing process or series of manufacturing processes, such as one or more additive manufacturing steps, one or more cutting steps (e.g., laser cutting or plasma cutting), 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), and / or one or more punching steps. This design method improves the design of the model (CAE or CAD) representing the part / product, thereby improving manufacturing and its productivity.

[0131] Editing the CAD model may include creating one or more editions of the CAD model by a user (i.e., a designer), for example, by using a CAD solution. Modifying the CAD model may include one or more changes to each of the CAD model's geometry and / or parameters. These changes may include any change or series of changes made to the model's feature tree (e.g., changes to feature parameters and / or specifications) and / or changes made to the CAD model's display representation (e.g., B-rep). These changes maintain the technical functionality of the part / product. That is, the user makes changes that may affect the model's geometry and / or parameters solely for the purpose of making 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 machine specifications used in the downstream manufacturing process. Additionally or alternatively, such changes may include any change or series of changes that make the CAD model technically compliant for further use of the product / part once manufactured, where such change or series of changes is made based on, for example, the results of a simulation.

[0132] The CAM file may include a manufacturing setup model obtained from a CAD model. The manufacturing setup includes all data required to manufacture the machined product (e.g., control instructions for controlling the manufacturing process, etc.), such that the manufacturing setup has a geometry and / or material distribution corresponding to that captured by the CAD model, possibly up to manufacturing tolerances. Determining the generation file may include applying any CAM (Computer Aided Manufacturing) or CAD-to-CAM solution (e.g., an automated CAD-to-CAM conversion algorithm, etc.) to (e.g., automatically) determine the manufacturing file from the CAD model. Such a CAM or CAD-to-CAM solution may include one or more of the following software solutions that allow for the automatic generation of manufacturing instructions and tool paths for a given manufacturing process based on a CAD model of the product to be manufactured: -Fusion 360. -Free CAD. -CATIA. -SOLIDWORKS. -Dassault Systèmes NC Shop Floor Programmer, as exemplified in the following URL: https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-shop-floor-programmer. -Dassault Systèmes' NC Mill-Turn machine programmer, as exemplified in the following URL: https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-mill-turn-machine-programmer. and / or -Dassault Systèmes Powder Bed Machine Programmer, as exemplified in the following URL: https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / powder-bed-machine-programmer。

[0133] The product / part can be an additively manufacturable part, i.e., a part to be manufactured by additive manufacturing (i.e., 3D printing). In this case, the manufacturing process proceeds directly to the generation / manufacturing step by directly (e.g., automatically) feeding a CAD model to a 3D printer without including a step of determining a CAM file. The 3D printer is configured to receive a CAD model representing the machined product (e.g., and 3D printing is initiated by an operator of the 3D printer) and directly and automatically 3D print the machined product according to the CAD model. In other words, the 3D printer receives (e.g., automatically) a CAD model fed to the 3D printer, reads (e.g., automatically), and prints (e.g., automatically) the part by, for example, adding material layer by layer to replicate the geometry and / or distribution of material captured by the CAD model. The 3D printer adds material to thereby accurately replicate the geometry and / or distribution of material captured by the CAD model, up to the resolution of the 3D printer, optionally with or without tolerances and / or manufacturing corrections. The manufacturing step may include determining such manufacturing corrections and / or tolerances, for example, by a user (e.g., an operator of the 3D printer) or automatically (by the 3D printer or a computer system controlling it), e.g., by modifying a CAD file to match the specifications of the 3D printer. Additionally or alternatively, the generation process may include determining (e.g., automatically by the 3D printer or a computer system controlling it) from the CAD model, for example, a printing direction to minimize the amount of overhang (as described in EP 3327593, which is incorporated herein by reference), layer slicing (i.e., the thickness of each layer, the path / trajectory for each layer, and other characteristics for the 3D printer head (e.g., for a laser beam, e.g., path, speed, intensity / temperature, and other parameters)).

[0134] Alternatively, the product / part may be a machined part (i.e., a part manufactured by machining), such as a milled part (i.e., a part manufactured by milling). As described above, the part may be a thin cast part, in which case the machined part is its corresponding mold. In such a case, the generation process may include a step of determining a CAM file. This step may be performed automatically by any suitable CAM solution for automatically obtaining a CAM file from a CAD model of the machined part. Determining the CAM file may include a step of (e.g., automatically) checking whether the CAD model has geometric peculiarities (e.g., errors or artifacts) that may affect the manufacturing process, and a step of (e.g., automatically) correcting such peculiarities. For example, if the CAD model still contains sharp edges, machining or milling based on the CAD model cannot be performed (because machining or milling tools cannot create sharp edges). In such cases, determining the CAM file may include (e.g., automatically) rounding or filleting such sharp edges (e.g., using a rounding or filleting radius that corresponds to, e.g., substantially equal to, within a tolerance, the radius of the cutting head of the machining tool) to allow machining or milling to be performed based on the CAD model. More generally, determining the CAM file may automatically round or fillet geometry in the CAD model that is incompatible with the radius of the machining or milling tool to enable machining / milling. This identification and possible correction (e.g., rounding or filleting geometry) may be performed automatically, as described above, but may also involve manual corrections in the CAD and / or CAM solution, such as solutions that force a user to perform corrections to conform the CAD model to the specifications of the tool used in the machining process.

[0135] In addition to this verification, determining the CAM file may include (e.g., automatically) determining a machining or milling path, i.e., a path to be followed by a machining tool to machine the product. This path may include a set of coordinates and / or a parameterized trajectory to be followed by the machining tool for machining, and determining the path may include (e.g., automatically) calculating these coordinates and / or trajectory based on a CAD model. This calculation may be performed, for example, based on calculating the boundaries of a Minkowski subtraction of the CAD model with a CAD model representation of the machining tool, as described, for example, in European Patent Application EP 21306754.9, filed by Dassault Systèmes on December 13, 2021, and incorporated herein by reference. It should be understood that this path may be, for example, a single path followed continuously by the tool without interrupting contact with the material to be cut. Alternatively, the path may be a concatenation of a series of sub-paths to be followed by the tool in a particular order, e.g., each sub-path is followed consecutively by the tool without interrupting contact with the material to be cut. Optionally, determining the CAM file may include (e.g., automatically) setting machine parameters including, e.g., cutting speed, cutting / drilling height, and / or die opening stroke, etc., based on the determined path and machine specifications. Optionally, determining the CAM file may include (e.g., automatically) configuring nesting, where the CAM solution determines an optimal orientation for the part to maximize machining efficiency.

[0136] In the case of a machined or milled part, the step of determining the CAM file results in an output CAM file containing the machining paths and optionally set machine parameters and / or configured nest specifications. This output CAM file can then be (e.g., directly and automatically) fed to a machine tool and / or the machine tool can then be (e.g., directly and automatically) programmed by reading the file, whereupon the generation process includes a generation / manufacturing step in which a machine performs machining of the product according to the generation file, e.g., by directly and automatically executing the generation file. The machining process includes a step in which the machine tool cuts a real-world block of material to reproduce the geometry and / or distribution of material captured by the CAD model, e.g., to within a tolerance (e.g., tens of microns for milling).

[0137] Alternatively, the product / part may be a molded part, i.e., a part produced by molding (e.g., injection molding or casting, etc., in which case the part may be a thin cast part). In such a case, the generation process may include a step of determining a CAM file. This step may be performed automatically by any suitable CAM solution for automatically deriving the CAM file from a CAD model of the molded part. Determining the CAM file may include (e.g., automatically) performing a series of molding checks based on the CAD model to confirm whether the geometry and / or distribution of material captured by the CAD model is suitable for molding, and (e.g., automatically) performing appropriate corrections if the CAD model is not suitable for molding. This step of checking and performing appropriate corrections (if any) may be performed automatically, or alternatively, may be performed by a user (e.g., a molding engineer, etc.). In that case, a CAD and / or CAM solution is used that, for example, allows the user to perform appropriate corrections to the CAD model, but constrains the user in the corrections that make the CAD model conform to the specifications of the molding tool. These checks may include: That is, verifying that the virtual product represented by the CAD model matches the dimensions of the mold, and / or verifying that the CAD model includes all draft angles required to eject the product from the mold as known from the molding. The step of determining 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 for the liquid material to cure / solidify in the mold, and outputting a CAM file containing these parameters. The generation process then includes (e.g., automatically) performing molding based on the output file.Here, the mold forms the liquid material over a determined cure time into a shape that corresponds to the geometry and / or distribution of the material captured by the CAD model, for example, up to a tolerance (e.g., incorporating or changing a draft angle for ejection from the mold).

[0138] Alternatively, the product / part may be a stamping part, i.e., a part to be manufactured in a stamping process (possibly also referred to as a "stamped part"). In this case, the generation process may include a step of (e.g., automatically) determining a CAM file based on a CAD model. The CAD model represents the stamping part, and may include one or more flanges if the part includes a flange, and in the latter case, may include excess material to be removed to form the developed state of one or more flanges of the part, as known from stamping itself. The CAD model therefore consists of a part representing the flange-free part (possibly the entire part), possibly with excess material (if present), and an outer, possibly excess patch part representing the flange (if present). This excess patch part may exhibit g2 continuity over a certain length, followed by g1 continuity over a certain length.

[0139] In this stamping case, determining the CAM file may include (e.g., automatically) determining stamping machine parameters, such as the size of the stamping die or punch and / or stamping force, based on the geometry and / or distribution of material in the virtual product captured by the CAD model. If the CAD model also includes a representation of excess material to be removed to form the unfolded state of one or more flanges in the part, the excess material to be removed is cut, for example, by machining, and determining the CAM file may also include determining a corresponding machining CAM file, for example, as described above. If one or more flanges are present, determining the CAM file may include determining geometric specifications for the g2 continuity portion and the g1 continuity portion that enable folding the flange along the length of the g2 continuity toward the inner surface of the stamped part in a folding process after the stamping itself and the removal of the excess material. In this way, the CAM file determined thereby may include stamping tool parameters, optional flange folding specifications (if any), and optional machining production files (if any) for removing the excess material.

[0140] The stamping generation process may then, for example, directly and automatically output a CAM file and (e.g., automatically) execute a stamping process based on that file. The stamping process may include stamping (e.g., punching) a portion of material to form a product represented by the CAD file, possibly including an unfolded flange and excess material (if present). If appropriate, the stamping process may then include cutting off the excess material based on the machining generation file and folding the flange based on the aforementioned flange folding specifications. This folds the flange in the g2 continuous length, giving the outer boundary of the part a smooth appearance. In the latter case, the shape of the part once manufactured differs from its virtual counterpart represented by the CAD model in that the excess material has been removed and the flange has been folded, but the CAD model represents the part with the excess material and the flange in its unfolded state.

[0141] The method is computer-implemented, meaning that the steps (or substantially all steps) of the method are performed by at least one computer, or any similar system. As such, the method steps are performed by the computer, possibly fully automatically or semi-automatically. In an example, triggering at least some of the method steps may be performed by user-computer interaction. The level of user-computer interaction required depends on balancing the expected level of automation with the need to implement the user's wishes. In an example, this level may be user-defined and / or predefined.

[0142] A typical example of a computer implementation of the method is to perform the method using a system adapted for this purpose. The system comprises a processor connected to a memory and a graphical user interface (GUI), the memory having stored therein a computer program containing instructions for performing the method. The memory may also store a database. The memory may be any hardware suitable for such storage and may consist of several physically distinct parts (e.g., one for the program, one for the database, etc.).

[0143] FIG. 25 shows an example of a system, which may be a client computer system, such as a user's workstation.

[0144] The client computer in this example comprises a central processing unit (CPU) 1010 connected to an internal communication bus 1000 and a random access memory (RAM) 1070 also connected to the bus. The client computer also includes 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 in the art as a frame buffer. A mass storage device controller 1020 manages access to mass storage devices such as a hard drive 1030. Suitable mass memory devices for embodying computer program instructions and data include all forms of non-volatile memory, including, by way of example, semiconductor storage devices such as EPROM, EEPROM, and flash memory devices, magnetic disks such as internal hard disks and removable disks, magneto-optical disks, and the like. Any of the foregoing may be supplemented by or incorporated in specially designed application-specific integrated circuits (ASICs). A network adapter 1050 manages access to a network 1060. The client computer may also include haptic devices 1090, such as a cursor control device, keyboard, and the like. The cursor control device is used in the client computer to allow a user to selectively position a cursor at any location on the display 1080. Additionally, the cursor control device allows a user to select various commands and input control signals. The cursor control device includes several signal generating devices for inputting control signals into the system. Typically, the cursor control device may be a mouse, with the mouse buttons used to generate signals. Alternatively or additionally, the client computer system may include a sensitivity pad and / or a sensitivity screen.

[0145] The computer program may include computer-executable instructions, which include means for causing the system to perform the 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 computer hardware, firmware, software, or a combination thereof. The program may be implemented as an apparatus, such as an article of manufacture tangibly embodied in a computer-readable storage device, for execution by a programmable processor. The method steps may be performed by a programmable processor executing a program of instructions to perform the functions of the method by operating on input data and generating output. The processor is thus programmable and may be coupled to receive data and instructions from, and transmit data and instructions to, a data storage system, at least one input device, and at least one output device. The application program may be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language, as appropriate. In either case, the language may be a compiled or interpreted language. The program may be a fully installed program or an update program. In either case, application of the program to the system results in the generation of instructions for performing the method. Alternatively, the computer program may be stored and executed on a server in a cloud computing environment, the server communicating with one or more clients over a network. In such a case, a processing unit executes the instructions contained in the program, thereby causing the method to be performed in the cloud computing environment.

Claims

1. 1. A computer-implemented method for detection of shell or offset features in a 3D model representing a machined part, comprising: obtaining a subdivision of the 3D model into segments; looking through all possible pairs of segments and detecting, for each pair of segments, whether the segments of the pair are offset from one another by an offset value; A method comprising:

2. For each pair of segments, the segments include a first segment and a second segment, and the step of detecting whether the segments of the pair are offset from one another includes: determining, for each element of the first segment, that there is an element of the second segment that is offset relative to the element of the first segment if the centers of gravity of the two elements and their normals are offset from one another; The method of claim 1 , comprising:

3. If the centroids of the two elements and their normals are offset from one another, the step of determining that there is an element of the second segment that is offset relative to an element of the first segment comprises: calculating the distance between an element of the first segment and the nearest element of the second segment; comparing the calculated distance against the average distance between the two segments; comparing the normals of each element at its center to ensure that the normals are collinear to a tolerance and opposite to a tolerance; determining that the element of the first segment is offset to the nearest element if the difference between the calculated distance and the average distance between the two segments is less than a tolerance and if the normals are parallel up to a tolerance and oppositely directed up to a tolerance; The method of claim 2 , comprising:

4. 4. The method of claim 3, wherein if the first segment and the second segment have the same canonicality, the average distance between the two segments is the distance between the canonical surfaces corresponding to the two segments.

5. The method of claim 3 or 4, wherein if an element corresponds to a noisy part of a 3D model, the normal at the centroid of the element is the normal of the projection of the centroid onto the fitting surface of the corresponding segment.

6. Merging pairs of symmetrically detected segments The method of any one of claims 1 to 5, further comprising:

7. clustering the detected pairs of segments based on their offset values; The method of any one of claims 1 to 6, further comprising:

8. removing, in at least some clusters, pairs of detected segments that lie on the same side of the shell geometry defined by the outer shell corresponding to said cluster; The method of claim 7 further comprising:

9. for each cluster, merging pairs of adjacent offset segments within said cluster, said merging thereby resulting in pairs of segments that are offset from one another; The method of claim 8 further comprising:

10. removing pairs of sets of segments that contain a single segment and / or have a common segment and / or provide insufficient coverage of the 3D model; The method of claim 9 further comprising:

11. For each pair in the set, detecting a segment not included in said pair that is adjacent to both of said sets of said pair; The method of claim 10 further comprising:

12. for each set of pairs, calculating the bounding sphere of the surface covered by said set; if the calculated bounding spheres have different radii, determining that the set corresponding to the smaller radius is an inner set and that the set corresponding to the larger radius is an outer set; The method of claim 10 or 11, further comprising:

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

14. 14. A computer-readable data storage medium having recorded thereon the computer program of claim 13.

15. 14. A computer system comprising a processor coupled to a memory, the memory having stored thereon the computer program of claim 13.