Ejemplo n.º 1
0
        internal override bool TrySetPair(DxfCodePair pair)
        {
            switch (pair.Code)
            {
            case 1:
                this.CustomData.Add((pair.StringValue));
                break;

            case 3:
                this.CustomData2.Add((pair.StringValue));
                break;

            case 70:
                this.FormatVersionNumber = (pair.ShortValue);
                break;

            case 350:
                this.HistoryObjectPointer.Handle = DxfCommonConverters.UIntHandle(pair.StringValue);
                break;

            default:
                return(base.TrySetPair(pair));
            }

            return(true);
        }
Ejemplo n.º 2
0
            public void ApplyCodePairs(DxfCodePairBufferReader buffer)
            {
                var pair = buffer.Peek();

                buffer.Advance();
                switch (pair.Code)
                {
                case 5:
                    ((IDxfItemInternal)this).Handle = DxfCommonConverters.UIntHandle(pair.StringValue);
                    break;

                case 8:
                    // just a re-iteration of the layer
                    break;

                case 67:
                    // just a re-iteration of the paper space setting
                    break;

                case 100:
                    Debug.Assert(pair.StringValue == AcDbEntityText || pair.StringValue == AcDbBlockEndText);
                    break;

                case DxfCodePairGroup.GroupCodeNumber:
                    var groupName = DxfCodePairGroup.GetGroupName(pair.StringValue);
                    ExtensionDataGroups.Add(DxfCodePairGroup.FromBuffer(buffer, groupName));
                    break;
                }
            }
Ejemplo n.º 3
0
        protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            base.AddValuePairs(pairs, version, outputHandles);
            pairs.Add(new DxfCodePair(100, "AcDbSection"));
            pairs.Add(new DxfCodePair(90, (this.State)));
            pairs.Add(new DxfCodePair(91, (this.Flags)));
            pairs.Add(new DxfCodePair(1, (this.Name)));
            pairs.Add(new DxfCodePair(10, VerticalDirection?.X ?? default(double)));
            pairs.Add(new DxfCodePair(20, VerticalDirection?.Y ?? default(double)));
            pairs.Add(new DxfCodePair(30, VerticalDirection?.Z ?? default(double)));
            pairs.Add(new DxfCodePair(40, (this.TopHeight)));
            pairs.Add(new DxfCodePair(41, (this.BottomHeight)));
            pairs.Add(new DxfCodePair(70, (this.IndicatorTransparency)));
            pairs.Add(new DxfCodePair(63, DxfColor.GetRawValue(this.IndicatorColor)));
            pairs.Add(new DxfCodePair(411, (this.IndicatorColorName)));
            pairs.Add(new DxfCodePair(92, Vertices.Count));
            foreach (var item in Vertices)
            {
                pairs.Add(new DxfCodePair(11, item.X));
                pairs.Add(new DxfCodePair(21, item.Y));
                pairs.Add(new DxfCodePair(31, item.Z));
            }

            pairs.Add(new DxfCodePair(93, BackLineVertices.Count));
            foreach (var item in BackLineVertices)
            {
                pairs.Add(new DxfCodePair(12, item.X));
                pairs.Add(new DxfCodePair(22, item.Y));
                pairs.Add(new DxfCodePair(32, item.Z));
            }

            pairs.Add(new DxfCodePair(360, DxfCommonConverters.UIntHandle(this.GeometrySettingsPointer.Handle)));
        }
