feat: коническое отверстие (hole_conic) — ksHTConic + IConicHoleParameters
- ConicHoleAsync (ksHTConic + IConicHoleParameters: ConicType=ksCNAngle, ConicAngle) - инструмент hole_conic (diameter у дна, conicAngle 0..180); тот же HoleCore-паттерн - интеграционный тест (конус удаляет больше цилиндра Ø10); типы отверстий завершены - 70 инструментов, 119 тестов
This commit is contained in:
@@ -147,4 +147,28 @@ public sealed class HoleTests
|
||||
}
|
||||
finally { await _docs.CloseAsync(save: false); }
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Conic_hole_removes_tapered_volume()
|
||||
{
|
||||
await _docs.CreateAsync(KompasDocumentType.Part);
|
||||
try
|
||||
{
|
||||
var s = await _modeler.OpenSketchAsync(BasePlane.XOY);
|
||||
await _modeler.AddRectangleAsync(s, -20, -20, 20, 20);
|
||||
await _modeler.CloseSketchAsync(s);
|
||||
await _modeler.ExtrudeAsync(s, depth: 20);
|
||||
var before = (await _query.GetPartInfoAsync()).Volume;
|
||||
|
||||
// Коническое Ø10 у дна, угол 20°, глухое на 15 мм по центру верхней грани.
|
||||
await _holes.ConicHoleAsync(0, 0, 20, diameter: 10, depth: 15, throughAll: false, conicAngle: 20);
|
||||
var removed = before - (await _query.GetPartInfoAsync()).Volume;
|
||||
|
||||
// Конус расширяется к поверхности → объём больше цилиндра Ø10×15 (π·25·15≈1178) и в разумных пределах.
|
||||
var baseCyl = Math.PI * 25 * 15;
|
||||
Assert.True(removed > baseCyl, "Конусное отверстие должно удалить больше цилиндра Ø10.");
|
||||
Assert.True(removed < baseCyl * 4, "Объём конуса в разумных пределах.");
|
||||
}
|
||||
finally { await _docs.CloseAsync(save: false); }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user