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

By segmenting the 3D model and detecting fragment offsets, the accuracy and efficiency issues of shell and offset feature detection in existing technologies are solved, enabling robust feature recognition and efficient mechanical component design and manufacturing.

CN120850469APending Publication Date: 2025-10-28DASSAULT SYSTEMES SA
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
CN202510478094.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2024-04-25
Filing Date
2025-04-16
Publication Date
2025-10-28

AI Technical Summary

Technical Problem

Existing CAD systems lack effective detection methods for shell features and offset features in 3D models of mechanical parts, resulting in inaccurate and inefficient detection.

Method used

A computer-implemented method is provided that by segmenting a 3D model into fragments, browsing all possible fragment pairs, and detecting whether the fragments are offset from each other by offset values, including collinearity and directionality verification of centroids and normals, merging symmetric fragment pairs, performing clustering, and removing unnecessary fragment pairs, a complete shell or offset feature is generated.

Benefits of technology

It improves the robustness and computational efficiency of detection, accurately identifies shell and offset features, and is suitable for reverse engineering and the design and manufacture of mechanical components, supporting product design in multiple industrial fields.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120850469A_ABST
    Figure CN120850469A_ABST
Patent Text Reader

Abstract

The present disclosure particularly relates to a computer-implemented method for shell feature or offset feature detection in a 3D model representing a mechanical component. The method includes segmenting the 3D model into segments. The method further includes browsing 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 feature or offset feature detection in a 3D model representing a mechanical part.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to the field of computer programs and systems, and more specifically, to a method, system, and program for detecting housing features or offset features in a 3D model representing a mechanical component. Background Technology

[0002] The market offers numerous solutions for the design, engineering, and manufacturing of objects, including both hardware and software. CAD, an acronym for Computer-Aided Design, refers to software solutions used for designing objects. CAE, an acronym for Computer-Aided Engineering, refers to software solutions used for analyzing and simulating the physical behavior of future products. CAM, an acronym for Computer-Aided Manufacturing, refers to software solutions used for defining product manufacturing processes and resources. In such computer-aided design solutions, graphical user interfaces play a crucial role in technological efficiency. These technologies can be embedded in Product Lifecycle Management (PLM) solutions. PLM refers to an engineering strategy that helps companies share product data, apply common processes, and leverage enterprise knowledge to develop products from concept to end-of-life, extending the enterprise's overall vision. Dassault Systèmes... The PLM solutions offered by [Company Name] (traded under the names CATIA, SIMULIA, DELMIA, and ENOVIA) provide an engineering hub for organizing product engineering knowledge, a manufacturing hub for managing manufacturing engineering knowledge, and an enterprise hub that enables businesses to integrate and connect to both the engineering and manufacturing hubs. Together, all solutions provide a common model that links products, processes, and resources to enable dynamic, knowledge-based product creation and decision support that drives optimization of product definition, manufacturing readiness, production, and service.

[0003] In mechanical design (also known as “manufacturing CAD”), which specifies software solutions for designing and / or manufacturing mechanical parts, CAD features are used to define CAD models representing the mechanical parts. As is known in the art itself, these features allow for a fully mathematically parametric definition of the model, thus enabling the model to be used for manufacturing, for example, by pre-converting it into a CAM file. Examples of such CAD features include shell features and offset features.

[0004] In CAD systems, the shell feature (also known as "shell operation") generates offset surfaces for all surfaces of the input shape, except for the so-called "face to be removed" (which can typically be user-defined / user-selected). The latter is used to generate so-called "thin" faces that connect the inner and outer surfaces of the shell result (the inner and outer surfaces are offset from each other). Figure 1 A screenshot shows an example of applying a shell feature in CAD software. Faces 10 and 12 are faces to be removed, and 14 represents a widget used to input / select different parameter values ​​for the shell feature. Figure 2 The results of applying a shell feature with a thin face 20, an inner face 22, and an outer face 24 are shown. CAD shell features are primarily used to automatically generate offset geometry in mechanical parts.

[0005] In a CAD system, the offset feature performs the offset of the input surface like a shell feature, but does not perform any removal of the face to be removed to create a thin surface. Figure 3A An example of an offset operation is shown. The Thick Surface feature in CAD (especially in solutions provided by Dassault Systèmes) also generates an offset surface from the input surface. However, it produces two offset surfaces (possibly only one, with the input used as a second "zero" offset surface) and a laterally orthogonal "thin" surface to create a closed surface that defines the volume and thus contributes to the part. Figure 3B If the middle surface is the input, the rear surface is obtained using the "offset surface" feature, and the front volume is obtained using the "thick surface" feature.

[0006] However, in this case, an improved solution is needed for detecting housing features or offset features in a 3D model representing a mechanical component. Summary of the Invention

[0007] Therefore, a computer-implemented method is provided for detecting housing features or offset features in a 3D model representing a mechanical component. The method includes segmenting the 3D model into fragments. The method also includes browsing all possible pairs of fragments and, for each pair, detecting whether the fragments in the pair are offset from each other by an offset value.

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

[0009] - For each pair of segments, including a first segment and a second segment, detecting whether the segments of the pair are offset from each other includes:

[0010] o For each element of the first segment, it is determined that there exists an element of the second segment that is offset relative to the element of the first segment if the centroids and normals of the two elements are offset from each other.

[0011] - The existence of an element in a second segment offset relative to the elements of the first segment is determined if the centroids and normals of the two elements are offset from each other, including:

[0012] o Calculate the distance between the nearest element of the first segment and the nearest element of the second segment;

[0013] o Compare the calculated distance with the average distance between the two segments;

[0014] o Compare the normals of each element at its centroid and verify that the normals are collinear and opposite in direction within the tolerance value;

[0015] If the difference between the calculated distance and the average distance between the two segments is less than the tolerance, and if the normals are collinear within the tolerance value and in opposite directions within the tolerance value, then the element of the first segment is determined to be offset relative to the nearest element.

[0016] - If the first segment and the second segment have the same canonicity, then the average distance between the two segments is the distance between the canonical surfaces of the two segments;

[0017] - If an element corresponds to the noise part of a 3D model, then the normal at the centroid of the element is the normal of the projection of the centroid onto the fitted surface of the corresponding segment.

[0018] -The method also includes merging symmetrical detected fragment pairs;

[0019] - The method also includes clustering the detected fragment pairs based on the offset values ​​of the detected fragment pairs;

[0020] -The method further includes: in at least some clusters, removing detected fragment pairs located on the same side of the shell geometry defined by the shell body corresponding to the cluster;

[0021] - The method further includes: for each cluster, merging adjacent offset fragment pairs in the cluster, the merging thereby producing a set of fragment pairs offset from each other;

[0022] - The method further includes: removing fragment pairs that include a single fragment and / or fragment pairs that have a common fragment and / or fragment pairs that do not adequately cover the 3D model;

[0023] - The method further includes: for each pair of sets, detecting fragments from two sets that are not in the pair and are adjacent to the pair; and / or

[0024] -The method also includes:

[0025] For each set of the pairs, calculate the boundary sphere of the surface covered by the set; and

[0026] If the calculated boundary spheres have different radii, then the set corresponding to the smaller radius is determined to be the inner set and the set corresponding to the larger radius is determined to be the outer set.

[0027] A computer program is further provided, including instructions for performing the method.

[0028] A computer-readable storage medium having a computer program recorded thereon is further provided.

[0029] A further system is provided, including a processor coupled to a memory on which the computer program is recorded. Attached Figure Description

[0030] A non-limiting example will now be described with reference to the accompanying drawings, in which:

[0031] Figures 1 to 24 The method is shown; and

[0032] Figure 25 An example of the system is shown. Detailed Implementation

[0033] A computer-implemented method for detecting housing features or offset features in a 3D model representing a mechanical component is proposed. The method includes segmenting the 3D model into fragments. The method also includes browsing all possible pairs of fragments and, for each pair, detecting whether the fragments in the pair are offset from each other by an offset value.

[0034] This constitutes an improved solution for detecting housing features or offset features in 3D models representing mechanical parts.

[0035] It is worth noting that this method begins with the segmentation of the 3D model for shell or offset feature detection. Specifically, the method traverses the segmented fragments and detects pairs of fragments offset from each other by an offset value (the method may also compute an offset value for each pair). The detection of these fragment pairs forms the basis for determining the shell or offset features used to create the corresponding geometry in the model. By starting from the segmentation (i.e., the macroscopic level of the 3D model) rather than from the raw format of the 3D model (e.g., the raw mesh or point cloud), this method removes the need for any sampling of the 3D model for detection. Furthermore, this method eliminates the need for clustering and region growing, at least on a large number of sampled data points. This improves the robustness of the detection and reduces computational requirements.

[0036] In addition, there are many applications for detecting shell features or offset features.

