Files
kompas3d-mcp/src/Kompas.Mcp.Core/Modeling/BasePlane.cs
T
mikhail af6adc390e feat(core): PartModeler — эскизы и выдавливание (цикл моделирования)
- BasePlane (XOY/XOZ/YOZ) + маппинг в Obj3dType
- PartModeler (API5 ksPart): OpenSketch/AddLine/AddCircle/AddRectangle/CloseSketch,
  Extrude (boss/cut, blind/throughAll), Rebuild; реестр эскизов и операций по id
- tests: построение цилиндра со сквозным отверстием + снимок (визуально проверено)

Полный цикл "эскиз -> выдавливание -> эскиз -> сквозной вырез -> снимок" работает.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 23:52:55 +03:00

31 lines
982 B
C#

using Kompas6Constants3D;
namespace Kompas.Mcp.Core.Modeling;
/// <summary>Базовая координатная плоскость для эскиза.</summary>
public enum BasePlane
{
XOY,
XOZ,
YOZ,
}
public static class BasePlanes
{
public static Obj3dType ToObj3dType(BasePlane plane) => plane switch
{
BasePlane.XOY => Obj3dType.o3d_planeXOY,
BasePlane.XOZ => Obj3dType.o3d_planeXOZ,
BasePlane.YOZ => Obj3dType.o3d_planeYOZ,
_ => throw new ArgumentOutOfRangeException(nameof(plane), plane, "Неизвестная плоскость."),
};
public static BasePlane Parse(string value) => value.Trim().ToUpperInvariant() switch
{
"XOY" or "XY" => BasePlane.XOY,
"XOZ" or "XZ" => BasePlane.XOZ,
"YOZ" or "YZ" => BasePlane.YOZ,
_ => throw new ArgumentException($"Неизвестная плоскость '{value}'. Допустимо: XOY, XOZ, YOZ.", nameof(value)),
};
}