diff --git a/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs b/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs index 455d522..1c78026 100644 --- a/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs +++ b/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs @@ -63,13 +63,12 @@ namespace CadParamPluging.Cad return; } - // Swap Size1 and Size2 so Size2 is horizontal and Size1 is vertical - double S1 = size2.Value; - double S2 = size1.Value; + // 修正:Size1 为横向总长,Size2 为竖向高度 + double S1 = size1.Value; + double S2 = size2.Value; double S3 = size3.HasValue && size3.Value > 0 ? size3.Value : 0; - var originalSize2 = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2); - double originalS1 = originalSize2.HasValue ? originalSize2.Value : S1; + double originalS1 = originalSize1.HasValue ? originalSize1.Value : S1; double ox = ctx.Center.X - S1 / 2.0; double oy = ctx.Center.Y - S2 / 2.0; @@ -118,7 +117,12 @@ namespace CadParamPluging.Cad // 1. 绘制主体轮廓 (矩形 + 平滑相切圆角) 和左右端弧线一体化 DrawShaftRoundHeadUnifiedOutline(ctx, ox, oy, S1, S2, w, r, xf_left, xf_right, fx_L_tangTop, fy_L_tangTop, fx_L_tang, fy_L_tangBot, fx_R_tangTop, fy_R_tangTop, fx_R_tang, fy_R_tangBot, needBreakLines, xBreak, lineSpacing); - // 2. 中心线 (由于方轴暂无纵向中心线需求,可跳过) + // 2. 中心线 (贯穿左右水平方向) + double clY = oy + S2 / 2.0; + var centerLine = new Line(new Point3d(ox - 10, clY, 0), new Point3d(ox + S1 + 10, clY, 0)); + ctx.Style?.Apply(centerLine, DrawingStyleManager.Role.Centerline); + ctx.Btr.AppendEntity(centerLine); + ctx.Tr.AddNewlyCreatedDBObject(centerLine, true); // 4. Draw Break Lines if needed if (needBreakLines) @@ -148,16 +152,16 @@ namespace CadParamPluging.Cad // 4. Dimensions { - var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2) ?? S1; - var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2); - var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus); - var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus); - var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus); - var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus); + var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1) ?? S1; + var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1); + var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus); + var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus); + var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus); + var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus); var dimText = FeatureDrivenDrawer.BuildDimensionText(FeatureDrivenDrawer.FormatDimNumber(val, str), tolPlus, tolMinus, tolPlusStr, tolMinusStr); - var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2Prime); + var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1Prime); if (valPrime.HasValue && valPrime.Value > 0) { dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")"; @@ -169,16 +173,16 @@ namespace CadParamPluging.Cad } { - var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1) ?? S2; - var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1); - var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus); - var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus); - var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus); - var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus); + var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2) ?? S2; + var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2); + var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus); + var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus); + var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus); + var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus); var dimText = FeatureDrivenDrawer.BuildDimensionText(FeatureDrivenDrawer.FormatDimNumber(val, str), tolPlus, tolMinus, tolPlusStr, tolMinusStr); - var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1Prime); + var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2Prime); if (valPrime.HasValue && valPrime.Value > 0) { dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")"; @@ -241,19 +245,19 @@ namespace CadParamPluging.Cad var s2Prime = bag.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2Prime); if (s1Prime.HasValue && s1Prime.Value > 0 && s2Prime.HasValue && s2Prime.Value > 0) { - // Size2 is horizontal (width), Size1 is vertical (height) - double pL = s2Prime.Value; - double pH = s1Prime.Value; + // Size1 对应横向总长,Size2 对应竖向高度 + double pL = s1Prime.Value; + double pH = s2Prime.Value; double pOx = ctx.Center.X - pL / 2.0; double pOy = ctx.Center.Y - pH / 2.0; if (needBreakLines) { - DrawRectOutlineWithBreak(ctx, pOx, pOy, pL, pH, xBreak, lineSpacing, DrawingStyleManager.Role.PartContour); + DrawRectOutlineWithBreak(ctx, pOx, pOy, pL, pH, xBreak, lineSpacing, DrawingStyleManager.Role.Hidden); } else { - DrawRectOutline(ctx, pOx, pOy, pL, pH, DrawingStyleManager.Role.PartContour); + DrawRectOutline(ctx, pOx, pOy, pL, pH, DrawingStyleManager.Role.Hidden); } } } @@ -604,7 +608,7 @@ namespace CadParamPluging.Cad /// /// 绘制带断口的零件轮廓(在断线位置打断上下横线) - /// 支持自定义 Role (通常为 PartContour) + /// 支持自定义 Role (通常为 Hidden 或 PartContour) /// private static void DrawRectOutlineWithBreak(FeatureDrivenDrawer.DrawingContext ctx, double x, double y, double w, double h, double xBreak, double breakWidth, DrawingStyleManager.Role role) {