[0037] This method can be particularly used for detecting shell features or offset features in 3D models derived from 3D scans of mechanical parts. In this case, the 3D model considered in the method is obtained from a 3D scan of the mechanical part. The method may include performing the 3D scan (as an initial step) or simply obtaining the 3D model generated by the scan (e.g., by downloading the model). This 3D model can typically be a 3D point cloud generated by 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, this model may have noisy features. Therefore, the method performs processing on the scanned 3D model to detect offset features or shell features in the scanned 3D model, thereby inferring which geometries correspond to the application of shell CAD features or offset CAD features (i.e., can be obtained through this application).

[0038] 3D models can be obtained alternatively through a process other than scanning. For example, a 3D model can be generated from a previous design process, and this method can be used when the CAD feature tree of the model has been lost or does not exist at all, and it is necessary to infer the CAD features of the model (including shell features and offset features) within the step of building or reconstructing the CAD feature tree.

[0039] In cases where the 3D model is generated by 3D scanning, or where the model was generated by a previous design process but the CAD feature tree is missing, the detection of shell features or offset features in the model performed by the method can be part of a reverse engineering process to reverse engineer the model by finding its CAD features. In this case, the method includes the steps of finding shell CAD features and offset CAD features.

[0040] This method can be integrated into the design and manufacturing process of mechanical parts, where it is part of a step to infer / reconstruct the CAD feature tree of the mechanical part. Once the CAD feature tree is constructed, the model is a CAD model and is fully defined / parameterized by the CAD features. The method may also include a step of converting this CAD model into a CAM file (or any similar data) containing control instructions for manufacturing the mechanical part having a geometry defined by the CAD features of the model. This step can be performed by any known method. For a specific feature housing or offset feature generated by this method, the conversion step can infer the machining path for manufacturing the corresponding housing feature or offset feature, which is performed by machining as known in the art. The geometry defined by the housing feature can alternatively be manufactured by casting (in which case they may be referred to as "thin-cast parts"), and the conversion step may include inferring the dimensions of the corresponding mold for (e.g., by machining) mold manufacturing.

[0041] This method is used to detect shell features or offset features in a 3D model representing a mechanical component. This means that the method provides a result that allows inference of shell features or offset features, which can be used to create corresponding geometry in the model. Specifically, the method outputs at least detected pairs of segmented fragments of the model, offset from each other by an offset value (and this offset value can also be calculated / output for each fragment). These pairs can be used to determine their corresponding full shell features or offset features. This can be accomplished with an additional step, which the method can include and can be performed below, specifically merging the detected offset regions to determine the full shell features or offset features of the model. In the example, the method only detects shell features because the model focuses only on the geometry corresponding to the shell, not the offset.

[0042] A 3D model represents the geometry of a product (i.e., a mechanical component) that will be manufactured in the real world after its virtual design has been completed using, for example, CAD software solutions or CAD systems. A mechanical component can be an assembly of parts, because from the perspective of this approach, an assembly of parts can be considered as the parts themselves, or the approach can be applied independently to each component of an assembly, or more generally to any rigid body assembly (e.g., a moving mechanism). CAD software solutions allow for the design of products in a wide and limitless range of industrial sectors, including: aerospace, architecture, construction, consumer goods, high-tech equipment, industrial equipment, transportation, and marine and / or offshore oil / gas production or transportation. Therefore, 3D models can represent industrial products, which can be any mechanical component, such as parts of land vehicles (including, for example, automobiles and light truck equipment, racing cars, motorcycles, trucks and motor equipment, trucks and buses, trains), parts of aircraft (including, for example, fuselage equipment, aerospace equipment, propulsion equipment, defense products, aviation equipment, space equipment), parts of maritime transport vehicles (including naval equipment, merchant ships, marine equipment, yachts and workboats, marine equipment), general mechanical components (including, for example, industrial manufacturing machinery, heavy mobile machinery or equipment, installation equipment, industrial equipment products, processed metal products, tire manufacturing products), electromechanical or electronic components (including, for example, consumer electronics products, safety and / or control and / or instrumentation products, computing and communication equipment, semiconductors, medical devices and equipment), consumer goods (including, for example, furniture, home and garden products, leisure goods, fashion products, products of hard goods retailers, products of soft goods retailers), and packaging (including, for example, food and beverage packaging, as well as tobacco, beauty and personal care, and household product packaging).

[0043] 3D models can form discrete geometric representations of mechanical components. In this paper, a discrete geometric representation is a data structure comprising a discrete set of data. Each data representation is located in a corresponding geometric entity in 3D space. Each geometric entity represents a corresponding location of the mechanical component (in other words, a corresponding portion of the material constituting the entity, represented by the 3D model). Aggregations (i.e., unions or juxtapositions) of geometric entities collectively represent the mechanical component. The discrete geometric representations in this paper may include many such data points, exceeding 100, 1000, or 10000 in examples.

[0044] Discrete geometric representations can be, for example, 3D point clouds, where each geometric entity is a point. Discrete geometric representations can also be 3D meshes, where each geometric entity is a mesh block or face. 3D meshes can be regular or irregular (i.e., composed of or not composed of faces of the same type). 3D meshes can be polygonal meshes, such as triangular meshes. 3D meshes can be obtained from 3D point clouds, for example, by triangulating the 3D point cloud (e.g., using Delaunay triangulation). The 3D point cloud described herein can be determined from physical measurements of a mechanical component (e.g., during 3D reconstruction). The 3D reconstruction process can include: providing a mechanical component; providing one or more physical sensors, each configured to acquire a corresponding physical signal; and acquiring one or more corresponding physical signals by operating the one or more physical sensors on the mechanical component (i.e., scanning the mechanical component using each sensor). Then, according to any known technique, 3D reconstruction can automatically determine the 3D point cloud and / or 3D mesh based on the measurements. The one or more sensors can include multiple (e.g., RGB and / or image or video) cameras, and the determination can include structural analysis from motion. One or more sensors may alternatively or additionally include (e.g., on an RGB depth camera) one or more depth sensors, and the determination may include 3D reconstruction from depth data. One or more depth sensors may include, for example, lasers (e.g., LiDAR) or ultrasonic transceivers.

[0045] This method may include, for example, providing a 3D model as an initial step. Providing a 3D model may include, for example, retrieving the 3D model from a (e.g., remote) database, server, or storage, wherein the 3D model has been stored in storage after being created, acquired, or obtained (e.g., through a reconstruction process as previously described). For example, retrieval may include accessing a database or storage and downloading the 3D model. Alternatively, providing a 3D model may include performing physical measurements (e.g., 3D scanning) on ​​a mechanical part and determining the 3D model from the physical measurements, for example, through a 3D reconstruction process as previously discussed. Providing a 3D modeled object may alternatively include, for example, creating a 3D model by a user, for example, designing it using a dedicated software solution.

[0046] This method involves segmenting the 3D model into fragments.

[0047] 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), segmenting the model involves splitting / dividing the faces of the 3D model into several connected clusters (called fragments), where each fragment maximizes its internal consistency while minimizing its similarity relative to other fragments. The clusters / fragments are the result of the segmentation and may be referred to as "segments". The segmentation obtained by this method can be any segmentation of the 3D model. The segmentation obtained by this method can, for example, be a segmentation produced by the method for segmenting objects modeled in 3D disclosed in European Patent Application EP21305195.6, which is incorporated herein by reference. Alternatively, the segmentation obtained by this method can be a segmentation produced by the method for segmenting discrete 3D models disclosed in European Patent Application EP23306186.0, which is incorporated herein by reference. The segmentation obtained by this method can also alternatively be a segmentation obtained by applying a neural network obtained according to the machine learning method disclosed in European Patent Application EP21305293.9.

[0048] Obtaining a segmentation may include, for example, performing segmentation of a 3D model by applying one of the methods or neural networks disclosed in the three European patent applications mentioned above. Obtaining a segmentation may alternatively include retrieving (e.g., downloading or opening in suitable software) the obtained segmentation from a memory, database, or server (after which the segmentation has been stored in the memory, database, or server).

[0049] Figure 4 An example of a 3D model is shown, where the 3D model is a 3D mesh, and Figure 5 An example of segmentation of a 3D model is shown.

[0050] This method involves browsing all possible fragment pairs. This means the method accesses a list of all possible fragments (e.g., fragments that may therefore be tagged / indexed) and (e.g., one by one) considers all pairs that could be formed using these fragments. For each pair of fragments, the method includes detecting whether the fragments in the pair are offset from each other by an offset value. This can be accomplished using any method for offset detection between two surfaces (fragments being surfaces).