Ejemplo n.º 4
0
 protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
 {
     base.AddValuePairs(pairs, version, outputHandles);
     pairs.Add(new DxfCodePair(100, "AcDbLayout"));
     pairs.Add(new DxfCodePair(1, (this.LayoutName)));
     pairs.Add(new DxfCodePair(70, (short)(this.LayoutFlags)));
     pairs.Add(new DxfCodePair(71, (short)(this.TabOrder)));
     pairs.Add(new DxfCodePair(10, MinimumLimits?.X ?? default(double)));
     pairs.Add(new DxfCodePair(20, MinimumLimits?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(11, MaximumLimits?.X ?? default(double)));
     pairs.Add(new DxfCodePair(21, MaximumLimits?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(12, InsertionBasePoint?.X ?? default(double)));
     pairs.Add(new DxfCodePair(22, InsertionBasePoint?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(32, InsertionBasePoint?.Z ?? default(double)));
     pairs.Add(new DxfCodePair(14, MinimumExtents?.X ?? default(double)));
     pairs.Add(new DxfCodePair(24, MinimumExtents?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(34, MinimumExtents?.Z ?? default(double)));
     pairs.Add(new DxfCodePair(15, MaximumExtents?.X ?? default(double)));
     pairs.Add(new DxfCodePair(25, MaximumExtents?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(35, MaximumExtents?.Z ?? default(double)));
     pairs.Add(new DxfCodePair(146, (this.Elevation)));
     pairs.Add(new DxfCodePair(13, UcsOrigin?.X ?? default(double)));
     pairs.Add(new DxfCodePair(23, UcsOrigin?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(33, UcsOrigin?.Z ?? default(double)));
     pairs.Add(new DxfCodePair(16, UcsXAxis?.X ?? default(double)));
     pairs.Add(new DxfCodePair(26, UcsXAxis?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(36, UcsXAxis?.Z ?? default(double)));
     pairs.Add(new DxfCodePair(17, UcsYAxis?.X ?? default(double)));
     pairs.Add(new DxfCodePair(27, UcsYAxis?.Y ?? default(double)));
     pairs.Add(new DxfCodePair(37, UcsYAxis?.Z ?? default(double)));
     pairs.Add(new DxfCodePair(76, (short)(this.UcsOrthographicType)));
     pairs.Add(new DxfCodePair(330, DxfCommonConverters.UIntHandle(this.ViewportPointer.Handle)));
     pairs.Add(new DxfCodePair(345, DxfCommonConverters.UIntHandle(this.TableRecordPointer.Handle)));
     pairs.Add(new DxfCodePair(346, DxfCommonConverters.UIntHandle(this.TableRecordBasePointer.Handle)));
 }
Ejemplo n.º 5
0
        internal override bool TrySetPair(DxfCodePair pair)
        {
            switch (pair.Code)
            {
            case 3:
                _lastEntryName = pair.StringValue;
                break;

            case 280:
                this.IsHardOwner = BoolShort(pair.ShortValue);
                break;

            case 281:
                this.DuplicateRecordHandling = (DxfDictionaryDuplicateRecordHandling)(pair.ShortValue);
                break;

            case 350:
            case 360:
                Debug.Assert(_lastEntryName != null);
                var handle = DxfCommonConverters.HandleString(pair.StringValue);
                _items[_lastEntryName] = new DxfPointer(handle);
                _lastEntryName         = null;
                break;

            default:
                return(base.TrySetPair(pair));
            }

            return(true);
        }
        internal override bool TrySetPair(DxfCodePair pair)
        {
            switch (pair.Code)
            {
            case 8:
                this.LayerNames.Add((pair.StringValue));
                break;

            case 40:
                this.TimeStamp = DateDouble(pair.DoubleValue);
                break;

            case 90:
                this.IdBufferCounts.Add((pair.IntegerValue));
                break;

            case 360:
                this.IdBuffersPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.UIntHandle(pair.StringValue)));
                break;

            default:
                return(base.TrySetPair(pair));
            }

            return(true);
        }
        internal override bool TrySetPair(DxfCodePair pair)
        {
            switch (pair.Code)
            {
            case 70:
                this.IsNamed = NotBoolShort(pair.ShortValue);
                break;

            case 71:
                this.IsSelectable = BoolShort(pair.ShortValue);
                break;

            case 300:
                this.Description = (pair.StringValue);
                break;

            case 340:
                this.EntitiesPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.UIntHandle(pair.StringValue)));
                break;

            default:
                return(base.TrySetPair(pair));
            }

            return(true);
        }
Ejemplo n.º 8
0
        protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            base.AddValuePairs(pairs, version, outputHandles);
            pairs.Add(new DxfCodePair(100, "AcDbUnderlayReference"));
            if (this.ObjectPointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(340, DxfCommonConverters.UIntHandle(this.ObjectPointer.Handle)));
            }

            pairs.Add(new DxfCodePair(10, InsertionPoint?.X ?? default(double)));
            pairs.Add(new DxfCodePair(20, InsertionPoint?.Y ?? default(double)));
            pairs.Add(new DxfCodePair(30, InsertionPoint?.Z ?? default(double)));
            pairs.Add(new DxfCodePair(41, (this.XScale)));
            pairs.Add(new DxfCodePair(42, (this.YScale)));
            pairs.Add(new DxfCodePair(43, (this.ZScale)));
            pairs.Add(new DxfCodePair(50, (this.RotationAngle)));
            pairs.Add(new DxfCodePair(210, Normal?.X ?? default(double)));
            pairs.Add(new DxfCodePair(220, Normal?.Y ?? default(double)));
            pairs.Add(new DxfCodePair(230, Normal?.Z ?? default(double)));
            pairs.Add(new DxfCodePair(280, (short)(this.Flags)));
            pairs.Add(new DxfCodePair(281, (this.Contrast)));
            pairs.Add(new DxfCodePair(282, (this.Fade)));
            foreach (var item in BoundaryPoints)
            {
                pairs.Add(new DxfCodePair(11, item.X));
                pairs.Add(new DxfCodePair(12, item.Y));
            }
        }
Ejemplo n.º 9
0
        public void HandleStringConversions(ulong ulongValue, string stringValue)
        {
            // parsing
            Assert.Equal(stringValue, DxfCommonConverters.HandleString(new DxfHandle(ulongValue)));

            // display
            Assert.Equal(new DxfHandle(ulongValue), DxfCommonConverters.HandleString(stringValue));
        }
Ejemplo n.º 10
0
        internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer)
        {
            var isReadyForSortHandles = false;

            while (buffer.ItemsRemain)
            {
                var pair = buffer.Peek();
                if (pair.Code == 0)
                {
                    break;
                }

                while (this.TrySetExtensionData(pair, buffer))
                {
                    pair = buffer.Peek();
                }

                switch (pair.Code)
                {
                case 5:
                    if (isReadyForSortHandles)
                    {
                        SortItemsPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.HandleString(pair.StringValue)));
                    }
                    else
                    {
                        ((IDxfItemInternal)this).Handle = DxfCommonConverters.HandleString(pair.StringValue);
                        isReadyForSortHandles           = true;
                    }
                    break;

                case 100:
                    isReadyForSortHandles = true;
                    break;

                case 330:
                    ((IDxfItemInternal)this).OwnerHandle = DxfCommonConverters.HandleString(pair.StringValue);
                    isReadyForSortHandles = true;
                    break;

                case 331:
                    EntitiesPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.HandleString(pair.StringValue)));
                    isReadyForSortHandles = true;
                    break;

                default:
                    if (!base.TrySetPair(pair))
                    {
                        ExcessCodePairs.Add(pair);
                    }
                    break;
                }

                buffer.Advance();
            }

            return(PostParse());
        }
