MBD-Based Machining Feature Recognition and Process Route Optimization
Abstract
:1. Introduction
2. Literature Review
2.1. Machining Feature Recognition
2.2. Feature Processing Scheme Decision
2.3. Process Route Optimization
3. MBD-Based Model Information Extraction
3.1. MBD Model Data Structure
3.2. Extraction of MBD Model Information
4. Machining Feature Recognition Based on AAM
4.1. Construction of Model AAG
4.1.1. Concavity–Convexity Judgment of Model Edge
4.1.2. Concavity–Convexity Judgment of Model Surface
4.1.3. Construction of AAG
4.2. AAG Decomposition and Reconstruction Based on DBS and JBS
4.3. Machining Feature Matching Based on AAM
4.3.1. Machining Feature Matching Method Based on AAM
4.3.2. AAM Establishment Algorithm
4.3.3. AAM Matching Algorithm
5. Decision Making of Feature Processing Scheme Based on Fuzzy Comprehensive Evaluation
5.1. Establishment of Alternative Sets for Fuzzy Evaluation of Surface Features
5.2. Determination of Weight of Each Influencing Factor
5.3. Single Factor Fuzzy Mapping of Machining Schemes for Surface Features
5.3.1. Fuzzy Mapping between Workpiece Material and Machining Schemes
5.3.2. Fuzzy Mapping between Feature Types and Machining Schemes
5.3.3. Fuzzy Mapping between Machining Accuracy and Machining Schemes
5.3.4. Fuzzy Mapping between Surface Roughness and Machining Scheme
5.4. Fuzzy Comprehensive Evaluation of Feature Processing Scheme
6. Process Route Optimization Based on MEDGraph
6.1. Description of Process Route Optimization Problem
6.2. The Construction of MEDGraph
6.3. Acquisition of ME Topological Sequence Based on Improved Topology Sorting Algorithm
6.4. Acquisition of Optimal Machining Element Topological Sequence
7. Case Study
8. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
Appendix A
Algorithm A1. Geometric & topology information extraction algorithm |
1. Input: MBD model 2. Output: Store geometric & topology information in computer memory 3./*Definition of structure array*/ 4. struct Surface_data 5. { 6. ElemType surf_id 7. ElemType surf_type 8. ElemType surf_at 9. vector< ElemType > adj_surf_id 10. vector< ElemType > edge_id 11. vector< ElemType > cont_data 12. ElemType surffinish_value 13. vector< ElemType > gtol_data 14. } 15. struct Contour_data 16. { 17. vector< ElemType > edge_id 18. ElemType contour_type 19. } 20. struct Edge_data 21. { 22. ElemType edge_id 23. ElemType edge_type 24. ElemType edge_at 25. vector<ElemType > adja_suf 26. ElemType edge_in 27. } 28./*Define structure array*/ 29. Surface_data surf[num1], Contour_data contour[num2], Edge_data edge[num3] 30. k← 0, h← 0 31. Call ProMdlCurrentGet( ) to get the handle of the current model 32. Call ProSolidSurfaceVisit( ) to traverse surface and obtain and output surface[] 33. Call ProArraySizeGet( ) to get the length of surf[ ], which is m 34. for (i = 0; i < m; i ++) do 35. Call ProSurfaceIdGet( ) to get the ID of No.i+1 surface and write it to surf[i].surf_id 36. Call ProSurfaceTypeGet( ) to get the type of No.1+1 surface and write to surf[i]. surf_type 37. Call ProSurfaceAtGe ( ) to get the concavity-convexity of No.1+1 surface 38. Write to surface[i].surf_at 39. Call ProSurfaceContourVisit( ) to traverse the contour and write them to Contour[ ] 40. Call ProArraySizeGet( ) to get the length of Contour[], which is n 41. for (j = 0; j < n; j ++) do 42. Call ProContourTraversalGet( ) to get the type of contour and write to contour[k].contour_type 43. Call ProContourEdgeVisit( ) to traverse the edges of contour and write to Edge[] 44. Call ProArraySizeGet( ) to get the length of edge[], which is e 45. for (t = 0; t < e; t ++) do 46. Call ProEdgeIdGet( ) to get the ID of edge 47. Write it to edge[h].edge_id, contour [k].edge_id 48. if (edge[h].edge_id surface[i].edge_id ) then 49. Write to surface[i].edge_id 50. end if 51. Call ProEdgeTypeGet( ) to get type of edge and write to edge[h].edge_type 52. Call ProEdgeAtGet( ) to get concavity-convexity and write to edge[h].edge_at 53. Call ProEdgeNeighborsGet( ) to get the adjacent surface ID 54. Write to edge[h].adja_suf 55. if (edge[h].adja_suf surface[i].edge_id ) then 56. Write to surface[i]. adj_surf_id 57. end if 58. h++ 59. end for 60. Write contour[k] to surface[i].cont_data 61. k++ 62. end for 63. end for |
Algorithm A2. AAG construction |
1. Input: MBD model information structure array surface[ ], edge[ ] and contour[ ] 2. Output: line[num1], node[num2] 3./*Define structure array node[num2] and line[num1], num1 and num2 is the number of model edge and surface*/ 4. struct Node 5. { 6. ElemType surface_id 7. vector< ElemType > adj_line 8. ElemType node_type 9. ElemType node_at 10. ElemType d_face 11. ElemType f_face 12. ElemType c_face 13. } node[num2] 14. struct Line 15. { 16. ElemType edge_id 17. ElemType node1 18. ElemType node2 19. ElemType line_type 20. ElemType line_at 21. ElemType in_contour 22. } line[num1] 23./*Assign the id of line and surface */ 24. for (i = 0; i < num1; i ++) do 25. line[i]. edge_id ← edge[i].edge_id 26. end for 27. for (i = 0; i < num2; i ++) do 28. node[j]. surface_id ← surface[j].surface_id 29. end for 30./* Determine the connection relationship between nodes and edges*/ 31. for (i = 0; i < num2; i ++) do 32. for (j = 0; j < num1; j ++) do 33. for (k = 0; k < surface[i].edge_id.size(); k ++) do 34. if (line[j]. edge_id == surface[i].edge_id[k]) then 35. Add line[j] to node[i]. adj_line 36. if (line[j].node1==NULL) then 37. line[j].node1 ← node[i] 38. else 39. line[j].node2 ← node[i] 40. end if 41. end if 42. end for 43. end for 44. end for 45./*Add node attribute*/ 46. for (i = 0; i < num2; i ++) do 47. /*Assign the type*/ 48. if (surface[i].type == planar) then node[i].node_type ← 1 end if 49. if (surface[i].type == cylinder) then node[i].node_type ← 2 end if 50. if (surface[i].type == conical) then node[i].node_type ← 3 end if 51. if (surface[i].type == other) then node[i].node_type ← 4 end if 52. /*Assign the concavity-convexity of surface*/ 53. if (surface[i].concavity-convexity ==concave) then 54. node[i].node_at ← −1 55. else 56. node[i].node_at ← 1 57. end if 58. /*Assign the DBS attribute*/ 59. if (surface[i].contour_information == inner) then 60. node[i].d_face ← true 61. else 62. node[i].d_face ← false 63. end if 64. /*Assign the FBS attribute*/ 65. Calculation the extrusion of , which is 66. if (surface[i].type == planar && surface[i].concavity-convexity == convex && then 67. node[i].f_face ← true 68. else 69. node[i].f_face ← false 70. end if 71. end for 72./*Traverse the JBS*/ 73. for (i = 0; i < num2; i ++) do 74. for (j = 0; j < num2; j ++) do 75. if (surface[i] and surface[j] == JBS) then 76. node[i].c_face ← node[j]. c_face ← k 77. k++ 78. end if 79. end for 80. end for 81./*Add edge attribute*/ 82. for (i = 0; i < num1; i ++) do 83. /*Assign the type*/ 84. if (edge[i].type == straight) then line[i].line_type ← 1 end if 85. if (edge[i].type == arc) then line[i].line_type ← 2 end if 86. if (edge[i].type == other) then line[i].line_type ← 3 end if 87. if (edge[i].type == straight) then line[i].line_type ← 1 end if 88. /*Assign the concavity-convexity*/ 89. if (edge[i].concavity-convexity == concavity) then line[i].line_at ← −1 end if 90. if (edge[i].concavity-convexity == convexity) then line[i].line_at ← 1 end if 91. if (edge[i].concavity-convexity == smooth) then line[i].line_at ← 0 end if 92. /*Assign the inner contour attribute*/ 93. if (edge[i].inner_contour == true) then 94. line[i]. in_contour ← true 95. else 96. line[i]. in_contour ← false 97. end if 98. end for |
Algorithm A3. AAG decomposition and reconstruction based on DBS and JBS |
1. Input: line[num1] and node[num2] 2. Output: line1[n][ ] and node1[n][ ], which represent the edge and node after reconstruction 3./*Decomposition based on DBS*/ 4. Nsign[i] ← 0 5. for (i = 0; i < num2; i ++) do 6. if (node[i].d_face == ture) then 7. for (j = 0; j < num1; j ++) do 8. if (line[j].node1 == node[i] || line[j].node2 = node[i]) then 9. if (line[j].in_contour == true && line[j].line_at == −1) then 10. Nsign[i] ← −1 11. line[j] ← NULL 12. end if 13. if (line[j].in_contour == false && line[j].line_at == 1) then 14. Nsign [i] ← 1 15. line[j] ← NULL 16. end if 17. end if 18. end for 19. end if 20. end for 21. for (i = 0; i < num2; i ++ ) do 22. if (node[i] ==−1) then 23. Extract the information of node[ ] and line[ ] adjacent to node[i] 24. if (line[ ].line_at = −1) then 25. line[ ] ← NULL 26. Assign the value of node[ ] to corresponding node1[ ][ ] 27. Obtain the value of line1[ ][ ] according to node1[ ][ ] 28. else 29. Store the corresponding node1[ ][ ] and line1[ ][ ] 30. end if 31. end if 32. if (node[i] ==1) then 33. Extract the information of node[ ] and line[ ] adjacent to node[i], and store them to node1[ ][ ] and line1[ ][ ] 34. end if 35. Delete line[ ] and node[ ] 36. end for 37./*Delete non-machining surface*/ 38. for (i = 0; i < node[ ].size; i ++) do 39. if (node[i].node_at == 1) then 40. node[i] ← NULL 41. Delete line[ ] adjacent to node[i].adj_line 42. Update line[ ] and node[ ] 43. end if 44. end for 45./*Extract the MCCS on FBS*/ 46. for (j = 0; j < node[ ].size; j ++) do 47. if (node[j].f_face == true) then 48. for (k = 0; k < node[j].adj_line.size; k ++) do 49. if (node[j].adj_line[k].line_at == −1) then 50. Extract the node adjacent to node[j].adj_line[k] 51. if (extracted node has concave edge) then 52. Continue to extract nodes adjacent to the concave edges 53. end if 54. end if 55. end for 56. end if 57. Store node[ ] to node1[ ][ ] and then get the corresponding line1[ ][ ] 58. end for 59./*Search the node with the same JBS attribute*/ 60. c_sign[n][ ] ← 0 61. for (i = 0; i < n; i ++) do 62. for (j = 0; j < node1[i][ ].size; j ++) do 63. if (node1[i][j].c_face then 64. c_sign[i][j] ←node1[i][j].c_face 65. end if 66. end for 67. end for 68. for (k = 0; k < n; k ++) do 69. for (s = 0; s < n; s ++) do 70. if (c_sign[k][ ] and c_sign[s][ ] have the same element) then 71. Merge line1[s][ ] to line1[k][ ] 72. Merge node1[s][ ] to node1[k][ ] 73. end if 74. end for 75. end for |
Algorithm A4. AAM establishment algorithm |
1. Input: line2[m][ ] and node2[m][ ] 2. Output: The AAM of machining feature to be identified 3. sg ← 0, M[n][n] ← 0 4. for (t = 0; t < m; t ++) do 5. for (i = 0; i < node[t][ ].size; i ++) do 6. a ← 2, b ← c ← 0 7. c ← node2[t][i].node_at 8. b ← node2[t][i].node_type 9. if (node2[t][i].node_ f_face == true) then 10. a ← 1 11. end if 12. M[sg][sg] ← a*100+b*10+c 13. sg++ 14. end for 15. end for 16. for (w = 0; w < m; w ++) do 17. for (j = 0; j < line2[w][ ].size; j ++) do 18. d ← 0, e ← 0 19. d ← line2[w][j].line_type 20. e ← line2[w][j].line_at 21. Search node2[ ][ ] for line2[w][j].node1 22. Search node2[ ][ ] for line2[w][j].node2 23. Determine the position of line2[w][j] in AAM according to node2[ ][ ] 24. M[k][h] ← M[h][k] ← d*10+e 25. end for 26. end for |
Algorithm A5. Matching between feature subgraph AAM and predefined feature AAM |
1. Input: feature subgraph AAM to be identified represented by matrix A[n][n], and predefined feature AAM represented by matrix B[m][m] 2. Output: matching result 3./* Define the function SetJudgment(matrix1, matrix2) to determine whether matrix1 and matrix2 is identical */ 4. SetJudgment(matrix1, matrix2) 5. { 6. k ← 0 7. for (i = 0; i < matrix1.size; i ++) do 8. for (j = 0; j < matrix2.size; j ++)j ← 0 to matrix2.size do 9. if (matrix1[i] == matrix2[j]) then 10. k++ 11. matrix2 ← matrix2.erase(matrix2.begin( )+j) 12. break 13. end if 14. end for 15. end for 16. if (k == n) then 17. result ← true 18. else 20. result ← false 21. end if 22. return result 23. } 24. for (i = 0; i < f; i ++) do//f is the number of feature subgraphs 25. if (nm) then 26. Get next AAM 27. else 28. vector<int> , vector<int> 29. for (i = 0; i < n; i ++) do 30. ← A[i][i] 31. ← B[i][i] 32. end for 33. result1 = SetJudgment() 34. if (!result1) then 35. Get next AAM 36. else 37. vector<int> , vector<int> 38. for (i = 0; i < n; i ++) do 39. A[i][ ] 40. B[i][ ] 41. end for 42. index ← 0 43. for (w = 0; w < n; w ++) do 44. for (u = 0; u < n; u ++) do 45. result2=SetJudgment(, ) 46. if (!result2) then 47 Get next AAM 48. else 49. 50. index ++ 51. break 52. end if 53. end for 54. end for 55. if (index n) then 56. Get next AAM 57. else 58. success 59. end if 60. end if 61. end for |
Algorithm A6. Decision algorithm of feature machining scheme |
1. Input: machining feature information 2. Output: Optimal processing scheme 3. Call ProMaterialDataGet( ) to get the material properties, which is Mat 4. for (i = 0; i < n; i ++) do//n is the number of processing features 5. if (feature[i] ≠ hole feature) then//Processing scheme decision 6. /* Calculate fuzzy matrix of each influencing factor for surface features*/ 7. for (j = 0; j < 6; j ++) do 8. if (x[j] is suitable for Mat) then RM[j] ← 1 end if 9. if (x[j] is suitable for feature[i].feature_type) then RF[j] ← 1 end if 10. GetSchemeIT(x[j])//Obtain the precision range ITn~ITm of scheme x[j] 11. ITm) then RIt[j] ← ITm) then RIt[j] ← ITn) then RIt[j] ← 1-((ITn-feature[i].IT)/(5*(ITm-ITn))) end if 14. GetSchemeRa(x[j])//Obtain the roughness range a~b of scheme x[j] b then RRa[j] ← b then RRa[j] ← 1-(log(b)-log(feature[i].Ra))/5(log(b)-log(a)) end if 17. end for 18. /*Calculating fuzzy comprehensive evaluation matrix R1[ ][ ]*/ 19. for (k1 = 0; k1 < 6; k1 ++) do 20. R1[0][k1] ← RM[k1] 21. end for 22. for (k2 = 0; k2 < 6; k2 ++) do 23. R1[1][k2] ← RF[k2] 24. end for 25. for (k3 = 0; k3 < 6; k3 ++) do 26. R1[2][k3] ← RIt[k3] 27. end for 28. for (k4 = 0; k4 < 6; k4 ++) do 29. R1[3][k4] ← RRa[k4] 30. end for 31. /*Calculating fuzzy comprehensive evaluation index vector B[ ]*/ 32. for (num = 0; num < 6; num ++) do 33. for (i = 0; i < 6; i ++) do 34. for (j = 0; j < 4; j ++) do 35. B[num] ←B[num]+W[j]*R1[i][j] 36. end for 37. end for 38. end for 39. Take x[ ] corresponding to element with largest value in B[ ] as the scheme [i] 40. end if 41. if (feature[i] == hole feature) then 42. for (w = 0; w < 13; w ++) do 43. if (y[w] is suitable for Mat) then RM[w] ← 1 end if 44. GetFeatureD( )//Get the diameter D of hole feature 45. if (y[w] is suitable for D) then RD[w] ← ITm) then RIt[j] ← ITm) then RIt[j] ← ITn) then RIt[j] ← b) then RRa[w] ← b) then 54. RRa[w] ← 1-(log(b)-log(feature[i].Ra))/5(log(b)-log(a)) 55. end if 56. end for 57. /* Calculate fuzzy comprehensive evaluation matrix R2[ ][ ] of hole feature*/ 58. for (s1 = 0; s1 < 13; s1 ++) do 59. R2[0][s1] ← RM[s1] 60. end for 61. for (s2 = 0; s2 < 13; s2 ++) do 62. R2[1][s2] ← RD[s2] 63. end for 64. for (s3 = 0; s3 < 13; s3 ++) do 65. R2[2][s3] ← RIt[s3] 66. end for 67. for (s4 = 0; s4 < 4; s4 ++) do 68. R2[3][s4] ← RRa[s4] 69. end for 70. /*Calculate fuzzy comprehensive evaluation index vector B[ ]*/ 71. for (num = 0; num < 13; num ++) do 72. for (i = 0; I < 13; i ++) do 73. for (j = 0; j < 4; j ++) do 74. B[num] ←B[num]+W[j]*R2[i][j] 75. end for 76. end for 77. end for 78. Take y[ ] corresponding to the element with largest value in B[ ] as the scheme [i] 79. end if 80. end for |
Algorithm A7. acquisition of optimal machining element sequence |
1. Input: all the MEs sequence TS[i][ ] 2. Output: optimal sequence OTS[ ] 3. max ← 0, op ← 0, F[ ] ← 0 4. for (i = 0; i < n; i ++) do//n is the number of sequences 5. diff_m ← 0, diff_t ← 0, diff_D ← 0 6. for (j = 0; j < m−1; j ++) do//m is the number of machining element 7. num ← TS[i][j] 8. if (me[num].m_id me[num+1].m_id) then diff_m++ end if 9. if (me[num].m_id me[num+1].m_id || me[num].t_id me[num+1].t_id) then 10. diff_t++ 11. end if 12. if (me[num].m_id me[num+1].m_id || me[num].TAD me[num+1].TAD) then 13. diff_D++ 14. end if 15. end for 16. F[i] ← 0.53* diff_m+0.163* diff_t+0.297* diff_D 17. end for 18. for (s = 0; s < n; s ++) do 19. if (F[s] max) then 20. max ← F[s] 21. op ← s 22. end if 23. end for 24. for (k = 0; k < n; k ++) do 25. OTS[k] ← TS[op][k] 26. end for |
References
- Al-wswasi, M.; Ivanov, A.; Makatsoris, H. A survey on smart automated computer-aided process planning (ACAPP) techniques. Int. J. Adv. Manuf. Technol. 2018, 97, 809–832. [Google Scholar] [CrossRef] [Green Version]
- Kyprianou, L.K. Shape Classification in Computer-Aided Design. Ph.D. Thesis, Cambridge University, Cambridge, UK, 1980. [Google Scholar]
- Han, J.H.; Pratt, M.; Regli, W.C. Manufacturing feature recognition from solid models: A status report. IEEE Trans. Robot. Autom. 2000, 16, 782–796. [Google Scholar] [CrossRef] [Green Version]
- Joshi, S.; Chang, T.C. Graph-based heuristics for recognition of machined features from a 3D solid model. Comput. Aided. Des. 1988, 20, 58–66. [Google Scholar] [CrossRef]
- Li, Y.G.; Ding, Y.F.; Mou, W.P.; Guo, H. Feature recognition technology for aircraft structural parts based on a holistic attribute adjacency graph. Proc. Inst. Mech. Eng. B J. Eng. Manuf. 2010, 224, 271–278. [Google Scholar] [CrossRef]
- Marefat, M.; Kashyap, R.L. Geometric reasoning for recognition of three-dimensional object features. IEEE Trans. Pattern. Anal. Mach. Intell. 1990, 12, 949–965. [Google Scholar] [CrossRef]
- Armstrong, G.T. A Study of Automatic Generation of Non-Invasive NC Machine Paths from Geometric Models. Ph.D. Thesis, University of Leeds, Leeds, UK, 1982. [Google Scholar]
- Verma, A.K.; Rajotia, S. A review of machining feature recognition methodologies. Int. J. Comput. Integr. Manuf. 2010, 23, 353–368. [Google Scholar] [CrossRef]
- Jüttler, B.; Kapl, M.; Nguyen, D.M.; Pan, Q.; Pauley, M. Isogeometric segmentation: The case of contractible solids without non-convex edges. Comput. Aided. Des. 2014, 57, 74–90. [Google Scholar] [CrossRef]
- Kim, B.C.; Mun, D. Feature-based simplification of boundary representation models using sequential iterative volume decomposition. Comput. Graph. 2014, 38, 97–107. [Google Scholar] [CrossRef]
- Tao, S.Q.; Huang, Z.D.; Ma, L.J.; Guo, S.S.; Wang, S.T.; Xie, Y.B. Partial retrieval of CAD models based on local surface region decomposition. Comput. Aided. Des. 2013, 45, 1239–1252. [Google Scholar] [CrossRef]
- Campana, G.; Mele, M. An application to Stereolithography of a feature recognition algorithm for manufacturability evaluation. J. Intell. Manuf. 2020, 31, 199–214. [Google Scholar] [CrossRef]
- Vandenbrande, J.H.; Requicha, A.A.G. Spatial reasoning for the automatic recognition of machinable features in solid models. IEEE Trans. Pattern. Anal. Mach. Intell. 1993, 15, 1269–1285. [Google Scholar] [CrossRef]
- Sunil, V.B.; Agarwal, R.; Pande, S.S. An approach to recognize interacting features from B-Rep CAD models of prismatic machined parts using a hybrid (graph and rule based) technique. Comput. Ind. 2010, 61, 686–701. [Google Scholar] [CrossRef]
- Li, Y.; Wang, W.; Liu, X.; Ma, Y. Definition and recognition of rib features in aircraft structural part. Int. J. Comput. Integr. Manuf. 2014, 27, 1–19. [Google Scholar] [CrossRef]
- Gao, S.; Shah, J.J. Automatic recognition of interacting machining features based on minimal condition subgraph. Comput. Aided. Des. 1998, 30, 727–739. [Google Scholar] [CrossRef]
- Alain-Jérôme, F.; Egon, O. Intelligent agents for feature modelling in computer aided design. J. Comput. Des. Eng. 2018, 5, 19–40. [Google Scholar]
- Liu, X.M.; Jia, Y.Q.; Chen, Z.R. Recognition of machining feature for engine cylinder blocks. Comput. Integr. Manuf. Syst. 2016, 22, 1197–1204. [Google Scholar] [CrossRef]
- Zhang, Y.; Dong, X.Y.; Li, D.S.; Zeng, Q.F.; Yang, S.H.; Gong, Y.D. Method for STEP–NC manufacturing feature recognition based on STEP and improved neural network. Acta Aeronaut. Astronaut. Sin. 2019, 40, 256–267. [Google Scholar] [CrossRef]
- Duan, X.Y.; Yu, S.; Peng, F.Y.; Zheng, Y.; Xiang, F. Feature Matrix Based Complex Feature Hierarchical Recognition for Blank Model of Large Cabin Component. J. Mech. Eng. 2021, 57, 166–176. [Google Scholar] [CrossRef]
- Luo, Z.Y.; Sheng, B.Y.; Chen, Y.K. Machining feature recognition of injection mold based on graph matching. Mod. Manuf. Eng. 2020, 11, 61–67. [Google Scholar] [CrossRef]
- Berenji, H.R.; Khoshnevis, B. Use of artificial intelligence in automated process planning. Comput. Mech. Eng. 1986, 5, 47–55. [Google Scholar]
- Huang, W.J. Fundamental Research on the Optimization of Process Planning for the Complicated Components. Ph.D. Thesis, School of Mechanical Science & Engineering, Huazhong University of Science and Technology, Wuhan, China, 2012. [Google Scholar] [CrossRef]
- Ma, S.M.; Liu, C.J.; Sun, Y.; Li, A.P. Research on decision-making of part feature machining program based on fuzzy reasoning. J. Mach. Des. 2014, 31, 15–19. [Google Scholar] [CrossRef]
- Hu, Q.W.; Liu, D.L.; Du, P. Feature Processing Scheme Decision Based on Tsukamoto Fuzzy Reasoning. Aerosp. Manuf. Technol. 2018, 4, 5–9. [Google Scholar] [CrossRef]
- Zhong, J.W.; Deng, Z.H.; Shi, Y.D.; Liu, W. Process Planning of Groove Feature Milling and Optimal Selecting for Tool Based on BP Neural Network. Mach. Build. Autom. 2019, 48, 51–55. [Google Scholar] [CrossRef]
- Zhao, Y.D.; Tan, C.; Xu, J.C. Decision-making of processing links based on the fuzzy back-propagation network. Manufacturing Automation. Mach. Build. Autom. 2012, 34, 31–33. [Google Scholar] [CrossRef]
- Guan, X.S.; Wang, Y.Q.; Tao, L.Y. Machining scheme selection of digital manufacturing based on genetic algorithm and AHP. J. Intell. Manuf. 2009, 20, 661–669. [Google Scholar] [CrossRef]
- Hu, Y.J.; Wang, Y.; Wang, Z.L.; Wang, Y.Q.; Zhang, B.C. Machining scheme selection based on a new discrete particle swarm optimization and analytic hierarchy process. Artif. Intell. Eng. Des. Anal. Manuf. 2014, 28, 71–78. [Google Scholar] [CrossRef]
- Deng, Z.H.; Lv, L.S.; Huang, W.L.; Shi, Y.D. A high efficiency and low carbon oriented machining process route optimization model and its application. Int. J. Precis. Eng. Manuf. Technol. 2019, 6, 23–41. [Google Scholar] [CrossRef]
- Jiang, Z.G.; Jiang, Y.; Wang, Y.; Zhang, H.; Cao, H.J.; Tian, G.D. A hybrid approach of rough set and case-based reasoning to remanufacturing process planning. J. Intell. Manuf. 2019, 30, 19–32. [Google Scholar] [CrossRef]
- Chen, Y.F.; Huang, Z.D.; Chen, L.P.; Wang, Q.F. Parametric process planning based on feature parameters of parts. Int. J. Adv. Manuf. Technol. 2006, 28, 727–736. [Google Scholar] [CrossRef]
- Peng, H.; Wang, H.; Chen, D.J. Optimization of remanufacturing process routes oriented toward eco-efficiency. Front. Mech. Eng. 2019, 14, 422–433. [Google Scholar] [CrossRef]
- Rao Krishna, A.G.; Rao, K.M. Optimisation of operations sequence in CAPP using an ant colony algorithm. Int. J. Adv. Manuf. Technol. 2006, 29, 159–164. [Google Scholar] [CrossRef]
- Li, L.; Fuh, J.Y.H.; Zhang, Y.F.; Nee, A.Y.C. Application of genetic algorithm to computer-aided process planning in preliminary and detailed planning. Robot. Comput. Integr. Manuf. 2005, 21, 568–578. [Google Scholar] [CrossRef]
- Zhou, G.H.; Tian, C.L.; Zhang, J.J.; Chang, F.T.; Lu, Q. Multi-objective process route optimization considering carbon emissions. Int. J. Adv. Manuf. Technol. 2018, 96, 1195–1213. [Google Scholar] [CrossRef]
- Chen, B.; Jing, B.X. Process route optimization based on bacteria foraging and ant colony algorithm. Chin. J. Eng. Des. 2020, 27, 600–607, 624. [Google Scholar] [CrossRef]
- An, X.H.; Chen, T. Optimization of process route based on intuitionistic fuzzy number and multi - objective optimization algorithm. Comput. Integr. Manuf. Syst. 2019, 25, 1180–1191. [Google Scholar] [CrossRef]
- Guo, X.Y.; Wang, L.; Zhang, Y.J. Machining Process Planning Based on Immune Genetic Algorithm under Rule Constraints. China Mech. Eng. 2020, 31, 482–488. [Google Scholar] [CrossRef]
- Dou, J.P.; Li, J.; Su, C. Optimization of operation sequencing based on feasible operation sequence oriented genetic algorithm. Comput. Integr. Manuf. Syst. 2019, 25, 1981–1990. [Google Scholar] [CrossRef]
- Ouyang, H.B.; Shen, B. STEP-NC oriented process planning optimization based on hybrid genetic algorithm. Comput. Integr. Manuf. Syst. 2012, 18, 66–75. [Google Scholar] [CrossRef]
- Liu, X.M.; Meng, F.F.; Li, A.P.; Gu, Z.Y. Research on Machining Step Sequencing of Machining Center Based on Polychromatic Sets Theory and Genetic Algorithm. China Mech. Eng. 2013, 24, 2437–2442. [Google Scholar] [CrossRef]
- Zhou, X. Research on MBD Based 3D CAD Model Feature Recognition and Similarity Evaluation. Master’s Thesis, Department of Mechanical and Engineering Electronic, Shandong University of Science and Technology, Qingdao, China, 2021. [Google Scholar]
- Venu, B.; Komma, V.R.; Srivastava, D. STEP-based feature recognition system for B-spline surface features. Int. J. Autom. Comput. 2018, 15, 500–512. [Google Scholar] [CrossRef]
- Ding, S.H.; Feng, Q.; Sun, Z.Y.; Ma, F. MBD Based 3D CAD Model Automatic Feature Recognition and Similarity Evaluation. IEEE Access 2021, 9, 150403–150425. [Google Scholar] [CrossRef]
- Cheng, B.; Ding, J.L. Interacting Feature recognition based on Hint and Feature Main Base Face. Mach. Tool. Hydraul. 2019, 47, 72–77. [Google Scholar] [CrossRef]
- Zhou, Y.P.; Zhang, J.; Qin, W. Feature recognition methodology for large thin-wall part of spacecraft. Comput. Integr. Manuf. Syst. 2016, 22, 2505–2512. [Google Scholar] [CrossRef]
- Guo, F.L.; Sun, G.Z.; Zhou, J.T.; Shao, L. Machining Feature Recognition Based on Graph Twice Decomposition. Mach. Des. Manuf. 2013, 5, 56–59. [Google Scholar] [CrossRef]
- Wang, B. Research on Machining Feature Recognition and Process Path Optimization Based on MBD Model. Master’s Thesis, Department of Mechanical and Engineering Electronic, Shandong University of Science and Technology, Qingdao, China, 2022. [Google Scholar]
- Wei, Z.Y. Application Research of Fuzzy Comprehensive Evaluation in the Optimization of Feasibility Study Scheme. Master’s Thesis, Department of Civil Engineering, Lanzhou Jiaotong University, Lanzhou, China, 2020. [Google Scholar]
- Zhou, Y.F. Study of the Key Technologies of Hybrid CAPP System Based on the Knowledge-Driven. Master’s Thesis, Department of Electronic Engineering, North University of China, Taiyuan, China, 2012. [Google Scholar]
Structure Array | Surface [ ] | Edge [ ] | Contour [ ] | Surfinish [ ] | Gtol [ ] | Dimension [ ] |
---|---|---|---|---|---|---|
Structure member | ID | ID | Type | Symbol | Symbol | Symbol |
Type | Type | Edge ID | Value | Type | Type | |
Concavity–convexity | Concavity–convexity | / | Related surface ID | Value | Value | |
Adjacent surface ID | Adjacent surface ID | / | / | Related surface ID | Upper deviation | |
Edge ID | Inner contour attribute | / | / | Datum ID | Lower deviation | |
Contour information | / | / | / | / | Related surface ID | |
Roughness | / | / | / | / | / | |
Tolerance | / | / | / | / | / |
No. | Name | Function |
---|---|---|
1 | ProMdlCurrentGet | Get the handle of current model |
2 | ProSolidSurfaceVisit | Traverse the model surfaces |
3 | ProSurfaceContourVisit | Traverse the contour on the surface |
4 | ProContourEdgeVisit | Traverse the edge on the contour |
5 | ProContourTraversalGet | Get the type of contour |
6 | ProSurfaceIdGet | Get the surface ID |
7 | ProSurfaceTypeGet | Get the type of the surface |
8 | ProSurfaceDataGet | Get the surface data |
9 | ProEdgeIdGet | Get the edge ID |
10 | ProEdgeTypeGet | Get the edge type |
Attribute Name | Type of Variable | Attribute Definition |
---|---|---|
Type | int | |
Concavity–convexity | int | |
DBS attribute | bool | |
FBS attribute | bool | |
JBS attribute | int | / |
Attribute Name | Type of Variable | Attribute Definition |
---|---|---|
Type | int | |
Concavity–convexity | int | |
Inner contour | bool |
No. | Feature Name | Graphical Representation | AAM |
---|---|---|---|
1 | Through-hole | ||
2 | Blind-hole | ||
3 | Closed key slot | ||
4 | Open key slot | ||
5 | Through groove | ||
6 | Cylinder extrusion | ||
7 | Blind groove | ||
8 | Step | ||
9 | Rectangular blind cavity | ||
10 | Rectangular through cavity |
No. | Processing Scheme | Machining Accuracy | Surface Roughness | Scope of Application |
---|---|---|---|---|
1 | Rough planing | IT11~13 | 12.5~50 | Plane processing of ferrous and nonferrous metals |
2 | Rough planing—fine planing | IT8~10 | 3.2~6.3 | |
3 | Rough planing—fine planing—wide blade fine planing | IT6~7 | 0.8~1.6 | |
4 | Rough milling | IT11~13 | 6.3~25 | Plane, through groove, step, and other features of ferrous and non-ferrous metals |
5 | Rough milling—finish milling | IT8~10 | 1.6~6.3 | |
6 | Rough milling—finish milling—fine grinding | IT6~7 | 0.8~1.6 | Plane of ferrous metal |
Scale Value | Meaning |
---|---|
1 | is as important as |
3 | is slightly more important than |
5 | is more important than |
7 | is significantly more important than |
9 | is extremely more important than |
2, 4, 6, 8 | Preceding adjacent median |
Reciprocal of scale value | Contrary to the above comparison between and |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
0 | 0 | 0.58 | 0.90 | 1.12 | 1.24 | 1.32 | 1.41 | 1.51 |
No. | ||||||
---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | |
√ | √ | √ | √ | √ | √ | |
√ | √ | √ | √ | √ |
No. | ||||||
---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | |
√ | √ | √ | √ | √ | √ | |
√ | √ | |||||
√ | √ | √ | √ | √ | √ | |
√ | √ | |||||
√ | √ | |||||
√ | √ |
No. | Type | Name | Resource | No. | Type | Name | Resource |
---|---|---|---|---|---|---|---|
1 | machine | M1 | drilling machine | 1 | tool | Z1, Z2, Z3 | Twist drill |
2 | M2 | Vertical milling machine | 2 | J1, J2 | Reamer | ||
3 | M3 | CNC milling machine | 3 | KZ1 | Counterbore drill | ||
4 | M4 | Horizontal milling machine | 4 | X1, X2, X3, X4, X5, X6 | Milling cutter |
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |
© 2022 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Ding, S.; Guo, Z.; Wang, B.; Wang, H.; Ma, F. MBD-Based Machining Feature Recognition and Process Route Optimization. Machines 2022, 10, 906. https://doi.org/10.3390/machines10100906
Ding S, Guo Z, Wang B, Wang H, Ma F. MBD-Based Machining Feature Recognition and Process Route Optimization. Machines. 2022; 10(10):906. https://doi.org/10.3390/machines10100906
Chicago/Turabian StyleDing, Shuhui, Zhongyuan Guo, Bin Wang, Haixia Wang, and Fai Ma. 2022. "MBD-Based Machining Feature Recognition and Process Route Optimization" Machines 10, no. 10: 906. https://doi.org/10.3390/machines10100906