| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  | ```mermaid | 
					
						
							|  |  |  | flowchart LR | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   subgraph path4 [Path] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     4["Path<br>[683, 753, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     7["Segment<br>[683, 753, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }] | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |     15[Solid2d] | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   subgraph path5 [Path] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     5["Path<br>[986, 1067, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     8["Segment<br>[1073, 1124, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     9["Segment<br>[1130, 1181, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     10["Segment<br>[1187, 1238, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     11["Segment<br>[1244, 1294, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     12["Segment<br>[1300, 1350, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     13["Segment<br>[1356, 1363, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }] | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |     17[Solid2d] | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   subgraph path6 [Path] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     6["Path<br>[1462, 1531, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |     14["Segment<br>[1462, 1531, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |       %% [ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }] | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |     16[Solid2d] | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |   1["Plane<br>[660, 677, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |     %% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |   2["StartSketchOnFace<br>[943, 980, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 19:18:03 -04:00
										 |  |  |     %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |   3["StartSketchOnFace<br>[1421, 1456, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 19:18:03 -04:00
										 |  |  |     %% [ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |   18["Sweep Extrusion<br>[759, 792, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |     %% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |   19["Sweep Extrusion<br>[1369, 1409, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |     %% [ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |   20["Sweep Extrusion<br>[1537, 1565, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |     %% [ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   21[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   22[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   23[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   24[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   25[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   26[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |   27[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   28[Wall] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   29["Cap Start"] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=[ProgramBodyItem { index: 7 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   30["Cap Start"] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   31["Cap End"] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=[ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   32["Cap End"] | 
					
						
							| 
									
										
										
										
											2025-05-15 20:14:31 -04:00
										 |  |  |     %% face_code_ref=Missing NodePath | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |   33["SweepEdge Opposite"] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   34["SweepEdge Opposite"] | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |   35["SweepEdge Opposite"] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   36["SweepEdge Opposite"] | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |   37["SweepEdge Opposite"] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   38["SweepEdge Opposite"] | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   39["SweepEdge Opposite"] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   40["SweepEdge Opposite"] | 
					
						
							|  |  |  |   41["SweepEdge Adjacent"] | 
					
						
							|  |  |  |   42["SweepEdge Adjacent"] | 
					
						
							|  |  |  |   43["SweepEdge Adjacent"] | 
					
						
							|  |  |  |   44["SweepEdge Adjacent"] | 
					
						
							|  |  |  |   45["SweepEdge Adjacent"] | 
					
						
							|  |  |  |   46["SweepEdge Adjacent"] | 
					
						
							|  |  |  |   47["SweepEdge Adjacent"] | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |   48["SweepEdge Adjacent"] | 
					
						
							| 
									
										
										
										
											2025-05-06 08:44:03 +12:00
										 |  |  |   49["EdgeCut Fillet<br>[798, 864, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |     %% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }] | 
					
						
							| 
									
										
											  
											
												Do multiple chamfer/fillet in one API call (#6750)
KCL's `fillet` function takes an array of edges to fillet. Previously this would do `n` fillet API commands, one per edge. This PR combines them all into one call, which should improve performance. You can see the effect in the  artifact_commands snapshots, e.g. `rust/kcl-lib/tests/kcl_samples/axial-fan/artifact_commands.snap` 
Besides performance, this should fix a bug where some KCL fillets would fail, when they should have succeeded. Example from @max-mrgrsk:
```kcl
sketch001 = startSketchOn(XY)
  |> startProfile(at = [-12, -6])
  |> line(end = [0, 12], tag = $seg04)
  |> line(end = [24, 0], tag = $seg03)
  |> line(end = [0, -12], tag = $seg02)
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01)
  |> close()
extrude001 = extrude(
       sketch001,
       length = 12,
       tagEnd = $capEnd001,
       tagStart = $capStart001,
     )
  |> fillet(
       radius = 5,
       tags = [
         getCommonEdge(faces = [seg02, capEnd001]),
         getCommonEdge(faces = [seg01, capEnd001]),
         getCommonEdge(faces = [seg03, capEnd001]),
         getCommonEdge(faces = [seg04, capEnd001])
       ],
     )
