feat: 添加自由锻毛坯圆轴和方轴的绘图功能。
This commit is contained in:
parent
78c116a70c
commit
fe4ac75f67
@ -60,13 +60,13 @@ namespace CadParamPluging.Cad
|
||||
return;
|
||||
}
|
||||
|
||||
// 逻辑要求:直径是宽度,长度是高度
|
||||
double W = dia.Value;
|
||||
double H = len.Value;
|
||||
// 逻辑要求:长度是宽度,直径是高度 (Fixed)
|
||||
double W = len.Value;
|
||||
double H = dia.Value;
|
||||
|
||||
// 获取原始值用于判断断线(防止缩放干扰)
|
||||
var originalDia = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameter);
|
||||
double originalW = originalDia.HasValue ? originalDia.Value : W;
|
||||
var originalLen = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLength);
|
||||
double originalW = originalLen.HasValue ? originalLen.Value : W;
|
||||
|
||||
double ox = ctx.Center.X - W / 2.0;
|
||||
double oy = ctx.Center.Y - H / 2.0;
|
||||
@ -110,22 +110,21 @@ namespace CadParamPluging.Cad
|
||||
|
||||
// 3. 尺寸标注
|
||||
|
||||
// 3.1 直径标注 (底部)
|
||||
// 3.1 长度标注 (底部) - 对应宽度W
|
||||
{
|
||||
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameter) ?? W;
|
||||
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyDiameter);
|
||||
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameterTolPlus);
|
||||
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameterTolMinus);
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyDiameterTolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyDiameterTolMinus);
|
||||
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLength) ?? W;
|
||||
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyLength);
|
||||
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLengthTolPlus);
|
||||
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLengthTolMinus);
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyLengthTolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyLengthTolMinus);
|
||||
|
||||
// 直径加上 %%c 符号
|
||||
var dimText = "%%c" + FeatureDrivenDrawer.BuildDimensionText(FeatureDrivenDrawer.FormatDimNumber(val, str), tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
var dimText = FeatureDrivenDrawer.BuildDimensionText(FeatureDrivenDrawer.FormatDimNumber(val, str), tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
|
||||
var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameterPrime);
|
||||
var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLengthPrime);
|
||||
if (valPrime.HasValue && valPrime.Value > 0)
|
||||
{
|
||||
dimText += @"\X(%%c" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
||||
dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
||||
}
|
||||
|
||||
double dimY = oy - 25;
|
||||
@ -134,21 +133,22 @@ namespace CadParamPluging.Cad
|
||||
FeatureDrivenDrawer.AddLinearDim(ctx, new Point3d(ox, dimOriginY, 0), new Point3d(ox + W, dimOriginY, 0), new Point3d(ctx.Center.X, dimY, 0), 0, dimText);
|
||||
}
|
||||
|
||||
// 3.2 长度标注 (右侧)
|
||||
// 3.2 直径标注 (右侧) - 对应高度H
|
||||
{
|
||||
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLength) ?? H;
|
||||
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyLength);
|
||||
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLengthTolPlus);
|
||||
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLengthTolMinus);
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyLengthTolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyLengthTolMinus);
|
||||
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameter) ?? H;
|
||||
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyDiameter);
|
||||
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameterTolPlus);
|
||||
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameterTolMinus);
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyDiameterTolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeyDiameterTolMinus);
|
||||
|
||||
var dimText = FeatureDrivenDrawer.BuildDimensionText(FeatureDrivenDrawer.FormatDimNumber(val, str), tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
// 直径加上 %%c 符号
|
||||
var dimText = "%%c" + FeatureDrivenDrawer.BuildDimensionText(FeatureDrivenDrawer.FormatDimNumber(val, str), tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
|
||||
var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyLengthPrime);
|
||||
var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeyDiameterPrime);
|
||||
if (valPrime.HasValue && valPrime.Value > 0)
|
||||
{
|
||||
dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
||||
dimText += @"\X(%%c" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
||||
}
|
||||
|
||||
double dimX = ox + W + 20;
|
||||
@ -182,8 +182,8 @@ namespace CadParamPluging.Cad
|
||||
var lenPrime = bag.GetDoubleOrNull(FeatureDrivenDrawer.KeyLengthPrime);
|
||||
if (diaPrime.HasValue && diaPrime.Value > 0 && lenPrime.HasValue && lenPrime.Value > 0)
|
||||
{
|
||||
double pW = diaPrime.Value; // Diameter -> Width
|
||||
double pH = lenPrime.Value; // Length -> Height
|
||||
double pW = lenPrime.Value; // Length -> Width
|
||||
double pH = diaPrime.Value; // Diameter -> Height
|
||||
double pOx = ctx.Center.X - pW / 2.0;
|
||||
double pOy = ctx.Center.Y - pH / 2.0;
|
||||
|
||||
|
||||
@ -99,8 +99,8 @@ namespace CadParamPluging.Cad
|
||||
double arcHeight = S2 / 5.0;
|
||||
DrawEndArcs(ctx, ox, oy, S1, S2, arcHeight);
|
||||
|
||||
// 3. 绘制中心线 (横向,在中间位置)
|
||||
DrawHorizontalCenterLine(ctx, ctx.Center.Y, ox, ox + S1, needBreakLines, xBreak, lineSpacing);
|
||||
// 3. 绘制中心线 (横向,在中间位置) - 已移除
|
||||
// DrawHorizontalCenterLine(ctx, ctx.Center.Y, ox, ox + S1, needBreakLines, xBreak, lineSpacing);
|
||||
|
||||
// 4. Draw Break Lines if needed
|
||||
if (needBreakLines)
|
||||
@ -446,32 +446,7 @@ namespace CadParamPluging.Cad
|
||||
}
|
||||
}
|
||||
|
||||
private static void DrawHorizontalCenterLine(FeatureDrivenDrawer.DrawingContext ctx, double centerY, double xLeft, double xRight, bool hasBreak = false, double xBreak = 0, double breakWidth = 0)
|
||||
{
|
||||
const double extend = 5.0;
|
||||
|
||||
if (!hasBreak)
|
||||
{
|
||||
var line = new Line(new Point3d(xLeft - extend, centerY, 0), new Point3d(xRight + extend, centerY, 0));
|
||||
ctx.Style?.Apply(line, DrawingStyleManager.Role.Centerline);
|
||||
ctx.Btr.AppendEntity(line);
|
||||
ctx.Tr.AddNewlyCreatedDBObject(line, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Left segment
|
||||
var line1 = new Line(new Point3d(xLeft - extend, centerY, 0), new Point3d(xBreak, centerY, 0));
|
||||
ctx.Style?.Apply(line1, DrawingStyleManager.Role.Centerline);
|
||||
ctx.Btr.AppendEntity(line1);
|
||||
ctx.Tr.AddNewlyCreatedDBObject(line1, true);
|
||||
|
||||
// Right segment
|
||||
var line2 = new Line(new Point3d(xBreak + breakWidth, centerY, 0), new Point3d(xRight + extend, centerY, 0));
|
||||
ctx.Style?.Apply(line2, DrawingStyleManager.Role.Centerline);
|
||||
ctx.Btr.AppendEntity(line2);
|
||||
ctx.Tr.AddNewlyCreatedDBObject(line2, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user