feat: introduce new CAD drawing functionalities for raw forged blocks, rings, shafts, and disks.

This commit is contained in:
sladro 2026-03-16 16:27:19 +08:00
parent 2c816847f4
commit f8e6443d04
11 changed files with 211 additions and 92 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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,

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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. 标刻内容引线 - 从剖面顶部引出

View File

@ -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)

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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