```
This program fails on main, but succeeds on this branch.
											
										 
											2025-05-22 16:25:55 -05:00
										 |  |  |   50["EdgeCut Fillet<br>[1571, 1630, 0]"] | 
					
						
							| 
									
										
										
										
											2025-05-15 13:37:12 -07:00
										 |  |  |     %% [ProgramBodyItem { index: 8 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }] | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   1 --- 4 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   29 x--> 2 | 
					
						
							|  |  |  |   31 x--> 3 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   4 --- 7 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   4 --- 15 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   4 ---- 18 | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  |   5 --- 8 | 
					
						
							|  |  |  |   5 --- 9 | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |   5 --- 10 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   5 --- 11 | 
					
						
							|  |  |  |   5 --- 12 | 
					
						
							|  |  |  |   5 --- 13 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   5 --- 17 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   5 ---- 19 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   29 --- 5 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   6 --- 14 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   6 --- 16 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   6 ---- 20 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   31 --- 6 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   7 --- 28 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   7 x--> 31 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   7 --- 40 | 
					
						
							|  |  |  |   7 --- 48 | 
					
						
							| 
									
										
											  
											
												Do multiple chamfer/fillet in one API call (#6750)
KCL's `fillet` function takes an array of edges to fillet. Previously this would do `n` fillet API commands, one per edge. This PR combines them all into one call, which should improve performance. You can see the effect in the  artifact_commands snapshots, e.g. `rust/kcl-lib/tests/kcl_samples/axial-fan/artifact_commands.snap` 
Besides performance, this should fix a bug where some KCL fillets would fail, when they should have succeeded. Example from @max-mrgrsk:
```kcl
sketch001 = startSketchOn(XY)
  |> startProfile(at = [-12, -6])
  |> line(end = [0, 12], tag = $seg04)
  |> line(end = [24, 0], tag = $seg03)
  |> line(end = [0, -12], tag = $seg02)
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01)
  |> close()
extrude001 = extrude(
       sketch001,
       length = 12,
       tagEnd = $capEnd001,
       tagStart = $capStart001,
     )
  |> fillet(
       radius = 5,
       tags = [
         getCommonEdge(faces = [seg02, capEnd001]),
         getCommonEdge(faces = [seg01, capEnd001]),
         getCommonEdge(faces = [seg03, capEnd001]),
         getCommonEdge(faces = [seg04, capEnd001])
       ],
     )
