Esempio n. 1
0
        internal static DxfSectionTypeSettings FromBuffer(DxfCodePairBufferReader buffer)
        {
            if (buffer.Peek()?.Code == 0)
            {
                return null;
            }

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

                switch (pair.Code)
                {
                    case 1:
                        settings.DestinationFileName = pair.StringValue;
                        buffer.Advance();
                        break;
                    case 2:
                        Debug.Assert(pair.StringValue == "SectionGeometrySettings");
                        buffer.Advance();
                        for (var geometry = DxfSectionGeometrySettings.FromBuffer(buffer); geometry != null; geometry = DxfSectionGeometrySettings.FromBuffer(buffer))
                        {
                            settings.GeometrySettings.Add(geometry);
                        }
                        break;
                    case 3:
                        Debug.Assert(pair.StringValue == "SectionTypeSettingsEnd");
                        buffer.Advance();
                        break;
                    case 90:
                        settings.SectionType = pair.IntegerValue;
                        buffer.Advance();
                        break;
                    case 91:
                        settings.IsGenerationOption = pair.IntegerValue != 0;
                        buffer.Advance();
                        break;
                    case 92:
                        var sourceObjectsCount = pair.IntegerValue;
                        buffer.Advance();
                        break;
                    case 93:
                        var generationSettingsCount = pair.IntegerValue;
                        buffer.Advance();
                        break;
                    case 330:
                        settings.SourceObjectHandles.Add(DxfCommonConverters.UIntHandle(pair.StringValue));
                        buffer.Advance();
                        break;
                    case 331:
                        settings.DestinationObjectHandle = DxfCommonConverters.UIntHandle(pair.StringValue);
                        buffer.Advance();
                        break;
                    default:
                        return settings;
                }
            }

            return settings;
        }
Esempio n. 2
0
        public void WriteSectionSettingsTest()
        {
            var settings = new DxfSectionSettings();

            settings.SectionType = 42;
            var typeSettings = new DxfSectionTypeSettings()
            {
                SectionType             = 43,
                IsGenerationOption      = true,
                DestinationObjectHandle = 0xFFu,
                DestinationFileName     = "file-name",
            };

            typeSettings.SourceObjectHandles.Add(0x100u);
            typeSettings.SourceObjectHandles.Add(0x101u);
            typeSettings.GeometrySettings.Add(new DxfSectionGeometrySettings()
            {
                SectionType = 1001
            });
            typeSettings.GeometrySettings.Add(new DxfSectionGeometrySettings()
            {
                SectionType = 1002
            });
            settings.SectionTypeSettings.Add(typeSettings);
            var file = new DxfFile();

            file.Header.Version = DxfAcadVersion.R2007;
            file.Objects.Add(settings);
            VerifyFileContains(file, @"
100
AcDbSectionSettings
 90
42
 91
1
  1
SectionTypeSettings
 90
43
 91
1
 92
2
330
100
330
101
331
FF
  1
file-name
 93
2
  2
SectionGeometrySettings
 90
1001
 91
0
 92
0
 63
0
  8

  6

 40
1.0
  1

370
0
 70
0
 71
0
 72
0
  2

 41
0.0
 42
1.0
 43
0.0
  3
SectionGeometrySettingsEnd
 90
1002
 91
0
 92
0
 63
0
  8

  6

 40
1.0
  1

370
0
 70
0
 71
0
 72
0
  2

 41
0.0
 42
1.0
 43
0.0
  3
SectionGeometrySettingsEnd
  3
SectionTypeSettingsEnd
");
        }
Esempio n. 3
0
        public void WriteSectionSettingsTest()
        {
            var settings = new DxfSectionSettings();
            settings.SectionType = 42;
            var typeSettings = new DxfSectionTypeSettings()
            {
                SectionType = 43,
                IsGenerationOption = true,
                DestinationObjectHandle = 0xFFu,
                DestinationFileName = "file-name",
            };
            typeSettings.SourceObjectHandles.Add(0x100u);
            typeSettings.SourceObjectHandles.Add(0x101u);
            typeSettings.GeometrySettings.Add(new DxfSectionGeometrySettings() { SectionType = 1001 });
            typeSettings.GeometrySettings.Add(new DxfSectionGeometrySettings() { SectionType = 1002 });
            settings.SectionTypeSettings.Add(typeSettings);
            var file = new DxfFile();
            file.Objects.Add(settings);
            VerifyFileContains(file, @"
              0
            SECTIONSETTINGS
              5
            A
            100
            AcDbSectionSettings
             90
            42
             91
            1
              1
            SectionTypeSettings
             90
            43
             91
            1
             92
            2
            330
            100
            330
            101
            331
            FF
              1
            file-name
             93
            2
              2
            SectionGeometrySettings
             90
            1001
             91
            0
             92
            0
             63
            0
              8

              6

             40
            1.0
              1

            370
            0
             70
            0
             71
            0
             72
            0
              2

             41
            0.0
             42
            1.0
             43
            0.0
              3
            SectionGeometrySettingsEnd
             90
            1002
             91
            0
             92
            0
             63
            0
              8

              6

             40
            1.0
              1

            370
            0
             70
            0
             71
            0
             72
            0
              2

             41
            0.0
             42
            1.0
             43
            0.0
              3
            SectionGeometrySettingsEnd
              3
            SectionTypeSettingsEnd
            ");
        }