public void WriteDimensionWithStyleDifferenceXData() { var file = new DxfFile(); var standardDimStyle = file.DimensionStyles.Single(ds => ds.Name == "STANDARD"); var customDimStyle = new DxfDimStyle() { DimensioningSuffix = "some suffix" }; var dim = new DxfAlignedDimension(); dim.XData = DxfDimStyle.GenerateStyleDifferenceAsXData(standardDimStyle, customDimStyle); EnsureFileContainsEntity(dim, @" 1001 ACAD 1000 DSTYLE 1002 { 1070 3 1000 some suffix 1002 } 0 ENDSEC ", DxfAcadVersion.R14); }
public void DimStyleDifferenceXDataOnMultiplePropertyDifferences() { var primary = new DxfDimStyle(); var modified = new DxfDimStyle() { DimensioningSuffix = "non-standard-suffix", DimensionUnitToleranceDecimalPlaces = (short)(primary.DimensionUnitToleranceDecimalPlaces + 1) }; var diffItems = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, modified); Assert.Equal(2, diffItems.Count); Assert.Equal("DSTYLE", ((DxfXDataString)diffItems[0]).Value); var list = (DxfXDataItemList)diffItems[1]; Assert.Equal(4, list.Items.Count); Assert.Equal(3, ((DxfXDataInteger)list.Items[0]).Value); Assert.Equal("non-standard-suffix", ((DxfXDataString)list.Items[1]).Value); Assert.Equal(271, ((DxfXDataInteger)list.Items[2]).Value); Assert.Equal(modified.DimensionUnitToleranceDecimalPlaces, ((DxfXDataInteger)list.Items[3]).Value); }
public void NoDimStyleDifferenceGeneratesNullXData() { var primary = new DxfDimStyle(); var modified = new DxfDimStyle(); var xdata = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, modified); Assert.Null(xdata); }
public void DimStyleSetVariable() { var style = new DxfDimStyle(); Assert.NotEqual(5, style.DimensionUnitToleranceDecimalPlaces); style.SetVariable("DIMDEC", (short)5); Assert.Equal(5, style.DimensionUnitToleranceDecimalPlaces); }
public void DimStyleGetVariable() { var style = new DxfDimStyle() { DimensionUnitToleranceDecimalPlaces = 5 }; Assert.Equal((short)5, style.GetVariable("DIMDEC")); }
public void DimStyleDifferenceXDataHasWellKnownName() { var primary = new DxfDimStyle(); var modified = new DxfDimStyle() { DimensionUnitToleranceDecimalPlaces = (short)(primary.DimensionUnitToleranceDecimalPlaces + 1) }; var items = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, modified); Assert.Equal("DSTYLE", ((DxfXDataString)items.First()).Value); }
public void DimStyleDifferenceXDataHasWellKnownName() { var primary = new DxfDimStyle(); var modified = new DxfDimStyle() { DimensionUnitToleranceDecimalPlaces = (short)(primary.DimensionUnitToleranceDecimalPlaces + 1) }; var xdata = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, modified); var list = (DxfXDataNamedList)xdata.Items.Single(); Assert.Equal("DSTYLE", list.Name); }
public void DimStyleDiffernceAfterClone() { var primary = new DxfDimStyle(); var secondary = primary.Clone(); secondary.DimensionUnitToleranceDecimalPlaces = 5; var xdata = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, secondary); var list = (DxfXDataNamedList)xdata.Items.Single(); Assert.Equal(2, list.Items.Count); Assert.Equal(271, ((DxfXDataInteger)list.Items[0]).Value); Assert.Equal(5, ((DxfXDataInteger)list.Items[1]).Value); }
public void DimStyleDifferenceXDataOnSinglePropertyDifference() { var primary = new DxfDimStyle(); var modified = new DxfDimStyle() { DimensionUnitToleranceDecimalPlaces = (short)(primary.DimensionUnitToleranceDecimalPlaces + 1) }; var xdata = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, modified); var list = (DxfXDataNamedList)xdata.Items.Single(); Assert.Equal(2, list.Items.Count); Assert.Equal(271, ((DxfXDataInteger)list.Items[0]).Value); Assert.Equal(modified.DimensionUnitToleranceDecimalPlaces, ((DxfXDataInteger)list.Items[1]).Value); }
public void DimStyleFromCustomXData() { var primary = new DxfDimStyle(); var secondary = new DxfDimStyle() { DimensionUnitToleranceDecimalPlaces = 5 }; // sanity check that the values are different Assert.NotEqual(primary.DimensionUnitToleranceDecimalPlaces, secondary.DimensionUnitToleranceDecimalPlaces); // rebuild dim style from primary with xdata difference; result should equal secondary var xdata = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, secondary); Assert.True(primary.TryGetStyleFromXDataDifference(xdata, out var reBuiltStyle)); AssertEquivalent(secondary, reBuiltStyle); }
public void DimStyleDiffernceAfterClone() { var primary = new DxfDimStyle(); var secondary = primary.Clone(); secondary.DimensionUnitToleranceDecimalPlaces = 5; var diffItems = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, secondary); Assert.Equal(2, diffItems.Count); Assert.Equal("DSTYLE", ((DxfXDataString)diffItems[0]).Value); var list = (DxfXDataItemList)diffItems[1]; Assert.Equal(2, list.Items.Count); Assert.Equal(271, ((DxfXDataInteger)list.Items[0]).Value); Assert.Equal(5, ((DxfXDataInteger)list.Items[1]).Value); }
internal static DxfTable ReadFromBuffer(DxfCodePairBufferReader buffer) { var table = new DxfDimStyleTable(); table.Items.Clear(); while (buffer.ItemsRemain) { var pair = buffer.Peek(); buffer.Advance(); if (DxfTablesSection.IsTableEnd(pair)) { break; } if (pair.Code == 0 && pair.StringValue == DxfTable.DimStyleText) { var item = DxfDimStyle.FromBuffer(buffer); table.Items.Add(item); } } return(table); }
internal static DxfDimStyle FromBuffer(DxfCodePairBufferReader buffer) { var item = new DxfDimStyle(); while (buffer.ItemsRemain) { var pair = buffer.Peek(); if (pair.Code == 0) { break; } buffer.Advance(); switch (pair.Code) { case 70: item.StandardFlags = (int)pair.ShortValue; break; case DxfCodePairGroup.GroupCodeNumber: var groupName = DxfCodePairGroup.GetGroupName(pair.StringValue); item.ExtensionDataGroups.Add(DxfCodePairGroup.FromBuffer(buffer, groupName)); break; case 3: item.DimensioningSuffix = (pair.StringValue); break; case 4: item.AlternateDimensioningSuffix = (pair.StringValue); break; case 5: item.ArrowBlockName = (pair.StringValue); break; case 6: item.FirstArrowBlockName = (pair.StringValue); break; case 7: item.SecondArrowBlockName = (pair.StringValue); break; case 40: item.DimensioningScaleFactor = (pair.DoubleValue); break; case 41: item.DimensioningArrowSize = (pair.DoubleValue); break; case 42: item.DimensionExtensionLineOffset = (pair.DoubleValue); break; case 43: item.DimensionLineIncrement = (pair.DoubleValue); break; case 44: item.DimensionExtensionLineExtension = (pair.DoubleValue); break; case 45: item.DimensionDistanceRoundingValue = (pair.DoubleValue); break; case 46: item.DimensionLineExtension = (pair.DoubleValue); break; case 47: item.DimensionPlusTolerance = (pair.DoubleValue); break; case 48: item.DimensionMinusTolerance = (pair.DoubleValue); break; case 140: item.DimensioningTextHeight = (pair.DoubleValue); break; case 141: item.CenterMarkSize = (pair.DoubleValue); break; case 142: item.DimensioningTickSize = (pair.DoubleValue); break; case 143: item.AlternateDimensioningScaleFactor = (pair.DoubleValue); break; case 144: item.DimensionLinearMeasurementScaleFactor = (pair.DoubleValue); break; case 145: item.DimensionVerticalTextPosition = (pair.DoubleValue); break; case 146: item.DimensionToleranceDisplacScaleFactor = (pair.DoubleValue); break; case 147: item.DimensionLineGap = (pair.DoubleValue); break; case 148: item.AlternateDimensioningUnitRounding = (pair.DoubleValue); break; case 71: item.GenerateDimensionTolerances = BoolShort(pair.ShortValue); break; case 72: item.GenerateDimensionLimits = BoolShort(pair.ShortValue); break; case 73: item.DimensionTextInsideHorizontal = BoolShort(pair.ShortValue); break; case 74: item.DimensionTextOutsideHorizontal = BoolShort(pair.ShortValue); break; case 75: item.SuppressFirstDimensionExtensionLine = BoolShort(pair.ShortValue); break; case 76: item.SuppressSecondDimensionExtensionLine = BoolShort(pair.ShortValue); break; case 77: item.TextAboveDimensionLine = BoolShort(pair.ShortValue); break; case 78: item.DimensionUnitZeroSuppression = (DxfUnitZeroSuppression)(pair.ShortValue); break; case 79: item.DimensionAngleZeroSuppression = (DxfUnitZeroSuppression)(pair.ShortValue); break; case 170: item.UseAlternateDimensioning = BoolShort(pair.ShortValue); break; case 171: item.AlternateDimensioningDecimalPlaces = (pair.ShortValue); break; case 172: item.ForceDimensionLineExtensionsOutsideIfTextExists = BoolShort(pair.ShortValue); break; case 173: item.UseSeparateArrowBlocksForDimensions = BoolShort(pair.ShortValue); break; case 174: item.ForceDimensionTextInsideExtensions = BoolShort(pair.ShortValue); break; case 175: item.SuppressOutsideExtensionDimensionLines = BoolShort(pair.ShortValue); break; case 176: item.DimensionLineColor = DxfColor.FromRawValue(pair.ShortValue); break; case 177: item.DimensionExtensionLineColor = DxfColor.FromRawValue(pair.ShortValue); break; case 178: item.DimensionTextColor = DxfColor.FromRawValue(pair.ShortValue); break; case 179: item.AngularDimensionPrecision = (pair.ShortValue); break; case 270: item.DimensionUnitFormat = (DxfUnitFormat)(pair.ShortValue); break; case 271: item.DimensionUnitToleranceDecimalPlaces = (pair.ShortValue); break; case 272: item.DimensionToleranceDecimalPlaces = (pair.ShortValue); break; case 273: item.AlternateDimensioningUnits = (DxfUnitFormat)(pair.ShortValue); break; case 274: item.AlternateDimensioningToleranceDecimalPlaces = (pair.ShortValue); break; case 275: item.DimensioningAngleFormat = (DxfAngleFormat)(pair.ShortValue); break; case 276: item.DimensionPrecision = (pair.ShortValue); break; case 277: item.DimensionNonAngularUnits = (DxfNonAngularUnits)(pair.ShortValue); break; case 278: item.DimensionDecimalSeparatorChar = (char)(pair.ShortValue); break; case 279: item.DimensionTextMovementRule = (DxfDimensionTextMovementRule)(pair.ShortValue); break; case 280: item.DimensionTextJustification = (DxfDimensionTextJustification)(pair.ShortValue); break; case 283: item.DimensionToleranceVerticalJustification = (DxfJustification)(pair.ShortValue); break; case 284: item.DimensionToleranceZeroSuppression = (DxfUnitZeroSuppression)(pair.ShortValue); break; case 285: item.AlternateDimensioningZeroSupression = (DxfUnitZeroSuppression)(pair.ShortValue); break; case 286: item.AlternateDimensioningToleranceZeroSupression = (DxfUnitZeroSuppression)(pair.ShortValue); break; case 287: item.DimensionTextAndArrowPlacement = (DxfDimensionFit)(pair.ShortValue); break; case 288: item.DimensionCursorControlsTextPosition = BoolShort(pair.ShortValue); break; case 289: item.DimensionTextAndArrowPlacement = (DxfDimensionFit)(pair.ShortValue); break; case 340: item.DimensionTextStyle = (pair.StringValue); break; case 341: item.DimensionLeaderBlockName = (pair.StringValue); break; case 342: item.ArrowBlockName = (pair.StringValue); break; case 343: item.FirstArrowBlockName = (pair.StringValue); break; case 344: item.SecondArrowBlockName = (pair.StringValue); break; case 371: item.DimensionLineWeight = DxfLineWeight.FromRawValue(pair.ShortValue); break; case 372: item.DimensionExtensionLineWeight = DxfLineWeight.FromRawValue(pair.ShortValue); break; case (int)DxfXDataType.ApplicationName: item.XData = DxfXData.FromBuffer(buffer, pair.StringValue); break; default: item.TrySetPair(pair); break; } } return item; }