Ejemplo n.º 11
0
        internal static DxfXDataItem FromBuffer(DxfCodePairBufferReader buffer)
        {
            var pair = buffer.Peek();

            buffer.Advance();
            switch ((DxfXDataType)pair.Code)
            {
            case DxfXDataType.String:
                return(new DxfXDataString(pair.StringValue));

            case DxfXDataType.ControlString:
                return(DxfXDataItemList.ListFromBuffer(buffer));

            case DxfXDataType.Layer:
                return(new DxfXDataLayerName(pair.StringValue));

            case DxfXDataType.BinaryData:
                return(new DxfXDataBinaryData(DxfCommonConverters.HexBytes(pair.StringValue)));

            case DxfXDataType.Handle:
                return(new DxfXDataHandle(DxfCommonConverters.UIntHandle(pair.StringValue)));

            case DxfXDataType.RealTriple:
                return(new DxfXData3Reals(ReadPoint(pair, buffer, pair.Code)));

            case DxfXDataType.WorldSpacePosition:
                return(new DxfXDataWorldSpacePosition(ReadPoint(pair, buffer, pair.Code)));

            case DxfXDataType.WorldSpaceDisplacement:
                return(new DxfXDataWorldSpaceDisplacement(ReadPoint(pair, buffer, pair.Code)));

            case DxfXDataType.WorldDirection:
                return(new DxfXDataWorldDirection(ReadPoint(pair, buffer, pair.Code)));

            case DxfXDataType.Real:
                return(new DxfXDataReal(pair.DoubleValue));

            case DxfXDataType.Distance:
                return(new DxfXDataDistance(pair.DoubleValue));

            case DxfXDataType.ScaleFactor:
                return(new DxfXDataScaleFactor(pair.DoubleValue));

            case DxfXDataType.Integer:
                return(new DxfXDataInteger(pair.ShortValue));

            case DxfXDataType.Long:
                return(new DxfXDataLong(pair.IntegerValue));

            default:
                return(null);    // unexpected XDATA code pair
            }
        }
Ejemplo n.º 12
0
        internal override DxfObject PopulateFromBuffer(DxfCodePairBufferReader buffer)
        {
            bool readVersionNumber = false;

            while (buffer.ItemsRemain)
            {
                var pair = buffer.Peek();
                if (pair.Code == 0)
                {
                    break;
                }

                while (this.TrySetExtensionData(pair, buffer))
                {
                    pair = buffer.Peek();
                }

                switch (pair.Code)
                {
                case 5:
                    // pointer to a new light
                    LightsPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.UIntHandle(pair.StringValue)));
                    break;

                case 1:
                    // don't worry about the name; it'll be read from the light entity directly
                    break;

                case 90:
                    if (readVersionNumber)
                    {
                        // count of lights is ignored since it's implicitly set by reading the values
                    }
                    else
                    {
                        Version           = pair.IntegerValue;
                        readVersionNumber = true;
                    }
                    break;

                default:
                    if (!base.TrySetPair(pair))
                    {
                        ExcessCodePairs.Add(pair);
                    }
                    break;
                }

                buffer.Advance();
            }

            return(PostParse());
        }
        protected internal override IEnumerable <DxfCodePair> GetSpecificPairs(DxfAcadVersion version, bool outputHandles, HashSet <IDxfItem> writtenItems)
        {
            var list = new List <DxfCodePair>();

            list.Add(new DxfCodePair(90, RawData.Length));

            // write lines in 128-byte chunks (expands to 256 hex bytes)
            var hex   = DxfCommonConverters.HexBytes(RawData);
            var lines = DxfCommonConverters.SplitIntoLines(hex, 256);

            list.AddRange(lines.Select(l => new DxfCodePair(310, l)));
            return(list);
        }
Ejemplo n.º 14
0
        protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            base.AddValuePairs(pairs, version, outputHandles);
            pairs.Add(new DxfCodePair(100, "AcDbMline"));
            pairs.Add(new DxfCodePair(2, (this.StyleName)));
            if (this.StylePointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(340, DxfCommonConverters.UIntHandle(this.StylePointer.Handle)));
            }

            pairs.Add(new DxfCodePair(40, (this.ScaleFactor)));
            pairs.Add(new DxfCodePair(70, (short)(this.Justification)));
            pairs.Add(new DxfCodePair(71, (short)(this.Flags)));
            pairs.Add(new DxfCodePair(72, (short)Vertices.Count));
            pairs.Add(new DxfCodePair(73, (short)(this.StyleElementCount)));
            pairs.Add(new DxfCodePair(10, StartPoint.X));
            pairs.Add(new DxfCodePair(20, StartPoint.Y));
            pairs.Add(new DxfCodePair(30, StartPoint.Z));
            if (this.Normal != DxfVector.ZAxis)
            {
                pairs.Add(new DxfCodePair(210, Normal.X));
                pairs.Add(new DxfCodePair(220, Normal.Y));
                pairs.Add(new DxfCodePair(230, Normal.Z));
            }

            foreach (var item in Vertices)
            {
                pairs.Add(new DxfCodePair(10, item.X));
                pairs.Add(new DxfCodePair(20, item.Y));
                pairs.Add(new DxfCodePair(30, item.Z));
            }

            foreach (var item in SegmentDirections)
            {
                pairs.Add(new DxfCodePair(11, item.X));
                pairs.Add(new DxfCodePair(21, item.Y));
                pairs.Add(new DxfCodePair(31, item.Z));
            }

            foreach (var item in MiterDirections)
            {
                pairs.Add(new DxfCodePair(12, item.X));
                pairs.Add(new DxfCodePair(22, item.Y));
                pairs.Add(new DxfCodePair(32, item.Z));
            }

            pairs.Add(new DxfCodePair(74, (short?)Parameters?.Count ?? default(short)));
            pairs.AddRange(this.Parameters.Select(p => new DxfCodePair(41, p)));
            pairs.Add(new DxfCodePair(75, (short?)AreaFillParameters?.Count ?? default(short)));
            pairs.AddRange(this.AreaFillParameters.Select(p => new DxfCodePair(42, p)));
        }