[0051] Each pair of segments includes a first segment and a second segment. For each pair of segments, detecting whether the segments are offset from each other can include: for each element of the first segment, determining that an element of the second segment is offset relative to an element of the first segment if the centroids and normals of the two elements are offset from each other (i.e., if the last condition regarding the centroid is satisfied, the second element is determined to exist). An "element of a segment" means: if the 3D model is a 3D mesh, then each element of the segment is a face belonging to the mesh of the segment (e.g., a triangle in the case of a triangular mesh); if the 3D model is a 3D point cloud, then each element of the segment is defined by a point (of the point cloud), its normal vector, and its nearest neighbor (e.g., found according to any nearest neighbor search method). This method can determine whether an element of the first segment is offset relative to an element of the second segment by determining whether an offset transformation exists for all elements of the first segment, wherein the offset transformation transforms the centroid of the element of the first segment to the centroid of the element of the second segment, and also transforms the normal of the element of the first segment at its centroid to the normal of the element of the second segment at its centroid. If such an offset exists, then the two elements are determined to be offset from each other by this method.

[0052] An element of a second segment is determined to exist if the elements of the first segment are offset relative to each other, and the centroids and normals of the two elements are offset from each other, which may include:

[0053] - Calculate the distance (e.g., Euclidean distance) between the elements of the first segment and the nearest elements of the second segment (e.g., the element of the second segment that has the smallest distance from the elements of the first segment among all elements of the second segment);

[0054] - Compare the calculated distance with the average distance between the two segments;

[0055] - Compare the normals of each element at its centroid (i.e., compare the two normals of the two elements at their centroids) and verify that the normals are collinear within a tolerance value (e.g., a collinearity tolerance value used to verify collinearity) and in opposite directions within a tolerance value (e.g., an opposite direction tolerance value used to verify opposite directions of the two elements).

[0056] - 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 used to verify the difference between the calculated distance and the average distance), and if the normals are collinear within the tolerance value (i.e., the collinearity tolerance value) and oriented in opposite directions within the tolerance value (i.e., the opposite direction tolerance value), then it is determined that the element of the first segment is offset relative to the nearest element.

[0057] Any tolerance value or threshold here can be predetermined (i.e., pre-set as an initial step of the method) and can be user-defined or have a fixed value. For example, the tolerance values ​​discussed below (distance tolerance for normalized offset, distance tolerance for non-normalized offset, dot product tolerance, offset clustering tolerance, and node coverage tolerance) can all be predefined in this way (note: the term "node" in this text can refer to a "fragment," as in the segmentation methods discussed above, where a fragment corresponds to a node in a graph). Both distance tolerance and offset clustering tolerance are defined as fractions of the radius of the boundary sphere of the input geometry, which will be discussed below. This allows for robust scaling of the input geometry.

[0058] If the first and second segments have the same canonicity, then the average distance between the two segments is the distance between the canonical surfaces corresponding to the two segments. Two segments have the same canonicity if they can be fitted with the same type of canonical primitives, such as belonging to a set of common canonical geometric primitives. Such a set may include or consist of primitives such as planes, cylinders, cones, spheres, and tori. In this case, each segment defines a canonical surface of the type of the canonical primitive, and the average distance is the distance between these canonical surfaces. For segments with different canonicities, the average distance can be the average of all distances between each element of the first segment and its nearest element in the second segment.

[0059] If an element corresponds to a noisy portion of a 3D model, then the normal at the centroid of the element is the normal to the projection of the centroid onto the fitting surface for the corresponding segment. The fitting surface can be any surface that fits the corresponding segment (determined by any suitable surface fitting method that the method can perform, for example, in the initial steps of the method). The corresponding segment is a segment that includes the element corresponding to the noisy portion. The noisy portion of the 3D model is the part of the model characterized by noise, such as noise generated by a scanning process used to acquire the model, as previously discussed.

[0060] We will now discuss the implementation of the step of browsing possible pairs of segments and, for each pair, detecting whether the segments in that pair are offset from each other.

[0061] In these implementations, only offset pairs of segments with locally opposite normal vectors are detected, because they must represent both sides of a local thin volume (e.g., Figure 6The offset pair (A, B1) was not detected, but the offset pair (B1, B2) was detected. These implementations can find all fragment pairs with the same canonical type, fragment pairs that are both non-canonical, and fragment pairs where one is canonical and the other is non-canonical. However, among pairs that share a fragment, these implementations only retain the pair with the smallest offset value (i.e., even if two offset pairs (A, C2) and (C1, C2) are detected, only (C1, C2) is retained because it has the lowest offset value of the two).

[0062] When any of the segmentation methods discussed earlier in the three European patent applications related to 3D model segmentation are used, the segmentation is of high quality. The inventors have found that with this quality segmentation, it is not necessary to detect pairs of canonical fragments with different canonical types (e.g., cylinders and nearly cylindrical cones, i.e., with small angles), but the implementation of the method can also be easily extended to detect such cases.

[0063] As previously stated, if the first segment and the second segment have the same canonicity, then 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 using the following criteria.

[0064] If the normal vectors of two plane segments are collinear and their dot product is negative, then the two plane segments are considered an offset pair. In this case, the reference offset value d is the distance between the two planes, i.e. Dot product tolerance, where the dot product tolerance is the dot product tolerance value. This is derived from... Figure 7 As shown.

[0065] If the axes of two cylindrical segments are collinear (using tolerance, i.e.) If the distance between the axes is less than the tolerance value called the distance tolerance of the gauge offset, then the two cylindrical segments are considered an offset pair. The reference offset value d is the absolute value of the difference between the two radii. This is determined by... Figure 8 As shown.

[0066] If the axes of the two cone-shaped segments are collinear (use tolerance, i.e.) Dot product tolerance), the distance between the axes is less than the tolerance value called the distance tolerance of the gauge offset, and their angles are the same (using the tolerance value, i.e. and Where t = dot product tolerance), then these two conical segments are considered an offset pair. The reference offset value d is the distance between the two cones, i.e., d = h × sinα, where α = α1, α = α2, ... Or any other angle value close to either of the two angles. This is determined by... Figure 9 As shown.

[0067] If the distance between the centers of two spherical segments is less than the tolerance value called the gauge offset, then the two spherical segments are considered an offset pair. The reference offset value d is the difference between the two radii. This is determined by... Figure 10 As shown.

[0068] Two toroidal segments are considered an offset pair if the distance between the centers of two toroidal segments and the difference between their major radii are both less than the tolerance value called the distance tolerance, known as the canonical offset. The reference offset value d is the difference between the two minor radii.

[0069] In all the different primitive cases described above, the reference offset value d is the distance between the canonical surfaces corresponding to the two segments discussed earlier. The distance tolerance of the canonical offset is the distance tolerance value already discussed.

[0070] These implementations then use the following algorithm to detect which sub-elements (e.g., triangles in a 3D mesh) in the two fragments are at a distance sufficiently similar to the reference offset (within the distance tolerance value used to verify the difference between the calculated distance and the average distance, as described above):

[0071] For every two standard segments

[0072] For each sub-element of the first segment:

[0073] ● Get the child element of the second segment that is closest to its centroid;

[0074] ● Calculate the distance Δ between the two child elements;

[0075] ●If |Δ-d| < the distance tolerance of the normal offset, and if the normal vectors of the two child elements are collinear and their dot product is negative (i.e. If the dot product tolerance is used, then the two identified sub-elements are stored in a pair of subsets of two segments that are offset from each other.

[0076] The algorithm demonstrates why this method can detect offsets between only a portion of one segment and a portion of another segment (e.g., ...). Figure 11 As shown). To avoid false alarms (i.e., segments with compatible offset surfaces but incorrect orientations, such as...) Figure 12 As shown), the implementation retains only sub-element pairs with opposite face normals.

[0077] These implementations also use the same method to detect all possible offsets between non-canonical fragments and any other fragments (canonical and non-canonical), with the significant difference being that we do not calculate reference offset values ​​in these cases.

[0078] To this end, it iterates through elements (e.g., mesh triangles) and identifies whether a subset of a segment is an offset of a subset of another segment. This is accomplished using the following algorithm:

[0079] For every two segments

[0080] For each sub-element S1 of the first segment:

[0081] S1 has a centroid B1 and a normal vector n1.

[0082] • Get the closest child element S2 of the second segment to B1

[0083] S2 has a centroid B2 and a normal vector n2.

[0084] ●If the following conditions are met

[0085] o Dot product tolerance

[0086] o Dot product tolerance,

[0087] These elements are considered to be "in front" of each other (e.g., ... Figure 13 As shown), and the implementation calculates the distance Δ between these two child elements.

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

[0089] ●If Distance tolerance for non-standard offset

[0090] oUpdate

[0091] o stores this pair of elements in a subset pair of two segments that are offset from each other.

[0092] On a noise-free mesh, the implementation uses the normal vectors of elements (e.g., polygons). On a noisy mesh, the implementation uses the local normal vectors of the fitted surface (i.e., noise reduction), which only requires projecting the centroid onto the corresponding fitted surface (e.g., ...). Figure 14 (As shown). In addition, the tolerance parameter set can be fine-tuned to process noisy data in an improved manner.

