diff --git a/Cad/FeatureDrivenDrawer.cs b/Cad/FeatureDrivenDrawer.cs index 5a067ee..e06b6a3 100644 --- a/Cad/FeatureDrivenDrawer.cs +++ b/Cad/FeatureDrivenDrawer.cs @@ -3005,7 +3005,8 @@ namespace CadParamPluging.Cad : 0; // 1. 绘制完整锻件外轮廓(方体有圆头 - 白色,固定小弧度) - DrawBlockRoundHeadOutline(ctx, ox, oy, visualTotalW, H, visualOuterArcR); + // 修正:外轮廓圆弧半径需增加内框圆角半径,以保证外圆弧的起点与内框圆角的起点在X轴上重合,消除直边延伸 + DrawBlockRoundHeadOutline(ctx, ox, oy, visualTotalW, H, visualOuterArcR + innerFilletR); // 2. 绘制分段式内框(左、中、右三段)以支持中间剖面区域的独立圆角 // 中间区域(剖面)作为主体,如果设置了圆角,四个角都应为圆角 @@ -3022,15 +3023,14 @@ namespace CadParamPluging.Cad DrawBoxSectionContourWithFillet(ctx, xSectionLeft, xSectionRight, oy, H, innerFilletR); // 绘制左侧框线(连接左端圆弧和中间剖面框) - // 左端: xInnerLeft (需处理左上下角的圆角 - 使用外轮廓圆角 visualOuterArcR) + // 左端: xInnerLeft (需处理左上下角的圆角 - 修正为使用内框圆角 innerFilletR,与方体参数一致) // 右端: xSectionLeft (连接到中间框的直边) - // 注意:DrawBoxSideFrame 仅在远端应用圆角,连接端是直的 - DrawBoxSideFrame(ctx, xInnerLeft, xSectionLeft, oy, H, visualOuterArcR, isLeft: true); + DrawBoxSideFrame(ctx, xInnerLeft, xSectionLeft, oy, H, innerFilletR, isLeft: true); // 绘制右侧框线 // 左端: xSectionRight (连接到中间框的直边) - // 右端: xInnerRight (需处理右上下角的圆角 - 使用外轮廓圆角 visualOuterArcR) - DrawBoxSideFrame(ctx, xSectionRight, xInnerRight, oy, H, visualOuterArcR, isLeft: false); + // 右端: xInnerRight (需处理右上下角的圆角 - 修正为使用内框圆角 innerFilletR,与方体参数一致) + DrawBoxSideFrame(ctx, xSectionRight, xInnerRight, oy, H, innerFilletR, isLeft: false); // 3. 剖面填充 - 只在中间区域 // 如果有圆角,填充范围也应考虑圆角(不过Hatch边界通常可以自动处理) @@ -3105,9 +3105,9 @@ namespace CadParamPluging.Cad // 标注从圆弧最外侧开始(避免与圆弧轮廓线重叠) double xOuterRight = ox + visualTotalW; - // 修正:标注界线起点应向内缩进一个圆角半径 visualOuterArcR,以连接到锻件顶底平直边的末端 + // 修正:标注界线起点应向内缩进(visualOuterArcR + innerFilletR),以连接到锻件顶底平直边的末端 // 否则标注界线会从包围盒的角点开始,导致与圆角轮廓之间有空隙 - double xDimOrigin = xOuterRight - visualOuterArcR; + double xDimOrigin = xOuterRight - (visualOuterArcR + innerFilletR); AddLinearDim( ctx,