修改间距,零件和外框的

This commit is contained in:
sladro 2026-01-16 13:54:59 +08:00
parent 839e100231
commit bfec5deb9f

View File

@ -538,18 +538,25 @@ namespace CadParamPluging.Cad
// === 特征8: 零件轮廓(车加工态,右半边) ===
if (ctx.IsMachined && outerDiaPrime.HasValue && outerDiaPrime.Value > 0 && heightPrime.HasValue && heightPrime.Value > 0)
{
// 零件轮廓(黄色部分)与锻件轮廓(白色部分)的间隙:
// 由于采用了强制比例和非线性映射,直接映射会导致间隙过大。
// 此处采用固定视觉间隙 (2.5个单位),确保零件框紧贴锻件框内部,符合示意图效果。
// 零件轮廓(黄色)尺寸计算: 基于实际尺寸差值(间隙)进行映射
var visualGap = 2.5;
var scaledOuterDiaPrime = (visualOuterR - visualGap) * 2.0;
var scaledInnerDiaPrime = innerDiaPrime.HasValue
? (visualInnerR + visualGap) * 2.0
: (double?)null;
// 同时也修正高度方向的视觉间隙,使其上下也紧贴外框
var scaledHeightPrime = H - visualGap * 2.0;
// 1. 外径 (Mapped)
double physicalPartOuterR = outerDiaPrime.Value / 2.0;
double visualPartOuterR = MapRadius(physicalPartOuterR);
var scaledOuterDiaPrime = visualPartOuterR * 2.0;
// 2. 内径 (Mapped)
double? scaledInnerDiaPrime = null;
if (innerDiaPrime.HasValue && innerDiaPrime.Value > 0)
{
double physicalPartInnerR = innerDiaPrime.Value / 2.0;
double visualPartInnerR = MapRadius(physicalPartInnerR);
scaledInnerDiaPrime = visualPartInnerR * 2.0;
}
// 3. 高度 (Direct, Y-axis is 1:1)
// 高度方向没有示意图扭曲,直接使用物理高度
var scaledHeightPrime = heightPrime.Value;
DrawPartContourHalf(ctx, ox, oy, H, scaledOuterDiaPrime, scaledInnerDiaPrime, scaledHeightPrime);
}