From de4ccff0502039ca8354846af078327f9ef9aac2 Mon Sep 17 00:00:00 2001 From: sladro Date: Thu, 29 Jan 2026 11:14:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=AF=9B=E6=96=99=E6=80=81?= =?UTF-8?q?=E3=80=81=E8=87=AA=E7=94=B1=E9=94=BB=E3=80=81=E6=96=B9=E4=BD=93?= =?UTF-8?q?=E3=80=81=E6=9C=89=E5=9C=86=E5=A4=B4=E7=9A=84=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E7=94=9F=E6=88=90=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cad/FeatureDrivenDrawer.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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,