```
This program fails on main, but succeeds on this branch.
											
										 
											2025-05-22 16:25:55 -05:00
										 |  |  |   7 --- 49 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   8 --- 26 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   8 x--> 29 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   8 --- 39 | 
					
						
							|  |  |  |   8 --- 47 | 
					
						
							|  |  |  |   9 --- 23 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   9 x--> 29 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   9 --- 38 | 
					
						
							|  |  |  |   9 --- 46 | 
					
						
							|  |  |  |   10 --- 27 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   10 x--> 29 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   10 --- 37 | 
					
						
							|  |  |  |   10 --- 45 | 
					
						
							|  |  |  |   11 --- 22 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   11 x--> 29 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   11 --- 36 | 
					
						
							|  |  |  |   11 --- 44 | 
					
						
							|  |  |  |   12 --- 24 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   12 x--> 29 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   12 --- 35 | 
					
						
							|  |  |  |   12 --- 43 | 
					
						
							|  |  |  |   13 --- 25 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   13 x--> 29 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   13 --- 34 | 
					
						
							|  |  |  |   13 --- 42 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   14 --- 21 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   14 x--> 31 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   14 --- 33 | 
					
						
							|  |  |  |   14 --- 41 | 
					
						
							|  |  |  |   18 --- 28 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   18 --- 29 | 
					
						
							|  |  |  |   18 --- 31 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   18 --- 40 | 
					
						
							|  |  |  |   18 --- 48 | 
					
						
							| 
									
										
										
										
											2025-04-26 21:21:26 -07:00
										 |  |  |   19 --- 22 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   19 --- 23 | 
					
						
							|  |  |  |   19 --- 24 | 
					
						
							|  |  |  |   19 --- 25 | 
					
						
							|  |  |  |   19 --- 26 | 
					
						
							|  |  |  |   19 --- 27 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   19 --- 30 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   19 --- 34 | 
					
						
							|  |  |  |   19 --- 35 | 
					
						
							|  |  |  |   19 --- 36 | 
					
						
							|  |  |  |   19 --- 37 | 
					
						
							|  |  |  |   19 --- 38 | 
					
						
							|  |  |  |   19 --- 39 | 
					
						
							|  |  |  |   19 --- 42 | 
					
						
							|  |  |  |   19 --- 43 | 
					
						
							|  |  |  |   19 --- 44 | 
					
						
							|  |  |  |   19 --- 45 | 
					
						
							|  |  |  |   19 --- 46 | 
					
						
							|  |  |  |   19 --- 47 | 
					
						
							|  |  |  |   20 --- 21 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   20 --- 32 | 
					
						
							| 
									
										
										
										
											2025-04-29 06:38:52 -07:00
										 |  |  |   20 --- 33 | 
					
						
							|  |  |  |   20 --- 41 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   21 --- 33 | 
					
						
							|  |  |  |   21 --- 41 | 
					
						
							|  |  |  |   22 --- 36 | 
					
						
							|  |  |  |   22 --- 44 | 
					
						
							|  |  |  |   45 <--x 22 | 
					
						
							|  |  |  |   23 --- 38 | 
					
						
							|  |  |  |   23 --- 46 | 
					
						
							|  |  |  |   47 <--x 23 | 
					
						
							|  |  |  |   24 --- 35 | 
					
						
							|  |  |  |   24 --- 43 | 
					
						
							|  |  |  |   44 <--x 24 | 
					
						
							|  |  |  |   25 --- 34 | 
					
						
							|  |  |  |   25 --- 42 | 
					
						
							|  |  |  |   43 <--x 25 | 
					
						
							|  |  |  |   26 --- 39 | 
					
						
							|  |  |  |   42 <--x 26 | 
					
						
							|  |  |  |   26 --- 47 | 
					
						
							|  |  |  |   27 --- 37 | 
					
						
							|  |  |  |   27 --- 45 | 
					
						
							|  |  |  |   46 <--x 27 | 
					
						
							|  |  |  |   28 --- 40 | 
					
						
							|  |  |  |   28 --- 48 | 
					
						
							|  |  |  |   40 <--x 29 | 
					
						
							| 
									
										
										
										
											2025-04-30 00:34:35 -04:00
										 |  |  |   34 <--x 30 | 
					
						
							|  |  |  |   35 <--x 30 | 
					
						
							|  |  |  |   36 <--x 30 | 
					
						
							|  |  |  |   37 <--x 30 | 
					
						
							|  |  |  |   38 <--x 30 | 
					
						
							|  |  |  |   39 <--x 30 | 
					
						
							| 
									
										
										
										
											2025-05-13 21:07:24 -07:00
										 |  |  |   33 <--x 32 | 
					
						
							| 
									
										
											  
											
												Do multiple chamfer/fillet in one API call (#6750)
KCL's `fillet` function takes an array of edges to fillet. Previously this would do `n` fillet API commands, one per edge. This PR combines them all into one call, which should improve performance. You can see the effect in the  artifact_commands snapshots, e.g. `rust/kcl-lib/tests/kcl_samples/axial-fan/artifact_commands.snap` 
Besides performance, this should fix a bug where some KCL fillets would fail, when they should have succeeded. Example from @max-mrgrsk:
```kcl
sketch001 = startSketchOn(XY)
  |> startProfile(at = [-12, -6])
  |> line(end = [0, 12], tag = $seg04)
  |> line(end = [24, 0], tag = $seg03)
  |> line(end = [0, -12], tag = $seg02)
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $seg01)
  |> close()
extrude001 = extrude(
       sketch001,
       length = 12,
       tagEnd = $capEnd001,
       tagStart = $capStart001,
     )
  |> fillet(
       radius = 5,
       tags = [
         getCommonEdge(faces = [seg02, capEnd001]),
         getCommonEdge(faces = [seg01, capEnd001]),
         getCommonEdge(faces = [seg03, capEnd001]),
         getCommonEdge(faces = [seg04, capEnd001])
       ],
     )
```
This program fails on main, but succeeds on this branch.
											
										 
											2025-05-22 16:25:55 -05:00
										 |  |  |   33 <--x 50 | 
					
						
							| 
									
										
										
										
											2025-03-06 18:01:24 -05:00
										 |  |  | ``` |