feat(inspection): структурное «зрение» модели — осмотр без снимка
Новый слой «модель как данные» (приоритетный над 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>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
namespace Kompas.Mcp.Core.Conversion;
|
||||
|
||||
/// <summary>Вариант стандарта STEP для экспорта.</summary>
|
||||
public enum StepFormat
|
||||
{
|
||||
/// <summary>Формат по умолчанию (ksConverterToSTEP).</summary>
|
||||
Auto,
|
||||
Ap203,
|
||||
Ap214,
|
||||
Ap242,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Маппинг формата STEP в целочисленные коды конвертера КОМПАС (<c>ksKOMPASConverterEnum</c>).
|
||||
/// Эти коды передаются в <c>IApplication.get_Converter</c> и <c>IAdditionConvertParameters.Format</c>.
|
||||
/// </summary>
|
||||
public static class StepFormats
|
||||
{
|
||||
/// <summary>Код импорта STEP — <c>ksConverterFromSTEP</c>.</summary>
|
||||
public const int ImportConverterCode = -3;
|
||||
|
||||
/// <summary>Код экспорта STEP для выбранного стандарта (<c>ksConverterToSTEP[_APxxx]</c>).</summary>
|
||||
public static int ExportConverterCode(StepFormat format) => format switch
|
||||
{
|
||||
StepFormat.Auto => 3,
|
||||
StepFormat.Ap203 => 203,
|
||||
StepFormat.Ap214 => 214,
|
||||
StepFormat.Ap242 => 242,
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(format), format, "Неизвестный формат STEP."),
|
||||
};
|
||||
|
||||
/// <summary>Разобрать строку формата ("auto"/"step", "ap203", "ap214", "ap242").</summary>
|
||||
public static StepFormat Parse(string? value) => value?.Trim().ToLowerInvariant() switch
|
||||
{
|
||||
null or "" or "auto" or "step" => StepFormat.Auto,
|
||||
"ap203" or "203" => StepFormat.Ap203,
|
||||
"ap214" or "214" => StepFormat.Ap214,
|
||||
"ap242" or "242" => StepFormat.Ap242,
|
||||
_ => throw new ArgumentException(
|
||||
$"Неизвестный формат STEP '{value}'. Допустимо: auto, ap203, ap214, ap242.", nameof(value)),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user