<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Mech. Eng</journal-id>
<journal-title>Frontiers in Mechanical Engineering</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Mech. Eng</abbrev-journal-title>
<issn pub-type="epub">2297-3079</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1358061</article-id>
<article-id pub-id-type="doi">10.3389/fmech.2024.1358061</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Mechanical Engineering</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Data model-based toolpath generation techniques for CNC milling machines</article-title>
<alt-title alt-title-type="left-running-head">Liao and Huang</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fmech.2024.1358061">10.3389/fmech.2024.1358061</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Liao</surname>
<given-names>Jianbin</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2608657/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/data-curation/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Huang</surname>
<given-names>Zeng</given-names>
</name>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff>
<institution>School of Mechanical Engineering</institution>, <institution>Guangxi Technological College of Machinery and Electricity</institution>, <addr-line>Nanning</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1828459/overview">Zhibin Zhao</ext-link>, Xi&#x2019;an Jiaotong University, China</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1790185/overview">Baosu Guo</ext-link>, Yanshan University, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1267283/overview">Zhongmei Gao</ext-link>, Wuhan University of Technology, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Jianbin Liao, <email>13737085792@163.com</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>07</day>
<month>03</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="collection">
<year>2024</year>
</pub-date>
<volume>10</volume>
<elocation-id>1358061</elocation-id>
<history>
<date date-type="received">
<day>19</day>
<month>12</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>09</day>
<month>02</month>
<year>2024</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2024 Liao and Huang.</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Liao and Huang</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>
<bold>Introduction:</bold> With the development of computer technology and data modeling, the use of point cloud models to generate tool paths is particularly important for improving productivity and accuracy.</p>
<p>
<bold>Methods:</bold> This study proposes a new method that first preprocesses the point cloud data using four-point denoising and octree methods to improve processing efficiency. Subsequently, roughing tool paths were analyzed using the layer slicing method and finishing paths using the residual height method.</p>
<p>
<bold>Results and Discussion:</bold> The experimental results show that the layer slicing method has a minimum error close to 10% on the roughing path generation and the computation time is reduced to 35&#xa0;s, while the residual height method has an error rate of 10.17% on the finishing path and the computation time is only 11.82&#xa0;s, which reflects a high trajectory smoothness and accuracy. The above results show that the study not only optimizes the tool path generation process and improves the machining efficiency and accuracy, but also demonstrates the potential application of point cloud models in the machining of complex parts.</p>
<p>
<bold>Conclusion:</bold> The novel tool roughing and finishing methods provide more reliable path planning for actual machining operations, and future research will be devoted to further improving the performance of the data processing algorithms and exploring more efficient path planning strategies to facilitate automated production.</p>
</abstract>
<kwd-group>
<kwd>CNC milling machine</kwd>
<kwd>toolpath</kwd>
<kwd>point cloud model</kwd>
<kwd>rough machining</kwd>
<kwd>finish machining</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Digital Manufacturing</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1 Introduction</title>
<p>Toolpath generation is a core task in computer numerical control (CNC) milling machine operations, directly impacting processing quality, efficiency, and tool lifespan (<xref ref-type="bibr" rid="B1">Chen et al., 2021</xref>). As a research area with tremendous potential, toolpath generation technology has been extensively explored by scholars worldwide. Techniques such as real-time toolpath generation, toolpath generation for multi-axis and five-axis machine tools, and data-driven trajectory generation have been proposed (<xref ref-type="bibr" rid="B8">Li and Tang, 2021</xref>). While these techniques have met the requirements of CNC equipment in the past, they are increasingly unable to satisfy current mass demands due to technological innovations and rising structural requirements for processed parts (<xref ref-type="bibr" rid="B6">Huang et al., 2020</xref>). With the rise of three-dimensional (3D) data models, point cloud models, as a special type of 3D model, are widely used in various fields due to their high resolution, precise 3D representation, and real-time data characteristics, addressing complex issues (<xref ref-type="bibr" rid="B14">Praveen et al., 2020</xref>). In light of this, the research innovatively introduces point cloud models based on 3D models. After preprocessing, including denoising and down-sampling, new technical methods for toolpath generation in rough and finish machining are proposed, aiming to advance the application of data models in toolpath generation technology for CNC milling machines. This research is divided into four parts: the first analyzes and summarizes previous research, the second introduces how novel toolpath generation methods for rough and finish machining are designed using point cloud data models, the third tests the performance of these two methods, and the final part provides a summary of the article.</p>
</sec>
<sec id="s2">
<title>2 Related work</title>
<p>CNC milling machines are commonly used in modern manufacturing to precisely and efficiently process various complex curved components. The generation of toolpath trajectories is a critical step in the machining process of NC milling machines, directly impacting the quality and efficiency of part manufacturing. Traditional methods for generating toolpath trajectories are primarily based on experience and expert knowledge, leading to challenges in design and difficulty in controlling the outcomes. In response to these challenges, researchers both domestically and internationally have conducted various studies. Li and collaborators identified issues in the side milling of thin-walled workpieces, where excessive cutting forces or directional deviations could compromise the geometric accuracy of the processed parts. In addressing this, the research team proposed a method for generating multi-pass toolpaths using semi-finish machining with double-sided milling. Experimental results demonstrated that this approach is more favorable for the finish machining of thin-walled workpieces compared to traditional milling methods, exhibiting robustness (<xref ref-type="bibr" rid="B9">Li et al., 2021</xref>). He and his colleagues observed that discontinuities in the tangential components of toolpath trajectories in five-axis hybrid numerical control machines could result in speed fluctuations, adversely affecting the surface quality of the workpiece. To mitigate this issue, the research team introduced a smooth toolpath interpolation method. Experimental results indicated that this method is highly effective in practical machining trials, ensuring continuity in cutting parameters (<xref ref-type="bibr" rid="B5">He et al., 2022</xref>). Liu and his co-authors aimed to enhance curvature continuity and smoothness during the cutting process. They proposed a multi-relationship spiral trochoidal milling strategy by combining toolpath trajectories and tool axis vectors in five-axis side milling. Experimental results demonstrated the strong practical feasibility of this method, contributing to improved part manufacturing quality (<xref ref-type="bibr" rid="B11">Liu et al., 2020</xref>). Liang and collaborators sought to enhance the machining effectiveness of non-uniform rational B-spline surfaces in computer-aided design and manufacturing. The research team proposed a universal method for generating toolpath trajectories for such surfaces. Experimental results showed that this method is applicable to various non-uniform rational B-spline surfaces, offering higher smoothness and shorter toolpath lengths (<xref ref-type="bibr" rid="B10">Liang et al., 2020</xref>).</p>
<p>The CNC milling machine toolpath generation technology can use various data models to describe the characteristics and patterns of toolpaths. Commonly used models include B-spline curve models, simulation models, 3D models, and machine learning models. To enhance the global optimization effect of polynomial functions, Gawali and others introduced the B-spline consistency algorithm for improvement and proposed a polynomial B-spline optimization algorithm. Experimental results demonstrate that this algorithm consistently captures global minima with specified precision compared to CENSO evaluation and GloptiPoly solution methods (<xref ref-type="bibr" rid="B3">Gawali et al., 2021</xref>). Liu and others aimed to model and analyze the reliability of machine tool spindles, quantifying uncertainty factors using imprecise probability theory. They proposed a reliability modeling and analysis method based on imprecise probability theory. Simulation results show that this method is applicable to various uncertain factors and data, demonstrating strong suitability for analyzing machine tool spindles (<xref ref-type="bibr" rid="B12">Liu et al., 2022</xref>). Sheng and others identified issues with long production cycles and low efficiency when using artificial data measurements for computer-aided design. Consequently, they proposed a control system for flat processing machine tools using machine vision. Experimental results indicate that this system significantly improves production efficiency and reduces errors in image contouring (<xref ref-type="bibr" rid="B16">Sheng et al., 2022</xref>). Sales and his colleagues observed that topology optimization, especially in path planning during computer-aided design, is often overlooked, leading to a loss of structural performance in the designed material. They proposed a toolpath generation strategy based on straight-line topology optimization. Experimental results suggest that this method has certain advantages when applied to computer-aided manufacturing, significantly improving structural stiffness (<xref ref-type="bibr" rid="B15">Sales et al., 2021</xref>).</p>
<p>In summary, CNC milling machine toolpath generation technology has significantly improved, and the use of data models for toolpath generation has been confirmed. However, challenges remain in handling large-scale data and real-time processing during the manufacturing process. To address this, researchers are exploring the use of point cloud models in 3D models for data analysis, aiming to construct a novel CNC milling machine toolpath generation system to enhance processing efficiency and quality.</p>
</sec>
<sec id="s3">
<title>3 CNC milling machine toolpath generation based on point cloud models</title>
<p>For different point cloud data models, the research initially focuses on denoising and down-sampling point cloud models, providing an effective data foundation for subsequent toolpath generation methods. Building upon this foundation, the study explores improvements in traditional toolpath generation techniques, specifically investigating methods for toolpath generation in rough machining and finish machining.</p>
<sec id="s3-1">
<title>3.1 Denoising and downsampling of point cloud models</title>
<p>Point cloud models are a type of geometric model used to represent discrete points in 3D space. Each point in the model contains 3D coordinates and RGB values (<xref ref-type="bibr" rid="B13">Nirala and Agrawal, 2020</xref>). These models can be classified into scattered point clouds, array point clouds, and scanned point clouds. The points of the scanned point cloud all lie on the scan line, which is not fully present. The tracing line is not fully present means that the scanning process, the scanning line (or scanning path) does not completely cover or pass through the entire surface of the workpiece, or there are some missed parts. This may be due to the limitations of the scanning equipment, obstruction during the scanning process, scanning angle or positional problems, and so on. Array point cloud data is uniformly distributed with points at each intersection. Scattered point clouds, on the other hand, exhibit a completely random distribution. Regardless of the type of point cloud, during actual instrument measurements, the data are susceptible to noise and outliers due to the inherent characteristics of the measurement system and its precision. Therefore, in order to avoid data errors on the subsequent path generation, the acquisition and noise reduction processing of the point cloud data is particularly important. First, the study uses a high-performance 3D scanning equipment to scan the data. The process ensures a sufficiently high sampling density to capture the minute details of the workpiece surface. In addition, the sampling spacing was set to a fixed value, which ensured that the point cloud data were adequately captured. By using this scanning equipment, the study obtained accurate and detailed point cloud data models, which provided a reliable basis for subsequent algorithmic studies. Common denoising methods include radius filtering, Gaussian filtering, interactive denoising and the four-point denoising method (<xref ref-type="bibr" rid="B4">He et al., 2021</xref>). While removing noise, the four-point noise reduction method is more capable of retaining the detail information in the point cloud data compared to radius filtering and Gaussian filtering, and at the same time realizes a better smoothing effect, which makes the surface of the point cloud smoother without losing the key shape features (<xref ref-type="bibr" rid="B17">Zheng et al., 2022</xref>). Most importantly, the four-point noise reduction method has a certain degree of adaptivity, which can better adapt to the different densities and distributions in the point cloud (<xref ref-type="bibr" rid="B7">Leal et al., 2020</xref>). The four-point denoising method has been introduced in this study. The four-point denoising method uses a single scan line as a reference and calculates the spatial distances between consecutive points <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The distance calculation between any two points is given by Formula (<xref ref-type="bibr" rid="B1">Chen et al., 2021</xref>).<disp-formula id="e1">
<mml:math id="m5">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e1">1</xref> (<xref ref-type="bibr" rid="B1">Chen et al., 2021</xref>), <inline-formula id="inf5">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the 3D spatial position of the first point, and <inline-formula id="inf6">
<mml:math id="m7">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the 3D spatial position of the second point. If points <inline-formula id="inf7">
<mml:math id="m8">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf8">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are situated on the same side of the line connecting <inline-formula id="inf9">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf10">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the four-point judgment process is described in Formula (<xref ref-type="bibr" rid="B8">Li and Tang, 2021</xref>).<disp-formula id="e2">
<mml:math id="m12">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x222a;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e2">2</xref> (<xref ref-type="bibr" rid="B8">Li and Tang, 2021</xref>), <inline-formula id="inf11">
<mml:math id="m13">
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a given threshold, <inline-formula id="inf12">
<mml:math id="m14">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the <inline-formula id="inf13">
<mml:math id="m15">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>-th scan line, and <inline-formula id="inf14">
<mml:math id="m16">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents a point on the scan line. The four-point denoising process is illustrated in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Four point noise reduction process.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g001.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F1">Figure 1</xref>, it can be observed that the process involves setting values for <inline-formula id="inf15">
<mml:math id="m17">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf16">
<mml:math id="m18">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, selecting four points on the <inline-formula id="inf17">
<mml:math id="m19">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>-th scan line, and calculating the distances between pairs of points. If the difference in distances is greater than the threshold, point <inline-formula id="inf18">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is identified as noise and removed. If the difference is less than the threshold, the noise point could be <inline-formula id="inf19">
<mml:math id="m21">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> or <inline-formula id="inf20">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. In this case, a smoothing denoising operation is performed using the arithmetic mean of PL, <inline-formula id="inf21">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and PI. If points <inline-formula id="inf22">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf23">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are on opposite sides of the line connecting <inline-formula id="inf24">
<mml:math id="m26">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf25">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, then <inline-formula id="inf26">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is identified as noise and is removed, and the arithmetic mean of <inline-formula id="inf27">
<mml:math id="m29">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf28">
<mml:math id="m30">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is used for interpolation. This process is repeated until the number of points on the scan line is less than <inline-formula id="inf29">
<mml:math id="m31">
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, and the number of scan lines is less than <inline-formula id="inf30">
<mml:math id="m32">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, at which point the results are outputted. After denoising, down-sampling of the point cloud data is necessary to reduce the computational load of the toolpath algorithm. The study employs an octree structure to perform 3D grid processing on the point cloud model. The octree structure is illustrated in <xref ref-type="fig" rid="F2">Figure 2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Schematic diagram of octree structure.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g002.tif"/>
</fig>
<p>In <xref ref-type="fig" rid="F2">Figure 2</xref>, each face of the cube is subdivided in a fixed format. There is one point for each node, representing a cubic model. This process is carried out for each face of the node cube, and eight initial child nodes are yielded. This process is repeated until the volume of the cubic network or the point cloud data is insufficient to support further subdivision, at which point the operation ceases. In the actual scanned point cloud, a bounding box of length and width is created and divided into KW grids. Grids with data points are considered real grids, while those without data points are virtual grids. The center points of real grids are used to replace other point cloud data in the scan line, and this process is repeated until all scan lines are processed.</p>
</sec>
<sec id="s3-2">
<title>3.2 Rough toolpath generation based on point cloud models</title>
<p>The toolpath refers to the trajectory of the tool&#x2019;s movement relative to the workpiece in CNC machining. This process involves tool approach, machining, milling, and the path traveled back to the tool approach point. The toolpath comprises concepts such as tool position points, tool contact points, step size, pitch, and processing bandwidth (<xref ref-type="bibr" rid="B2">Choudhuri et al., 2023</xref>). General trajectory generation methods typically go through steps such as point cloud data modeling, surface data reconstruction, and surface path planning. Due to the time-consuming and labor-intensive nature of the reconstruction step, and considering that rough machining is primarily used to remove excess metal material without strict requirements on toolpaths, the study adopts a layered and iterative cutting approach. The schematic diagram of the process for slicing scattered point clouds is illustrated in <xref ref-type="fig" rid="F3">Figure 3</xref>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Schematic diagram of slicing in layered cutting.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g003.tif"/>
</fig>
<p>As depicted in <xref ref-type="fig" rid="F3">Figure 3</xref>, the complete point cloud data set is divided into multiple sections through multi-layer slicing operations. By intersecting the point cloud data of each section, an overview of the entire point cloud model can be obtained, and the computational expression of this process is shown in Formula (<xref ref-type="bibr" rid="B6">Huang et al., 2020</xref>).<disp-formula id="e3">
<mml:math id="m33">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x394;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>&#x394;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>max</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e3">3</xref> (<xref ref-type="bibr" rid="B6">Huang et al., 2020</xref>), <inline-formula id="inf31">
<mml:math id="m34">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the distance between adjacent layers of slices, and <inline-formula id="inf32">
<mml:math id="m35">
<mml:mrow>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>E</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the number of layers of slices. As scattered point clouds are discretely distributed, to further optimize the contour of the point cloud model, the study introduces the concept of slicing thickness. The relationship between the slicing plane and the slicing thickness is expressed in Formula (<xref ref-type="bibr" rid="B14">Praveen et al., 2020</xref>).<disp-formula id="e4">
<mml:math id="m36">
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mover accent="true">
<mml:mi>k</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e4">4</xref> (<xref ref-type="bibr" rid="B14">Praveen et al., 2020</xref>), <inline-formula id="inf33">
<mml:math id="m37">
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the slicing thickness, <inline-formula id="inf34">
<mml:math id="m38">
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents point cloud density, and <inline-formula id="inf35">
<mml:math id="m39">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>k</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> represents the adjustment coefficient. The slice thickness is a critical parameter whose numerical determination is inextricably linked to computational efficiency, point cloud density and machine performance. First, small slice thickness increases the number of tool trajectories, which may lead to a decrease in computational efficiency. Therefore, a trade-off between computational efficiency and machining accuracy is required. Secondly, a high density point cloud can use a relatively large slice thickness, while a low density point cloud may require a smaller slice thickness. Finally, choosing the right machine tool for machining can improve the efficiency and accuracy of slicing thicknesses. At this point, selecting a point <inline-formula id="inf36">
<mml:math id="m40">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> within a section, the distance calculation formula between <inline-formula id="inf37">
<mml:math id="m41">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and a nearby point <inline-formula id="inf38">
<mml:math id="m42">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is expressed in Formula (<xref ref-type="bibr" rid="B9">Li et al., 2021</xref>).<disp-formula id="e5">
<mml:math id="m43">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e5">5</xref> (<xref ref-type="bibr" rid="B9">Li et al., 2021</xref>), <inline-formula id="inf39">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the 3D coordinates of point <inline-formula id="inf40">
<mml:math id="m45">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf41">
<mml:math id="m46">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the coordinates of point <inline-formula id="inf42">
<mml:math id="m47">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The calculation of point cloud density at this point is expressed in Formula (<xref ref-type="bibr" rid="B5">He et al., 2022</xref>).<disp-formula id="e6">
<mml:math id="m48">
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mi>N</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>/</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e6">6</xref> (<xref ref-type="bibr" rid="B5">He et al., 2022</xref>), <inline-formula id="inf43">
<mml:math id="m49">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents randomly selected <inline-formula id="inf44">
<mml:math id="m50">
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> points, and <inline-formula id="inf45">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the distance value between point <inline-formula id="inf46">
<mml:math id="m52">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and point <inline-formula id="inf47">
<mml:math id="m53">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Additionally, considering that point clouds lack a topological structure, it is necessary to first perform a two-dimensional grid division of the data for each section, followed by equidistant processing of the point cloud network. The two-dimensional (2D) meshing is further divided into mesh generation, coordinate transformation and data interpolation. Firstly, the point cloud data is projected onto a plane by a specific mesh generation algorithm to form a 2D mesh. Secondly, the 3D coordinates of the point cloud data are mapped to the 2D mesh coordinate system by means of coordinate transformation. Finally, for the uncovered areas of the grid, interpolation can be used to fill them, ensuring that there are corresponding data points on the entire 2D grid. After obtaining the extreme values of the section data, a 2D bounding grid perpendicular to the <italic>Z</italic>-axis is constructed using the coordinate extreme values. The number of grids on the <italic>X</italic> and <italic>Y</italic>-axes is expressed in Formula (<xref ref-type="bibr" rid="B11">Liu et al., 2020</xref>).<disp-formula id="e7">
<mml:math id="m54">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e7">7</xref> (<xref ref-type="bibr" rid="B11">Liu et al., 2020</xref>), <inline-formula id="inf48">
<mml:math id="m55">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the number of layers on the <italic>X</italic>-axis, and <inline-formula id="inf49">
<mml:math id="m56">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the number of layers on the <italic>Y</italic>-axis. The grid position number of any point <inline-formula id="inf50">
<mml:math id="m57">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is denoted as <inline-formula id="inf51">
<mml:math id="m58">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, and the expression is given in Formula (<xref ref-type="bibr" rid="B10">Liang et al., 2020</xref>).<disp-formula id="e8">
<mml:math id="m59">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e8">8</xref> (<xref ref-type="bibr" rid="B10">Liang et al., 2020</xref>), <inline-formula id="inf52">
<mml:math id="m60">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the side length of a square grid. The grid with the extreme values calculated is referred to as the boundary grid. After equidistant processing and sorting of the boundary grid, the tool position grid is obtained. The sorting is based on the center point of each cell, and assuming the grid coordinates for the <inline-formula id="inf53">
<mml:math id="m61">
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>-th row and <inline-formula id="inf54">
<mml:math id="m62">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>-th column are <inline-formula id="inf55">
<mml:math id="m63">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, the coordinate calculation formula is expressed in Formula (<xref ref-type="bibr" rid="B3">Gawali et al., 2021</xref>).<disp-formula id="e9">
<mml:math id="m64">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>The algebraic meaning in Formula <xref ref-type="disp-formula" rid="e9">9</xref> (<xref ref-type="bibr" rid="B3">Gawali et al., 2021</xref>) is consistent with the previous explanation. Once the sorting process is completed, an equidistant processing can be performed. If <inline-formula id="inf56">
<mml:math id="m65">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> belongs to one of the maximum grids in column <inline-formula id="inf57">
<mml:math id="m66">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the sequentially corresponding grid index after equidistant processing is marked as <inline-formula id="inf58">
<mml:math id="m67">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula>, forming the set <inline-formula id="inf59">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. If <inline-formula id="inf60">
<mml:math id="m69">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> belongs to one of the minimum grids in column <inline-formula id="inf61">
<mml:math id="m70">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the corresponding grid index is marked as <inline-formula id="inf62">
<mml:math id="m71">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> and denoted as <inline-formula id="inf63">
<mml:math id="m72">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The initial cutting grid then becomes the union of <inline-formula id="inf64">
<mml:math id="m73">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf65">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. In summary, after evaluating and updating all cutting positions and combining them with row cutting, it forms the entire movement path of the rough machining tool positions. The schematic diagram of the tool path for rough machining at this point is depicted in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Schematic diagram of rough machining tool path.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g004.tif"/>
</fig>
<p>As depicted in <xref ref-type="fig" rid="F4">Figure 4</xref>, a specific layer is treated as an example involves intersecting the cutting grid. This is achieved by drawing lines parallel to the <italic>X</italic>-axis and passing through the center of each grid. The outcome of this process is the generation of segmented cutting tool lines after truncation. The tool trajectory connects these lines in a zigzag pattern from left to right and bottom to top, starting from the bottom-left grid. Connecting the right-side tool trajectory using the same method and joining them together provides the complete trajectory for the rough machining tool. In summary, the integration of layer cutting method into the trajectory planning of roughing point cloud model in practical application is roughly divided into four steps. The first step is data preparation, i.e., selecting appropriate workpieces, ensuring that their point cloud data can contain complex geometric information, and collecting the point cloud data by high-quality 3D scanning equipment (e.g., laser scanner), setting appropriate resolution and sampling density. The next is data preprocessing, where the acquired information is denoised by four-point noise reduction to smooth the data. Then the layer cutting method is implemented to describe the layer cutting path generation of the point cloud data, set the thickness parameter, etc. Finally, the simulation test is conducted with specific engineering examples to verify the effect of the layer cutting roughing method.</p>
</sec>
<sec id="s3-3">
<title>3.3 Generation of finish machining tool paths based on point cloud models</title>
<p>Continuing the exploration into generating CNC milling machine finish machining tool paths, the research focuses on the field of five-axis machining using point cloud models. The specific path generation involves employing the equal residual height method. A typical schematic diagram of the equal residual height method is illustrated in <xref ref-type="fig" rid="F5">Figure 5</xref>.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Schematic diagram of traditional equal residual height method.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g005.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F5">Figure 5</xref>, it&#x2019;s evident that initially, the longest scanning line within the point cloud boundary is selected as the first tool path. Subsequently, under the constraint of the residual height preset value, the tool contact points for adjacent rows are calculated and connected to form a complete tool path. In this case, the residual height represents the distance from the point to the surface of the workpiece and can be obtained by simple geometric calculations. The residual height threshold, on the other hand, is an important parameter that determines which residual heights are considered valid surfaces for machining. While this method can simulate tool path generation, the repetitive steps involved in practical operations increase the computational load of the algorithm. Hence, the study attempts to perform spatial grid processing on point cloud data, creating bounding boxes. The formula for calculating the point cloud model&#x2019;s bounding box in polar coordinates within the spatial grid is shown in Formula (<xref ref-type="bibr" rid="B12">Liu et al., 2022</xref>).<disp-formula id="e10">
<mml:math id="m75">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>`</mml:mo>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mo>`</mml:mo>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>`</mml:mo>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>max</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e10">10</xref> (<xref ref-type="bibr" rid="B12">Liu et al., 2022</xref>), <inline-formula id="inf66">
<mml:math id="m76">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf67">
<mml:math id="m77">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>y</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf68">
<mml:math id="m78">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>z</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represent the number of grids along the <italic>X</italic>-axis, <italic>Y</italic>-axis, and <italic>Z</italic>-axis in the spatial grid, respectively. At this point, in the bounding box, a column is arbitrarily selected, and the data in that column are denoted as <inline-formula id="inf69">
<mml:math id="m79">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>L</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. After selecting all the boundaries of this column and calculating the arch height error, the tool contact points for the first tool path can be derived. The computational formula for this process is shown in Formula (<xref ref-type="bibr" rid="B16">Sheng et al., 2022</xref>).<disp-formula id="e11">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>min</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e11">11</xref> (<xref ref-type="bibr" rid="B16">Sheng et al., 2022</xref>), the range of values for <inline-formula id="inf70">
<mml:math id="m81">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is <inline-formula id="inf71">
<mml:math id="m82">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The point with the minimum Y-coordinate in <inline-formula id="inf72">
<mml:math id="m83">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>L</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is selected as the boundary point <inline-formula id="inf73">
<mml:math id="m84">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. Only when <inline-formula id="inf74">
<mml:math id="m85">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
<mml:mo>_</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, all the boundary points can form a complete set. The calculation formula for this process is given in Formula (<xref ref-type="bibr" rid="B15">Sales et al., 2021</xref>).<disp-formula id="e12">
<mml:math id="m86">
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>`</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>z</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:msqrt>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e12">12</xref> (<xref ref-type="bibr" rid="B15">Sales et al., 2021</xref>), <inline-formula id="inf75">
<mml:math id="m87">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the <inline-formula id="inf76">
<mml:math id="m88">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th point in the boundary set, and <inline-formula id="inf77">
<mml:math id="m89">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> represents the <inline-formula id="inf78">
<mml:math id="m90">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th point in the boundary set. <inline-formula id="inf79">
<mml:math id="m91">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>`</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> represents the general length of the line connecting <inline-formula id="inf80">
<mml:math id="m92">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>j</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf81">
<mml:math id="m93">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and the midpoint of this line is <inline-formula id="inf82">
<mml:math id="m94">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. The definition of tool contact point judgment at this point is given by Formula (<xref ref-type="bibr" rid="B13">Nirala and Agrawal, 2020</xref>).<disp-formula id="e13">
<mml:math id="m95">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>`</mml:mo>
<mml:mo>&#x3e;</mml:mo>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>`</mml:mo>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x222a;</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mo>`</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>In Formula <xref ref-type="disp-formula" rid="e13">13</xref> (<xref ref-type="bibr" rid="B13">Nirala and Agrawal, 2020</xref>), <inline-formula id="inf83">
<mml:math id="m96">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the bow height error, <inline-formula id="inf84">
<mml:math id="m97">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf85">
<mml:math id="m98">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> respectively represent the tool contact points of the <inline-formula id="inf86">
<mml:math id="m99">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th and <inline-formula id="inf87">
<mml:math id="m100">
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> th points in the <inline-formula id="inf88">
<mml:math id="m101">
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> th column. The calculation of subsequent tool contact points continues based on the inference in the Formula, and finally, they are connected to form the first tool contact trajectory. This tool contact trajectory can be used to obtain the tool position trajectory for the first tool path. The tool contact point continues to update to <inline-formula id="inf89">
<mml:math id="m102">
<mml:mrow>
<mml:msubsup>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> until all tool contact points have undergone coordinate calculations. The tool position points and tool axis vectors during tool processing can be obtained from these coordinates. To summarize, the study preprocesses the point cloud data. Filtering, denoising and other operations are carried out before transforming the coordinate value mapping. Then the point cloud model is processed by the residual height method, the residual height value is calculated, and the finishing toolpath planning is obtained after filtering and threshold setting, as shown in <xref ref-type="fig" rid="F6">Figure 6</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Process for generating tool paths for finish machining with equal residual height.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g006.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F6">Figure 6</xref>, it can be observed that the first step is to calculate the global coordinate extremes of the bounding box and select the Jth tool contact point of the Ith tool path. A local coordinate system is established based on this, and the contour point set and residual height value of this tool contact point are calculated. The adjacent row tool contact points are calculated using the residual height method. This process is repeated until all tool contact point calculations are completed. If, at this point, the tool path has covered the entire point cloud model, each path is connected to form the tool contact trajectory. Finally, the conversion of tool position points and tool axis vectors yields specific trajectory data. If the tool path has not yet covered the point cloud model, the next path is selected, and the process is continued. In summary, the integration of the residual height method into the trajectory planning of the finishing point cloud model in practice is also roughly divided into four steps. The first step is data preparation, i.e., selecting appropriate workpieces, ensuring that the point cloud data contains surfaces that need to be finely machined, and using high-precision 3D scanning equipment to obtain detailed surface information. Next is data preprocessing, where the collected point cloud data is denoised to ensure that the calculation of the residual height is not interfered by noise. Then comes the implementation of the residual height method, which calculates the residual height values and computes the path generation. Finally, an engineering example is cited for performance simulation test to evaluate the actual effect of residual height method finishing.</p>
</sec>
</sec>
<sec id="s4">
<title>4 CNC milling tool path generation technique based on point cloud model testing</title>
<p>To validate the practicality and effectiveness of both the rough machining tool path generation method and the finish machining tool path generation method, performance and simulation tests were conducted on these two methods. Performance differences between the proposed methods and similar methods were further examined using indicators such as computation time, trajectory error, and residual height values.</p>
<sec id="s4-1">
<title>4.1 Performance testing of rough machining technique</title>
<p>To verify the effectiveness of the proposed method for generating rough machining tool paths using a point cloud model, simulations were conducted on a portion of the saddle surface using MATLAB. The point cloud data dimensions were set to 108&#xa0;mm &#xd7; 45&#xa0;mm &#xd7; 25&#xa0;mm, and rough machining was performed using a flat-bottom cutter D6 with a radius of 5&#xa0;mm. The distance between adjacent layers of slices was set to 0.5&#xa0;mm. Different slice thicknesses <inline-formula id="inf90">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mi>m</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf91">
<mml:math id="m104">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>4</mml:mn>
<mml:mi>m</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf92">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mi>m</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf93">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>6</mml:mn>
<mml:mi>m</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> were considered as variables. The actual trajectory generated by the proposed method is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Comparison of 3D trajectories of roughing tools with different slice thicknesses.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g007.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F7">Figure 7</xref> illustrated the toolpaths under different thicknesses. <xref ref-type="fig" rid="F7">Figure 7A</xref> represents the toolpath for a thickness of 3&#xa0;mm, <xref ref-type="fig" rid="F7">Figure 7B</xref> for 4&#xa0;mm, <xref ref-type="fig" rid="F7">Figure 7C</xref> for 5&#xa0;mm, and <xref ref-type="fig" rid="F7">Figure 7D</xref> for 6&#xa0;mm. As observed from <xref ref-type="fig" rid="F7">Figure 7</xref>, comparing the toolpaths for four different slicing thicknesses revealed that smaller slicing thickness led to an increase in the number of cross-sectional planes during point cloud data slicing, subsequently resulting in longer algorithm computation times. Moreover, if the slicing thickness was too large, it increased the number of tool contact points within each slice after conversion. Therefore, after comprehensive evaluation based on tool contact points and path length, the slicing thickness of 5&#xa0;mm in <xref ref-type="fig" rid="F7">Figure 7</xref> yields the optimal trajectory generation, and subsequent tests were conducted using this thickness. To validate the proposed point cloud model layer slicing method against existing machining methods, such as equidistant cutting and unit cutting, the study conducted comparative tests using trajectory error rate and computation time as reference indicators, as depicted in <xref ref-type="fig" rid="F8">Figure 8</xref>.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Comparison of error rate and computing time tests for different roughing trajectory generation methods.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g008.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F8">Figure 8A</xref> displays the error change rate curves for three different trajectory generation methods, while <xref ref-type="fig" rid="F8">Figure 8B</xref> shows the computation time curves. It was evident from <xref ref-type="fig" rid="F8">Figure 8</xref> that the trajectory generation error for all three methods decreased with an increase in the number of tool contact points. Throughout this process, the proposed layer slicing method performed optimally, with the lowest error approaching 10%. Additionally, the layer slicing method exhibited the least computation time, with an average of approximately 35&#xa0;s. These data indicate that 2D gridization of point cloud data using the layer slicing method can reduce the complexity of computation. In order to compare the performance effect of the three methods more accurately, the study tries to show the detail maps generated by the trajectories of these methods in X-O-Y planar projection as shown in <xref ref-type="fig" rid="F9">Figure 9</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Comparison of X-O-Y plane projection details of three methods.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g009.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F9">Figure 9A</xref> shows the trajectory projection of the unit cutting method, <xref ref-type="fig" rid="F9">Figure 9B</xref> shows the trajectory projection of the isometric cutting method, and <xref ref-type="fig" rid="F9">Figure 9C</xref> shows the trajectory projection of the layer cutting method. As can be seen from <xref ref-type="fig" rid="F9">Figure 9</xref>, the number of trajectory paths of both unit cutting method and isometric cutting method was 6, and the number of tool contacts was obviously more than layer cutting method. The roughing of the workpiece by the layer cutting method produced only 5 trajectory paths, and the number of tool contacts was even less. The reason for this difference may be attributed to unit cutting dividing the workpiece into multiple units for sequential cutting, thereby generating more trajectory lines. Isometric cutting, on the other hand, mechanically made planning more difficult by calculating the distance between tool contacts. Furthermore, the layer slicing method had significantly fewer tool contact points than the unit cutting method, maintaining the overall machining structure unchanged. This can greatly reduce the data computation time for the point cloud model, ultimately optimizing the cutting process.</p>
</sec>
<sec id="s4-2">
<title>4.2 Performance testing of finish machining technology</title>
<p>To validate the effectiveness of the proposed finish machining toolpath generation method, tests were conducted using MATLAB 2019a as the simulation software. The simulation involved 168,900 scattered points, and the effective cutting radius of the circular milling cutter was set to 4&#xa0;mm. Residual height was set to 0.6&#xa0;mm, bow height error to 0.05&#xa0;mm, forward tilt angle to 10&#xb0;, and lateral offset angle to 0&#xb0;. Using a surface point cloud model as an example, the proposed method was tested against existing finish machining cutting methods such as polyhedron, projection, and offset surface methods, and the results are presented in <xref ref-type="fig" rid="F10">Figure 10</xref>.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Comparative analysis of 3D trajectories of different finishing tools.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g010.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F10">Figure 10A</xref> depicts the toolpath of the point cloud model under the polyhedron method, <xref ref-type="fig" rid="F10">Figure 10B</xref> under the projection method, <xref ref-type="fig" rid="F10">Figure 10C</xref> under the residual height method, and <xref ref-type="fig" rid="F10">Figure 10D</xref> under the offset surface method. From <xref ref-type="fig" rid="F10">Figure 10</xref>, it was observed that, in the segmentation of path data for the surface point cloud model, the polyhedron method exhibited complexity and multiple paths. Although the projection method showed improvement in trajectory generation, there were still instances of path crossings. The offset surface method enhanced the trajectory planning, but unevenness and bias persisted. Overall, the proposed residual height method performed optimally, demonstrating a certain superiority in model path generation. To further explore the machining effects of the residual height method, sampling along the residual height line was conducted, and the obtained residual heights are shown in <xref ref-type="fig" rid="F11">Figure 11</xref>.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Analysis of residual height on the surface of workpieces.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g011.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F11">Figure 11</xref>, it was evident that, after obtaining the sampling space coordinates with unchanged <italic>X</italic> and <italic>Y</italic>-axes, the <italic>Z</italic>-axis coordinates transformed by the residual height method mainly concentrated in the intervals of 0.2&#x2013;0.25 and 0.25&#x2013;0.3, while the remaining residual heights were scattered below 0.2. This indicates that the residual height method achieved an efficiency of over 60% in toolpath generation for finish machining workpieces, simultaneously avoiding the complex processes of surface fitting and triangulation, streamlining the steps of path generation. Finally, the study, in order to verify the practical application effect of the new roughing and finishing trajectory generation method, compared and verified the traditional finishing and improved finishing, and the traditional roughing and improved roughing, respectively, with H7 helical gears, HK1712 needle roller bearings, and M6 double-ended zinc-plated screws as the test parts, and the physical drawings are shown in <xref ref-type="fig" rid="F12">Figure 12</xref>.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Physical schematics of the three test parts.</p>
</caption>
<graphic xlink:href="fmech-10-1358061-g012.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F12">Figure 12A</xref> shows the physical drawing of H7 helical gear, <xref ref-type="fig" rid="F12">Figure 12B</xref> shows the physical drawing of HK1712 needle roller bearing, and <xref ref-type="fig" rid="F12">Figure 12C</xref> shows the physical drawing of M6 double-ended galvanized screw. In addition, the study set the roughing tool diameter to &#x3c6;12 and finishing to &#x3c6;6. The lathe speed settings were set to 3,500&#xa0;m/s and 4,500&#xa0;m/s, and the feeds were set to 1,000 and 800&#xa0;mm/r. The cutting pitch was set to 1.2&#xa0;mm and 4&#xa0;mm, respectively. Furthermore, more machining methods of the same type were introduced, such as the grid of the same type as the layer cut roughing method cutting, contour cutting, and lithographic cutting, and adaptive cutting, topology optimization, and dynamic cutting, which are the same type as the residual height method for finishing. Trajectory generation error rate, computing time, trajectory smoothness and cutting efficiency were tested as reference indexes, and the test results are shown in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Test results of different finishing methods.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Finishing</th>
<th align="center">Processing type</th>
<th align="center">Methodologies</th>
<th align="center">Trajectory error rate (%)</th>
<th align="center">Time (s)</th>
<th align="center">Track smoothness (%)</th>
<th align="center">Cutting efficiency (%)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="8" align="center">H7 Helical Gear</td>
<td rowspan="4" align="center">Rough machining</td>
<td align="center">Grid cutting method</td>
<td align="center">33.71</td>
<td align="center">35.15</td>
<td align="center">37.71</td>
<td align="center">79.68</td>
</tr>
<tr>
<td align="center">Contour cutting method</td>
<td align="center">37.58</td>
<td align="center">37.17</td>
<td align="center">48.32</td>
<td align="center">86.47</td>
</tr>
<tr>
<td align="center">Photolithographic cutting method</td>
<td align="center">21.33</td>
<td align="center">24.27</td>
<td align="center">42.61</td>
<td align="center">87.61</td>
</tr>
<tr>
<td align="center">Lamination</td>
<td align="center">12.47</td>
<td align="center">11.82</td>
<td align="center">66.71</td>
<td align="center">89.67</td>
</tr>
<tr>
<td rowspan="4" align="center">Fine machining</td>
<td align="center">Adaptive cutting method</td>
<td align="center">18.46</td>
<td align="center">26.74</td>
<td align="center">27.69</td>
<td align="center">75.98</td>
</tr>
<tr>
<td align="center">Topological optimization method</td>
<td align="center">16.32</td>
<td align="center">15.69</td>
<td align="center">47.58</td>
<td align="center">77.47</td>
</tr>
<tr>
<td align="center">Dynamic cutting method</td>
<td align="center">13.21</td>
<td align="center">19.21</td>
<td align="center">69.47</td>
<td align="center">76.76</td>
</tr>
<tr>
<td align="center">Disability and Higher Law</td>
<td align="center">7.68</td>
<td align="center">13.58</td>
<td align="center">82.51</td>
<td align="center">81.76</td>
</tr>
<tr>
<td rowspan="8" align="center">HK1712 needle roller bearings</td>
<td rowspan="4" align="center">Rough machining</td>
<td align="center">Grid cutting method</td>
<td align="center">27.69</td>
<td align="center">67.47</td>
<td align="center">47.68</td>
<td align="center">80.74</td>
</tr>
<tr>
<td align="center">Contour cutting method</td>
<td align="center">25.47</td>
<td align="center">58.67</td>
<td align="center">53.69</td>
<td align="center">84.16</td>
</tr>
<tr>
<td align="center">Photolithographic cutting method</td>
<td align="center">13.60</td>
<td align="center">49.57</td>
<td align="center">47.21</td>
<td align="center">82.76</td>
</tr>
<tr>
<td align="center">Lamination</td>
<td align="center">10.29</td>
<td align="center">37.33</td>
<td align="center">77.68</td>
<td align="center">89.48</td>
</tr>
<tr>
<td rowspan="4" align="center">Fine machining</td>
<td align="center">Adaptive cutting method</td>
<td align="center">14.68</td>
<td align="center">76.46</td>
<td align="center">63.47</td>
<td align="center">78.52</td>
</tr>
<tr>
<td align="center">Topological optimization method</td>
<td align="center">13.57</td>
<td align="center">74.47</td>
<td align="center">65.79</td>
<td align="center">84.19</td>
</tr>
<tr>
<td align="center">Dynamic cutting method</td>
<td align="center">17.59</td>
<td align="center">68.28</td>
<td align="center">69.47</td>
<td align="center">85.63</td>
</tr>
<tr>
<td align="center">Disability and Higher Law</td>
<td align="center">8.73</td>
<td align="center">43.67</td>
<td align="center">76.47</td>
<td align="center">89.52</td>
</tr>
<tr>
<td rowspan="8" align="center">M6 double head galvanized screw</td>
<td rowspan="4" align="center">Rough machining</td>
<td align="center">Grid cutting method</td>
<td align="center">29.48</td>
<td align="center">52.41</td>
<td align="center">76.38</td>
<td align="center">84.11</td>
</tr>
<tr>
<td align="center">Contour cutting method</td>
<td align="center">24.56</td>
<td align="center">50.19</td>
<td align="center">79.47</td>
<td align="center">82.64</td>
</tr>
<tr>
<td align="center">Photolithographic cutting method</td>
<td align="center">14.33</td>
<td align="center">43.17</td>
<td align="center">68.45</td>
<td align="center">87.96</td>
</tr>
<tr>
<td align="center">Lamination</td>
<td align="center">10.17</td>
<td align="center">28.28</td>
<td align="center">83.49</td>
<td align="center">90.17</td>
</tr>
<tr>
<td rowspan="4" align="center">Fine machining</td>
<td align="center">Adaptive cutting method</td>
<td align="center">21.44</td>
<td align="center">56.69</td>
<td align="center">77.67</td>
<td align="center">84.18</td>
</tr>
<tr>
<td align="center">Topological optimization method</td>
<td align="center">16.79</td>
<td align="center">47.47</td>
<td align="center">76.34</td>
<td align="center">85.63</td>
</tr>
<tr>
<td align="center">Dynamic cutting method</td>
<td align="center">12.58</td>
<td align="center">27.41</td>
<td align="center">83.14</td>
<td align="center">87.17</td>
</tr>
<tr>
<td align="center">Disability and Higher Law</td>
<td align="center">8.34</td>
<td align="center">19.32</td>
<td align="center">84.17</td>
<td align="center">91.57</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As can be seen from <xref ref-type="table" rid="T1">Table 1</xref>, all 16 processing methods showed superior processing results in the multi-indicator test. Firstly, for the rough machining method comparison, the layer cutting method proposed in the study showed the best overall performance. This was followed by the photolithography cutting method, the contour cutting method and the grid cutting method. Comprehensively, the layer cutting roughing method had the lowest trajectory generation error rate of 10.17% in M6 double-ended galvanized screw, the lowest running time of 11.82s in H7 helical gear machining, the highest value of trajectory smoothness of 83.49% in M6 double-ended galvanized screw machining, and the highest cutting efficiency of 90.17% in M6 double-ended galvanized screw machining. On the contrary, the residual high finish machining method showed the lowest trajectory generation error rate of 7.68% in H7 helical gear machining, the lowest running time of 13.58&#xa0;s in H7 helical gear machining, the highest value of trajectory smoothing of 84.17% in M6 double-head galvanized screw machining, and the highest cutting efficiency of 91.57% in M6 double-head galvanized screw machining. In summary, the proposed method of generating finishing tool trajectories using the residual height method to compute the point cloud model showed better performance and certain feasibility compared to the same type of arithmetic methods.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<title>5 Conclusion</title>
<p>In recent years, numerous researchers have proposed various technical models to simulate the generation of CNC toolpaths. To further explore the application effectiveness of data models in this field, the study introduced a point cloud model and performed preprocessing, denoising, and down-sampling on the point cloud data. Toolpath generation methods for rough machining and finish machining were proposed using the point cloud model. Experimental results indicated that the method of generating rough machining toolpaths using the layering method for calculating the point cloud model was the shortest under specific slicing thickness. The trajectory generated by the layering method had an error close to 10%, with an average computation time of approximately 35&#xa0;s. Compared to similar rough machining methods, this approach produced shorter trajectories with lower algorithmic complexity. In performance testing of the finish machining toolpath generation method using the residual height method to calculate the point cloud model, the toolpaths generated by the residual height method were more uniform, shorter, and exhibited higher parallelism. Analysis of residual heights sampled from the workpiece surface revealed concentrations in the range of 0.2&#x2013;0.3, with a generation efficiency of at least 60%. In comparison to other similar finish machining methods, this method achieved a minimum trajectory error rate of 10.17%, a minimum computation time of 11.82&#xa0;s, a maximum trajectory smoothness of 83.49%, and a maximum cutting efficiency of 90.17%. In summary, the two proposed trajectory generation methods in the study enable efficient, precise, and sustainable CNC milling machine operations. However, the trajectory generation methods demonstrated in the research have a high requirement for point cloud density. When the point cloud density is sparse, there is uncertainty in the computation results. Therefore, future research could continue to explore trajectory generation methods for light-density point clouds to enhance the computational integrity of point cloud models.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s7">
<title>Author contributions</title>
<p>JL: Conceptualization, Data curation, Project administration, Writing&#x2013;original draft. ZH: Formal Analysis, Methodology, Writing&#x2013;review and editing.</p>
</sec>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>The author(s) declare that no financial support was received for the research, authorship, and/or publication of this article.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Personalized path generation and robust H&#x221e; output&#x2010;feedback path following control for automated vehicles considering driving styles</article-title>. <source>IET Intell. Transp. Syst.</source> <volume>15</volume> (<issue>12</issue>), <fpage>1582</fpage>&#x2013;<lpage>1595</lpage>. <pub-id pub-id-type="doi">10.1049/itr2.12097</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Choudhuri</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Adeniye</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Sen</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Distribution alignment using complement entropy objective and adaptive consensus-based label refinement for partial domain adaptation</article-title>. <source>Artif. Intell. Appl.</source> <volume>1</volume> (<issue>1</issue>), <fpage>43</fpage>&#x2013;<lpage>51</lpage>. <pub-id pub-id-type="doi">10.47852/bonviewaia2202524</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gawali</surname>
<given-names>D. D.</given-names>
</name>
<name>
<surname>Patil</surname>
<given-names>B. V.</given-names>
</name>
<name>
<surname>Zidna</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Nataraj</surname>
<given-names>P. V. S.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Constrained global optimization of multivariate polynomials using polynomial B-spline form and B-spline consistency prune approach</article-title>. <source>RAIRO - Operations Res.</source> <volume>55</volume> (<issue>6</issue>), <fpage>3743</fpage>&#x2013;<lpage>3771</lpage>. <pub-id pub-id-type="doi">10.1051/ro/2021179</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Shi</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Su</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Hao</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Automated test generation for IEC 61131-3 ST programs via dynamic symbolic execution</article-title>. <source>Sci. Comput. Program.</source> <volume>206</volume> (<issue>1</issue>), <fpage>102608</fpage>&#x2013;<lpage>102609</lpage>. <pub-id pub-id-type="doi">10.1016/j.scico.2021.102608</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Fang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Bao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Smooth toolpath interpolation for a 5-axis hybrid machine tool</article-title>. <source>Robotica</source> <volume>40</volume> (<issue>12</issue>), <fpage>4431</fpage>&#x2013;<lpage>4454</lpage>. <pub-id pub-id-type="doi">10.1017/s026357472200100x</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huang</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Jin</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Spiral toolpath generation method for pocket machining</article-title>. <source>Comput. Industrial Eng.</source> <volume>60</volume> (<issue>12</issue>), <fpage>340</fpage>&#x2013;<lpage>355</lpage>. <pub-id pub-id-type="doi">10.1016/j.cie.2019.106142</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Leal</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Sanchez-Torres</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Branch</surname>
<given-names>J. W.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Sparse regularization-based approach for point cloud denoising and sharp features enhancement</article-title>. <source>Sensors</source> <volume>20</volume> (<issue>11</issue>), <fpage>3206</fpage>&#x2013;<lpage>3207</lpage>. <pub-id pub-id-type="doi">10.3390/s20113206</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Tang</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Partition-based five-axis tool path generation for freeform surface machining using a non-spherical tool</article-title>. <source>J. Manuf. Syst.</source> <volume>58</volume> (<issue>7</issue>), <fpage>248</fpage>&#x2013;<lpage>262</lpage>. <pub-id pub-id-type="doi">10.1016/j.jmsy.2020.12.004</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Yan</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Tang</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Multi-pass adaptive tool path generation for flank milling of thin-walled workpieces based on the deflection constraints</article-title>. <source>J. Manuf. Process.</source> <volume>68</volume> (<issue>8</issue>), <fpage>690</fpage>&#x2013;<lpage>705</lpage>. <pub-id pub-id-type="doi">10.1016/j.jmapro.2021.05.075</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liang</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Kang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Fang</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A smooth tool path planning method on NURBS surface based on the shortest boundary geodesic map</article-title>. <source>J. Manuf. Process.</source> <volume>58</volume> (<issue>1</issue>), <fpage>646</fpage>&#x2013;<lpage>658</lpage>. <pub-id pub-id-type="doi">10.1016/j.jmapro.2020.08.047</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Jiang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Shao</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Five-axis flank milling tool path generation with curvature continuity and smooth cutting force for pockets</article-title>. <source>Chin. J. Aeronautics</source> <volume>33</volume> (<issue>2</issue>), <fpage>730</fpage>&#x2013;<lpage>739</lpage>. <pub-id pub-id-type="doi">10.1016/j.cja.2018.12.003</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>H. Z.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Liang</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>A new inherent reliability modeling and analysis method based on imprecise Dirichlet model for machine tool spindle</article-title>. <source>Ann. Operations Res.</source> <volume>311</volume> (<issue>1</issue>), <fpage>295</fpage>&#x2013;<lpage>310</lpage>. <pub-id pub-id-type="doi">10.1007/s10479-019-03333-9</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nirala</surname>
<given-names>H. K.</given-names>
</name>
<name>
<surname>Agrawal</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Reprint of: residual stress inclusion in the incrementally formed geometry using fractal geometry based incremental toolpath (FGBIT)</article-title>. <source>J. Mater. Process. Technol.</source> <volume>287</volume> (<issue>9</issue>), <fpage>116623</fpage>&#x2013;<lpage>116624</lpage>. <pub-id pub-id-type="doi">10.1016/j.jmatprotec.2020.116623</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Praveen</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Lingam</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Reddy</surname>
<given-names>N. V.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Tool path design system to enhance accuracy during double sided incremental forming: an analytical model to predict compensations for small/large components</article-title>. <source>J. Manuf. Process.</source> <volume>58</volume> (<issue>12</issue>), <fpage>510</fpage>&#x2013;<lpage>523</lpage>. <pub-id pub-id-type="doi">10.1016/j.jmapro.2020.08.014</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sales</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Kwok</surname>
<given-names>T. H.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Function-aware slicing using principal stress line for toolpath planning in additive manufacturing</article-title>. <source>J. Manuf. Process.</source> <volume>64</volume> (<issue>4</issue>), <fpage>1420</fpage>&#x2013;<lpage>1433</lpage>. <pub-id pub-id-type="doi">10.1016/j.jmapro.2021.02.050</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sheng</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Xiao</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Dong</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Design of a control system of plane machining machine tool based on machine vision</article-title>. <source>China Foundry</source> <volume>29</volume> (<issue>6</issue>), <fpage>784</fpage>&#x2013;<lpage>792</lpage>. <pub-id pub-id-type="doi">10.3785/j.issn.1006-754X.2022.00.078</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zheng</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zha</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Xuchen</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Single-stage adaptive multi-scale point cloud noise filtering algorithm based on feature information</article-title>. <source>Remote Sens.</source> <volume>14</volume> (<issue>2</issue>), <fpage>367</fpage>&#x2013;<lpage>368</lpage>. <pub-id pub-id-type="doi">10.3390/rs14020367</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>