[0093] The implementation can consider the special case of fragment pairs, which can all be extrusion surfaces or all rotational surfaces. These fragments can be detected by any extrusion detection method or any 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 this method can utilize the fitted extrusion or rotation profiles provided by these methods to simplify and accelerate computation.

[0094] Two extruded segments are an offset pair if their profile curves lie in parallel planes (i.e., if their extrusion directions are parallel) and if the profile curves are offset from each other—that is, the implementation applies the same calculations as for general non-normative surfaces, but to planar profile curves (i.e., in 2D rather than 3D). Comparing the extrusion limits of the two surfaces (relative to their positions on the two profile planes) indicates whether the two extruded 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 determined by… Figure 15 As shown.

[0095] If two surfaces of revolution have the same axis and their planar profile curves are a planar offset pair, then the two surfaces of revolution are in an offset pair. Again, this implementation applies 2D calculations to check if the two profile curves are offset from each other. Finally, comparing angular boundaries (relative to the two profile planes) indicates whether the two can be "in front" of each other. This is determined by... Figure 16 As shown.

[0096] The method can then use the detected fragment offset pairs to determine large offset pairs between the fragment sets. To do this, the following steps can also be performed to filter out unwanted offset pairs and generate one or more large offsets where possible. These steps will now be discussed. In the implementation, these steps are performed in the order discussed below, with the output of one step serving as the input to the next. The order of these steps can be modified in variations of the method.

[0097] The method may also include merging symmetrically detected fragment pairs. In other words, because the method performs an exhaustive asymmetric search of possible fragment offset pairs, it identifies both the offset pair of fragment X and fragment Y, and another offset pair of fragment Y and fragment X. The merging involves identifying and merging all these symmetrical offset pairs, i.e., merging the sub-elements of the offset pairs, which typically increases the number of sub-elements covered by the resulting symmetrical fragment offset pairs. This is due to… Figure 17 As shown.

[0098] The method may also include clustering the detected fragment pairs based on their offset values. This can be done before or after the step of synthesizing symmetric pairs. In other words, for each detected fragment pair, the method also detects (calculates) their offset values. Clustering is based on these values. For this purpose, any clustering method can be used, such as the mean-shift clustering method discussed in "Partial and approximation symmetry detection for 3d geometry" by NJ Mitra, L. Guibas, and M. Pauly, ACM Transactions on Graphics, pp. 560-568, 2006, and the mean-off clustering method discussed in "Discovering structural regularity in 3d geometry" by M. Pauly, NJ Mitra, J. Wallner, H. Pottmann, and L. Guibas, ACM Transactions on Graphics, pp. 1-11, 2008, both of which are incorporated herein by reference. Given the relatively small number of offsets computed by this method (i.e., compared to these references, since the method deals with already segmented objects), in practice, the clustering stage has a negligible impact on global computational performance. The inventors discovered that simply unifying all offsets that are closer to the common mean than the offset clustering tolerance parameter provides robust results. This tolerance parameter can adapt to the noise level of the input. It's important to note that clustering may not remove some or any outliers, whether they are outliers consisting of pairs of single nodes that are completely covered (e.g., ...). Figure 18 (As shown in the zoomed view at the top left and top center), or outliers consisting of only a few triangles (also as...) Figure 18 (As shown in the zoomed-in view in the bottom left and bottom right corners).

[0099] The method may further include: removing, within at least some clusters, detected fragment pairs located on the same side of a shell geometry defined by the shell body corresponding to the cluster. In other words, at least some (e.g., all) clusters each define a shell geometry formed by the shell body (i.e., they correspond to shell features). The method detects all fragment pairs located on the same side of the shell geometry for these clusters. This allows avoiding the combination of detected offsets that correspond to, for example, the internal geometry of the shell (e.g., such as...). Figure 19 As shown, the geometric region used to increase the stiffness of mechanical components is located on the same side of the shell geometry defined by the outer shell.

[0100] In the implementation (which can be combined with the implementations discussed above), this method can therefore use the following algorithm:

[0101] For each cluster C of the offset pair

[0102] For each offset pair O in C

[0103] For each segment S contained in O (S′ is another or opposite segment of O)

[0104] For any adjacent segment N adjacent to S

[0105] If there exists an offset pair O′ in C containing N, and if N is adjacent to S′, then O is an inner offset pair and is removed.

[0106] For all adjacent segments N adjacent to S

[0107] o finds all offset pairs O′ in C containing N and the opposite fragment Σ.

[0108] If none of these segments Σ are adjacent to another segment S′ of O, then O is an internal offset pair and is removed.

[0109] repeat

[0110] For each offset pair O in C

[0111] If O is completely adjacent to a defined inner offset pair, then it is also an inner offset pair and is removed.

[0112] Until no more internal offset pairs can be found

[0113] In the algorithm described above, two offset pairs are considered completely adjacent if and only if they have adjacent or identical nodes on both sides. For example, in Figure 20 In the equation, offset pairs (A, B) and (D, C) are completely adjacent, but (A, B) and (E, F) are not, nor are (A, B) and (F, G).

[0114] The removal step is performed after the clustering step. However, in a variation of this method, the removal step can be performed before the clustering step and / or before the step of merging symmetric pairs. Performing the removal step before the clustering step does not require any adjustments to the method (it only needs to search for offsets to remove from all offset pairs). It has the advantage of detecting and removing internal offset pairs (e.g., in...). Figure 21(As shown in the example by reference numeral 210). It was not identified by the method with the current step order and was removed simply because its coverage was too weak (this is often the case in practice). This improves the reliability of the method. Performing the removal step before the merging step requires the following adjustment: if a pair (A, B) is an internal offset, then the symmetric pair (B, A) is also marked as an internal offset.

[0115] The method may also include, for each cluster, merging adjacent fragment offset pairs within the cluster. Therefore, this merging results in pairs of fragment sets offset from each other. Two fragment offset pairs are considered adjacent if at least one offset pair covers a fragment adjacent to another offset pair, or if they share a common fragment. The method detects and merges these pairs. The result of merging two adjacent offset pairs is an offset pair between two fragment sets containing fragments from the two initial pairs. There are four simple cases where the offset pairs are adjacent and can be merged (e.g., ...). Figure 22 As shown):

[0116] • The offset pair (B, C) is merged with the offset pair (D, E) because B is adjacent to D and C is adjacent to E. The result is the merged offset between the sets {B, D} and {C, E}.

[0117] • Offsets (A, B) and (B, C) are merged because A and C are adjacent. The result is a merged offset between sets {B} and {A, C}.

[0118] • Offset pairs (F, G) are merged with offset pairs (G, H) because they share a common segment. The result is the merged offsets between sets {F, H} and {G}. Note: If there are one or more internal offset pairs (e.g., (I, J)) between segments F and H in the same cluster, they have already been removed in the previous step.

[0119] • Offset pair (A, B) is merged with offset pair (F, G) because fragments A and F are adjacent. The result is the merged offsets between sets {A, F} and {B, G}. Note: If there are one or more internal offset pairs (e.g., (K, L)) between fragments B and G in the same cluster, they have already been removed in the previous step.

[0120] In the second and third cases, the initial offset pairs only cover a portion of the common fragment (B and G, respectively), while the resulting merged offsets cover the union of the two previously covered portions of the common fragment.

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

[0122] For each cluster of fragment offset pairs, the method merges all adjacent offset pairs into a single offset pair (the set of offset pairs of fragments) until only non-adjacent offset pairs remain.

[0123] The merging of adjacent pairs is completed after the steps of clustering and removing pairs that are on the same side in the cluster.

[0124] In addition to merging adjacent pairs, the method may also include removal: pairs of fragment sets containing a single fragment and / or pairs of fragment sets sharing a common fragment on both sides and / or pairs of fragment sets with insufficient 3D model coverage. This eliminates false positives. By removing any remaining offset pairs with a single fragment, overly simplistic shell features with small added values ​​can be avoided. Removing offsets between fragment sets that are adjacent to each other (i.e., because they share fragments) allows, for example, the removal of shell features on a simple cube, or more generally, the removal of any extrusion or rotation of square or hexagonal or octagonal contours. Finally, removing insufficiently covered sets can use coverage tolerance to check whether all fragments in the offset are adequately covered by the corresponding set. If these fragments are not adequately covered, then the offset is also considered a false positive. This final removal can be performed additionally or alternatively by any suitable method (e.g., selection). Figure 24 The two offsets on the right are selected from the following set, which provides the maximum coverage of the input geometry.

[0125] The method may further include: for each pair of sets, detecting segments of two sets that are not in the pair but are adjacent to the pair. These segments correspond to thin segments of the shell feature represented by the pair.

[0126] The method may further include: for each set in the pair, calculating a boundary sphere of the surface covered by the set. The method may then include: if the calculated boundary spheres (i.e., for the two sets in the pair) 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. A "thin" segment is a segment that is not in the offset and is adjacent to both the inner set and the outer set of the segment.