Ejemplo n.º 15
0
        protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            base.AddValuePairs(pairs, version, outputHandles);
            pairs.Add(new DxfCodePair(100, "AcDbPlotSettings"));
            pairs.Add(new DxfCodePair(1, (this.PageSetupName)));
            pairs.Add(new DxfCodePair(2, (this.PrinterName)));
            pairs.Add(new DxfCodePair(4, (this.PaperSize)));
            pairs.Add(new DxfCodePair(6, (this.PlotViewName)));
            pairs.Add(new DxfCodePair(40, (this.UnprintableLeftMarginSize)));
            pairs.Add(new DxfCodePair(41, (this.UnprintableBottomMarginSize)));
            pairs.Add(new DxfCodePair(42, (this.UnprintableRightMarginSize)));
            pairs.Add(new DxfCodePair(43, (this.UnprintableTopMarginSize)));
            pairs.Add(new DxfCodePair(44, (this.PaperWidth)));
            pairs.Add(new DxfCodePair(45, (this.PaperHeight)));
            pairs.Add(new DxfCodePair(46, (this.PlotOriginXValue)));
            pairs.Add(new DxfCodePair(47, (this.PlotOriginYValue)));
            pairs.Add(new DxfCodePair(48, (this.PlotWindowLowerLeftXValue)));
            pairs.Add(new DxfCodePair(49, (this.PlotWindowLowerLeftYValue)));
            pairs.Add(new DxfCodePair(140, (this.PlotWindowUpperRightXValue)));
            pairs.Add(new DxfCodePair(141, (this.PlotWindowUpperRightYValue)));
            pairs.Add(new DxfCodePair(142, (this.CustomPrintScaleNumerator)));
            pairs.Add(new DxfCodePair(143, (this.CustomPrintScaleDenominator)));
            pairs.Add(new DxfCodePair(70, (short)(this.PlotLayoutFlags)));
            pairs.Add(new DxfCodePair(72, (short)(this.PlotPaperUnits)));
            pairs.Add(new DxfCodePair(73, (short)(this.PlotRotation)));
            pairs.Add(new DxfCodePair(74, (short)(this.PlotType)));
            pairs.Add(new DxfCodePair(7, (this.CurrentStyleSheet)));
            pairs.Add(new DxfCodePair(75, (short)(this.StandardScale)));
            if (version >= DxfAcadVersion.R2004)
            {
                pairs.Add(new DxfCodePair(76, (short)(this.ShadePlotMode)));
            }

            if (version >= DxfAcadVersion.R2004)
            {
                pairs.Add(new DxfCodePair(77, (short)(this.ShadePlotResolutionLevel)));
            }

            if (version >= DxfAcadVersion.R2004)
            {
                pairs.Add(new DxfCodePair(78, (short)(this.ShadePlotCustomDPI)));
            }

            pairs.Add(new DxfCodePair(147, (this.StandardScaleValue)));
            pairs.Add(new DxfCodePair(148, (this.PaperImageOriginX)));
            pairs.Add(new DxfCodePair(149, (this.PaperImageOriginY)));
            if (this.ShadePlotObjectPointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(333, DxfCommonConverters.UIntHandle(this.ShadePlotObjectPointer.Handle)));
            }
        }
Ejemplo n.º 16
0
 protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
 {
     base.AddValuePairs(pairs, version, outputHandles);
     pairs.Add(new DxfCodePair(100, "AcDbIBLBackground"));
     pairs.Add(new DxfCodePair(90, (this.SubclassVersion)));
     pairs.Add(new DxfCodePair(290, (this.IsEnabled)));
     pairs.Add(new DxfCodePair(1, (this.ImageBasedLightingMapFileName)));
     pairs.Add(new DxfCodePair(40, (this.RotationAngle)));
     pairs.Add(new DxfCodePair(290, (this.IsMapAsBackground)));
     if (this.CustomBackgroundPointer.Handle != 0u)
     {
         pairs.Add(new DxfCodePair(340, DxfCommonConverters.UIntHandle(this.CustomBackgroundPointer.Handle)));
     }
 }
