3D Curved Surface Profile
Operator Function
Calculate geometric tolerance - Curved Surface Profile
As shown in the figure below, for the input theoretical cylinder points, connect them with the perpendicular foot on the axis, extend the reverse line to find the intersection with the actual cylinder, and take the distance from the intersection to the corresponding theoretical cylinder point as 𝑑1, 𝑑2, ..., 𝑑n. The surface profile is:
2 × 𝑚𝑎𝑥(𝑑1, 𝑑2, ..., 𝑑n)
Parameter Introduction
Input Parameters

| Parameter | Range | Default Value | Description | Illustration |
|---|---|---|---|---|
| Input Image | 0-31 | 0 | The IM number for image input | |
| 3D Reference | You can select a reference via binding | ![]() | ||
| X | X-coordinate value of the 3D reference parameter; can be set via binding to X | |||
| Y | Y-coordinate value of the 3D reference parameter; can be set via binding to Y | |||
| Z | Z-coordinate value of the 3D reference parameter; can be set via binding to Z | |||
| X-Axis Angle | -10000000000.000-10000000000.000 | X-axis angle value of the 3D reference parameter; can be set via binding for X-Axis Angle | ||
| Y-axis angle | -10000000000.000-10000000000.000 | 3D reference parameter Y-axis angle value; can be set via binding Y-axis angle | ||
| Z-axis angle | -10000000000.000-10000000000.000 | 3D reference parameter Z-axis angle value; can be set via the Z-axis angle binding |
Calculation Parameters

| Parameter | Range | Default Value | Description | Illustration |
|---|---|---|---|---|
| Actual Cylinder | Cylinder | - | Actual cylinder bottom face, top face center and radius | |
| Theoretical Cylinder Surface | json file | - | Sampling points on the theoretical cylinder surface | |
| Fit Point Cloud | true/false | false | When enabled, the point cloud fitting function is used. The theoretical cylinder surface fits the selected point cloud as closely as possible | |
| Use Region Parameters | true/false | false | Enable when fitting point cloud. When enabled, point cloud selection is activated; when disabled, the entire IM point cloud is selected | |
| Region | 2D Window/2D Circular Window/2D Polygon Window/Box/Cylindrical Box/Rotated Box/Point Set (binding only) | Box | Manually select the point cloud to be fitted | |
| Theoretical Cylinder Fitting Method | Least Squares/RANSAC | Least Squares | Fit the cylinder according to the selected method | |
| K-Nearest Neighbors | 3-500 | 20 | The number of surrounding points searched when calculating the normal of a point on the point cloud. If the search point count is too large, it will introduce other points far from the current point, leading to inaccurate estimation; if the value is too small, some neighboring points will be ignored, also affecting the accuracy of normal estimation. | ![]() |
| Distance Threshold | 0-10000 | 0.15 | When the distance between a data point and the fitted model is less than this threshold, the data point is considered an inlier (i.e., a point that conforms to the model); otherwise, it is considered an outlier (i.e., a point that does not conform to the model) | ![]() |
| Max Iterations | 100-10000 | 500 | Set the maximum number of iterations |
Result Display

| Parameter | Range | Default Value | Description | Illustration |
|---|---|---|---|---|
| Actual Fitted Cylinder | true/false | false | The input actual fitted cylinder. If enabled, displayed on IM | |
| Theoretical Cylinder | true/false | false | The input theoretical cylinder. If enabled, displayed on IM | |
| Theoretical Cylinder Surface Points and Intersections | true/false | false | Displays two sets of points: the input theoretical cylinder surface points and the intersections of the reverse extension of the line connecting the theoretical cylinder surface points with the perpendicular foot on the theoretical cylinder central axis and the actual cylinder surface. If enabled, displayed on IM | |
| Central Axis Points and Theoretical Cylinder Surface Intersections | true/false | false | The intersections of the points on the central axis with the theoretical cylinder surface. If enabled, displayed on IM | |
| Surface Profile | true/false | false | The output surface profile. If enabled, displayed on IM |
Output Parameters

| Name | Type | Range | Description |
|---|---|---|---|
| Result | bool | true/false | true for success false for failure |
| Warning | bool | true/false | true indicates a warning false indicates no warning |
| Message | string | Output success, error, or warning messages. Empty if no error or warning. | |
| Time | float | Operator execution time, unit: ms | |
| theoretical_cylinder | cylinder | Theoretical cylinder parameters | |
| intersections | point3d[] | Intersections | |
| profile_of_surface | float | Surface profile | |
| result | string | OK/NG | Whether the surface profile is within range |
Tip
For more detailed parameter type descriptions, please refer to Type Definition
Exception Troubleshooting
| No. | Exception Information | Corresponding Parameter | Solution |
|---|---|---|---|
| 1 | Input point cloud has fewer than 6 points | Confirm whether the IM contains 6 valid points. If not, load a point cloud or switch to a compliant IM | |
| 2 | Actual cylinder type is {0}, invalid input type | Cylinder Type | Check if the cylinder type is Cylinder |
| 3 | Parameter {0} cannot be empty | Path | Check if the path is empty |
| 4 | File {0} does not exist or cannot be accessed | Path | Check if the path is valid |
| 5 | Input theoretical cylinder fitting method is {0}, invalid fitting method | Fitting Method | Check if the fitting method is one of Least Squares/RANSAC |
| 6 | Input theoretical cylinder point cloud is empty | Check if the theoretical cylinder surface file is empty | |
| 7 | Input profile range minimum is greater than maximum, invalid profile range | Set the profile range minimum to be less than or equal to the maximum | |
| 8 | Input region type is {0}, invalid region type | Region Type | Check if the region type is one of 2D Window/2D Circular Window/2D Polygon Window/Box/Cylindrical Box/Rotated Box/Point Set |
| 9 | Input polygon has fewer than 3 vertices, cannot form a polygon | Add 2D polygon window vertices to make the number of vertices at least 3 | |
| 10 | Input region is empty | 1. Check if the selection is empty 2. Check if the point set is empty |
Example Introduction
Engineering Design
Select the
Load Point Cloudtool to load the 3D point cloud to be processed into IM0;Select the
3D Cylinder Fittingtool to fit the actual plane.Select the
3D Curved Surface Profiletool.
Tool Usage
Select the input image to be operated on. The image number must match the IM number of the image in the project.
Do not enable region parameters, or enable region and select the region type as Box. Move the box to the position to be tested, surrounding the point cloud to be tested.
Usage Tips
1. Drag or scale the box through the ROI controller on the image window;
2. Directly modify the start or end coordinates of the box in the calculation parameters to adjust the box position and size
Set parameters
Check the desired display content in the result display section
Click
Testto check if the image window and parameters meet expectationsIf there are no issues, click
Save. Run the operator in the run list to view the running results in the corresponding IM.