[0127] The output of this method can be a list of detected shell feature data sets. Each shell data set contains a subset of input geometries offset from each other, the corresponding offset values, and a subset of geometries corresponding to the "thin" surfaces generated from the shell features.

[0128] The advantages of this method will now be outlined.

[0129] This method allows for the detection of which portions of the provided 3D mesh or point cloud were likely generated by applying shell features (i.e., by creating offset surfaces). It also allows for the calculation of offset values ​​and the identification of "thin" surfaces that are not offset and are generated by "faces to be removed." This information can then be used to manually or automatically generate a CAD feature tree that produces the input geometry and includes the inferred shell features. This captures the design intent and facilitates the editing and fabrication (and potential modifications) of parts corresponding to the initial geometry. The presence of shell features (e.g., rather than a list of duplicated features that generate the inner surfaces of the shell result) greatly simplifies the accurate description of the geometry. In the case of point clouds, this method might require providing a normal vector for each point along with the nearest point in its neighborhood (thus providing minimal topological information).

[0130] The method of this invention detects a subset of input geometries that remain unchanged under corresponding offset operations. This method can reconstruct a CAD feature tree with shell features (on top of other features such as pads, recesses, shafts, grooves, fillets, etc.), an improvement over similar methods that only generate feature trees without shell features. This makes editing and manufacturing parts much easier (simply modifying the parameters of the shell features). It also captures design intent more completely and ensures more robust parametric design (e.g., modifying other features does not affect the "thickness" of the mechanical part, as this is controlled by the shell feature parameters that set the offset values). The presence of shell features (rather than, for example, a duplicate feature list that generates the inner surface of the shell result) greatly simplifies the accurate description of the geometry.

[0131] This method can also be used to detect other local symmetries and patterns. However, by utilizing the segmentation results, this method significantly simplifies the algorithm and improves performance and robustness. For example, the pairing stage based on features computed at sampling points seems to particularly degrade the accuracy of the results, while this method avoids this probabilistic uncertainty by comparing only the corresponding large-scale geometries identified during the segmentation process. Furthermore, this method's approach can significantly reduce the long computation time required for mean-drift clustering to detect clusters in the transformation space (because it generates a small number of transformations).

[0132] As previously stated, this method can be part of the design and manufacturing process of a mechanical component. "Design and manufacture product / mechanical component / mechanical product" refers to any action or series of actions that are at least part of a process for refining the modeling object (3D or 2D) of the manufactured product / mechanical component / mechanical product. This method can form this process or at least a part of said process because it can be part of the steps of CAD feature tree inference, as previously explained.

[0133] Therefore, this method typically manipulates modeling objects, such as 3D models processed by this method. A modeling object is any object defined by data stored in a database, etc. By extension, the term "modeling object" specifies the data itself. Depending on the type of system, the modeled object can be defined by different types of data. This system can actually be any combination of CAD, CAE, CAM, PDM, and / or PLM systems. In those different systems, the modeled object is defined by the corresponding data. Therefore, it is possible to refer to 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, as a modeling object can be defined by any combination of data corresponding to these systems. Therefore, a system can be a CAD, CAE, PLM, and / or CAM system, as is evident from the definitions of these systems provided below.

[0134] CAD solutions (such as CAD systems or CAD software) also refer to any system, software, or hardware that is at least suitable for designing modeled objects based on a graphical representation and / or a structured representation (such as a feature tree) of the modeled object (e.g., CATIA). In this context, the data defining the modeled object includes data that allows the modeled object to be represented. CAD systems may provide a representation of the CAD-modeled object, for example, using edges or lines (and in some cases, faces or surfaces). Lines, edges, or surfaces can be represented in various ways, such as non-uniform rational B-splines (NURBS). Specifically, CAD files contain specifications from which geometry can be generated, which in turn allows for the generation of representations. The specifications of the modeled object can be stored in a single CAD file or multiple CAD files. The typical size of a file representing a modeled object in a CAD system is in the range of one megabyte per part. Modeled objects are often assemblies consisting of thousands of parts.

[0135] In the context of CAD, modeling objects can typically be 2D or 3D modeling objects, such as representing products (e.g., parts or assemblies of parts) or assemblies that may represent products. 2D or 3D modeling objects can be manufactured products, i.e., products to be manufactured. A "3D modeling object" refers to any object modeled using data that allows for its 3D representation. 3D representation allows viewing a part from various angles. For example, when 3D represented, a 3D modeling object can be manipulated and rotated around any of its axes or around any axis on the screen where the representation is displayed. This clearly excludes 2D icons that are not 3D modeled. The display of 3D representations facilitates design (i.e., increases the speed at which designers can statistically complete their tasks). This accelerates the manufacturing process in industry, as product design is part of the manufacturing process.

[0136] 3D modeling objects can represent the geometry of products that will be manufactured in the real world after their virtual design is completed using, for example, CAD / CAE software solutions or CAD / CAE systems. Examples include (e.g., mechanical) parts or assemblies of parts (or equivalently, assemblies of parts, since from a methodological perspective, assemblies of parts can be considered as parts themselves, or the method can be applied independently to each part of the assembly), or more generally, any rigid body assembly (e.g., a moving mechanism). CAD / CAE software solutions allow for the design of products in a wide and limitless range of industrial sectors, including: aerospace, architecture, construction, consumer goods, high-tech equipment, industrial equipment, transportation, and marine and / or offshore oil / gas production or transportation. Therefore, the 3D model objects involved in this method can represent industrial products, which can be any mechanical component, such as parts of land vehicles (including, for example, automobiles and light truck equipment, racing cars, motorcycles, trucks and motor equipment, trucks and buses, trains), parts of aircraft (including, for example, fuselage equipment, aerospace equipment, propulsion equipment, defense products, aviation equipment, space equipment), parts of maritime transport vehicles (including naval equipment, merchant ships, marine equipment, yachts and workboats, marine equipment), general mechanical components (including, for example, industrial manufacturing machinery, heavy mobile machinery or equipment, installation equipment, industrial equipment products, processed metal products, tire manufacturing products), electromechanical or electronic components (including, for example, consumer electronics products, safety and / or control and / or instrumentation products, computing and communication equipment, semiconductors, medical devices and equipment), consumer goods (including, for example, furniture, home and garden products, leisure goods, fashion products, products of hard goods retailers, products of soft goods retailers), and packaging (including, for example, food and beverage packaging, as well as tobacco, beauty and personal care, and household product packaging).

[0137] CAD systems can be history-based. In this case, the modeling object is further defined by data including the history of its geometric features. The modeling object can indeed be designed by a natural person (i.e., a designer / user) using standard modeling features (e.g., extrusion, revolve, cut, and / or rounding) and / or standard surface modeling features (e.g., sweep, blend, loft, fill, deform, and / or smooth). Many CAD systems that support this modeling capability are history-based systems. This means that the creation history of design features is typically maintained through a non-cyclic data stream that links the geometric features together via input and output links. The history-based modeling paradigm has been well-known since the 1980s. The modeled object is described by two persistent data representations: history and B-rep (i.e., boundary representation). The B-rep is the result of calculations defined in the history. When representing the modeled object, the shape of the part displayed on the computer screen is the B-rep (e.g., a tessellation of the B-rep). The part's history is the design intent. Essentially, the history gathers information about the operations the modeled object has undergone. B-rep can be saved along with history to make it easier to display complex parts. History can also be saved along with B-rep to allow for design changes to parts based on design intent.

[0138] A PLM system also means any system adapted for managing modeled objects representing physically manufactured products (or products to be manufactured). In a PLM system, modeled objects are thus defined by data applicable to the manufacture of physical objects. These can typically be dimensional values ​​and / or tolerance values. Having such values ​​is indeed better for correctly manufacturing objects.

[0139] CAE solutions also refer to any solution (hardware or software) suitable for analyzing the physical behavior of the modeled object. A well-known and widely used CAE technique is the Finite Element Model (FEM), which will be equivalently referred to as a CAE model below. FEMs typically involve dividing the modeled object into elements (i.e., finite element meshes) that can be used to calculate and simulate these physical behaviors. Such CAE solutions are provided by... Provided by Dassault Systèmes under the trademark. Another evolving CAE technology involves the modeling and analysis of complex systems composed of multiple components from different physical domains, without CAD geometry data. CAE solutions allow for the simulation of products to be manufactured, enabling optimization, improvement, and validation. Such CAE solutions are provided by... Provided by Dassault Systèmes under the trademark. CAE can be used to ensure that various structural requirements (such as, but not limited to, mass, stiffness, strength, and durability) are met through new CAD models. Some of these requirements may be referred to as Key Performance Indicators (KPIs). For many industrial products (such as automobiles, aircraft, consumer product packaging, and high-tech), these KPIs are conflicting; for example, lighter mass often results in lower stiffness. Therefore, optimization methods are often applied to find the best trade-off between KPIs.