Ejemplo n.º 17
0
        public void AssignOwnerHandlesInXDataTest()
        {
            // read a layout with its owner handle also specified in the XDATA
            var file = Parse(
                (0, "SECTION"),
                (2, "HEADER"),
                (9, "$ACADVER"),
                (1, "AC1027"),
                (0, "ENDSEC"),
                (0, "SECTION"),
                (2, "OBJECTS"),
                (0, "DICTIONARY"),
                (5, "BBBBBBBB"),
                (3, "some-layout"),
                (350, "CCCCCCCC"),
                (0, "LAYOUT"),
                (5, "CCCCCCCC"),
                (330, "BBBBBBBB"),
                (102, "{ACAD_REACTORS"),
                (330, "BBBBBBBB"),
                (102, "}"),
                (0, "ENDSEC"),
                (0, "EOF")
                );
            // sanity check to verify that it was read correctly
            var dict   = file.Objects.OfType <DxfDictionary>().Single();
            var layout = (DxfLayout)dict["some-layout"];

            Assert.Equal(0xBBBBBBBB, ((IDxfItemInternal)dict).Handle);
            Assert.Equal(0xCCCCCCCC, ((IDxfItemInternal)layout).Handle);

            // re-save the file to a garbage stream to re-assign handles
            using (var ms = new MemoryStream())
            {
                file.Save(ms);
            }

            // verify new handles and owners; note that the assigned handles are unlikely to be 0xBBBBBBBB and 0xCCCCCCCC again
            Assert.True(ReferenceEquals(layout.Owner, dict));
            Assert.NotEqual(0xBBBBBBBB, ((IDxfItemInternal)dict).Handle);
            Assert.NotEqual(0xCCCCCCCC, ((IDxfItemInternal)layout).Handle);
            var dictHandle = ((IDxfItemInternal)dict).Handle;

            Assert.Equal(dictHandle, ((IDxfItemInternal)layout).OwnerHandle);
            var layoutXDataGroups = ((IDxfHasXData)layout).ExtensionDataGroups.Single(g => g.GroupName == "ACAD_REACTORS");
            var ownerCodePair     = (DxfCodePair)layoutXDataGroups.Items.Single();

            Assert.Equal(330, ownerCodePair.Code);
            Assert.Equal(DxfCommonConverters.UIntHandle(dictHandle), ownerCodePair.StringValue);
        }
Ejemplo n.º 18
0
        internal override bool TrySetPair(DxfCodePair pair)
        {
            switch (pair.Code)
            {
            case 330:
                this.EntitiesPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.UIntHandle(pair.StringValue)));
                break;

            default:
                return(base.TrySetPair(pair));
            }

            return(true);
        }
Ejemplo n.º 19
0
        internal IEnumerable <DxfCodePair> GetValuePairs(DxfAcadVersion version, bool outputHandles, HashSet <IDxfItem> writtenItems)
        {
            BeforeWrite();

            var pairs = new List <DxfCodePair>();

            // common pairs
            pairs.Add(new DxfCodePair(0, DxfSection.TableText));
            pairs.Add(new DxfCodePair(2, TableTypeToName(TableType)));
            if (outputHandles && Handle != 0u)
            {
                pairs.Add(new DxfCodePair(5, DxfCommonConverters.UIntHandle(Handle)));
            }

            if (version >= DxfAcadVersion.R13)
            {
                foreach (var group in ExtensionDataGroups)
                {
                    group.AddValuePairs(pairs, version, outputHandles);
                }

                if (version >= DxfAcadVersion.R2000 && OwnerHandle != 0u)
                {
                    pairs.Add(new DxfCodePair(330, DxfCommonConverters.UIntHandle(OwnerHandle)));
                }

                pairs.Add(new DxfCodePair(100, "AcDbSymbolTable"));
            }

            var symbolItems = GetSymbolItems().Where(item => item != null).OrderBy(i => i.Name).ToList();

            pairs.Add(new DxfCodePair(70, (short)symbolItems.Count));
            if (version >= DxfAcadVersion.R2000 && TableClassName != null)
            {
                pairs.Add(new DxfCodePair(100, TableClassName));
            }

            foreach (var item in symbolItems)
            {
                if (writtenItems.Add(item))
                {
                    item.AddCommonValuePairs(pairs, version, outputHandles);
                    item.AddValuePairs(pairs, version, outputHandles);
                }
            }

            pairs.Add(new DxfCodePair(0, DxfSection.EndTableText));
            return(pairs);
        }
