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; }
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 "); }
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 "); }