Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        public void NoDimStyleDifferenceGeneratesNullXData()
        {
            var primary  = new DxfDimStyle();
            var modified = new DxfDimStyle();
            var xdata    = DxfDimStyle.GenerateStyleDifferenceAsXData(primary, modified);

            Assert.Null(xdata);
        }
Beispiel #4
0
        public void DimStyleSetVariable()
        {
            var style = new DxfDimStyle();

            Assert.NotEqual(5, style.DimensionUnitToleranceDecimalPlaces);
            style.SetVariable("DIMDEC", (short)5);
            Assert.Equal(5, style.DimensionUnitToleranceDecimalPlaces);
        }
Beispiel #5
0
        public void DimStyleGetVariable()
        {
            var style = new DxfDimStyle()
            {
                DimensionUnitToleranceDecimalPlaces = 5
            };

            Assert.Equal((short)5, style.GetVariable("DIMDEC"));
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #13
0
        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;
        }