Ejemplo n.º 20
0
 protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
 {
     base.AddValuePairs(pairs, version, outputHandles);
     pairs.Add(new DxfCodePair(100, "AcDbMLeaderStyle"));
     pairs.Add(new DxfCodePair(170, (this.ContentType)));
     pairs.Add(new DxfCodePair(171, (this.DrawMLeaderOrderType)));
     pairs.Add(new DxfCodePair(172, (this.DrawLeaderOrderType)));
     pairs.Add(new DxfCodePair(90, (this.MaxLeaderSegmentCount)));
     pairs.Add(new DxfCodePair(40, (this.FirstSegmentAngleConstraint)));
     pairs.Add(new DxfCodePair(41, (this.SecondSegmentAngleConstraint)));
     pairs.Add(new DxfCodePair(173, (this.LeaderLineType)));
     pairs.Add(new DxfCodePair(91, (this.LeaderLineColor)));
     pairs.Add(new DxfCodePair(340, DxfCommonConverters.UIntHandle(this.LineLeaderTypePointer.Handle)));
     pairs.Add(new DxfCodePair(92, (this.LeaderLineWeight)));
     pairs.Add(new DxfCodePair(290, (this.EnableLanding)));
     pairs.Add(new DxfCodePair(42, (this.LandingGap)));
     pairs.Add(new DxfCodePair(291, (this.EnableDogleg)));
     pairs.Add(new DxfCodePair(43, (this.DoglegLength)));
     pairs.Add(new DxfCodePair(3, (this.MLeaderStyleDescription)));
     pairs.Add(new DxfCodePair(341, DxfCommonConverters.UIntHandle(this.ArrowheadPointer.Handle)));
     pairs.Add(new DxfCodePair(44, (this.ArrowheadSize)));
     pairs.Add(new DxfCodePair(300, (this.DefaultMTextContents)));
     pairs.Add(new DxfCodePair(342, DxfCommonConverters.UIntHandle(this.MTextStylePointer.Handle)));
     pairs.Add(new DxfCodePair(174, (this.TextLeftAttachmentType)));
     pairs.Add(new DxfCodePair(175, (this.TextAngleType)));
     pairs.Add(new DxfCodePair(176, (this.TextAlignmentType)));
     pairs.Add(new DxfCodePair(178, (this.TextRightAttachmentType)));
     pairs.Add(new DxfCodePair(93, (this.TextColor)));
     pairs.Add(new DxfCodePair(45, (this.TextHeight)));
     pairs.Add(new DxfCodePair(292, (this.EnableFrameText)));
     pairs.Add(new DxfCodePair(297, (this.AlwaysAlignTextLeft)));
     pairs.Add(new DxfCodePair(46, (this.AlignGap)));
     pairs.Add(new DxfCodePair(343, DxfCommonConverters.UIntHandle(this.BlockContentPointer.Handle)));
     pairs.Add(new DxfCodePair(94, (this.BlockContentColor)));
     pairs.Add(new DxfCodePair(47, (this.BlockContentXScale)));
     pairs.Add(new DxfCodePair(49, (this.BlockContentYScale)));
     pairs.Add(new DxfCodePair(140, (this.BlockContentZScale)));
     pairs.Add(new DxfCodePair(293, (this.EnableBlockContentScale)));
     pairs.Add(new DxfCodePair(141, (this.BlockContentRotation)));
     pairs.Add(new DxfCodePair(294, (this.EnableBlockContentRotation)));
     pairs.Add(new DxfCodePair(177, (this.BlockContentConnectionType)));
     pairs.Add(new DxfCodePair(142, (this.Scale)));
     pairs.Add(new DxfCodePair(295, (this.OverwritePropertyValue)));
     pairs.Add(new DxfCodePair(296, (this.IsAnnotative)));
     pairs.Add(new DxfCodePair(143, (this.BreakGapSize)));
     pairs.Add(new DxfCodePair(271, (short)(this.TextAttachmentDirection)));
     pairs.Add(new DxfCodePair(272, (short)(this.BottomTextAttachmentDirection)));
     pairs.Add(new DxfCodePair(273, (short)(this.TopTextAttachmentDirection)));
 }
Ejemplo n.º 21
0
        protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            base.AddValuePairs(pairs, version, outputHandles);
            pairs.Add(new DxfCodePair(100, "AcDbSunStudy"));
            pairs.Add(new DxfCodePair(90, (this.Version)));
            pairs.Add(new DxfCodePair(1, (this.SunSetupName)));
            pairs.Add(new DxfCodePair(2, (this.Description)));
            pairs.Add(new DxfCodePair(70, (this.OutputType)));
            pairs.Add(new DxfCodePair(3, (this.SheetSetName)));
            pairs.Add(new DxfCodePair(290, (this.UseSubset)));
            pairs.Add(new DxfCodePair(4, (this.SheetSubsetName)));
            pairs.Add(new DxfCodePair(291, (this.SelectDatesFromCalendar)));
            pairs.Add(new DxfCodePair(91, Dates.Count));
            foreach (var item in Dates)
            {
                pairs.Add(new DxfCodePair(90, (int)DxfCommonConverters.DateDouble(item)));
                pairs.Add(new DxfCodePair(90, DxfCommonConverters.DateDouble(item)));
            }

            pairs.Add(new DxfCodePair(292, (this.SelectRangeOfDates)));
            if (SelectRangeOfDates)
            {
                pairs.Add(new DxfCodePair(93, (this.StartTime_SecondsPastMidnight)));
            }

            if (SelectRangeOfDates)
            {
                pairs.Add(new DxfCodePair(94, (this.EndTime_SecondsPastMidnight)));
            }

            if (SelectRangeOfDates)
            {
                pairs.Add(new DxfCodePair(95, (this.IntervalInSeconds)));
            }

            pairs.Add(new DxfCodePair(73, (short)Hours.Count));
            pairs.AddRange(this.Hours.Select(p => new DxfCodePair(290, (short)(p))));
            pairs.Add(new DxfCodePair(340, DxfCommonConverters.UIntHandle(this.PageSetupWizardPointer.Handle)));
            pairs.Add(new DxfCodePair(341, DxfCommonConverters.UIntHandle(this.ViewPointer.Handle)));
            pairs.Add(new DxfCodePair(342, DxfCommonConverters.UIntHandle(this.VisualStylePointer.Handle)));
            pairs.Add(new DxfCodePair(74, (this.ShadePlotType)));
            pairs.Add(new DxfCodePair(75, (short)(this.ViewportsPerPage)));
            pairs.Add(new DxfCodePair(76, (short)(this.ViewportDistributionRowCount)));
            pairs.Add(new DxfCodePair(77, (short)(this.ViewportDistributionColumnCount)));
            pairs.Add(new DxfCodePair(40, (this.Spacing)));
            pairs.Add(new DxfCodePair(293, (this.LockViewports)));
            pairs.Add(new DxfCodePair(294, (this.LabelViewports)));
            pairs.Add(new DxfCodePair(343, DxfCommonConverters.UIntHandle(this.TextStylePointer.Handle)));
        }