[0140] CAM solutions refer to any solution (hardware or software) applicable to managing manufacturing data for a product. Manufacturing data typically includes data related to the product to be manufactured, the manufacturing process, and the required resources. CAM solutions are used to plan and optimize the entire manufacturing process of a product. For example, it can provide CAM users with information about feasibility, the duration of the manufacturing process, or the number of resources (e.g., a specific robot) that can be used at a particular step in the manufacturing process, thus allowing decisions to be made regarding management or required investment. CAM is a follow-up process to CAD processes and potentially CAE processes. For example, a CAM solution can provide information on machining or forming parameters related to extrusion features provided in a CAD model. Such CAM solutions are trademarked as CATIA, Solidworks, or other trademarks. Provided by Dassault Systèmes.

[0141] Therefore, CAD and CAM solutions are closely related. In fact, CAD solutions focus on the design of a product or part, while CAM solutions focus on how to manufacture it. Designing a CAD model is the first step towards computer-aided manufacturing. Indeed, CAD solutions provide key functionalities such as feature-based modeling and boundary representation (B-Rep) to reduce the risk of errors and loss of accuracy during manufacturing processes handled by CAM solutions. In fact, the CAD model is for manufacturing. Therefore, it is a virtual twin of the object to be manufactured, also known as a digital twin, with two objectives:

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

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

[0144] PDM stands for Product Data Management. A PDM solution refers to any solution (hardware or software) suitable for managing all types of data related to a specific product. PDM solutions can be used by all stakeholders involved in the product lifecycle: primarily engineers, but also project managers, finance personnel, sales staff, and buyers. PDM solutions are typically based on a product-oriented database. It allows stakeholders to share consistent data about their products, thus preventing stakeholders from using conflicting data. Such PDM solutions are provided by... Provided by Dassault Systèmes under the trademark.

[0145] As previously mentioned, the output / design / input modeling object of this method can be a 3D discrete geometric representation of a manufactured product / mechanical product / mechanical part. A discrete geometric representation is a data structure that includes a discrete set of data. Each piece of data can specify an element of the product / mechanical part and is referred to as a discrete element. The discrete geometric representation can be 3D. Alternatively, it can be both 3D and 2D, meaning it can include 3D parts as a 3D discrete geometric representation and 2D parts as a discrete geometric representation, such as a hybrid 3D-2D mesh (e.g., for modeling a product that includes a thin part modeled with 2D parts and a thick part modeled with 3D parts). The discrete geometric representation can include many such data points, such as 100, 1000, or 10000, in examples.

[0146] In the case of 3D discrete geometry representation, the 3D discrete geometry representation can be a solid / volume 3D discrete geometry representation of a product / mechanical part, such as a solid 3D finite element model (FEM) or a 3D volume mesh (e.g., a 3D tetrahedral mesh). In this case, each data point can represent a corresponding geometric entity located in 3D space, such that each data point forms a solid representation of the mechanical part / product (i.e., a "solid 3D discrete geometry representation"). Each geometric entity can represent a corresponding location of the 3D object (i.e., a material point) (in other words, a corresponding part of the material constituted by the entity represented by the 3D object). The aggregation (i.e., union or juxtaposition) of geometric entities represents the 3D object as a solid / volume. Alternatively, the 3D discrete geometry representation can be a 3D discrete geometry representation of the skin of a product / mechanical part, such as a 3D surface mesh (e.g., a triangular surface mesh) or tessellation. In this case, each data point can represent a corresponding geometric entity located in 3D space, such that each data point forms a representation of the skin of the mechanical product (i.e., a "skin 3D discrete geometry representation"). In this context, each geometric entity represents a corresponding location (i.e., a material point) on the outer surface of a 3D object (in other words, the corresponding portion of the volume of the outer surface occupied by the material formed by the entities represented by the object). An aggregation (i.e., union or juxtaposition) of geometric entities collectively represents at least a portion of the outer surface of the object.

[0147] Discrete geometric representations can be, or can be further converted into, CAE models, also known as “finite element models (FEMs)”, by this method. The CAE model can originate from a CAD model representing a mechanical part / product; for example, the method includes obtaining a CAE model from a CAD model in an initial stage, such as using a mesh generation process (e.g., triangulation). Conversely, the CAE model can be converted into a CAD model. This method can design / output a CAE model, which can then be converted into a corresponding CAD model. This method can include, or can be included, in a broader process that includes, or can form a solution for converting a CAE model (e.g., automatically) designed / outputted by this method into a CAD model using any known (e.g., automatic) CAE-to-CAD conversion process that converts a CAE model into a CAD model.

[0148] As previously mentioned, this method can be part of a step that converts an input 3D model into a CAD model, for example, including or incorporating a feature tree and / or B-rep. This model can originate from a CAE model and can be derived from a CAE-to-CAD conversion process, which the method can include, for example, in the initial stage.

[0149] CAD models can be feature-based (e.g., they can include feature trees and optionally corresponding B-reps obtained by performing feature tree analysis). Feature-based 3D models allow for the detection and automatic resolution of geometric errors in the CAD model, such as conflicts affecting the manufacturing process, for example, during the determination of manufacturing or CAM files as discussed below. Conflicts are, for example, due to the interpenetration between two parts of the 3D model due to relative motion. Furthermore, sometimes such conflicts can be detected solely through finite element analysis of the CAD feature-based model. Therefore, conflict resolution can be performed either iteratively by modifying the parameters of the features and performing finite element analysis, either in conjunction with or automatically through the CAD solution.

[0150] As another example, feature-based 3D models allow for the automated creation of toolpaths for machines via computer numerical control (CNC), for instance, during the determination of manufacturing files or CAM files, as discussed below. With CNC, each object to be manufactured receives a customized computer program, which is stored in and executed by the machine control unit, a microcomputer attached to the machine. This program contains the instructions and parameters that the machine tool will follow. Milling machines, lathes, planers, grinders, and lasers are common examples of machine tools whose operation can be automated via CNC.

[0151] A key characteristic of CAD models is that they can be precisely and explicitly designed and edited by modifying their advanced parameters through a linking of a small number of high-level parametric design operations (including but not limited to sketching, extrusion, and chamfering). This is a key difference from polyhedral representations (such as triangular surface meshes), which can represent any 3D shape but do not offer the modification or parametric capabilities required in an industrial design environment.

[0152] Because CAD models are parametric models of parts / products, they have a smaller memory footprint than other models, such as CAE models. In fact, CAD models allow for the storage of lists of features and parameters, rather than collections of discrete geometric elements like finite element methods, which results in a smaller storage and memory footprint. Therefore, working with CAD models reduces the memory requirements of the underlying system compared to, for example, CAE models, and also facilitates model editability. This means that the CAE to CAD conversion process effectively compresses the CAE model into a CAD model, which is lighter in terms of memory requirements (e.g., footprint) in addition to converting the CAE model into a more easily editable CAD model.

[0153] Custom computer programs can be automatically generated from CAD files. Therefore, this generation can be error-proof and ensures that the CAD model is perfectly replicated in the manufactured product. CNC is considered to offer higher precision, complexity, and repeatability than manual machining. Other benefits include higher precision, speed, and flexibility, as well as features such as contour machining, which allows milling contour shapes (including shapes generated in 3D designs).

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

[0155] B-Rep comprises topological entities 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 a bounded portion of a surface, called a supporting surface. An edge is a bounded portion of a curve, called a supporting curve. A vertex is a point in 3D space. The relationships between them are as follows: The bounded portion of a curve is defined by two points (vertices) on the curve. The bounded portion of a surface is defined by its boundary, which is a set of edges on the surface. The boundaries of the edges of a face are connected by shared vertices. Faces are connected by shared edges. If two faces share an edge, they are adjacent. Similarly, if two edges share a vertex, the two edges are adjacent. In CAD systems, B-Rep collects "defined by..." relationships, relationships between topological entities and supporting geometries, and mathematical descriptions of the supporting geometries in an appropriate data structure. The inner edges of a B-Rep are edges that are shared by exactly two faces. By definition, boundary edges are not shared and only constrain one face. By definition, a boundary face is defined by at least one boundary boundary. A B-Rep is called closed if all its edges are interior edges. A B-Rep is called open if it contains at least one boundary edge. Closed B-Reps are used to model thick 3D volumes because they define the (virtual) interior space surrounding the material. Open B-Reps are used to model 3D skins, which represent 3D objects whose thickness is small enough to be ignored.

[0156] A key advantage of B-Rep over any other representation type used in CAD modeling is its ability to accurately represent arbitrary shapes. All other representations in use, such as point clouds, distance fields, and meshes, approximate the shape to be represented through discretization. B-Rep, on the other hand, contains surface equations representing an accurate design, thus forming a true "master model" for further manufacturing, whether for toolpath generation for CNC or for discretizing to the correct sample density for a given 3D printer technology. In other words, by using B-Rep, a 3D model can be an accurate representation of the object being manufactured. B-Rep is also advantageous for simulating the behavior of 3D models. For stress, thermal, electromagnetic, or other analyses, it supports local refinement of the simulation mesh to capture physical phenomena, and for kinematics, it supports realistic contact modeling between curved surfaces. Finally, B-Rep allows for a small memory and / or file footprint. First, because the representation contains surfaces based solely on parameters. In other representations such as meshes, the equivalent surface comprises up to thousands of triangles. Second, because B-Rep does not contain any history-based information.

