feat: add drawing functionality for raw free forge square shafts
This commit is contained in:
parent
f8ed9ebc2e
commit
7b436612f1
@ -63,13 +63,12 @@ namespace CadParamPluging.Cad
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Swap Size1 and Size2 so Size2 is horizontal and Size1 is vertical
|
// 修正:Size1 为横向总长,Size2 为竖向高度
|
||||||
double S1 = size2.Value;
|
double S1 = size1.Value;
|
||||||
double S2 = size1.Value;
|
double S2 = size2.Value;
|
||||||
double S3 = size3.HasValue && size3.Value > 0 ? size3.Value : 0;
|
double S3 = size3.HasValue && size3.Value > 0 ? size3.Value : 0;
|
||||||
|
|
||||||
var originalSize2 = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2);
|
double originalS1 = originalSize1.HasValue ? originalSize1.Value : S1;
|
||||||
double originalS1 = originalSize2.HasValue ? originalSize2.Value : S1;
|
|
||||||
|
|
||||||
double ox = ctx.Center.X - S1 / 2.0;
|
double ox = ctx.Center.X - S1 / 2.0;
|
||||||
double oy = ctx.Center.Y - S2 / 2.0;
|
double oy = ctx.Center.Y - S2 / 2.0;
|
||||||
@ -118,7 +117,12 @@ namespace CadParamPluging.Cad
|
|||||||
// 1. 绘制主体轮廓 (矩形 + 平滑相切圆角) 和左右端弧线一体化
|
// 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);
|
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
|
// 4. Draw Break Lines if needed
|
||||||
if (needBreakLines)
|
if (needBreakLines)
|
||||||
@ -148,16 +152,16 @@ namespace CadParamPluging.Cad
|
|||||||
|
|
||||||
// 4. Dimensions
|
// 4. Dimensions
|
||||||
{
|
{
|
||||||
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2) ?? S1;
|
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1) ?? S1;
|
||||||
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2);
|
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1);
|
||||||
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus);
|
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus);
|
||||||
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus);
|
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus);
|
||||||
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus);
|
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus);
|
||||||
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus);
|
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus);
|
||||||
|
|
||||||
var dimText = 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.KeySquareShaftSize2Prime);
|
var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1Prime);
|
||||||
if (valPrime.HasValue && valPrime.Value > 0)
|
if (valPrime.HasValue && valPrime.Value > 0)
|
||||||
{
|
{
|
||||||
dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
||||||
@ -169,16 +173,16 @@ namespace CadParamPluging.Cad
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1) ?? S2;
|
var val = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2) ?? S2;
|
||||||
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1);
|
var str = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2);
|
||||||
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus);
|
var tolPlus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus);
|
||||||
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus);
|
var tolMinus = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus);
|
||||||
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolPlus);
|
var tolPlusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolPlus);
|
||||||
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize1TolMinus);
|
var tolMinusStr = ctx.OriginalBag?.GetString(FeatureDrivenDrawer.KeySquareShaftSize2TolMinus);
|
||||||
|
|
||||||
var dimText = 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.KeySquareShaftSize1Prime);
|
var valPrime = ctx.OriginalBag?.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2Prime);
|
||||||
if (valPrime.HasValue && valPrime.Value > 0)
|
if (valPrime.HasValue && valPrime.Value > 0)
|
||||||
{
|
{
|
||||||
dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
dimText += @"\X(" + FeatureDrivenDrawer.FormatDimNumber(valPrime.Value) + ")";
|
||||||
@ -241,19 +245,19 @@ namespace CadParamPluging.Cad
|
|||||||
var s2Prime = bag.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2Prime);
|
var s2Prime = bag.GetDoubleOrNull(FeatureDrivenDrawer.KeySquareShaftSize2Prime);
|
||||||
if (s1Prime.HasValue && s1Prime.Value > 0 && s2Prime.HasValue && s2Prime.Value > 0)
|
if (s1Prime.HasValue && s1Prime.Value > 0 && s2Prime.HasValue && s2Prime.Value > 0)
|
||||||
{
|
{
|
||||||
// Size2 is horizontal (width), Size1 is vertical (height)
|
// Size1 对应横向总长,Size2 对应竖向高度
|
||||||
double pL = s2Prime.Value;
|
double pL = s1Prime.Value;
|
||||||
double pH = s1Prime.Value;
|
double pH = s2Prime.Value;
|
||||||
double pOx = ctx.Center.X - pL / 2.0;
|
double pOx = ctx.Center.X - pL / 2.0;
|
||||||
double pOy = ctx.Center.Y - pH / 2.0;
|
double pOy = ctx.Center.Y - pH / 2.0;
|
||||||
|
|
||||||
if (needBreakLines)
|
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
|
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
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 绘制带断口的零件轮廓(在断线位置打断上下横线)
|
/// 绘制带断口的零件轮廓(在断线位置打断上下横线)
|
||||||
/// 支持自定义 Role (通常为 PartContour)
|
/// 支持自定义 Role (通常为 Hidden 或 PartContour)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static void DrawRectOutlineWithBreak(FeatureDrivenDrawer.DrawingContext ctx, double x, double y, double w, double h, double xBreak, double breakWidth, DrawingStyleManager.Role role)
|
private static void DrawRectOutlineWithBreak(FeatureDrivenDrawer.DrawingContext ctx, double x, double y, double w, double h, double xBreak, double breakWidth, DrawingStyleManager.Role role)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user