Ejemplo n.º 22
0
        private IEnumerable <string> GetHexStrings()
        {
            if (Data == null)
            {
                yield break;
            }

            var pos = 0;

            while (pos < Data.Length)
            {
                var slice = Data.Skip(pos).Take(128).ToArray();
                pos += slice.Length;
                yield return(DxfCommonConverters.HexBytes(slice));
            }
        }
Ejemplo n.º 23
0
 protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
 {
     base.AddValuePairs(pairs, version, outputHandles);
     pairs.Add(new DxfCodePair(100, "AcDbModelerGeometry"));
     pairs.Add(new DxfCodePair(70, (this.FormatVersionNumber)));
     pairs.AddRange(this.CustomData.Select(p => new DxfCodePair(1, p)));
     pairs.AddRange(this.CustomData2.Select(p => new DxfCodePair(3, p)));
     if (version >= DxfAcadVersion.R2007)
     {
         pairs.Add(new DxfCodePair(100, "AcDb3dSolid"));
     }
     if (version >= DxfAcadVersion.R2007)
     {
         pairs.Add(new DxfCodePair(350, DxfCommonConverters.UIntHandle(this.HistoryObjectPointer.Handle)));
     }
 }
Ejemplo n.º 24
0
            public IEnumerable <DxfCodePair> GetValuePairs(DxfAcadVersion version, bool outputHandles)
            {
                var list = new List <DxfCodePair>();

                list.Add(new DxfCodePair(0, EndBlockText));
                if (outputHandles && ((IDxfItemInternal)this).Handle != 0u)
                {
                    list.Add(new DxfCodePair(5, DxfCommonConverters.UIntHandle(((IDxfItemInternal)this).Handle)));
                }

                if (Parent.XData != null)
                {
                    Parent.XData.AddValuePairs(list, version, outputHandles);
                }

                if (version >= DxfAcadVersion.R14)
                {
                    foreach (var group in ExtensionDataGroups)
                    {
                        group.AddValuePairs(list, version, outputHandles);
                    }
                }

                if (version >= DxfAcadVersion.R2000)
                {
                    list.Add(new DxfCodePair(330, DxfCommonConverters.UIntHandle(((IDxfItemInternal)Parent).OwnerHandle)));
                }

                if (version >= DxfAcadVersion.R13)
                {
                    list.Add(new DxfCodePair(100, AcDbEntityText));
                }

                if (Parent.IsInPaperSpace)
                {
                    list.Add(new DxfCodePair(67, DxfCommonConverters.BoolShort(Parent.IsInPaperSpace)));
                }

                list.Add(new DxfCodePair(8, Parent.Layer));

                if (version >= DxfAcadVersion.R13)
                {
                    list.Add(new DxfCodePair(100, AcDbBlockEndText));
                }
                return(list);
            }
Ejemplo n.º 25
0
        private int _code_290_index = 0; // shared by properties IsEnabled, IsMapAsBackground

        internal override bool TrySetPair(DxfCodePair pair)
        {
            switch (pair.Code)
            {
            case 1:
                this.ImageBasedLightingMapFileName = (pair.StringValue);
                break;

            case 40:
                this.RotationAngle = (pair.DoubleValue);
                break;

            case 90:
                this.SubclassVersion = (pair.IntegerValue);
                break;

            case 290:
                switch (_code_290_index)
                {
                case 0:
                    this.IsEnabled = (pair.BoolValue);
                    _code_290_index++;
                    break;

                case 1:
                    this.IsMapAsBackground = (pair.BoolValue);
                    _code_290_index++;
                    break;

                default:
                    Debug.Assert(false, "Unexpected extra values for code 290");
                    break;
                }
                break;

            case 340:
                this.CustomBackgroundPointer.Handle = DxfCommonConverters.UIntHandle(pair.StringValue);
                break;

            default:
                return(base.TrySetPair(pair));
            }

            return(true);
        }
Ejemplo n.º 26
0
        internal void AddCodePairs(List <DxfCodePair> pairs)
        {
            pairs.Add(new DxfCodePair(1, "SectionTypeSettings"));
            pairs.Add(new DxfCodePair(90, SectionType));
            pairs.Add(new DxfCodePair(91, IsGenerationOption ? 1 : 0));
            pairs.Add(new DxfCodePair(92, SourceObjectHandles.Count));
            pairs.AddRange(SourceObjectHandles.Select(p => new DxfCodePair(330, DxfCommonConverters.UIntHandle(p))));
            pairs.Add(new DxfCodePair(331, DxfCommonConverters.UIntHandle(DestinationObjectHandle)));
            pairs.Add(new DxfCodePair(1, DestinationFileName));
            pairs.Add(new DxfCodePair(93, GeometrySettings.Count));
            pairs.Add(new DxfCodePair(2, "SectionGeometrySettings"));
            foreach (var geometry in GeometrySettings)
            {
                geometry.AddCodePairs(pairs);
            }

            pairs.Add(new DxfCodePair(3, "SectionTypeSettingsEnd"));
        }
