From f8e6443d04bfb06e51788dc56c5adfb478608e91 Mon Sep 17 00:00:00 2001 From: sladro Date: Mon, 16 Mar 2026 16:27:19 +0800 Subject: [PATCH] feat: introduce new CAD drawing functionalities for raw forged blocks, rings, shafts, and disks. --- Cad/BlockRawFreeForgeNoRoundHeadDrawer.cs | 24 ++--- Cad/BlockRawFreeForgeRoundHeadDrawer.cs | 24 ++--- Cad/DiskRawFreeForgeDrawer.cs | 18 ++++ .../RingRawFreeForgeCenterPunchDrawer.cs | 10 +- .../RingRawFreeForgeNonCenterPunchDrawer.cs | 10 +- Cad/FeatureDrivenDrawer.cs | 40 ++++---- Cad/RingMachinedRollingDrawer.cs | 91 +++++++++++++++++++ Cad/RingRawRollingDrawer.cs | 17 +++- Cad/ShaftRawFreeForgeRoundShaftDrawer.cs | 4 +- Cad/ShaftRawFreeForgeSquareShaftDrawer.cs | 49 +++++----- Common/NoteTemplateEngine.cs | 16 ++++ 11 files changed, 211 insertions(+), 92 deletions(-) diff --git a/Cad/BlockRawFreeForgeNoRoundHeadDrawer.cs b/Cad/BlockRawFreeForgeNoRoundHeadDrawer.cs index ae650c8..f8dbd87 100644 --- a/Cad/BlockRawFreeForgeNoRoundHeadDrawer.cs +++ b/Cad/BlockRawFreeForgeNoRoundHeadDrawer.cs @@ -290,11 +290,11 @@ namespace CadParamPluging.Cad // 9. 硬度符号 - 从剖面右侧引出 var hardnessVal = bag.GetString(FeatureDrivenDrawer.KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { double xStart = xSectionRight; double yStart = oy + H * 0.25; - DrawHardnessSymbol(ctx, xStart, yStart); + DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } // 10. 标刻内容引线 - 从剖面左侧引出 @@ -823,7 +823,7 @@ namespace CadParamPluging.Cad return $"{baseText} {{\\H{tolScale}x;{single}}}"; } - private static void DrawHardnessSymbol(FeatureDrivenDrawer.DrawingContext ctx, double xStart, double yStart) + private static void DrawHardnessSymbol(FeatureDrivenDrawer.DrawingContext ctx, double xStart, double yStart, string hardnessVal = null) { try { @@ -842,22 +842,16 @@ namespace CadParamPluging.Cad ctx.Btr.AppendEntity(poly); ctx.Tr.AddNewlyCreatedDBObject(poly, true); - double radius = 4.0; - var center = new Point3d(p3.X + radius, p3.Y, 0); - var circle = new Circle(center, Vector3d.ZAxis, radius); - circle.ColorIndex = 3; - - ctx.Btr.AppendEntity(circle); - ctx.Tr.AddNewlyCreatedDBObject(circle, true); - + string displayTxt = string.IsNullOrWhiteSpace(hardnessVal) ? "HB" : hardnessVal; var text = new DBText(); - text.TextString = "HB"; + text.TextString = displayTxt; text.Height = 3.5; text.ColorIndex = 3; - text.HorizontalMode = TextHorizontalMode.TextCenter; + text.HorizontalMode = TextHorizontalMode.TextLeft; text.VerticalMode = TextVerticalMode.TextVerticalMid; - text.AlignmentPoint = center; - text.Position = center; + var tp = new Point3d(p3.X + 2.0, p3.Y, 0); + text.AlignmentPoint = tp; + text.Position = tp; ctx.Btr.AppendEntity(text); ctx.Tr.AddNewlyCreatedDBObject(text, true); diff --git a/Cad/BlockRawFreeForgeRoundHeadDrawer.cs b/Cad/BlockRawFreeForgeRoundHeadDrawer.cs index 348cb19..c60a458 100644 --- a/Cad/BlockRawFreeForgeRoundHeadDrawer.cs +++ b/Cad/BlockRawFreeForgeRoundHeadDrawer.cs @@ -315,11 +315,11 @@ namespace CadParamPluging.Cad // 9. 硬度符号 - 从剖面右侧引出 var hardnessVal = bag.GetString(FeatureDrivenDrawer.KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { double xStart = xSectionRight; double yStart = oy + H * 0.25; - DrawHardnessSymbol(ctx, xStart, yStart); + DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } // 10. 标刻内容引线 - 从剖面左侧引出 @@ -669,7 +669,7 @@ namespace CadParamPluging.Cad catch { } } - private static void DrawHardnessSymbol(FeatureDrivenDrawer.DrawingContext ctx, double xStart, double yStart) + private static void DrawHardnessSymbol(FeatureDrivenDrawer.DrawingContext ctx, double xStart, double yStart, string hardnessVal = null) { try { @@ -688,22 +688,16 @@ namespace CadParamPluging.Cad ctx.Btr.AppendEntity(poly); ctx.Tr.AddNewlyCreatedDBObject(poly, true); - double radius = 4.0; - var center = new Point3d(p3.X + radius, p3.Y, 0); - var circle = new Circle(center, Vector3d.ZAxis, radius); - circle.ColorIndex = 3; - - ctx.Btr.AppendEntity(circle); - ctx.Tr.AddNewlyCreatedDBObject(circle, true); - + string displayTxt = string.IsNullOrWhiteSpace(hardnessVal) ? "HB" : hardnessVal; var text = new DBText(); - text.TextString = "HB"; + text.TextString = displayTxt; text.Height = 3.5; text.ColorIndex = 3; - text.HorizontalMode = TextHorizontalMode.TextCenter; + text.HorizontalMode = TextHorizontalMode.TextLeft; text.VerticalMode = TextVerticalMode.TextVerticalMid; - text.AlignmentPoint = center; - text.Position = center; + var tp = new Point3d(p3.X + 2.0, p3.Y, 0); + text.AlignmentPoint = tp; + text.Position = tp; ctx.Btr.AppendEntity(text); ctx.Tr.AddNewlyCreatedDBObject(text, true); diff --git a/Cad/DiskRawFreeForgeDrawer.cs b/Cad/DiskRawFreeForgeDrawer.cs index fa2c307..64b1118 100644 --- a/Cad/DiskRawFreeForgeDrawer.cs +++ b/Cad/DiskRawFreeForgeDrawer.cs @@ -178,6 +178,24 @@ namespace CadParamPluging.Cad { DrawDiskPartContour(ctx, ox, oy, diameter.Value, H, diaPrime.Value, heightPrime.Value); } + + // 标刻内容 + var markingText = bag.GetString(FeatureDrivenDrawer.KeyMarkingContent); + if (!string.IsNullOrWhiteSpace(markingText)) + { + double xTarget = ctx.Center.X; + double yTarget = oy + H; + FeatureDrivenDrawer.DrawSpecialHBLeaderToTop(ctx, xTarget, yTarget, markingText); + } + + // 硬度符号 + var hardnessVal = bag.GetString(FeatureDrivenDrawer.KeyHardness); + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") + { + double xHardness = ctx.Center.X; + double yHardness = oy; + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xHardness, yHardness, hardnessVal); + } } private static void DrawDiskPartContour(FeatureDrivenDrawer.DrawingContext ctx, double ox, double oy, diff --git a/Cad/Drawers/RingRawFreeForgeCenterPunchDrawer.cs b/Cad/Drawers/RingRawFreeForgeCenterPunchDrawer.cs index c21ea0d..e89589d 100644 --- a/Cad/Drawers/RingRawFreeForgeCenterPunchDrawer.cs +++ b/Cad/Drawers/RingRawFreeForgeCenterPunchDrawer.cs @@ -165,12 +165,12 @@ namespace CadParamPluging.Cad.Drawers double lineEnd = xInnerRightVal + innerFilletR; var connectingLineTop = new Line(new Point3d(lineStart, oy + H, 0), new Point3d(lineEnd, oy + H, 0)); - connectingLineTop.ColorIndex = 7; // White + ctx.Style?.Apply(connectingLineTop, DrawingStyleManager.Role.OutlineBold); ctx.Btr.AppendEntity(connectingLineTop); ctx.Tr.AddNewlyCreatedDBObject(connectingLineTop, true); var connectingLineBottom = new Line(new Point3d(lineStart, oy, 0), new Point3d(lineEnd, oy, 0)); - connectingLineBottom.ColorIndex = 7; // White + ctx.Style?.Apply(connectingLineBottom, DrawingStyleManager.Role.OutlineBold); ctx.Btr.AppendEntity(connectingLineBottom); ctx.Tr.AddNewlyCreatedDBObject(connectingLineBottom, true); @@ -260,17 +260,17 @@ namespace CadParamPluging.Cad.Drawers // 9. Hardness Symbol var hardnessVal = bag.GetString(FeatureDrivenDrawer.KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { if (xInnerRight.HasValue) { double xStart = (xInnerRight.Value + ox + W) / 2.0; double yStart = oy; - FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart); + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } else { - FeatureDrivenDrawer.DrawHardnessSymbol(ctx, ox + W / 2.0, oy); + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, ox + W / 2.0, oy, hardnessVal); } } diff --git a/Cad/Drawers/RingRawFreeForgeNonCenterPunchDrawer.cs b/Cad/Drawers/RingRawFreeForgeNonCenterPunchDrawer.cs index 9ed5ad4..4e7d64e 100644 --- a/Cad/Drawers/RingRawFreeForgeNonCenterPunchDrawer.cs +++ b/Cad/Drawers/RingRawFreeForgeNonCenterPunchDrawer.cs @@ -168,12 +168,12 @@ namespace CadParamPluging.Cad.Drawers double lineEnd = xInnerRightVal + sectionFilletR; var connectingLineTop = new Line(new Point3d(lineStart, oy + H, 0), new Point3d(lineEnd, oy + H, 0)); - connectingLineTop.ColorIndex = 7; // White + ctx.Style?.Apply(connectingLineTop, DrawingStyleManager.Role.OutlineBold); ctx.Btr.AppendEntity(connectingLineTop); ctx.Tr.AddNewlyCreatedDBObject(connectingLineTop, true); var connectingLineBottom = new Line(new Point3d(lineStart, oy, 0), new Point3d(lineEnd, oy, 0)); - connectingLineBottom.ColorIndex = 7; // White + ctx.Style?.Apply(connectingLineBottom, DrawingStyleManager.Role.OutlineBold); ctx.Btr.AppendEntity(connectingLineBottom); ctx.Tr.AddNewlyCreatedDBObject(connectingLineBottom, true); @@ -286,17 +286,17 @@ namespace CadParamPluging.Cad.Drawers // 9. Hardness Symbol var hardnessVal = bag.GetString(FeatureDrivenDrawer.KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { if (xInnerRight.HasValue) { double xStart = (xInnerRight.Value + ox + W) / 2.0; double yStart = oy; - FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart); + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } else { - FeatureDrivenDrawer.DrawHardnessSymbol(ctx, ox + W / 2.0, oy); + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, ox + W / 2.0, oy, hardnessVal); } } diff --git a/Cad/FeatureDrivenDrawer.cs b/Cad/FeatureDrivenDrawer.cs index d840a9e..31af0ef 100644 --- a/Cad/FeatureDrivenDrawer.cs +++ b/Cad/FeatureDrivenDrawer.cs @@ -770,7 +770,7 @@ namespace CadParamPluging.Cad // === 特征9: 硬度符号 === // 只要有硬度参数就画,不再局限于"毛料态-轧制-环形" var hardnessVal = bag.GetString(KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { // 指向锻件剖面图的底部边框的中间位置 // 坐标: mid X, yBottom @@ -779,7 +779,7 @@ namespace CadParamPluging.Cad double xStart = (xLoopInner + xLoopOuter) / 2.0; double yStart = oy; - DrawHardnessSymbol(ctx, xStart, yStart); + DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } } @@ -982,19 +982,19 @@ namespace CadParamPluging.Cad // === 特征9: 硬度符号 === var hardnessVal = bag.GetString(KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { // 指向剖面图的底部边框的中间位置 if (xInnerRight.HasValue) { double xStart = (xInnerRight.Value + ox + W) / 2.0; double yStart = oy; - DrawHardnessSymbol(ctx, xStart, yStart); + DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } else { // 若无内孔(理论上环形应有),可指向整体中间 - DrawHardnessSymbol(ctx, ox + W / 2.0, oy); + DrawHardnessSymbol(ctx, ox + W / 2.0, oy, hardnessVal); } } @@ -2885,7 +2885,7 @@ namespace CadParamPluging.Cad } - public static void DrawHardnessSymbol(DrawingContext ctx, double xStart, double yStart) + public static void DrawHardnessSymbol(DrawingContext ctx, double xStart, double yStart, string hardnessVal = null) { try { @@ -2896,7 +2896,7 @@ namespace CadParamPluging.Cad var p1 = new Point3d(xStart, yStart, 0); var p2 = new Point3d(xStart + 15, yStart - 15, 0); - var p3 = new Point3d(p2.X + 10, p2.Y, 0); // 这里的p3是直线的终点,圆接在这里 + var p3 = new Point3d(p2.X + 10, p2.Y, 0); // 这里的p3是直线的终点,短线接在这里 // 绘制引线 var poly = new Polyline(); @@ -2911,25 +2911,17 @@ namespace CadParamPluging.Cad ctx.Btr.AppendEntity(poly); ctx.Tr.AddNewlyCreatedDBObject(poly, true); - // 2. 圆圈 (HB) - // 圆心 x = p3.X + R - double radius = 4.0; - var center = new Point3d(p3.X + radius, p3.Y, 0); - var circle = new Circle(center, Vector3d.ZAxis, radius); - circle.ColorIndex = 3; - - ctx.Btr.AppendEntity(circle); - ctx.Tr.AddNewlyCreatedDBObject(circle, true); - - // 3. 文字 (HB) + // 2. 文字 (硬度的具体值) + string displayTxt = string.IsNullOrWhiteSpace(hardnessVal) ? "HB" : hardnessVal; var text = new DBText(); - text.TextString = "HB"; + text.TextString = displayTxt; text.Height = 3.5; text.ColorIndex = 3; - text.HorizontalMode = TextHorizontalMode.TextCenter; + text.HorizontalMode = TextHorizontalMode.TextLeft; text.VerticalMode = TextVerticalMode.TextVerticalMid; - text.AlignmentPoint = center; - text.Position = center; + var tp = new Point3d(p3.X + 2.0, p3.Y, 0); + text.AlignmentPoint = tp; + text.Position = tp; ctx.Btr.AppendEntity(text); ctx.Tr.AddNewlyCreatedDBObject(text, true); @@ -3220,11 +3212,11 @@ namespace CadParamPluging.Cad // 9. 硬度符号 - 从剖面底部引出 var hardnessVal = bag.GetString(KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { double xStart = (xSectionLeft + xSectionRight) / 2.0; double yStart = oy; - DrawHardnessSymbol(ctx, xStart, yStart); + DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } // 10. 标刻内容引线 - 从剖面顶部引出 diff --git a/Cad/RingMachinedRollingDrawer.cs b/Cad/RingMachinedRollingDrawer.cs index 4fb085e..5bd900f 100644 --- a/Cad/RingMachinedRollingDrawer.cs +++ b/Cad/RingMachinedRollingDrawer.cs @@ -288,6 +288,97 @@ namespace CadParamPluging.Cad // === 特征9: 硬度符号 (HB) === // 【已移除】按用户需求,此模板不绘制红色方框中的硬度符号 + + // === 特征11: 粗糙度符号 (右上角) === + var roughnessVal = bag.GetString("SurfaceRoughness"); + if (!string.IsNullOrWhiteSpace(roughnessVal) && roughnessVal != "空") + { + DrawAllRoughnessSymbol(ctx, roughnessVal); + } + } + + private static void DrawAllRoughnessSymbol(FeatureDrivenDrawer.DrawingContext ctx, string value) + { + try + { + // 获取整个模板右上方坐标 + double maxX = 0; + double maxY = 0; + + var frameExtents = TemplateDrawingService.ComputeWhiteFrameExtents(ctx?.Ctx); + if (frameExtents.HasValue) + { + maxX = frameExtents.Value.MaxPoint.X; + maxY = frameExtents.Value.MaxPoint.Y; + } + else + { + // Fallback, 以中心+200估算 + maxX = ctx.Center.X + 200; + maxY = ctx.Center.Y + 200; + } + + // 定位:距离右上角内缩一定边距,调整为更靠近右上角 (5.0) + double pRightX = maxX - 5.0; + double pTopY = maxY - 5.0; + + double hTotal = 11.0; + double hTriangle = 5.5; + + double dxTotal = hTotal * Math.Tan(30.0 * Math.PI / 180.0); + double originX = pRightX - dxTotal; + double originY = pTopY - hTotal; + + var p0 = new Point3d(originX, originY, 0); + + double dxTriangle = hTriangle * Math.Tan(30.0 * Math.PI / 180.0); + var p1 = new Point3d(originX - dxTriangle, originY + hTriangle, 0); + var p2 = new Point3d(originX + dxTriangle, originY + hTriangle, 0); + var p3 = new Point3d(pRightX, pTopY, 0); + + var line1 = new Line(p1, p0); + var line2 = new Line(p0, p3); + var line3 = new Line(p1, p2); + + line1.ColorIndex = 7; // White + line2.ColorIndex = 7; + line3.ColorIndex = 7; + + ctx.Btr.AppendEntity(line1); + ctx.Tr.AddNewlyCreatedDBObject(line1, true); + + ctx.Btr.AppendEntity(line2); + ctx.Tr.AddNewlyCreatedDBObject(line2, true); + + ctx.Btr.AppendEntity(line3); + ctx.Tr.AddNewlyCreatedDBObject(line3, true); + + // 粗糙度数值 (如1.6) + var textVal = new DBText(); + textVal.TextString = value; + textVal.Height = 3.5; + textVal.ColorIndex = 7; + textVal.HorizontalMode = TextHorizontalMode.TextCenter; + textVal.VerticalMode = TextVerticalMode.TextBottom; + textVal.AlignmentPoint = new Point3d(originX, originY + hTriangle + 1.0, 0); + textVal.Position = textVal.AlignmentPoint; + ctx.Btr.AppendEntity(textVal); + ctx.Tr.AddNewlyCreatedDBObject(textVal, true); + + // “所有”文本 + var textAll = new DBText(); + textAll.TextString = "所有"; + textAll.Height = 3.5; + textAll.ColorIndex = 7; + textAll.HorizontalMode = TextHorizontalMode.TextRight; + textAll.VerticalMode = TextVerticalMode.TextVerticalMid; + // 向左偏移一点,中心对齐三角线高度 + textAll.AlignmentPoint = new Point3d(p1.X - 2.0, originY + hTriangle, 0); + textAll.Position = textAll.AlignmentPoint; + ctx.Btr.AppendEntity(textAll); + ctx.Tr.AddNewlyCreatedDBObject(textAll, true); + } + catch { } } private static void DrawMarkingLeaderToSide(FeatureDrivenDrawer.DrawingContext ctx, double xTarget, double yTargetTop, string markingText) diff --git a/Cad/RingRawRollingDrawer.cs b/Cad/RingRawRollingDrawer.cs index afe76aa..07f8bf4 100644 --- a/Cad/RingRawRollingDrawer.cs +++ b/Cad/RingRawRollingDrawer.cs @@ -297,9 +297,20 @@ namespace CadParamPluging.Cad } // === 特征9: 硬度符号 === - // 【移除】 按用户需求,“毛料态-轧制-环形”模板不应显示硬度符号? - // "将料态/轧制/环形先改为独立",且之前提到“去掉该模板的硬度标志”, - // 所以这里移除 FeatureDrivenDrawer.DrawHardnessSymbol 的调用。 + var hardnessVal = bag.GetString(KeyHardness); + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") + { + if (xInnerRight.HasValue) + { + double xStart = (xInnerRight.Value + ox + visualOuterR) / 2.0; + double yStart = oy; + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); + } + else + { + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, ox + visualOuterR / 2.0, oy, hardnessVal); + } + } } #region 私有辅助绘图方法 diff --git a/Cad/ShaftRawFreeForgeRoundShaftDrawer.cs b/Cad/ShaftRawFreeForgeRoundShaftDrawer.cs index 80a77d7..834b99a 100644 --- a/Cad/ShaftRawFreeForgeRoundShaftDrawer.cs +++ b/Cad/ShaftRawFreeForgeRoundShaftDrawer.cs @@ -179,12 +179,12 @@ namespace CadParamPluging.Cad // 4. 硬度和标刻 var hardnessVal = bag.GetString(FeatureDrivenDrawer.KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { // 硬度放在底部中心位置 double xStart = ctx.Center.X; double yStart = oy; - FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart); + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } var markingText = bag.GetString(FeatureDrivenDrawer.KeyMarkingContent); diff --git a/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs b/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs index eb0e486..455d522 100644 --- a/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs +++ b/Cad/ShaftRawFreeForgeSquareShaftDrawer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; @@ -63,10 +63,13 @@ namespace CadParamPluging.Cad return; } - double S1 = size1.Value; - double S2 = size2.Value; + // Swap Size1 and Size2 so Size2 is horizontal and Size1 is vertical + double S1 = size2.Value; + double S2 = size1.Value; double S3 = size3.HasValue && size3.Value > 0 ? size3.Value : 0; - double originalS1 = originalSize1.HasValue ? originalSize1.Value : S1; + + var originalSize2 = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2); + double originalS1 = originalSize2.HasValue ? originalSize2.Value : S1; double ox = ctx.Center.X - S1 / 2.0; double oy = ctx.Center.Y - S2 / 2.0; @@ -145,16 +148,16 @@ namespace CadParamPluging.Cad // 4. Dimensions { - 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 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 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) + ")"; @@ -166,16 +169,16 @@ namespace CadParamPluging.Cad } { - 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 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 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) + ")"; @@ -219,11 +222,11 @@ namespace CadParamPluging.Cad } var hardnessVal = bag.GetString(FeatureDrivenDrawer.KeyHardness); - if (!string.IsNullOrWhiteSpace(hardnessVal)) + if (!string.IsNullOrWhiteSpace(hardnessVal) && hardnessVal != "空") { double xStart = (S3 > 0) ? ctx.Center.X : (ox + S1 / 2.0); double yStart = oy; - FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart); + FeatureDrivenDrawer.DrawHardnessSymbol(ctx, xStart, yStart, hardnessVal); } var markingText = bag.GetString(FeatureDrivenDrawer.KeyMarkingContent); @@ -238,14 +241,14 @@ namespace CadParamPluging.Cad var s2Prime = bag.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2Prime); if (s1Prime.HasValue && s1Prime.Value > 0 && s2Prime.HasValue && s2Prime.Value > 0) { - double pL = s1Prime.Value; - double pH = s2Prime.Value; + // Size2 is horizontal (width), Size1 is vertical (height) + double pL = s2Prime.Value; + double pH = s1Prime.Value; double pOx = ctx.Center.X - pL / 2.0; double pOy = ctx.Center.Y - pH / 2.0; if (needBreakLines) { - // double xBreak = ox + S1 / 4.0; // variable is already declared in outer scope DrawRectOutlineWithBreak(ctx, pOx, pOy, pL, pH, xBreak, lineSpacing, DrawingStyleManager.Role.PartContour); } else diff --git a/Common/NoteTemplateEngine.cs b/Common/NoteTemplateEngine.cs index a44c1cb..193114a 100644 --- a/Common/NoteTemplateEngine.cs +++ b/Common/NoteTemplateEngine.cs @@ -306,6 +306,22 @@ namespace CadParamPluging.Common if (key != null && (key.StartsWith("MarkingContent", StringComparison.OrdinalIgnoreCase) || key.StartsWith("Hardness", StringComparison.OrdinalIgnoreCase))) { // MarkingContent / Hardness -> render empty string + if (key.StartsWith("Hardness", StringComparison.OrdinalIgnoreCase)) + { + int rIdx = sb.Length - 1; + while (rIdx >= 0 && char.IsWhiteSpace(sb[rIdx])) + { + rIdx--; + } + if (rIdx >= 0) + { + char lc = sb[rIdx]; + if (lc == ',' || lc == ',' || lc == '.' || lc == '。' || lc == ';' || lc == ';' || lc == '、') + { + sb.Length = rIdx; + } + } + } // (Separators will be cleaned up later) } else