feat(query): габариты детали (get_bounding_box)

QueryService.GetBoundingBoxAsync через API5 ksPart.GetGabarit(full=false) →
габаритный параллелепипед (мм) + размеры по осям. Помогает агенту оценить
протяжённость модели и подбирать точки для select-by-point (грани/рёбра).
Новый инструмент get_bounding_box; запись BoundingBox.

Тест: цилиндр R10×H20 → X,Y ∈ [-10;10], Z ∈ [0;20] (расширен QueryTests).
Презентация: 26 инструментов.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@
This commit is contained in:
2026-05-26 10:03:53 +03:00
parent 88dad09ea7
commit 8c778a449d
5 changed files with 66 additions and 4 deletions
+10
View File
@@ -18,4 +18,14 @@ public sealed class QueryTools(KompasSession session, QueryService query)
return $"Объём: {i.Volume:F2} мм³; масса: {i.Mass:F4} кг; площадь: {i.Area:F2} мм²; " +
$"центр масс: ({i.CenterX:F2}, {i.CenterY:F2}, {i.CenterZ:F2}).";
}
[McpServerTool(Name = "get_bounding_box")]
[Description("Габариты активной детали: координаты габаритного параллелепипеда (мм) и его размеры. Помогает оценить протяжённость модели и подобрать точки для выбора граней/рёбер.")]
public async Task<string> GetBoundingBox()
{
await session.ConnectAsync();
var b = await query.GetBoundingBoxAsync();
return $"Габарит: X [{b.MinX:F2}; {b.MaxX:F2}], Y [{b.MinY:F2}; {b.MaxY:F2}], Z [{b.MinZ:F2}; {b.MaxZ:F2}]; " +
$"размеры (Д×Ш×В): {b.SizeX:F2} × {b.SizeY:F2} × {b.SizeZ:F2} мм.";
}
}