[0157] This method can be incorporated into a production process, which may include, after executing the method, producing a physical product corresponding to the modeled object that the method helps in designing. The production process may include the following steps:

[0158] - (e.g., automatically) apply this method to obtain a CAD model of the mechanical component;

[0159] - Use the obtained CAD model to manufacture parts / products.

[0160] Manufacturing using a CAD model specifies any real-world action or series of actions involved in the manufacturing of the product / part represented by the CAD model. For example, manufacturing using a CAD model may include one or more of the following steps:

[0161] - Edit the obtained CAD model;

[0162] - Perform simulations based on CAD models or corresponding CAE models (e.g., the CAE model from which the CAD model originates after a CAE-to-CAD conversion process), such as simulations used to verify mechanical, usage and / or manufacturing characteristics and / or constraints (e.g., structural simulations, thermodynamic simulations, aerodynamic simulations);

[0163] - Edit CAD models based on simulation results;

[0164] -Optionally (i.e., depending on the manufacturing process used, the production of mechanical products may or may not include this step), manufacturing documents / CAM files (e.g., including manufacturing instructions for manufacturing the product represented by the CAD model and / or control instructions for the manufacturing process and / or commanding its manufacturing process or manufacturing tools) are determined based on (e.g., edited) CAD models (e.g., automatically) for the production / manufacturing of the product;

[0165] - Considering the manufacturing of products represented by CAD models, send CAD files and / or manufacturing / CAM files to the factory; and

[0166] - Based on the determined manufacturing documents / CAM files or CAD models, (e.g., automatically) produce / manufacture the mechanical product initially represented by the model output by the method. This may include (e.g., automatically) feeding the manufacturing documents / CAM files and / or CAD files to the machine performing the manufacturing process.

[0167] This final step in production / manufacturing can be referred to as the manufacturing step or production step. For example, this step manufactures / produces parts / products based on the CAD model and / or CAM file when the CAD model and / or CAD file are fed to one or more manufacturing machines or the computer system controlling those machines. The manufacturing step may include performing any known manufacturing process or a series of manufacturing processes, such as one or more additive manufacturing steps, one or more cutting steps (e.g., laser cutting or plasma cutting steps), one or more stamping steps, one or more forging steps, one or more bending steps, one or more deep drawing steps, one or more molding steps, one or more machining steps (e.g., milling steps), and / or one or more stamping steps. Manufacturing and its productivity are also improved because the design methodology enhances the design of the model (CAE or CAD) representing the part / product.

[0168] Editing a CAD model can include executing one or more versions of the CAD model by a user (i.e., the designer), for example, by using a CAD solution. Modifications to a CAD model can include one or more modifications to each of the geometry and / or parameters of the CAD model. Modifications can include any or a series of modifications performed on the model's feature tree (e.g., modifications to feature parameters and / or specifications) and / or modifications performed on the CAD model's display representation (e.g., B-rep). Modifications that maintain the technical functionality of the part / product are those made by the user that may affect the model's geometry and / or parameters, but only to make the CAD model technically more suitable for the downstream use and / or manufacturing of the part / product. Such modifications may include any or a series of modifications to make the CAD model technically suitable for the specifications of the machines used in the downstream manufacturing process. These modifications may additionally or alternatively include any or a series of modifications to make the CAD model technically suitable for further use after the product / part is manufactured, such modifications or series of modifications being based, for example, on simulation results.

[0169] CAM files can include a manufacturing setup model obtained from a CAD model. The manufacturing setup can include all the data required to manufacture the mechanical product (e.g., control instructions for controlling the manufacturing process), giving it a corresponding geometry and / or material distribution captured by the CAD model, which may be within manufacturing tolerances. Determining the production file can include applying any CAM (Computer-Aided Manufacturing) or CAD-to-CAM solution to (e.g., automatically) determine the production file from the CAD model (e.g., any automated CAD-to-CAM conversion algorithm). Such a CAM or CAD-to-CAM solution can include one or more software solutions capable of automatically generating manufacturing instructions and toolpaths for a given manufacturing process based on a CAD model of the product to be manufactured:

[0170] -Fusion 360

[0171] -FreeCAD

[0172] -CATIA

[0173] -SOLIDWORKS

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

[0175] - Dassault Systèmes NC Mill-Turn Machine Programmers are shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / nc-mill-turn-machine-programmer and / or

[0176] - The Dassault Systèmes Powder Bed Machine Programmer is shown at https: / / my.3dexperience.3ds.com / welcome / fr / compass-world / rootroles / powder-bed-machine-programmer.

[0177] The product / part can be an additively manufactured part, i.e., a part manufactured through additive manufacturing (i.e., 3D printing). In this case, the production process does not include the step of determining the CAM file, but instead proceeds directly to the production / manufacturing step by feeding the CAD model directly (e.g., automatically) to the 3D printer. The 3D printer is configured to 3D print the mechanical product directly and automatically based on the CAD model when it is fed (e.g., when 3D printing is initiated by the 3D printer operator). In other words, the 3D printer receives (e.g., automatically) the CAD model fed to it, reads (e.g., automatically) the CAD model, and prints (e.g., automatically) the part by adding material (e.g., layer by layer) together to reproduce the geometry and / or distribution of the material captured by the CAD model. The 3D printer adds material to thereby reproduce the geometry and / or distribution of the material captured by the CAD model with virtually accurate reproduction within the resolution of the 3D printer, and optionally with or without tolerance errors and / or manufacturing corrections. The manufacturing process may include determining such manufacturing correction values ​​and / or tolerances, for example, by the user (e.g., the operator of the 3D printer) or automatically (by the 3D printer or the computer system controlling it), such as by modifying CAD files to match the specifications of the 3D printer. The production process may additionally or alternatively include determining (e.g., automatically by the 3D printer or the computer system controlling it) the printing orientation from the CAD model, for example, to minimize overhang volume (as described in European Patent No. 3327593, which is incorporated herein by reference), layer slicing (i.e., determining the thickness of each layer), and the layer-by-layer path / trajectory of the 3D printer head, and other characteristics (e.g., for the laser beam, such as path, speed, intensity / temperature, and other parameters).

[0178] The product / part can also be a machined part (i.e., a part manufactured by machining), such as a milled part (i.e., a part manufactured by milling). As mentioned earlier, the part can also be a thin casting, in which case the machined part is the corresponding mold. In this case, the production process may include the step of determining the CAM file. This step can be performed automatically by any suitable CAM solution to automatically obtain the CAM file from the CAD model of the machined part. Determining the CAM file may include (e.g., automatically) checking the CAD model for any geometric special features (e.g., errors or artifacts) that may affect the production process, and (e.g., automatically) correcting these special features. For example, if the CAD model still includes sharp edges (because machining or milling tools cannot create sharp edges), then CAD model-based machining or milling may not be performed. In this case, determining the CAM file may include (e.g., automatically) rounding or chamfering these sharp edges (e.g., with a circle or chamfer radius corresponding to the cutting head radius of the machining tool (e.g., substantially equal within the tolerance error)), so that CAD model-based machining or grinding can be performed. More generally, the determination of CAM files can automatically include rounding or chamfering of geometry within the CAD model that is incompatible with the radius of the machining or milling tool to facilitate machining / milling. As mentioned earlier, this checking and possible corrections (such as rounding or chamfering of geometry) can be performed automatically, but can also be manually corrected by the user (such as a machining engineer) to the CAD and / or CAM solution, for example, by the solution constraining the user to perform corrections to make the CAD model conform to the specifications of the tools used in the machining process.

[0179] In addition to inspection, determining the CAM file may include (e.g., automatically) determining the machining or milling path, i.e., the path taken by a machining tool to process the product. The path may include a set of coordinates and / or parametric trajectories followed by the machining tool for machining, and determining the path may include (e.g., automatically) calculating these coordinates and / or trajectories based on the CAD model. This calculation may be based on the calculation of the boundaries of a Minkowski subtraction of the CAD model through the CAD model representation of the machining tool, as discussed in, for example, European patent application EP21306754.9 filed by Dassault Systèmes on December 13, 2021, which is incorporated herein by reference. It should be understood that the path may be a single path, e.g., the tool follows continuously without interrupting contact with the material to be cut. Alternatively, the path may be a series of sub-paths followed by the tool in a specific order, e.g., the tool follows each sub-path continuously without interrupting contact with the material to be cut. Optionally, determining the CAM file may then include (e.g., automatically) setting machine parameters, including cutting speed, cutting / piercing height, and / or mold opening stroke, for example, based on the determined path and machine specifications. Optionally, determining the CAM file may then include (e.g., automatically) configuring nesting, wherein the CAM solution determines the optimal orientation of the part to maximize machining efficiency.