Ejemplo n.º 27
0
        protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            base.AddValuePairs(pairs, version, outputHandles);
            pairs.Add(new DxfCodePair(100, "AcDbRasterImage"));
            pairs.Add(new DxfCodePair(90, (this.ClassVersion)));
            pairs.Add(new DxfCodePair(10, Location?.X ?? default(double)));
            pairs.Add(new DxfCodePair(20, Location?.Y ?? default(double)));
            pairs.Add(new DxfCodePair(30, Location?.Z ?? default(double)));
            pairs.Add(new DxfCodePair(11, UVector?.X ?? default(double)));
            pairs.Add(new DxfCodePair(21, UVector?.Y ?? default(double)));
            pairs.Add(new DxfCodePair(31, UVector?.Z ?? default(double)));
            pairs.Add(new DxfCodePair(12, VVector?.X ?? default(double)));
            pairs.Add(new DxfCodePair(22, VVector?.Y ?? default(double)));
            pairs.Add(new DxfCodePair(32, VVector?.Z ?? default(double)));
            pairs.Add(new DxfCodePair(13, ImageSize?.X ?? default(double)));
            pairs.Add(new DxfCodePair(23, ImageSize?.Y ?? default(double)));
            if (this.ImageDefinitionPointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(340, DxfCommonConverters.UIntHandle(this.ImageDefinitionPointer.Handle)));
            }

            pairs.Add(new DxfCodePair(70, (short)(this.DisplayOptionsFlags)));
            pairs.Add(new DxfCodePair(280, BoolShort(this.UseClipping)));
            pairs.Add(new DxfCodePair(281, (this.Brightness)));
            pairs.Add(new DxfCodePair(282, (this.Contrast)));
            pairs.Add(new DxfCodePair(283, (this.Fade)));
            if (this.ImageDefinitionReactorPointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(360, DxfCommonConverters.UIntHandle(this.ImageDefinitionReactorPointer.Handle)));
            }

            pairs.Add(new DxfCodePair(71, (short)(this.ClippingType)));
            pairs.Add(new DxfCodePair(91, ClippingVertices.Count));
            foreach (var item in ClippingVertices)
            {
                pairs.Add(new DxfCodePair(14, item.X));
                pairs.Add(new DxfCodePair(24, item.Y));
            }

            if (version >= DxfAcadVersion.R2010)
            {
                pairs.Add(new DxfCodePair(290, (this.IsInsideClipping)));
            }
        }
        internal override bool TrySetPair(DxfCodePair pair)
        {
            switch (pair.Code)
            {
            case 70:
                this.RequiresFullUpdate = BoolShort(pair.ShortValue);
                break;

            case 90:
                this._sectionCount = (pair.IntegerValue);
                break;

            case 330:
                this.SectionEntitiesPointers.Pointers.Add(new DxfPointer(DxfCommonConverters.UIntHandle(pair.StringValue)));
                break;

            default:
                return(base.TrySetPair(pair));
            }

            return(true);
        }
Ejemplo n.º 29
0
        protected override void AddValuePairs(List <DxfCodePair> pairs, DxfAcadVersion version, bool outputHandles)
        {
            base.AddValuePairs(pairs, version, outputHandles);
            pairs.Add(new DxfCodePair(100, "AcDbDimAssoc"));
            if (this.DimensionPointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(330, DxfCommonConverters.UIntHandle(this.DimensionPointer.Handle)));
            }

            pairs.Add(new DxfCodePair(90, (this.AssociativityFlags)));
            pairs.Add(new DxfCodePair(70, BoolShort(this.IsTransSpace)));
            pairs.Add(new DxfCodePair(71, (short)(this.RotatedDimensionType)));
            pairs.Add(new DxfCodePair(1, (this.ClassName)));
            pairs.Add(new DxfCodePair(72, (short)(this.ObjectOsnapType)));
            if (this.MainObjectPointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(331, DxfCommonConverters.UIntHandle(this.MainObjectPointer.Handle)));
            }

            pairs.Add(new DxfCodePair(73, (short)(this.MainObjectSubentityType)));
            pairs.Add(new DxfCodePair(91, (this.MainObjectGsMarkerIndex)));
            pairs.Add(new DxfCodePair(301, (this.MainObjectXrefHandle)));
            pairs.Add(new DxfCodePair(40, (this.NearOsnapGeometryParameter)));
            pairs.Add(new DxfCodePair(10, OsnapPoint?.X ?? default(double)));
            pairs.Add(new DxfCodePair(20, OsnapPoint?.Y ?? default(double)));
            pairs.Add(new DxfCodePair(30, OsnapPoint?.Z ?? default(double)));
            if (this.IntersectionObjectPointer.Handle != 0u)
            {
                pairs.Add(new DxfCodePair(332, DxfCommonConverters.UIntHandle(this.IntersectionObjectPointer.Handle)));
            }

            pairs.Add(new DxfCodePair(74, (short)(this.IntersectionSubentityType)));
            pairs.Add(new DxfCodePair(92, (this.IntersectionObjectGsMarkerIndex)));
            pairs.Add(new DxfCodePair(302, (this.IntersectionObjectXrefHandle)));
            pairs.Add(new DxfCodePair(75, BoolShort(this.HasLastPointReference)));
        }
        internal static DxfThumbnailImageSection ThumbnailImageSectionFromBuffer(DxfCodePairBufferReader buffer)
        {
            if (buffer.ItemsRemain)
            {
                var lengthPair = buffer.Peek();
                buffer.Advance();

                if (lengthPair.Code != 90)
                {
                    return(null);
                }

                var length = lengthPair.IntegerValue;
                var lines  = new List <string>();
                while (buffer.ItemsRemain)
                {
                    var pair = buffer.Peek();
                    buffer.Advance();

                    if (DxfCodePair.IsSectionEnd(pair))
                    {
                        break;
                    }

                    Debug.Assert(pair.Code == 310);
                    lines.Add(pair.StringValue);
                }

                var section = new DxfThumbnailImageSection();
                section.Clear();
                section.RawData = DxfCommonConverters.HexBytes(string.Join(string.Empty, lines.ToArray()));
                return(section);
            }

            return(null);
        }