28d2ae3868
Новый слой «модель как данные» (приоритетный над model_snapshot): - describe_model — структурный «паспорт» детали одним вызовом (габарит, МЦХ, тела, сводка топологии, дерево построения с параметрами, переменные) - list_features / list_bodies / list_variables - describe_face / describe_edge (drill-down по индексу) - measure (расстояние/угол между гранями/рёбрами/вершинами) - model_snapshot понижен до fallback для визуально-пространственных вопросов Реализация: ModelInspectionService (COM) + чистый InspectionText (рендер, группировка, детект «импорт без истории») + record-модели; InspectionTools. Дерево читается через ksPart.GetFeature()->SubFeatureCollection; точный тип и параметры операций берутся из GetObject()->GetDefinition() (ksFeature.type отдаёт лишь coarse o3d_entity). Снимок дерева также включает слои conversion (STEP), editing (move_face/solid) и validation, развивавшиеся параллельно. Полный прогон: 61 тест зелёный, 43 MCP-инструмента. Документация (README, ARCHITECTURE, OPEN_QUESTIONS, CLAUDE.md, presentation.html) синхронизирована. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
35 lines
1.4 KiB
C#
35 lines
1.4 KiB
C#
using Kompas.Mcp.Core.Conversion;
|
|
|
|
namespace Kompas.Mcp.Tests;
|
|
|
|
/// <summary>Юнит-тесты маппинга формата STEP в коды конвертера КОМПАС. COM не требуется.</summary>
|
|
[Trait("Category", "Unit")]
|
|
public sealed class StepFormatTests
|
|
{
|
|
[Theory]
|
|
[InlineData(StepFormat.Auto, 3)] // ksConverterToSTEP
|
|
[InlineData(StepFormat.Ap203, 203)] // ksConverterToSTEP_AP203
|
|
[InlineData(StepFormat.Ap214, 214)] // ksConverterToSTEP_AP214
|
|
[InlineData(StepFormat.Ap242, 242)] // ksConverterToSTEP_AP242
|
|
public void Export_code_matches_converter_enum(StepFormat fmt, int expected)
|
|
=> Assert.Equal(expected, StepFormats.ExportConverterCode(fmt));
|
|
|
|
[Fact]
|
|
public void Import_code_is_ksConverterFromStep()
|
|
=> Assert.Equal(-3, StepFormats.ImportConverterCode);
|
|
|
|
[Theory]
|
|
[InlineData("auto", StepFormat.Auto)]
|
|
[InlineData("step", StepFormat.Auto)]
|
|
[InlineData("ap214", StepFormat.Ap214)]
|
|
[InlineData("214", StepFormat.Ap214)]
|
|
[InlineData("AP203", StepFormat.Ap203)]
|
|
[InlineData("ap242", StepFormat.Ap242)]
|
|
public void Parse_maps_known_strings(string input, StepFormat expected)
|
|
=> Assert.Equal(expected, StepFormats.Parse(input));
|
|
|
|
[Fact]
|
|
public void Parse_rejects_unknown_format()
|
|
=> Assert.Throws<ArgumentException>(() => StepFormats.Parse("iges"));
|
|
}
|