xiug修改线条样式,修改备注数字格式
This commit is contained in:
parent
c82419b918
commit
505e984c18
@ -79,6 +79,7 @@ namespace CadParamPluging.Cad
|
||||
{
|
||||
public CadContext Ctx { get; set; }
|
||||
public ParamBag Bag { get; set; }
|
||||
public ParamBag OriginalBag { get; set; }
|
||||
public Point3d Center { get; set; }
|
||||
public string DeliveryStatus { get; set; }
|
||||
public string StructuralFeature { get; set; }
|
||||
@ -250,6 +251,7 @@ namespace CadParamPluging.Cad
|
||||
{
|
||||
Ctx = ctx,
|
||||
Bag = effectiveBag,
|
||||
OriginalBag = bag,
|
||||
Center = center ?? Point3d.Origin,
|
||||
DeliveryStatus = deliveryStatus,
|
||||
StructuralFeature = structuralFeature,
|
||||
@ -636,13 +638,24 @@ namespace CadParamPluging.Cad
|
||||
private static void DrawOuterDiameterDimensionHalf(DrawingContext ctx, double ox, double oy, double radius, double height,
|
||||
double diameter, double? tolPlus, double? tolMinus, double? diameterPrime)
|
||||
{
|
||||
var diameterStr = ctx.Bag.GetString(KeyOuterDiameter1);
|
||||
var tolPlusStr = ctx.Bag.GetString(KeyOuterDiameter1TolPlus);
|
||||
var tolMinusStr = ctx.Bag.GetString(KeyOuterDiameter1TolMinus);
|
||||
// Use OriginalBag for text display to avoid scaled values
|
||||
var diameterVal = ctx.OriginalBag?.GetDoubleOrNull(KeyOuterDiameter1) ?? diameter;
|
||||
var diameterStr = ctx.OriginalBag?.GetString(KeyOuterDiameter1);
|
||||
var tolPlusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyOuterDiameter1TolPlus) ?? tolPlus;
|
||||
var tolMinusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyOuterDiameter1TolMinus) ?? tolMinus;
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(KeyOuterDiameter1TolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(KeyOuterDiameter1TolMinus);
|
||||
|
||||
var diameterPrimeVal = diameterPrime;
|
||||
if (ctx.OriginalBag != null)
|
||||
{
|
||||
var p = ctx.OriginalBag.GetDoubleOrNull(KeyOuterDiameter1Prime);
|
||||
if (p.HasValue) diameterPrimeVal = p.Value;
|
||||
}
|
||||
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameter, diameterStr)}", tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrime.HasValue && diameterPrime.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrime.Value)})"
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameterVal, diameterStr)}", tolPlusVal, tolMinusVal, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrimeVal.HasValue && diameterPrimeVal.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrimeVal.Value)})"
|
||||
: baseText;
|
||||
|
||||
// 标注放在图形底部稍下方
|
||||
@ -650,7 +663,7 @@ namespace CadParamPluging.Cad
|
||||
ctx,
|
||||
new Point3d(ox, oy, 0),
|
||||
new Point3d(ox + radius, oy, 0),
|
||||
new Point3d(ox + radius / 2, oy - 20, 0),
|
||||
new Point3d(ox + radius / 2, oy - 23, 0),
|
||||
0,
|
||||
dimText,
|
||||
ApplyHalfSideDimStyle);
|
||||
@ -676,13 +689,24 @@ namespace CadParamPluging.Cad
|
||||
private static void DrawInnerDiameterDimensionHalf(DrawingContext ctx, double oxAxis, double xInnerRight, double yBottom, double height,
|
||||
double diameter, double? tolPlus, double? tolMinus, double? diameterPrime)
|
||||
{
|
||||
var diameterStr = ctx.Bag.GetString(KeyInnerDiameter2);
|
||||
var tolPlusStr = ctx.Bag.GetString(KeyInnerDiameter2TolPlus);
|
||||
var tolMinusStr = ctx.Bag.GetString(KeyInnerDiameter2TolMinus);
|
||||
// Use OriginalBag for text display
|
||||
var diameterVal = ctx.OriginalBag?.GetDoubleOrNull(KeyInnerDiameter2) ?? diameter;
|
||||
var diameterStr = ctx.OriginalBag?.GetString(KeyInnerDiameter2);
|
||||
var tolPlusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyInnerDiameter2TolPlus) ?? tolPlus;
|
||||
var tolMinusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyInnerDiameter2TolMinus) ?? tolMinus;
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(KeyInnerDiameter2TolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(KeyInnerDiameter2TolMinus);
|
||||
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameter, diameterStr)}", tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrime.HasValue && diameterPrime.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrime.Value)})"
|
||||
var diameterPrimeVal = diameterPrime;
|
||||
if (ctx.OriginalBag != null)
|
||||
{
|
||||
var p = ctx.OriginalBag.GetDoubleOrNull(KeyInnerDiameter2Prime);
|
||||
if (p.HasValue) diameterPrimeVal = p.Value;
|
||||
}
|
||||
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameterVal, diameterStr)}", tolPlusVal, tolMinusVal, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrimeVal.HasValue && diameterPrimeVal.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrimeVal.Value)})"
|
||||
: baseText;
|
||||
|
||||
double innerRadius = xInnerRight - oxAxis;
|
||||
@ -719,13 +743,24 @@ namespace CadParamPluging.Cad
|
||||
private static void DrawHeightDimensionHalf(DrawingContext ctx, double ox, double oy, double radius,
|
||||
double height, double? tolPlus, double? tolMinus, double? heightPrime)
|
||||
{
|
||||
var heightStr = ctx.Bag.GetString(KeyHeight1);
|
||||
var tolPlusStr = ctx.Bag.GetString(KeyHeight1TolPlus);
|
||||
var tolMinusStr = ctx.Bag.GetString(KeyHeight1TolMinus);
|
||||
// Use OriginalBag for text display
|
||||
var heightVal = ctx.OriginalBag?.GetDoubleOrNull(KeyHeight1) ?? height;
|
||||
var heightStr = ctx.OriginalBag?.GetString(KeyHeight1);
|
||||
var tolPlusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyHeight1TolPlus) ?? tolPlus;
|
||||
var tolMinusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyHeight1TolMinus) ?? tolMinus;
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(KeyHeight1TolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(KeyHeight1TolMinus);
|
||||
|
||||
var baseText = BuildDimensionText(FormatDimNumber(height, heightStr), tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
var dimText = heightPrime.HasValue && heightPrime.Value > 0
|
||||
? baseText + $"\\X({FormatDimNumber(heightPrime.Value)})"
|
||||
var heightPrimeVal = heightPrime;
|
||||
if (ctx.OriginalBag != null)
|
||||
{
|
||||
var p = ctx.OriginalBag.GetDoubleOrNull(KeyHeight1Prime);
|
||||
if (p.HasValue) heightPrimeVal = p.Value;
|
||||
}
|
||||
|
||||
var baseText = BuildDimensionText(FormatDimNumber(heightVal, heightStr), tolPlusVal, tolMinusVal, tolPlusStr, tolMinusStr);
|
||||
var dimText = heightPrimeVal.HasValue && heightPrimeVal.Value > 0
|
||||
? baseText + $"\\X({FormatDimNumber(heightPrimeVal.Value)})"
|
||||
: baseText;
|
||||
|
||||
AddLinearDim(
|
||||
@ -824,13 +859,24 @@ namespace CadParamPluging.Cad
|
||||
private static void DrawOuterDiameterDimension(DrawingContext ctx, double ox, double oy, double width,
|
||||
double diameter, double? tolPlus, double? tolMinus, double? diameterPrime)
|
||||
{
|
||||
var diameterStr = ctx.Bag.GetString(KeyOuterDiameter1);
|
||||
var tolPlusStr = ctx.Bag.GetString(KeyOuterDiameter1TolPlus);
|
||||
var tolMinusStr = ctx.Bag.GetString(KeyOuterDiameter1TolMinus);
|
||||
// Use OriginalBag for text display to avoid scaled values
|
||||
var diameterVal = ctx.OriginalBag?.GetDoubleOrNull(KeyOuterDiameter1) ?? diameter;
|
||||
var diameterStr = ctx.OriginalBag?.GetString(KeyOuterDiameter1);
|
||||
var tolPlusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyOuterDiameter1TolPlus) ?? tolPlus;
|
||||
var tolMinusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyOuterDiameter1TolMinus) ?? tolMinus;
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(KeyOuterDiameter1TolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(KeyOuterDiameter1TolMinus);
|
||||
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameter, diameterStr)}", tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrime.HasValue && diameterPrime.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrime.Value)})"
|
||||
var diameterPrimeVal = diameterPrime;
|
||||
if (ctx.OriginalBag != null)
|
||||
{
|
||||
var p = ctx.OriginalBag.GetDoubleOrNull(KeyOuterDiameter1Prime);
|
||||
if (p.HasValue) diameterPrimeVal = p.Value;
|
||||
}
|
||||
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameterVal, diameterStr)}", tolPlusVal, tolMinusVal, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrimeVal.HasValue && diameterPrimeVal.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrimeVal.Value)})"
|
||||
: baseText;
|
||||
|
||||
AddLinearDim(
|
||||
@ -845,13 +891,24 @@ namespace CadParamPluging.Cad
|
||||
private static void DrawInnerDiameterDimension(DrawingContext ctx, double xInnerLeft, double xInnerRight, double yBottom,
|
||||
double diameter, double? tolPlus, double? tolMinus, double? diameterPrime)
|
||||
{
|
||||
var diameterStr = ctx.Bag.GetString(KeyInnerDiameter2);
|
||||
var tolPlusStr = ctx.Bag.GetString(KeyInnerDiameter2TolPlus);
|
||||
var tolMinusStr = ctx.Bag.GetString(KeyInnerDiameter2TolMinus);
|
||||
// Use OriginalBag for text display
|
||||
var diameterVal = ctx.OriginalBag?.GetDoubleOrNull(KeyInnerDiameter2) ?? diameter;
|
||||
var diameterStr = ctx.OriginalBag?.GetString(KeyInnerDiameter2);
|
||||
var tolPlusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyInnerDiameter2TolPlus) ?? tolPlus;
|
||||
var tolMinusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyInnerDiameter2TolMinus) ?? tolMinus;
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(KeyInnerDiameter2TolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(KeyInnerDiameter2TolMinus);
|
||||
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameter, diameterStr)}", tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrime.HasValue && diameterPrime.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrime.Value)})"
|
||||
var diameterPrimeVal = diameterPrime;
|
||||
if (ctx.OriginalBag != null)
|
||||
{
|
||||
var p = ctx.OriginalBag.GetDoubleOrNull(KeyInnerDiameter2Prime);
|
||||
if (p.HasValue) diameterPrimeVal = p.Value;
|
||||
}
|
||||
|
||||
var baseText = BuildDimensionText($"%%c{FormatDimNumber(diameterVal, diameterStr)}", tolPlusVal, tolMinusVal, tolPlusStr, tolMinusStr);
|
||||
var dimText = diameterPrimeVal.HasValue && diameterPrimeVal.Value > 0
|
||||
? baseText + $"\\X(%%c{FormatDimNumber(diameterPrimeVal.Value)})"
|
||||
: baseText;
|
||||
|
||||
AddLinearDim(
|
||||
@ -866,13 +923,24 @@ namespace CadParamPluging.Cad
|
||||
private static void DrawHeightDimension(DrawingContext ctx, double ox, double oy, double width,
|
||||
double height, double? tolPlus, double? tolMinus, double? heightPrime)
|
||||
{
|
||||
var heightStr = ctx.Bag.GetString(KeyHeight1);
|
||||
var tolPlusStr = ctx.Bag.GetString(KeyHeight1TolPlus);
|
||||
var tolMinusStr = ctx.Bag.GetString(KeyHeight1TolMinus);
|
||||
// Use OriginalBag for text display
|
||||
var heightVal = ctx.OriginalBag?.GetDoubleOrNull(KeyHeight1) ?? height;
|
||||
var heightStr = ctx.OriginalBag?.GetString(KeyHeight1);
|
||||
var tolPlusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyHeight1TolPlus) ?? tolPlus;
|
||||
var tolMinusVal = ctx.OriginalBag?.GetDoubleOrNull(KeyHeight1TolMinus) ?? tolMinus;
|
||||
var tolPlusStr = ctx.OriginalBag?.GetString(KeyHeight1TolPlus);
|
||||
var tolMinusStr = ctx.OriginalBag?.GetString(KeyHeight1TolMinus);
|
||||
|
||||
var baseText = BuildDimensionText(FormatDimNumber(height, heightStr), tolPlus, tolMinus, tolPlusStr, tolMinusStr);
|
||||
var dimText = heightPrime.HasValue && heightPrime.Value > 0
|
||||
? baseText + $"\\X({FormatDimNumber(heightPrime.Value)})"
|
||||
var heightPrimeVal = heightPrime;
|
||||
if (ctx.OriginalBag != null)
|
||||
{
|
||||
var p = ctx.OriginalBag.GetDoubleOrNull(KeyHeight1Prime);
|
||||
if (p.HasValue) heightPrimeVal = p.Value;
|
||||
}
|
||||
|
||||
var baseText = BuildDimensionText(FormatDimNumber(heightVal, heightStr), tolPlusVal, tolMinusVal, tolPlusStr, tolMinusStr);
|
||||
var dimText = heightPrimeVal.HasValue && heightPrimeVal.Value > 0
|
||||
? baseText + $"\\X({FormatDimNumber(heightPrimeVal.Value)})"
|
||||
: baseText;
|
||||
|
||||
AddLinearDim(
|
||||
@ -1769,6 +1837,13 @@ namespace CadParamPluging.Cad
|
||||
// Use current drawing's dimension style (template-controlled).
|
||||
var dim = new RotatedDimension(rotRad, pt1, pt2, dimLinePt, textOverride, ctx.Db.Dimstyle);
|
||||
try { dim.SetDatabaseDefaults(); } catch { }
|
||||
|
||||
// Re-apply text override because SetDatabaseDefaults might have cleared it
|
||||
if (!string.IsNullOrEmpty(textOverride))
|
||||
{
|
||||
dim.DimensionText = textOverride;
|
||||
}
|
||||
|
||||
try { dim.Normal = Vector3d.ZAxis; } catch { }
|
||||
TryApplyDimSizeOverrides(dim);
|
||||
TryApplyDimLayoutOverrides(dim, pt1, pt2, dimLinePt, rotRad);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user