[0180] In the case of machining or milling parts, the determination of the CAM file thus results in and outputs a CAM file that includes machining paths and, optionally, nested machine parameters and / or specifications. The output CAM file can then be fed (e.g., directly and automatically) to a machining tool and / or programmed by reading the file. Subsequently, the production process includes production / manufacturing steps where the machine processes the product according to a production file (e.g., by directly and automatically executing the production file). The machining process involves the machining tool cutting real-world blocks of material to reproduce, for example, within tolerances (e.g., tens of micrometers for milling) the geometry and / or distribution of the material captured by the CAD model.

[0181] The product / part can also be a molded part, i.e., a part manufactured by molding (e.g., injection molding or casting, in which case the part can be a thin casting). In this case, the production process may include the step of determining the CAM file. This step can be performed automatically by any suitable CAM solution to automatically obtain the CAM file from the 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 check whether the geometry and / or distribution of the 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. Performing the checks and appropriate corrections (if any) can be performed automatically, or alternatively by the user (e.g., the molding engineer), for example using a CAD and / or CAM solution that allows the user to perform appropriate corrections to the CAD model, but constrains his / her corrections to make the CAD model conform to the specifications of the molding tool. The checks may include: verifying that the virtual product represented by the CAD model is consistent with the dimensions of the mold, and / or verifying that the CAD model includes all draft angles required for product demolding, as known from the molding process itself. Determining the CAM file may also include determining the amount of liquid material to be molded and / or the time for the liquid material to harden / solidify within the mold based on the CAD model, and outputting a CAM file including these parameters. The production process then includes (e.g., automatically) performing molding based on the output file, wherein the mold shapes the liquid material into a shape corresponding to the geometry and / or distribution of the material captured by the CAD model within the determined hardening time (e.g., within tolerances, such as draft angles introduced for demolding or modified draft angles)).

[0182] The product / part alternative can also be a stamped part, also known as a "stamped part," i.e., a part manufactured during the stamping process. In this case, the production process may include (e.g., automated) determining CAM files based on a CAD model. The CAD model represents the stamped part; for example, if the part is to include flanges, there may be one or more flanges. In the latter case, additional material may be removed to form an unfolded state of one or more flanges of the part, as is known from the stamping process itself. Therefore, the CAD model includes portions representing the part without flanges (in some cases, the entire part), and possibly additional external patch portions representing flanges (if present), which may also contain additional material (if present). This additional patch portion may exhibit g2 continuity over a certain length and then g1 continuity over a certain length.

[0183] In this stamping scenario, determining the CAM file may include (e.g., automatically) determining stamping press parameters, such as the dimensions of the stamping die or punch and / or stamping force, based on the geometry and / or material distribution of the virtual product captured from the CAD model. If the CAD model also includes a representation of additional material to be removed to form the unfolded state of one or more flanges of the part, the excess material to be removed may be cut, for example, by machining, and determining the CAM file may also include determining the corresponding machining CAM file, such as as previously described. If one or more flanges are present, determining the CAM file may include determining the geometric specifications of the g2 continuity and g1 continuity portions, which allow the flanges to be folded toward the inner surface of the stamped part and along the g2 continuity length during the folding process, after the stamping itself and after the removal of additional material. Therefore, the CAM file thus determined may include: parameters of the stamping tool, optionally the specifications for folding the flanges (if any), and optionally machining production documents for removing additional material (if any).

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

[0185] This method is implemented by a computer. This means that the steps (or essentially all steps) of the method are executed by at least one computer or any similar system. Therefore, the execution of the steps by a computer may be fully automatic or semi-automatic. In the example, the triggering of at least some steps of the method can be performed through user-computer interaction. The required level of user-computer interaction may depend on the expected level of automation and be balanced with the need to fulfill the user's wishes. In the example, this level may be user-defined and / or predefined.

[0186] A typical example of a computer implementation of a method is to execute the method using a system suitable for this purpose. This system may include a processor coupled to memory and a graphical user interface (GUI), on which a computer program containing instructions for executing the method is recorded. The memory may also store a database. The memory is any hardware suitable for such storage and may comprise several physically distinct parts (e.g., one for the program, and perhaps one for the database).

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

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

[0189] A computer program may include computer-executable instructions, which include means for causing the system to perform the method. The program may be recorded on any data storage medium, including the system's memory. The program may be implemented, for example, in digital electronic circuitry, or in computer hardware, firmware, software, or a combination thereof. The program may be implemented as means, for example, tangibly embodied in a machine-readable storage device for use in a product executed by a programmable processor. The method steps may be executed by a programmable processor that executes the program of instructions to perform the function of the method by manipulating input data and generating output. Thus, the processor may be programmable and coupled to receive data and instructions from the data storage system, at least one input device, and at least one output device, and to send data and instructions to the data storage system, at least one input device, and at least one output device. The application program can be implemented in a high-level procedural or object-oriented programming language, or, if desired, in assembly or machine language. In any case, the language may be a compiled or interpreted language. The program may be a full installation program or an update program. The application of the program on the system in any case results in instructions for performing the method. Alternatively, the computer program can be stored and executed on a server in a cloud computing environment, with the server communicating with one or more clients across a network. In this case, the processing unit executes the instructions included in the program, thereby enabling the method to execute on the cloud computing environment.

Claims

1. A computer-implemented method for detecting housing features or offset features in a 3D model representing a mechanical component, the method comprising: The 3D model is segmented into fragments; as well as Browse all possible fragment pairs, and for each fragment pair, detect whether the fragments in the pair are offset from each other by an offset value.

2. The method according to claim 1, wherein, For each pair of segments, including a first segment and a second segment, detecting whether the segments of the pair are offset from each other includes: For each element of the first segment, an element of a second segment is determined to exist that is offset relative to an element of the first segment if the centroids and normals of the two elements are offset from each other.

3. The method according to claim 2, wherein, The existence of an element in a second segment offset relative to the first segment is determined if the centroids and normals of the two elements are offset from each other, including: Calculate the distance between the nearest element of the first segment and the nearest element of the second segment; The calculated distance is compared with the average distance between the two segments; Compare the normals of each element at its centroid and verify that the normals are collinear and opposite in direction within the tolerance value; If the difference between the calculated distance and the average distance between the two segments is less than the tolerance, and if the normals are collinear within the tolerance value and in opposite directions within the tolerance value, then the element of the first segment is determined to be offset relative to the nearest element.

4. The method according to claim 3, wherein, If the first segment and the second segment have the same canonicity, then the average distance between the two segments is the distance between the canonical surfaces of the two segments.

5. The method according to claim 3 or 4, wherein, If an element corresponds to the noise portion of the 3D model, then the normal at the centroid of the element is the normal of the projection of the centroid onto the fitted surface of the corresponding segment.

6. The method according to any one of claims 1 to 5, wherein, The method further includes: Merge symmetrically detected fragment pairs.

7. The method according to any one of claims 1 to 6, wherein, The method further includes: The detected fragment pairs are clustered based on their offset values.

8. The method according to claim 7, wherein, The method further includes: In at least some clusters, detected fragment pairs located on the same side of the shell geometry defined by the shell body corresponding to the cluster are removed.

9. The method according to claim 8, wherein, The method further includes: For each cluster, adjacent offset fragment pairs within the cluster are merged, thereby producing a set of fragment pairs that are offset from each other.

10. The method according to claim 9, wherein, The method further includes: Remove fragment sets that include a single fragment and / or fragment sets that share a common fragment and / or fragment sets that do not adequately cover the 3D model.

11. The method according to claim 10, wherein, The method further includes: for each set pair, Detect fragments that are not in the pair but are adjacent to the pair in two sets.

12. The method according to claim 10 or 11, wherein, The method further includes: For each set of the pairs, calculate the boundary sphere of the surface covered by the set; and If the calculated boundary spheres have different radii, then the set corresponding to the smaller radius is determined to be the inner set and the set corresponding to the larger radius is determined to be the outer set.

13. A computer-readable data storage medium having a computer program containing instructions that, when executed by a computer, cause the computer to perform the method of any one of claims 1 to 12.

14. A computer system comprising a processor coupled to a memory, the memory storing a computer program including instructions that, when executed by a computer, cause the computer to perform the method of any one of claims 1 to 12.

Citation Information

Patent Citations

  • Orientation of a real object for 3D printing

    EP3327593A1

  • Segmenting a 3D modeled object representing a mechanical part

    EP4044116C0

  • Machine-learning for 3D segmentation

    EP4057222A1

  • Material extrusion detection method

    EP4092559A1

  • Processing a CAD 3D model of a mechanical part

    EP4099206A1